diff options
| author | crupest <crupest@outlook.com> | 2022-02-16 22:42:34 +0800 |
|---|---|---|
| committer | crupest <crupest@outlook.com> | 2022-02-16 22:42:34 +0800 |
| commit | f75ab0bd662c73d15057d746347d09bf94a992a6 (patch) | |
| tree | 91efc33de481edf5304001d80b914b69cc0fb338 /src/theme_builder/components/conditions | |
| parent | 2711b7032cafdc9bdbd6ae06db0325c91e6e7f63 (diff) | |
| download | cru-f75ab0bd662c73d15057d746347d09bf94a992a6.tar.gz cru-f75ab0bd662c73d15057d746347d09bf94a992a6.tar.bz2 cru-f75ab0bd662c73d15057d746347d09bf94a992a6.zip | |
...
Diffstat (limited to 'src/theme_builder/components/conditions')
4 files changed, 43 insertions, 8 deletions
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<ConditionEditor> editor; switch (index) { @@ -57,6 +54,9 @@ CompoundConditionEditor::CompoundConditionEditor() { case 4: editor = std::make_unique<CheckedConditionEditor>(); break; + case 5: + editor = std::make_unique<NoConditionEditor>(); + 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<ConditionEditor> CreateConditionEditor( 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>(); @@ -40,7 +46,7 @@ std::unique_ptr<ConditionEditor> 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<ui::style::Condition> GetCondition() override { + return ui::style::NoCondition::Create(); + } + + IEvent<std::nullptr_t>* ChangeEvent() override { return &change_event_; } + + private: + Event<std::nullptr_t> change_event_; +}; +} // namespace cru::theme_builder::components::conditions |
