summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/include/turns/app/widgets/turn_order_view.hpp1
-rw-r--r--app/include/turns/app/windows/participant_editor.hpp6
-rw-r--r--app/src/widgets/participant_row.cpp19
-rw-r--r--app/src/widgets/turn_order_view.cpp20
-rw-r--r--app/src/windows/participant_editor.cpp12
-rw-r--r--app/src/windows/tracker.cpp26
-rw-r--r--app/tests/windows/participant_editor.cpp4
7 files changed, 43 insertions, 45 deletions
diff --git a/app/include/turns/app/widgets/turn_order_view.hpp b/app/include/turns/app/widgets/turn_order_view.hpp
index 7b7556f..15524a9 100644
--- a/app/include/turns/app/widgets/turn_order_view.hpp
+++ b/app/include/turns/app/widgets/turn_order_view.hpp
@@ -27,7 +27,6 @@ namespace turns::app::widgets
explicit turn_order_view(Glib::RefPtr<model_type> model = {});
private:
- auto handle_active_participant_changed() -> void;
auto handle_create_row(Glib::RefPtr<Glib::Object> const item) -> Gtk::Widget *;
Glib::RefPtr<model_type> m_model;
diff --git a/app/include/turns/app/windows/participant_editor.hpp b/app/include/turns/app/windows/participant_editor.hpp
index 764b9ba..23d0569 100644
--- a/app/include/turns/app/windows/participant_editor.hpp
+++ b/app/include/turns/app/windows/participant_editor.hpp
@@ -21,9 +21,9 @@ namespace turns::app::windows
struct participant_editor : Gtk::Widget
{
- using signal_finished_type = sigc::signal<void(decltype(std::declval<domain::participant const>().get_name()),
- decltype(std::declval<domain::participant const>().get_priority()),
- decltype(std::declval<domain::participant const>().get_disposition()))>;
+ using signal_finished_type = sigc::signal<void(decltype(std::declval<domain::participant const>().name().get_value()),
+ decltype(std::declval<domain::participant const>().priority().get_value()),
+ decltype(std::declval<domain::participant const>().disposition().get_value()))>;
participant_editor(BaseObjectType * base, Glib::RefPtr<Gtk::Builder> const builder, Glib::RefPtr<domain::participant> obj = {});
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<domain::turn_order::active_participant_type>::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<Glib::Object> const item) -> Gtk::Widget *
{
auto participant = std::dynamic_pointer_cast<domain::participant>(item);
auto row = Gtk::make_managed<widgets::participant_row>(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<unsigned>(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<unsigned>(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<void>(param);
auto index = Glib::VariantBase::cast_dynamic<Glib::Variant<int>>(param);
- auto participant = m_turn_order->get(index.get());
+ auto participant = m_turn_order->get_typed_object<domain::participant>(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
diff --git a/app/tests/windows/participant_editor.cpp b/app/tests/windows/participant_editor.cpp
index 5808740..9f73861 100644
--- a/app/tests/windows/participant_editor.cpp
+++ b/app/tests/windows/participant_editor.cpp
@@ -95,13 +95,13 @@ namespace turns::app::windows::tests
SECTION("has its name field set according to its participant")
{
auto widget = GTK_EDITABLE(builder->get_widget<Gtk::ListBoxRow>("name")->gobj());
- REQUIRE(gtk_editable_get_text(widget) == participant->get_name());
+ REQUIRE(gtk_editable_get_text(widget) == participant->name().get_value());
}
SECTION("has its priority field set according to its participant")
{
auto widget = ADW_SPIN_ROW(builder->get_widget<Gtk::ListBoxRow>("priority")->gobj());
- REQUIRE(adw_spin_row_get_value(widget) == participant->get_priority());
+ REQUIRE(adw_spin_row_get_value(widget) == participant->priority());
}
SECTION("allows binding to the finished signal")