diff options
| author | Felix Morgner <felix.morgner@gmail.com> | 2024-07-17 02:28:58 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@gmail.com> | 2024-07-17 02:28:58 +0200 |
| commit | 631a8065aa9753c27f84c08bee49334c1b473bdc (patch) | |
| tree | f02014ba84514e041156e12b11eb5d79cd39456a /app | |
| parent | 1435da0c878b705035fda0dfbdb31013645ce2f9 (diff) | |
| download | turns-631a8065aa9753c27f84c08bee49334c1b473bdc.tar.xz turns-631a8065aa9753c27f84c08bee49334c1b473bdc.zip | |
app/ui: add stop configuration dialog
Diffstat (limited to 'app')
| -rw-r--r-- | app/include/turns/app/windows/tracker.hpp | 3 | ||||
| -rw-r--r-- | app/src/windows/tracker.cpp | 23 |
2 files changed, 23 insertions, 3 deletions
diff --git a/app/include/turns/app/windows/tracker.hpp b/app/include/turns/app/windows/tracker.hpp index 292d6d5..4b1f89b 100644 --- a/app/include/turns/app/windows/tracker.hpp +++ b/app/include/turns/app/windows/tracker.hpp @@ -31,9 +31,8 @@ namespace turns::app::windows auto handle_add_participant() -> void; auto handle_delete_participant(Glib::VariantBase param) -> void; auto handle_edit_participant(Glib::VariantBase param) -> void; - auto handle_start() -> void; auto handle_stop() -> void; - + auto setup_actions() -> void; AdwApplicationWindow * m_adw; diff --git a/app/src/windows/tracker.cpp b/app/src/windows/tracker.cpp index 7712539..0fb508d 100644 --- a/app/src/windows/tracker.cpp +++ b/app/src/windows/tracker.cpp @@ -22,6 +22,16 @@ namespace turns::app::windows return std::pair{builder, Gtk::Builder::get_widget_derived<windows::participant_editor>(builder, "participant_editor", participant)}; } + auto stop_dialog_callback(AdwAlertDialog * dialog, GAsyncResult * result, domain::turn_order * order) + { + auto response = adw_alert_dialog_choose_finish(dialog, result); + if (response == Glib::ustring{"clear"}) + { + order->clear(); + } + order->stop(); + } + } // namespace tracker::tracker(BaseObjectType * base, Glib::RefPtr<Gtk::Builder> const builder) @@ -82,7 +92,18 @@ namespace turns::app::windows auto tracker::handle_stop() -> void { - m_turn_order->get_model()->stop(); + auto dialog = ADW_ALERT_DIALOG(adw_alert_dialog_new("Stop turn order", "Do you want to clear the turn order?")); + adw_alert_dialog_add_response(dialog, "stop", "Stop"); + adw_alert_dialog_set_response_appearance(dialog, "stop", ADW_RESPONSE_SUGGESTED); + adw_alert_dialog_add_response(dialog, "clear", "Stop and clear"); + adw_alert_dialog_set_response_appearance(dialog, "clear", ADW_RESPONSE_DESTRUCTIVE); + adw_alert_dialog_set_close_response(dialog, "stop"); + adw_alert_dialog_set_default_response(dialog, "stop"); + adw_alert_dialog_choose(dialog, + GTK_WIDGET(this->gobj()), + NULL, + reinterpret_cast<GAsyncReadyCallback>(stop_dialog_callback), + m_turn_order->get_model().get()); } auto tracker::setup_actions() -> void |
