diff options
| author | Felix Morgner <felix.morgner@gmail.com> | 2024-07-14 22:39:04 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@gmail.com> | 2024-07-14 22:39:04 +0200 |
| commit | 9c1a9f41e2cef7f6e151a5f08367607e16d0f908 (patch) | |
| tree | d7abb8ab7e3ea86c920bbe0698233795ad96d171 /app/src | |
| parent | 05da3897f944f5775d25de2136ea985d4b0078eb (diff) | |
| download | turns-9c1a9f41e2cef7f6e151a5f08367607e16d0f908.tar.xz turns-9c1a9f41e2cef7f6e151a5f08367607e16d0f908.zip | |
app/ui: enable deletion of participants
Diffstat (limited to 'app/src')
| -rw-r--r-- | app/src/widgets/participant_list_row.cpp | 9 | ||||
| -rw-r--r-- | app/src/windows/main.cpp | 6 |
2 files changed, 14 insertions, 1 deletions
diff --git a/app/src/widgets/participant_list_row.cpp b/app/src/widgets/participant_list_row.cpp index 358a947..11715d3 100644 --- a/app/src/widgets/participant_list_row.cpp +++ b/app/src/widgets/participant_list_row.cpp @@ -4,6 +4,7 @@ #include <glibmm/i18n.h> #include <glibmm/ustring.h> +#include <glibmm/variant.h> namespace turns::app::widgets { @@ -17,11 +18,19 @@ namespace turns::app::widgets : Glib::ObjectBase(TYPE_NAME) , template_widget<participant_list_row, Gtk::ListBoxRow>{TEMPLATE} { + m_delete = get_widget<Gtk::Button>("delete"); m_edit = get_widget<Gtk::Button>("edit"); m_subtitle = get_widget<Gtk::Label>("subtitle"); m_title = get_widget<Gtk::EditableLabel>("title"); m_toggle_defeated = get_widget<Gtk::ToggleButton>("toggle_defeated"); + signal_map().connect([this]{ + m_delete->set_action_target_value(Glib::Variant<int>::create(get_index())); + m_delete->set_action_name("win.delete"); + m_edit->set_action_target_value(Glib::Variant<int>::create(get_index())); + m_edit->set_action_name("win.edit"); + }); + m_toggle_defeated->set_tooltip_text(_("Mark as defeated")); m_toggle_defeated->signal_toggled().connect(sigc::mem_fun(*this, &participant_list_row::handle_toggle_defeated)); } diff --git a/app/src/windows/main.cpp b/app/src/windows/main.cpp index 314b8cc..476545e 100644 --- a/app/src/windows/main.cpp +++ b/app/src/windows/main.cpp @@ -40,6 +40,10 @@ namespace turns::app::windows m_participant_list->bind_model(m_participants, sigc::mem_fun(*this, &main::handle_create_list_row)); add_action("add_participant", sigc::mem_fun(*this, &main::handle_add_participant)); + add_action_with_parameter("delete", Glib::VARIANT_TYPE_INT32, [this](auto param) { + auto index = Glib::VariantBase::cast_dynamic<Glib::Variant<int>>(param); + m_participants->remove(index.get()); + }); } auto main::handle_create_list_row(Glib::RefPtr<Glib::Object> const item) -> Gtk::Widget * @@ -55,7 +59,7 @@ namespace turns::app::windows auto builder = Gtk::Builder::create_from_resource("/ch/arknet/Turns/windows/create_participant.ui"); auto dialog = Gtk::Builder::get_widget_derived<windows::create_participant>(builder, "create_participant_dialog"); dialog->present(this); - dialog->signal_finished().connect(sigc::mem_fun(*m_participants, &domain::turn_order::append)); + dialog->signal_finished().connect([this](auto name, auto order) { m_participants->append(name, order); }); } } // namespace turns::app::windows |
