#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() { border_.SetChild(&container_); border_.SetBackgroundBrush(CreateRandomEditorBackgroundBrush()); container_.SetFlexDirection(ui::controls::FlexDirection::Vertical); container_.AddChild(&head_container_); head_container_.SetFlexDirection(ui::controls::FlexDirection::Horizontal); head_container_.AddChild(&label_); } ConditionEditor::~ConditionEditor() {} std::unique_ptr CreateConditionEditor( ui::style::Condition* condition) { if (auto and_condition = dynamic_cast(condition)) { auto result = std::make_unique(); result->SetValue(and_condition); return result; } else if (auto or_condition = dynamic_cast(condition)) { auto result = std::make_unique(); result->SetValue(or_condition); return result; } else if (auto no_condition = dynamic_cast(condition)) { auto result = std::make_unique(); return result; } else if (auto click_state_condition = dynamic_cast(condition)) { auto result = std::make_unique(); result->SetValue(click_state_condition); return result; } else if (auto focus_condition = dynamic_cast(condition)) { auto result = std::make_unique(); result->SetValue(focus_condition); return result; } else if (auto checked_condition = dynamic_cast(condition)) { auto result = std::make_unique(); result->SetValue(checked_condition); return result; } else { throw Exception(u"Unknown condition type"); } } } // namespace cru::theme_builder::components::conditions