aboutsummaryrefslogtreecommitdiff
path: root/src/ui
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2022-02-23 21:37:11 +0800
committercrupest <crupest@outlook.com>2022-02-23 21:37:11 +0800
commit9a3a9f487b24a7b1afff5e6f07e88096dc5755be (patch)
tree3aef99be8bf58509907d056bef469820d2a106b5 /src/ui
parent603f46e195823530bafda97f0dda1a332cc39dc8 (diff)
downloadcru-9a3a9f487b24a7b1afff5e6f07e88096dc5755be.tar.gz
cru-9a3a9f487b24a7b1afff5e6f07e88096dc5755be.tar.bz2
cru-9a3a9f487b24a7b1afff5e6f07e88096dc5755be.zip
...
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/CMakeLists.txt1
-rw-r--r--src/ui/mapper/MapperRegistry.cpp2
-rw-r--r--src/ui/mapper/style/CheckedConditionMapper.cpp22
3 files changed, 25 insertions, 0 deletions
diff --git a/src/ui/CMakeLists.txt b/src/ui/CMakeLists.txt
index 91128862..84f67407 100644
--- a/src/ui/CMakeLists.txt
+++ b/src/ui/CMakeLists.txt
@@ -39,6 +39,7 @@ add_library(cru_ui SHARED
mapper/ThicknessMapper.cpp
mapper/style/AndConditionMapper.cpp
mapper/style/BorderStylerMapper.cpp
+ mapper/style/CheckedConditionMapper.cpp
mapper/style/ClickStateConditionMapper.cpp
mapper/style/CursorStylerMapper.cpp
mapper/style/FocusConditionMapper.cpp
diff --git a/src/ui/mapper/MapperRegistry.cpp b/src/ui/mapper/MapperRegistry.cpp
index 83105b9b..afbbc8b9 100644
--- a/src/ui/mapper/MapperRegistry.cpp
+++ b/src/ui/mapper/MapperRegistry.cpp
@@ -10,6 +10,7 @@
#include "cru/ui/mapper/ThicknessMapper.h"
#include "cru/ui/mapper/style/AndConditionMapper.h"
#include "cru/ui/mapper/style/BorderStylerMapper.h"
+#include "cru/ui/mapper/style/CheckedConditionMapper.h"
#include "cru/ui/mapper/style/ClickStateConditionMapper.h"
#include "cru/ui/mapper/style/CursorStylerMapper.h"
#include "cru/ui/mapper/style/FocusConditionMapper.h"
@@ -39,6 +40,7 @@ MapperRegistry::MapperRegistry() {
RegisterMapper(new CursorMapper());
RegisterMapper(new AndConditionMapper());
RegisterMapper(new BorderStylerMapper());
+ RegisterMapper(new CheckedConditionMapper());
RegisterMapper(new ClickStateConditionMapper());
RegisterMapper(new CursorStylerMapper());
RegisterMapper(new FocusConditionMapper());
diff --git a/src/ui/mapper/style/CheckedConditionMapper.cpp b/src/ui/mapper/style/CheckedConditionMapper.cpp
new file mode 100644
index 00000000..c4c8ad38
--- /dev/null
+++ b/src/ui/mapper/style/CheckedConditionMapper.cpp
@@ -0,0 +1,22 @@
+#include "cru/common/ClonablePtr.h"
+#include "cru/ui/mapper/style/CheckedConditionMapper.h"
+#include "cru/ui/style/Condition.h"
+#include "cru/xml/XmlNode.h"
+
+namespace cru::ui::mapper::style {
+bool CheckedConditionMapper::XmlElementIsOfThisType(xml::XmlElementNode* node) {
+ return node->GetTag().CaseInsensitiveEqual(u"CheckedCondition");
+}
+
+ClonablePtr<ui::style::CheckedCondition> CheckedConditionMapper::DoMapFromXml(
+ xml::XmlElementNode* node) {
+ auto value = node->GetAttributeCaseInsensitive(u"value");
+ if (value.CaseInsensitiveEqual(u"true")) {
+ return ui::style::CheckedCondition::Create(true);
+ } else if (value.CaseInsensitiveEqual(u"false")) {
+ return ui::style::CheckedCondition::Create(false);
+ } else {
+ throw Exception(u"Invalid value for CheckedCondition: " + value);
+ }
+}
+} // namespace cru::ui::mapper::style