aboutsummaryrefslogtreecommitdiff
path: root/src/ThemeBuilder/components/conditions/ConditionEditor.cpp
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2022-05-15 14:15:31 +0800
committercrupest <crupest@outlook.com>2022-05-15 14:15:31 +0800
commit34a64e6ffefaab007578932ddbab931a25f1d56e (patch)
tree541fdb8279e829a129df62288d09916bf23c9200 /src/ThemeBuilder/components/conditions/ConditionEditor.cpp
parent8ad2966933957ac5d6ff8dcd5e732736fd5e4dc6 (diff)
downloadcru-34a64e6ffefaab007578932ddbab931a25f1d56e.tar.gz
cru-34a64e6ffefaab007578932ddbab931a25f1d56e.tar.bz2
cru-34a64e6ffefaab007578932ddbab931a25f1d56e.zip
...
Diffstat (limited to 'src/ThemeBuilder/components/conditions/ConditionEditor.cpp')
-rw-r--r--src/ThemeBuilder/components/conditions/ConditionEditor.cpp50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/ThemeBuilder/components/conditions/ConditionEditor.cpp b/src/ThemeBuilder/components/conditions/ConditionEditor.cpp
new file mode 100644
index 00000000..5b79c639
--- /dev/null
+++ b/src/ThemeBuilder/components/conditions/ConditionEditor.cpp
@@ -0,0 +1,50 @@
+#include "ConditionEditor.h"
+#include "../Common.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() {}
+
+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