diff options
Diffstat (limited to 'domain/src/disposition.cpp')
| -rw-r--r-- | domain/src/disposition.cpp | 64 |
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 |
