summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/include/turns/app/windows/tracker.hpp3
-rw-r--r--app/src/windows/tracker.cpp23
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