From 4ec6a2ae12b6adb843c0777649ff45a741ca6cbc Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Tue, 23 Jul 2024 15:08:19 +0200 Subject: domain: redesign turn_order --- app/src/widgets/participant_row.cpp | 19 ++++++++++++++++--- app/src/widgets/turn_order_view.cpp | 20 +++----------------- app/src/windows/participant_editor.cpp | 12 ++++++------ app/src/windows/tracker.cpp | 26 +++++++++++++------------- 4 files changed, 38 insertions(+), 39 deletions(-) (limited to 'app/src') diff --git a/app/src/widgets/participant_row.cpp b/app/src/widgets/participant_row.cpp index 3494834..87cc217 100644 --- a/app/src/widgets/participant_row.cpp +++ b/app/src/widgets/participant_row.cpp @@ -73,14 +73,14 @@ namespace turns::app::widgets if (participant) { - Glib::Binding::bind_property(participant->property_name(), m_title->property_label(), Glib::Binding::Flags::SYNC_CREATE); + Glib::Binding::bind_property(participant->name(), m_title->property_label(), Glib::Binding::Flags::SYNC_CREATE); - Glib::Binding::bind_property(participant->property_priority(), + Glib::Binding::bind_property(participant->priority(), m_subtitle->property_label(), Glib::Binding::Flags::SYNC_CREATE, [](auto n) { return std::vformat(_(lang::priority_number), std::make_format_args(n)); }); - Glib::Binding::bind_property(participant->property_disposition(), + Glib::Binding::bind_property(participant->disposition(), m_toggle_defeated->property_css_classes(), Glib::Binding::Flags::SYNC_CREATE, [this](auto value) { @@ -92,6 +92,19 @@ namespace turns::app::widgets classes.push_back(css_class_for(value)); return classes; }); + + Glib::Binding::bind_property(participant->is_active(), property_css_classes(), Glib::Binding::Flags::SYNC_CREATE, [this](auto value) { + auto classes = get_css_classes(); + if (!value) + { + std::erase(classes, "active-participant"); + } + else + { + classes.push_back("active-participant"); + } + return classes; + }); } } diff --git a/app/src/widgets/turn_order_view.cpp b/app/src/widgets/turn_order_view.cpp index ccc6d25..67e0afa 100644 --- a/app/src/widgets/turn_order_view.cpp +++ b/app/src/widgets/turn_order_view.cpp @@ -25,35 +25,21 @@ namespace turns::app::widgets { if (model) { - m_view->bind_model(m_model->list_model(), sigc::mem_fun(*this, &turn_order_view::handle_create_row)); - m_model->property_active_participant().signal_changed().connect( - sigc::mem_fun(*this, &turn_order_view::handle_active_participant_changed)); + m_view->bind_model(m_model, sigc::mem_fun(*this, &turn_order_view::handle_create_row)); } } - auto turn_order_view::handle_active_participant_changed() -> void - { - std::ranges::for_each(m_view->get_children(), [](auto c) { c->remove_css_class("active-participant"); }); - - auto index = m_model->active_participant(); - if (index != std::numeric_limits::max()) - { - auto row = m_view->get_row_at_index(index); - row->add_css_class("active-participant"); - row->grab_focus(); - } - } auto turn_order_view::handle_create_row(Glib::RefPtr const item) -> Gtk::Widget * { auto participant = std::dynamic_pointer_cast(item); auto row = Gtk::make_managed(participant); - Glib::Binding::bind_property(m_model->property_running(), + Glib::Binding::bind_property(m_model->is_running(), row->property_delete_enabled(), Glib::Binding::Flags::SYNC_CREATE | Glib::Binding::Flags::INVERT_BOOLEAN); - Glib::Binding::bind_property(m_model->property_running(), + Glib::Binding::bind_property(m_model->is_running(), row->property_edit_enabled(), Glib::Binding::Flags::SYNC_CREATE | Glib::Binding::Flags::INVERT_BOOLEAN); diff --git a/app/src/windows/participant_editor.cpp b/app/src/windows/participant_editor.cpp index 1c97442..0b35c72 100644 --- a/app/src/windows/participant_editor.cpp +++ b/app/src/windows/participant_editor.cpp @@ -42,9 +42,9 @@ namespace turns::app::windows if (m_participant) { - gtk_editable_set_text(GTK_EDITABLE(m_name), m_participant->property_name().get_value().c_str()); - adw_spin_row_set_value(m_priority, m_participant->property_priority().get_value()); - adw_combo_row_set_selected(m_disposition, static_cast(m_participant->get_disposition())); + gtk_editable_set_text(GTK_EDITABLE(m_name), m_participant->name().get_value().c_str()); + adw_spin_row_set_value(m_priority, m_participant->priority()); + adw_combo_row_set_selected(m_disposition, static_cast(m_participant->disposition().get_value())); } } @@ -66,9 +66,9 @@ namespace turns::app::windows if (m_participant) { - m_participant->set_name(name); - m_participant->set_priority(priority); - m_participant->set_disposition(disposition); + m_participant->name() = name; + m_participant->priority() = priority; + m_participant->disposition() = disposition; } m_signal_finished.emit(name, priority, disposition); diff --git a/app/src/windows/tracker.cpp b/app/src/windows/tracker.cpp index b7520dd..11f4642 100644 --- a/app/src/windows/tracker.cpp +++ b/app/src/windows/tracker.cpp @@ -51,16 +51,16 @@ namespace turns::app::windows m_stack->add(*m_turn_order_view); // clang-format off - Glib::Binding::bind_property(m_turn_order->property_empty(), + Glib::Binding::bind_property(m_turn_order->is_empty(), m_stack->property_visible_child(), Glib::Binding::Flags::SYNC_CREATE, [this](auto empty) { return empty ? m_empty : m_turn_order_view; }); - Glib::Binding::bind_property(m_turn_order->property_running(), + Glib::Binding::bind_property(m_turn_order->is_running(), m_controls->property_reveal_child(), Glib::Binding::Flags::SYNC_CREATE); - Glib::Binding::bind_property(m_turn_order->property_empty(), + Glib::Binding::bind_property(m_turn_order->is_empty(), m_subtitle, Glib::Binding::Flags::SYNC_CREATE, [](auto empty) { return empty ? _(lang::no_active_turn_order) : ""; }); @@ -84,7 +84,7 @@ namespace turns::app::windows { static_cast(param); auto index = Glib::VariantBase::cast_dynamic>(param); - auto participant = m_turn_order->get(index.get()); + auto participant = m_turn_order->get_typed_object(index.get()); auto [lifeline, dialog] = editor_for(participant); dialog->present(this); } @@ -112,17 +112,17 @@ namespace turns::app::windows { auto action = add_action("add_participant", sigc::mem_fun(*this, &tracker::handle_add_participant)); - Glib::Binding::bind_property(m_turn_order->property_running(), + Glib::Binding::bind_property(m_turn_order->is_running(), action->property_enabled(), Glib::Binding::Flags::SYNC_CREATE | Glib::Binding::Flags::INVERT_BOOLEAN); } // win.clear - // depends-on: turn_order:empty == false + // depends-on: turn_order:is_empty == false { auto action = add_action("clear", sigc::mem_fun(*m_turn_order, &domain::turn_order::clear)); - Glib::Binding::bind_property(m_turn_order->property_empty(), + Glib::Binding::bind_property(m_turn_order->is_empty(), action->property_enabled(), Glib::Binding::Flags::SYNC_CREATE | Glib::Binding::Flags::INVERT_BOOLEAN); } @@ -132,7 +132,7 @@ namespace turns::app::windows { auto action = add_action("next", sigc::mem_fun(*m_turn_order, &domain::turn_order::next)); - Glib::Binding::bind_property(m_turn_order->property_running(), action->property_enabled(), Glib::Binding::Flags::SYNC_CREATE); + Glib::Binding::bind_property(m_turn_order->is_running(), action->property_enabled(), Glib::Binding::Flags::SYNC_CREATE); } // win.previous @@ -140,19 +140,19 @@ namespace turns::app::windows { auto action = add_action("previous", sigc::mem_fun(*m_turn_order, &domain::turn_order::previous)); - Glib::Binding::bind_property(m_turn_order->property_has_previous(), action->property_enabled(), Glib::Binding::Flags::SYNC_CREATE); + Glib::Binding::bind_property(m_turn_order->has_previous(), action->property_enabled(), Glib::Binding::Flags::SYNC_CREATE); } // win.start - // depends-on: turn_order:empty == false + // depends-on: turn_order:is_empty == false { auto action = add_action("start", sigc::mem_fun(*m_turn_order, &domain::turn_order::start)); - Glib::Binding::bind_property(m_turn_order->property_empty(), + Glib::Binding::bind_property(m_turn_order->is_running(), action->property_enabled(), Glib::Binding::Flags::SYNC_CREATE | Glib::Binding::Flags::INVERT_BOOLEAN); - Glib::Binding::bind_property(m_turn_order->property_running(), + Glib::Binding::bind_property(m_turn_order->is_running(), m_start->property_visible(), Glib::Binding::Flags::SYNC_CREATE | Glib::Binding::Flags::INVERT_BOOLEAN); } @@ -162,7 +162,7 @@ namespace turns::app::windows { auto action = add_action("stop", sigc::mem_fun(*this, &tracker::handle_stop)); - Glib::Binding::bind_property(m_turn_order->property_running(), action->property_enabled(), Glib::Binding::Flags::SYNC_CREATE); + Glib::Binding::bind_property(m_turn_order->is_running(), action->property_enabled(), Glib::Binding::Flags::SYNC_CREATE); } // win.delete -- cgit v1.2.3