diff options
| author | Felix Morgner <felix.morgner@gmail.com> | 2025-04-04 16:31:38 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@gmail.com> | 2025-04-04 16:31:38 +0200 |
| commit | 67c561efbeaa26131258c41b208f1890cb4865c5 (patch) | |
| tree | 9fbb1be4094a05c371c5c6977dae733a6b4758fb /ui | |
| parent | b6d9a37966e34db8b5217a7e5466b2660f43a4ba (diff) | |
| download | turns-67c561efbeaa26131258c41b208f1890cb4865c5.tar.xz turns-67c561efbeaa26131258c41b208f1890cb4865c5.zip | |
adw: implement required AlertDialog functions
Diffstat (limited to 'ui')
| -rw-r--r-- | ui/src/windows/tracker/actions.cpp | 52 |
1 files changed, 23 insertions, 29 deletions
diff --git a/ui/src/windows/tracker/actions.cpp b/ui/src/windows/tracker/actions.cpp index 3fcf448..5223a34 100644 --- a/ui/src/windows/tracker/actions.cpp +++ b/ui/src/windows/tracker/actions.cpp @@ -1,5 +1,4 @@ #include "turns/core/participant.hpp" -#include "turns/core/turn_order.hpp" #include "turns/lang/messages.hpp" #include "turns/ui/widgets/preferences.hpp" #include "turns/ui/windows/participant_editor.hpp" @@ -22,6 +21,8 @@ #include <gtkmm/filefilter.h> #include <gtkmm/object.h> +#include <adwaitamm/alertdialog.hpp> +#include <adwaitamm/dialog.hpp> #include <adwaitamm/preferencesdialog.hpp> #include <adwaita.h> @@ -40,20 +41,6 @@ namespace turns::ui::windows return std::pair{builder, Gtk::Builder::get_widget_derived<participant_editor>(builder, "participant_editor", participant)}; } - auto stop_dialog_callback(AdwAlertDialog * dialog, GAsyncResult * result, core::turn_order * order) - { - auto response = Glib::ustring{adw_alert_dialog_choose_finish(dialog, result)}; - if (response == "cancel") - { - return; - } - if (response == "clear") - { - order->clear(); - } - order->stop(); - } - auto file_filters() { auto filters = Gio::ListStore<Gtk::FileFilter>::create(); @@ -120,19 +107,26 @@ namespace turns::ui::windows auto tracker::stop() -> void { - auto dialog = ADW_ALERT_DIALOG(adw_alert_dialog_new(_(lang::stop_turn_order), _(lang::question_clear_turn_order))); - adw_alert_dialog_add_response(dialog, "stop", _(lang::stop)); - adw_alert_dialog_set_response_appearance(dialog, "stop", ADW_RESPONSE_SUGGESTED); - adw_alert_dialog_add_response(dialog, "clear", _(lang::stop_and_clear)); - adw_alert_dialog_set_response_appearance(dialog, "clear", ADW_RESPONSE_DESTRUCTIVE); - adw_alert_dialog_add_response(dialog, "cancel", _(lang::cancel)); - adw_alert_dialog_set_response_appearance(dialog, "cancel", ADW_RESPONSE_DEFAULT); - adw_alert_dialog_set_close_response(dialog, "cancel"); - adw_alert_dialog_set_default_response(dialog, "cancel"); - adw_alert_dialog_choose(dialog, - GTK_WIDGET(Glib::unwrap(this)), - nullptr, - reinterpret_cast<GAsyncReadyCallback>(stop_dialog_callback), - m_turn_order.get()); + auto dialog = Adwaita::AlertDialog::create(_(lang::stop_turn_order), _(lang::question_clear_turn_order)); + dialog->add_response("stop", _(lang::stop)); + dialog->set_response_appearance("stop", Adwaita::AlertDialog::ResponseAppearance::suggested); + dialog->add_response("clear", _(lang::stop_and_clear)); + dialog->set_response_appearance("clear", Adwaita::AlertDialog::ResponseAppearance::destructive); + dialog->add_response("cancel", _(lang::cancel)); + dialog->set_response_appearance("cancel", Adwaita::AlertDialog::ResponseAppearance::_default); + dialog->set_close_response("cancel"); + dialog->set_default_response("cancel"); + dialog->choose(*this, nullptr, [dialog = std::move(dialog), this](auto const & result) { + auto response = dialog->choose_finish(result); + if (response == "cancel") + { + return; + } + if (response == "clear") + { + m_turn_order->clear(); + } + m_turn_order->stop(); + }); } } // namespace turns::ui::windows
\ No newline at end of file |
