summaryrefslogtreecommitdiff
path: root/domain/include/turns
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@gmail.com>2024-07-16 17:31:57 +0200
committerFelix Morgner <felix.morgner@gmail.com>2024-07-16 20:10:59 +0200
commit474f1302eaf868e2b311d6561a69cae8f736a7c1 (patch)
tree175a359a653c9ed96835e41e055f5ac011c7ce33 /domain/include/turns
parent2fd48d4ee446cb84f38605371eb9a05c70dde590 (diff)
downloadturns-474f1302eaf868e2b311d6561a69cae8f736a7c1.tar.xz
turns-474f1302eaf868e2b311d6561a69cae8f736a7c1.zip
app: move turn order management logic to turn_order
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