aboutsummaryrefslogtreecommitdiff
path: root/src/ui/mapper/style/HoverConditionMapper.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/mapper/style/HoverConditionMapper.cpp')
-rw-r--r--src/ui/mapper/style/HoverConditionMapper.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/ui/mapper/style/HoverConditionMapper.cpp b/src/ui/mapper/style/HoverConditionMapper.cpp
new file mode 100644
index 00000000..b78c12e9
--- /dev/null
+++ b/src/ui/mapper/style/HoverConditionMapper.cpp
@@ -0,0 +1,23 @@
+#include "cru/ui/mapper/style/HoverConditionMapper.hpp"
+#include "cru/common/ClonablePtr.hpp"
+#include "cru/ui/style/Condition.hpp"
+
+namespace cru::ui::mapper::style {
+using namespace cru::ui::style;
+
+bool HoverConditionMapper::XmlElementIsOfThisType(xml::XmlElementNode* node) {
+ return node->GetTag().CaseInsensitiveEqual(u"HoverCondition");
+}
+
+ClonablePtr<HoverCondition> HoverConditionMapper::DoMapFromXml(
+ xml::XmlElementNode* node) {
+ auto value = node->GetAttributeCaseInsensitive(u"value");
+ if (value.CaseInsensitiveEqual(u"true")) {
+ return ui::style::HoverCondition::Create(true);
+ } else if (value.CaseInsensitiveEqual(u"false")) {
+ return ui::style::HoverCondition::Create(false);
+ } else {
+ throw Exception(u"Invalid value for HoverCondition: " + value);
+ }
+}
+} // namespace cru::ui::mapper::style