diff options
Diffstat (limited to 'app')
| -rw-r--r-- | app/include/turns/app/widgets/turn_order_view.hpp | 7 | ||||
| -rw-r--r-- | app/src/widgets/turn_order_view.cpp | 17 | ||||
| -rw-r--r-- | app/src/windows/tracker.cpp | 16 |
3 files changed, 23 insertions, 17 deletions
diff --git a/app/include/turns/app/widgets/turn_order_view.hpp b/app/include/turns/app/widgets/turn_order_view.hpp index c55483a..c9be5ff 100644 --- a/app/include/turns/app/widgets/turn_order_view.hpp +++ b/app/include/turns/app/widgets/turn_order_view.hpp @@ -31,9 +31,8 @@ namespace turns::app::widgets auto get(std::size_t index) -> Glib::RefPtr<domain::participant>; auto remove(std::size_t index) -> void; - - auto get_n_items() const noexcept -> unsigned int; - auto property_n_items() const -> Glib::PropertyProxy_ReadOnly<unsigned int>; + auto get_is_empty() const noexcept -> bool; + auto property_is_empty() const -> Glib::PropertyProxy_ReadOnly<bool>; private: auto handle_create_row(Glib::RefPtr<Glib::Object> const item) -> Gtk::Widget *; @@ -41,7 +40,7 @@ namespace turns::app::widgets Glib::RefPtr<domain::turn_order> m_model; Gtk::ListBox * m_view; - Glib::PropertyProxy_ReadOnly<unsigned int> m_n_items; + Glib::Property<bool> m_is_empty; }; } // namespace turns::app::widgets diff --git a/app/src/widgets/turn_order_view.cpp b/app/src/widgets/turn_order_view.cpp index 9d49ad8..c66212a 100644 --- a/app/src/widgets/turn_order_view.cpp +++ b/app/src/widgets/turn_order_view.cpp @@ -21,9 +21,16 @@ namespace turns::app::widgets , template_widget<turn_order_view, Gtk::ScrolledWindow>{TEMPLATE} , m_model{domain::turn_order::create()} , m_view{get_widget<Gtk::ListBox>("view")} - , m_n_items{m_model.get(), "n_items"} + , m_is_empty{*this, "is_empty", true} { m_view->bind_model(m_model, sigc::mem_fun(*this, &turn_order_view::handle_create_row)); + + // clang-format off + Glib::Binding::bind_property(m_model->property_n_items(), + m_is_empty.get_proxy(), + Glib::Binding::Flags::DEFAULT, + [](auto n) { return n == 0; }); + // clang-format on } auto turn_order_view::append(Glib::ustring name, float priority, domain::disposition disposition) -> void @@ -47,14 +54,14 @@ namespace turns::app::widgets m_model->remove(index); } - auto turn_order_view::get_n_items() const noexcept -> unsigned int + auto turn_order_view::get_is_empty() const noexcept -> bool { - return m_n_items; + return m_is_empty; } - auto turn_order_view::property_n_items() const -> Glib::PropertyProxy_ReadOnly<unsigned int> + auto turn_order_view::property_is_empty() const -> Glib::PropertyProxy_ReadOnly<bool> { - return m_n_items; + return m_is_empty.get_proxy(); } auto turn_order_view::handle_create_row(Glib::RefPtr<Glib::Object> const item) -> Gtk::Widget * diff --git a/app/src/windows/tracker.cpp b/app/src/windows/tracker.cpp index f57e9eb..21dd21f 100644 --- a/app/src/windows/tracker.cpp +++ b/app/src/windows/tracker.cpp @@ -37,23 +37,23 @@ namespace turns::app::windows m_stack->add(*m_turn_order); // clang-format off - m_clear_action_enabled = Glib::Binding::bind_property(m_turn_order->property_n_items(), + m_clear_action_enabled = Glib::Binding::bind_property(m_turn_order->property_is_empty(), m_clear_action->property_enabled(), - Glib::Binding::Flags::SYNC_CREATE); + Glib::Binding::Flags::SYNC_CREATE | Glib::Binding::Flags::INVERT_BOOLEAN); - m_controls_revealed = Glib::Binding::bind_property(m_turn_order->property_n_items(), + m_controls_revealed = Glib::Binding::bind_property(m_turn_order->property_is_empty(), m_controls->property_reveal_child(), - Glib::Binding::Flags::SYNC_CREATE); + Glib::Binding::Flags::SYNC_CREATE | Glib::Binding::Flags::INVERT_BOOLEAN); - m_visible_child_widget = Glib::Binding::bind_property(m_turn_order->property_n_items(), + m_visible_child_widget = Glib::Binding::bind_property(m_turn_order->property_is_empty(), m_stack->property_visible_child(), Glib::Binding::Flags::SYNC_CREATE, - [this](auto count) { return count ? m_turn_order : m_empty; }); + [this](auto empty) { return empty ? m_empty : m_turn_order; }); - m_subtitle_text = Glib::Binding::bind_property(m_turn_order->property_n_items(), + m_subtitle_text = Glib::Binding::bind_property(m_turn_order->property_is_empty(), m_subtitle, Glib::Binding::Flags::SYNC_CREATE, - [](auto count) { return count ? "" : _(lang::no_active_turn_order); }); + [](auto empty) { return empty ? _(lang::no_active_turn_order) : ""; }); // clang-format on add_action("add_participant", sigc::mem_fun(*this, &tracker::handle_add_participant)); |
