summaryrefslogtreecommitdiff
path: root/app/src
diff options
context:
space:
mode:
Diffstat (limited to 'app/src')
-rw-r--r--app/src/windows/tracker.cpp23
1 files changed, 22 insertions, 1 deletions
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