summaryrefslogtreecommitdiff
path: root/domain/src
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@gmail.com>2024-07-16 00:35:35 +0200
committerFelix Morgner <felix.morgner@gmail.com>2024-07-16 00:35:35 +0200
commit5845e43c503f306a653754303573af421207e90c (patch)
tree1ef94c028e5ba304dde3ab0e0cc263c9378fb823 /domain/src
parent4ca57dcae2291a09dcd84ccf056a65a2cf906c46 (diff)
downloadturns-5845e43c503f306a653754303573af421207e90c.tar.xz
turns-5845e43c503f306a653754303573af421207e90c.zip
domain: add disposition type
Diffstat (limited to 'domain/src')
-rw-r--r--domain/src/disposition.cpp64
1 files changed, 64 insertions, 0 deletions
diff --git a/domain/src/disposition.cpp b/domain/src/disposition.cpp
new file mode 100644
index 0000000..887d70f
--- /dev/null
+++ b/domain/src/disposition.cpp
@@ -0,0 +1,64 @@
+#include "turns/domain/disposition.hpp"
+
+#include <typeinfo>
+
+#include <glibmm/i18n.h>
+#include <glibmm/refptr.h>
+
+namespace turns::domain
+{
+
+ auto disposition::create(values value) -> Glib::RefPtr<disposition>
+ {
+ return Glib::make_refptr_for_instance(new disposition(value));
+ }
+
+ disposition::disposition(values value)
+ : Glib::ObjectBase{typeid(disposition)}
+ , m_value{*this, "value", value}
+ {
+ }
+
+ auto disposition::operator<=>(disposition const & other) const -> std::strong_ordering
+ {
+ return get_value() <=> other.get_value();
+ }
+
+ auto disposition::property_value() -> Glib::PropertyProxy<values>
+ {
+ return m_value.get_proxy();
+ }
+
+ auto disposition::property_value() const -> Glib::PropertyProxy_ReadOnly<values>
+ {
+ return m_value.get_proxy();
+ }
+
+ auto disposition::get_value() const -> values
+ {
+ return m_value;
+ }
+
+ auto disposition::set_value(values value) -> void
+ {
+ m_value = value;
+ }
+
+ auto disposition::get_presentation_name() const -> Glib::ustring
+ {
+ switch (get_value())
+ {
+ case values::neutral:
+ return _("Neutral");
+ case values::friendly:
+ return _("Friendly");
+ case values::hostile:
+ return _("Hostile");
+ case values::secret:
+ return _("Secret");
+ }
+
+ return _("Unknown disposition value");
+ }
+
+} // namespace turns::domain \ No newline at end of file