diff options
Diffstat (limited to 'domain/include/turns')
| -rw-r--r-- | domain/include/turns/domain/turn_order.hpp | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/domain/include/turns/domain/turn_order.hpp b/domain/include/turns/domain/turn_order.hpp index d7f8821..8f65104 100644 --- a/domain/include/turns/domain/turn_order.hpp +++ b/domain/include/turns/domain/turn_order.hpp @@ -5,29 +5,40 @@ #include "turns/domain/participant.hpp" #include <giomm/liststore.h> +#include <glibmm/property.h> #include <glibmm/refptr.h> #include <glibmm/ustring.h> namespace turns::domain { - struct turn_order : Gio::ListStore<participant> + struct turn_order : Glib::Object { - using super = Gio::ListStore<participant>; - using super::super; - - using super::remove; - auto static create() -> Glib::RefPtr<turn_order>; + turn_order(); + auto append(Glib::RefPtr<participant> item) -> void; auto append(Glib::ustring const & name, float priority, disposition disposition) -> void; + + auto get_participant(unsigned int index) -> Glib::RefPtr<participant>; + + auto list_model() -> Glib::RefPtr<Gio::ListModel>; + + auto n_participants() -> unsigned int; + auto remove(Glib::RefPtr<participant> item) -> void; + auto remove(unsigned int index) -> void; + auto remove_all() -> void; + + auto start() -> void; + + auto get_empty() const noexcept -> bool; + auto property_empty() const -> Glib::PropertyProxy_ReadOnly<bool>; private: - using super::insert; - using super::insert_sorted; - using super::sort; + Glib::RefPtr<Gio::ListStore<participant>> m_model; + Glib::Property<bool> m_empty; }; } // namespace turns::domain |
