summaryrefslogtreecommitdiff
path: root/domain/src
diff options
context:
space:
mode:
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