diff options
Diffstat (limited to 'app')
| -rw-r--r-- | app/include/turns/app/widgets/participant_list_row.hpp | 3 | ||||
| -rw-r--r-- | app/src/widgets/participant_list_row.cpp | 9 | ||||
| -rw-r--r-- | app/src/windows/main.cpp | 6 |
3 files changed, 17 insertions, 1 deletions
diff --git a/app/include/turns/app/widgets/participant_list_row.hpp b/app/include/turns/app/widgets/participant_list_row.hpp index 8ec5979..f282992 100644 --- a/app/include/turns/app/widgets/participant_list_row.hpp +++ b/app/include/turns/app/widgets/participant_list_row.hpp @@ -17,6 +17,7 @@ namespace turns::app::widgets struct participant_list_row : template_widget<participant_list_row, Gtk::ListBoxRow> { auto constexpr inline static children = std::array{ + "delete", "edit", "subtitle", "title", @@ -29,8 +30,10 @@ namespace turns::app::widgets auto set_title(Glib::ustring const & value) -> void; private: + auto handle_delete() -> void; auto handle_toggle_defeated() -> void; + Gtk::Button * m_delete; Gtk::Button * m_edit; Gtk::Label * m_subtitle; Gtk::EditableLabel * m_title; 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 |
