blob: 2840b250d22165aa4a5c31854e9e6e818a425d94 (
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
#include "ConditionEditor.h"
#include "CheckedConditionEditor.h"
#include "ClickStateConditionEditor.h"
#include "CompoundConditionEditor.h"
#include "FocusConditionEditor.h"
#include "NoConditionEditor.h"
#include "cru/common/Exception.h"
#include "cru/ui/controls/FlexLayout.h"
namespace cru::theme_builder::components::conditions {
ConditionEditor::ConditionEditor() {
container_.SetFlexDirection(ui::controls::FlexDirection::Vertical);
container_.AddChild(&label_);
}
ConditionEditor::~ConditionEditor() {}
std::unique_ptr<ConditionEditor> CreateConditionEditor(
ui::style::Condition* condition) {
if (auto and_condition = dynamic_cast<ui::style::AndCondition*>(condition)) {
auto result = std::make_unique<AndConditionEditor>();
result->SetValue(and_condition);
return result;
} else if (auto or_condition =
dynamic_cast<ui::style::OrCondition*>(condition)) {
auto result = std::make_unique<OrConditionEditor>();
result->SetValue(or_condition);
return result;
} else if (auto no_condition =
dynamic_cast<ui::style::NoCondition*>(condition)) {
auto result = std::make_unique<NoConditionEditor>();
return result;
} else if (auto click_state_condition =
dynamic_cast<ui::style::ClickStateCondition*>(condition)) {
auto result = std::make_unique<ClickStateConditionEditor>();
result->SetValue(click_state_condition);
return result;
} else if (auto focus_condition =
dynamic_cast<ui::style::FocusCondition*>(condition)) {
auto result = std::make_unique<FocusConditionEditor>();
result->SetValue(focus_condition);
return result;
} else if (auto checked_condition =
dynamic_cast<ui::style::CheckedCondition*>(condition)) {
auto result = std::make_unique<CheckedConditionEditor>();
result->SetValue(checked_condition);
return result;
} else {
throw Exception(u"Unknown condition type");
}
}
} // namespace cru::theme_builder::components::conditions
|