blob: a91f5130dab1ce66bd3e69d27582f592acbdda30 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#include "cru/ui/mapper/style/OrConditionMapper.hpp"
#include "cru/common/ClonablePtr.hpp"
#include "cru/ui/mapper/MapperRegistry.hpp"
#include "cru/ui/mapper/style/IConditionMapper.hpp"
#include "cru/ui/style/Condition.hpp"
#include "cru/xml/XmlNode.hpp"
namespace cru::ui::mapper::style {
bool OrConditionMapper::XmlElementIsOfThisType(xml::XmlElementNode *node) {
return node->GetTag().CaseInsensitiveEqual(u"OrCondition");
}
ClonablePtr<ui::style::OrCondition> OrConditionMapper::DoMapFromXml(
xml::XmlElementNode *node) {
std::vector<ClonablePtr<ui::style::Condition>> conditions;
auto condition_mappers =
MapperRegistry::GetInstance()->GetMappersByInterface<IConditionMapper>();
for (auto child : node->GetChildren()) {
if (child->GetType() == xml::XmlNode::Type::Element) {
auto c = child->AsElement();
for (auto mapper : condition_mappers) {
if (mapper->XmlElementIsOfThisType(c)) {
conditions.push_back(mapper->MapConditionFromXml(c));
break;
}
}
}
}
return ui::style::OrCondition::Create(std::move(conditions));
}
} // namespace cru::ui::mapper::style
|