diff options
author | crupest <crupest@outlook.com> | 2022-02-16 19:10:00 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2022-02-16 19:10:00 +0800 |
commit | 6459edc7c8af9e5c9bafe4f1635194334f42f415 (patch) | |
tree | 5d11434b5db55a8ab033676e1ed6a32a5bb2f599 /src/theme_builder/components/conditions/ConditionEditor.cpp | |
parent | ec2060983edd2b77ff90b2533404d77ea892a5d9 (diff) | |
download | cru-6459edc7c8af9e5c9bafe4f1635194334f42f415.tar.gz cru-6459edc7c8af9e5c9bafe4f1635194334f42f415.tar.bz2 cru-6459edc7c8af9e5c9bafe4f1635194334f42f415.zip |
...
Diffstat (limited to 'src/theme_builder/components/conditions/ConditionEditor.cpp')
-rw-r--r-- | src/theme_builder/components/conditions/ConditionEditor.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/theme_builder/components/conditions/ConditionEditor.cpp b/src/theme_builder/components/conditions/ConditionEditor.cpp index 772fcc98..f5edf674 100644 --- a/src/theme_builder/components/conditions/ConditionEditor.cpp +++ b/src/theme_builder/components/conditions/ConditionEditor.cpp @@ -1,4 +1,8 @@ #include "ConditionEditor.h" +#include "CheckedConditionEditor.h" +#include "ClickStateConditionEditor.h" +#include "CompoundConditionEditor.h" +#include "FocusConditionEditor.h" #include "cru/ui/controls/FlexLayout.h" namespace cru::theme_builder::components::conditions { @@ -8,4 +12,35 @@ ConditionEditor::ConditionEditor() { } ConditionEditor::~ConditionEditor() { container_.RemoveFromParent(); } + +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 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 { + return nullptr; + } +} } // namespace cru::theme_builder::components::conditions |