summaryrefslogtreecommitdiff
path: root/domain/include/turns
diff options
context:
space:
mode:
Diffstat (limited to 'domain/include/turns')
-rw-r--r--domain/include/turns/domain/turn_order.hpp29
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