aboutsummaryrefslogtreecommitdiff
path: root/src/theme_builder/components/conditions
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2022-02-16 22:42:34 +0800
committercrupest <crupest@outlook.com>2022-02-16 22:42:34 +0800
commitf75ab0bd662c73d15057d746347d09bf94a992a6 (patch)
tree91efc33de481edf5304001d80b914b69cc0fb338 /src/theme_builder/components/conditions
parent2711b7032cafdc9bdbd6ae06db0325c91e6e7f63 (diff)
downloadcru-f75ab0bd662c73d15057d746347d09bf94a992a6.tar.gz
cru-f75ab0bd662c73d15057d746347d09bf94a992a6.tar.bz2
cru-f75ab0bd662c73d15057d746347d09bf94a992a6.zip
...
Diffstat (limited to 'src/theme_builder/components/conditions')
-rw-r--r--src/theme_builder/components/conditions/CompoundConditionEditor.cpp14
-rw-r--r--src/theme_builder/components/conditions/ConditionEditor.cpp8
-rw-r--r--src/theme_builder/components/conditions/NoConditionEditor.cpp7
-rw-r--r--src/theme_builder/components/conditions/NoConditionEditor.h22
4 files changed, 43 insertions, 8 deletions
diff --git a/src/theme_builder/components/conditions/CompoundConditionEditor.cpp b/src/theme_builder/components/conditions/CompoundConditionEditor.cpp
index c53b2b69..b4f0b458 100644
--- a/src/theme_builder/components/conditions/CompoundConditionEditor.cpp
+++ b/src/theme_builder/components/conditions/CompoundConditionEditor.cpp
@@ -3,6 +3,7 @@
#include "ClickStateConditionEditor.h"
#include "ConditionEditor.h"
#include "FocusConditionEditor.h"
+#include "NoConditionEditor.h"
#include "cru/common/ClonablePtr.h"
#include "cru/ui/style/Condition.h"
@@ -32,13 +33,9 @@ CompoundConditionEditor::CompoundConditionEditor() {
GetContainer()->AddChild(&children_container_);
GetContainer()->AddChild(add_child_button_.GetRootControl());
add_child_button_.SetButtonText(u"+");
- add_child_button_.SetMenuItems({
- u"And Condtion",
- u"Or Condtion",
- u"Click State Condtion",
- u"Focus Condtion",
- u"Checked Condtion",
- });
+ add_child_button_.SetMenuItems({u"And Condition", u"Or Condition",
+ u"Click State Condition", u"Focus Condition",
+ u"Checked Condition", u"No Condition"});
add_child_button_.MenuItemSelectedEvent()->AddHandler([this](Index index) {
std::unique_ptr<ConditionEditor> editor;
switch (index) {
@@ -57,6 +54,9 @@ CompoundConditionEditor::CompoundConditionEditor() {
case 4:
editor = std::make_unique<CheckedConditionEditor>();
break;
+ case 5:
+ editor = std::make_unique<NoConditionEditor>();
+ break;
default:
break;
}
diff --git a/src/theme_builder/components/conditions/ConditionEditor.cpp b/src/theme_builder/components/conditions/ConditionEditor.cpp
index f5edf674..8ffd33a5 100644
--- a/src/theme_builder/components/conditions/ConditionEditor.cpp
+++ b/src/theme_builder/components/conditions/ConditionEditor.cpp
@@ -3,6 +3,8 @@
#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 {
@@ -24,6 +26,10 @@ std::unique_ptr<ConditionEditor> CreateConditionEditor(
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>();
@@ -40,7 +46,7 @@ std::unique_ptr<ConditionEditor> CreateConditionEditor(
result->SetValue(checked_condition);
return result;
} else {
- return nullptr;
+ throw Exception(u"Unknown condition type");
}
}
} // namespace cru::theme_builder::components::conditions
diff --git a/src/theme_builder/components/conditions/NoConditionEditor.cpp b/src/theme_builder/components/conditions/NoConditionEditor.cpp
new file mode 100644
index 00000000..a5087159
--- /dev/null
+++ b/src/theme_builder/components/conditions/NoConditionEditor.cpp
@@ -0,0 +1,7 @@
+#include "NoConditionEditor.h"
+
+namespace cru::theme_builder::components::conditions {
+NoConditionEditor::NoConditionEditor() { SetLabel(u"No condition"); }
+
+NoConditionEditor::~NoConditionEditor() {}
+} // namespace cru::theme_builder::components::conditions
diff --git a/src/theme_builder/components/conditions/NoConditionEditor.h b/src/theme_builder/components/conditions/NoConditionEditor.h
new file mode 100644
index 00000000..da5f99b0
--- /dev/null
+++ b/src/theme_builder/components/conditions/NoConditionEditor.h
@@ -0,0 +1,22 @@
+#pragma once
+#include "ConditionEditor.h"
+#include "cru/common/ClonablePtr.h"
+#include "cru/ui/style/Condition.h"
+
+namespace cru::theme_builder::components::conditions {
+class NoConditionEditor : public ConditionEditor {
+ public:
+ NoConditionEditor();
+ ~NoConditionEditor() override;
+
+ public:
+ ClonablePtr<ui::style::Condition> GetCondition() override {
+ return ui::style::NoCondition::Create();
+ }
+
+ IEvent<std::nullptr_t>* ChangeEvent() override { return &change_event_; }
+
+ private:
+ Event<std::nullptr_t> change_event_;
+};
+} // namespace cru::theme_builder::components::conditions