diff options
author | crupest <crupest@outlook.com> | 2022-05-15 14:15:31 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2022-05-15 14:15:31 +0800 |
commit | 34a64e6ffefaab007578932ddbab931a25f1d56e (patch) | |
tree | 541fdb8279e829a129df62288d09916bf23c9200 /src/ThemeBuilder/components/conditions/ConditionEditor.cpp | |
parent | 8ad2966933957ac5d6ff8dcd5e732736fd5e4dc6 (diff) | |
download | cru-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.cpp | 50 |
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 |