blob: a9170cc5079413de0a78b5fd86aecc9334b30239 (
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
#include "ClickStateConditionEditor.h"
#include "cru/common/ClonablePtr.h"
#include "cru/ui/helper/ClickDetector.h"
#include "cru/ui/style/Condition.h"
namespace cru::theme_builder::components::conditions {
using ui::helper::ClickState;
namespace {
const std::vector<String> kClickStates{
u"None",
u"Hover",
u"Press",
u"PressInactive",
};
Index ConvertClickStateToIndex(ClickState click_state) {
switch (click_state) {
case ClickState::None:
return 0;
case ClickState::Hover:
return 1;
case ClickState::Press:
return 2;
case ClickState::PressInactive:
return 3;
}
return -1;
}
ClickState ConvertIndexToClickState(Index index) {
switch (index) {
case 0:
return ClickState::None;
case 1:
return ClickState::Hover;
case 2:
return ClickState::Press;
case 3:
return ClickState::PressInactive;
}
return ClickState::None;
}
} // namespace
ClickStateConditionEditor::ClickStateConditionEditor() {
GetContainer()->AddChild(click_state_select_.GetRootControl());
click_state_select_.SetItems(kClickStates);
click_state_select_.SetSelectedIndex(0, false);
click_state_select_.ChangeEvent()->AddSpyOnlyHandler(
[this] { change_event_.Raise(nullptr); });
}
ClickStateConditionEditor::~ClickStateConditionEditor() {}
ClonablePtr<ui::style::ClickStateCondition>
ClickStateConditionEditor::GetValue() const {
return ui::style::ClickStateCondition::Create(
ConvertIndexToClickState(click_state_select_.GetSelectedIndex()));
}
void ClickStateConditionEditor::SetValue(
ClonablePtr<ui::style::ClickStateCondition> value, bool trigger_change) {
click_state_select_.SetSelectedIndex(
ConvertClickStateToIndex(value->GetClickState()), trigger_change);
}
} // namespace cru::theme_builder::components::conditions
|