aboutsummaryrefslogtreecommitdiff
path: root/include/cru/ui/mapper/style
diff options
context:
space:
mode:
Diffstat (limited to 'include/cru/ui/mapper/style')
-rw-r--r--include/cru/ui/mapper/style/AndConditionMapper.hpp24
-rw-r--r--include/cru/ui/mapper/style/FocusConditionMapper.hpp9
-rw-r--r--include/cru/ui/mapper/style/IConditionMapper.hpp17
-rw-r--r--include/cru/ui/mapper/style/NoConditionMapper.hpp9
-rw-r--r--include/cru/ui/mapper/style/OrConditionMapper.hpp24
5 files changed, 81 insertions, 2 deletions
diff --git a/include/cru/ui/mapper/style/AndConditionMapper.hpp b/include/cru/ui/mapper/style/AndConditionMapper.hpp
new file mode 100644
index 00000000..ef6ecdd8
--- /dev/null
+++ b/include/cru/ui/mapper/style/AndConditionMapper.hpp
@@ -0,0 +1,24 @@
+#pragma once
+#include "../Mapper.hpp"
+#include "IConditionMapper.hpp"
+
+namespace cru::ui::mapper::style {
+class AndConditionMapper : public BasicPtrMapper<ui::style::AndCondition>,
+ public virtual IConditionMapper {
+ public:
+ CRU_DEFAULT_CONSTRUCTOR_DESTRUCTOR(AndConditionMapper)
+
+ public:
+ bool SupportMapFromXml() override { return true; }
+ bool XmlElementIsOfThisType(xml::XmlElementNode* node) override;
+
+ ClonablePtr<ui::style::Condition> MapConditionFromXml(
+ xml::XmlElementNode* node) override {
+ return MapFromXml(node);
+ }
+
+ protected:
+ ClonablePtr<ui::style::AndCondition> DoMapFromXml(
+ xml::XmlElementNode* node) override;
+};
+} // namespace cru::ui::mapper::style
diff --git a/include/cru/ui/mapper/style/FocusConditionMapper.hpp b/include/cru/ui/mapper/style/FocusConditionMapper.hpp
index bf84304d..974a6739 100644
--- a/include/cru/ui/mapper/style/FocusConditionMapper.hpp
+++ b/include/cru/ui/mapper/style/FocusConditionMapper.hpp
@@ -1,9 +1,11 @@
#pragma once
#include "../Mapper.hpp"
+#include "IConditionMapper.hpp"
#include "cru/ui/style/Condition.hpp"
namespace cru::ui::mapper::style {
-class FocusConditionMapper : public BasicPtrMapper<ui::style::FocusCondition> {
+class FocusConditionMapper : public BasicPtrMapper<ui::style::FocusCondition>,
+ public virtual IConditionMapper {
public:
CRU_DEFAULT_CONSTRUCTOR_DESTRUCTOR(FocusConditionMapper)
@@ -11,6 +13,11 @@ class FocusConditionMapper : public BasicPtrMapper<ui::style::FocusCondition> {
bool SupportMapFromXml() override { return true; }
bool XmlElementIsOfThisType(xml::XmlElementNode* node) override;
+ ClonablePtr<ui::style::Condition> MapConditionFromXml(
+ xml::XmlElementNode* node) override {
+ return MapFromXml(node);
+ }
+
protected:
ClonablePtr<ui::style::FocusCondition> DoMapFromXml(
xml::XmlElementNode* node) override;
diff --git a/include/cru/ui/mapper/style/IConditionMapper.hpp b/include/cru/ui/mapper/style/IConditionMapper.hpp
new file mode 100644
index 00000000..f5d7ad1e
--- /dev/null
+++ b/include/cru/ui/mapper/style/IConditionMapper.hpp
@@ -0,0 +1,17 @@
+#pragma once
+#include "../../Base.hpp"
+#include "cru/common/ClonablePtr.hpp"
+#include "cru/ui/mapper/Mapper.hpp"
+#include "cru/ui/style/Condition.hpp"
+#include "cru/xml/XmlNode.hpp"
+
+namespace cru::ui::mapper::style {
+struct IConditionMapper : virtual Interface {
+ bool XmlElementIsOfThisType(xml::XmlElementNode* node) {
+ return dynamic_cast<MapperBase*>(this)->XmlElementIsOfThisType(node);
+ }
+
+ virtual ClonablePtr<ui::style::Condition> MapConditionFromXml(
+ xml::XmlElementNode* node) = 0;
+};
+} // namespace cru::ui::mapper::style
diff --git a/include/cru/ui/mapper/style/NoConditionMapper.hpp b/include/cru/ui/mapper/style/NoConditionMapper.hpp
index 21d186b5..79985e89 100644
--- a/include/cru/ui/mapper/style/NoConditionMapper.hpp
+++ b/include/cru/ui/mapper/style/NoConditionMapper.hpp
@@ -1,12 +1,14 @@
#pragma once
#include "../Mapper.hpp"
+#include "IConditionMapper.hpp"
#include "cru/common/Base.hpp"
#include "cru/common/ClonablePtr.hpp"
#include "cru/ui/style/Condition.hpp"
#include "cru/xml/XmlNode.hpp"
namespace cru::ui::mapper::style {
-class NoConditionMapper : public BasicPtrMapper<ui::style::NoCondition> {
+class NoConditionMapper : public BasicPtrMapper<ui::style::NoCondition>,
+ public virtual IConditionMapper {
public:
CRU_DEFAULT_CONSTRUCTOR_DESTRUCTOR(NoConditionMapper)
@@ -14,6 +16,11 @@ class NoConditionMapper : public BasicPtrMapper<ui::style::NoCondition> {
bool SupportMapFromXml() override { return true; }
bool XmlElementIsOfThisType(xml::XmlElementNode* node) override;
+ ClonablePtr<ui::style::Condition> MapConditionFromXml(
+ xml::XmlElementNode* node) override {
+ return MapFromXml(node);
+ }
+
protected:
ClonablePtr<ui::style::NoCondition> DoMapFromXml(
xml::XmlElementNode* node) override;
diff --git a/include/cru/ui/mapper/style/OrConditionMapper.hpp b/include/cru/ui/mapper/style/OrConditionMapper.hpp
new file mode 100644
index 00000000..252d8340
--- /dev/null
+++ b/include/cru/ui/mapper/style/OrConditionMapper.hpp
@@ -0,0 +1,24 @@
+#pragma once
+#include "../Mapper.hpp"
+#include "IConditionMapper.hpp"
+
+namespace cru::ui::mapper::style {
+class OrConditionMapper : public BasicPtrMapper<ui::style::OrCondition>,
+ public virtual IConditionMapper {
+ public:
+ CRU_DEFAULT_CONSTRUCTOR_DESTRUCTOR(OrConditionMapper)
+
+ public:
+ bool SupportMapFromXml() override { return true; }
+ bool XmlElementIsOfThisType(xml::XmlElementNode* node) override;
+
+ ClonablePtr<ui::style::Condition> MapConditionFromXml(
+ xml::XmlElementNode* node) override {
+ return MapFromXml(node);
+ }
+
+ protected:
+ ClonablePtr<ui::style::OrCondition> DoMapFromXml(
+ xml::XmlElementNode* node) override;
+};
+} // namespace cru::ui::mapper::style