From f75ab0bd662c73d15057d746347d09bf94a992a6 Mon Sep 17 00:00:00 2001 From: crupest Date: Wed, 16 Feb 2022 22:42:34 +0800 Subject: ... --- .../conditions/CompoundConditionEditor.cpp | 14 +++++++------- .../components/conditions/ConditionEditor.cpp | 8 +++++++- .../components/conditions/NoConditionEditor.cpp | 7 +++++++ .../components/conditions/NoConditionEditor.h | 22 ++++++++++++++++++++++ 4 files changed, 43 insertions(+), 8 deletions(-) create mode 100644 src/theme_builder/components/conditions/NoConditionEditor.cpp create mode 100644 src/theme_builder/components/conditions/NoConditionEditor.h (limited to 'src/theme_builder/components/conditions') 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 editor; switch (index) { @@ -57,6 +54,9 @@ CompoundConditionEditor::CompoundConditionEditor() { case 4: editor = std::make_unique(); break; + case 5: + editor = std::make_unique(); + 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 CreateConditionEditor( 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(); @@ -40,7 +46,7 @@ std::unique_ptr 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 GetCondition() override { + return ui::style::NoCondition::Create(); + } + + IEvent* ChangeEvent() override { return &change_event_; } + + private: + Event change_event_; +}; +} // namespace cru::theme_builder::components::conditions -- cgit v1.2.3