summaryrefslogtreecommitdiff
path: root/ui/src/windows/tracker
diff options
context:
space:
mode:
Diffstat (limited to 'ui/src/windows/tracker')
-rw-r--r--ui/src/windows/tracker/actions.cpp52
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