diff options
Diffstat (limited to 'src/theme_builder/components/conditions')
10 files changed, 12 insertions, 34 deletions
diff --git a/src/theme_builder/components/conditions/CheckedConditionEditor.cpp b/src/theme_builder/components/conditions/CheckedConditionEditor.cpp index bd2dbe0c..64370981 100644 --- a/src/theme_builder/components/conditions/CheckedConditionEditor.cpp +++ b/src/theme_builder/components/conditions/CheckedConditionEditor.cpp @@ -9,8 +9,7 @@ CheckedConditionEditor::CheckedConditionEditor() { checked_check_box_.SetLabel(u"Checked"); GetContainer()->AddChild(checked_check_box_.GetRootControl()); - checked_check_box_.ChangeEvent()->AddSpyOnlyHandler( - [this] { change_event_.Raise(nullptr); }); + ConnectChangeEvent(checked_check_box_); } CheckedConditionEditor::~CheckedConditionEditor() {} diff --git a/src/theme_builder/components/conditions/CheckedConditionEditor.h b/src/theme_builder/components/conditions/CheckedConditionEditor.h index 9e2ebddc..7cf14912 100644 --- a/src/theme_builder/components/conditions/CheckedConditionEditor.h +++ b/src/theme_builder/components/conditions/CheckedConditionEditor.h @@ -22,11 +22,7 @@ class CheckedConditionEditor : public ConditionEditor { return GetValue(); } - IEvent<std::nullptr_t>* ChangeEvent() override { return &change_event_; } - private: properties::CheckBoxPropertyEditor checked_check_box_; - - Event<std::nullptr_t> change_event_; }; } // namespace cru::theme_builder::components::conditions diff --git a/src/theme_builder/components/conditions/ClickStateConditionEditor.cpp b/src/theme_builder/components/conditions/ClickStateConditionEditor.cpp index 3929c29c..a8d5cc87 100644 --- a/src/theme_builder/components/conditions/ClickStateConditionEditor.cpp +++ b/src/theme_builder/components/conditions/ClickStateConditionEditor.cpp @@ -50,8 +50,7 @@ ClickStateConditionEditor::ClickStateConditionEditor() { click_state_select_.SetItems(kClickStates); click_state_select_.SetSelectedIndex(0, false); - click_state_select_.ChangeEvent()->AddSpyOnlyHandler( - [this] { change_event_.Raise(nullptr); }); + ConnectChangeEvent(click_state_select_); } ClickStateConditionEditor::~ClickStateConditionEditor() {} diff --git a/src/theme_builder/components/conditions/ClickStateConditionEditor.h b/src/theme_builder/components/conditions/ClickStateConditionEditor.h index fa4b0c52..454a1346 100644 --- a/src/theme_builder/components/conditions/ClickStateConditionEditor.h +++ b/src/theme_builder/components/conditions/ClickStateConditionEditor.h @@ -24,11 +24,7 @@ class ClickStateConditionEditor : public ConditionEditor { return GetValue(); } - IEvent<std::nullptr_t>* ChangeEvent() override { return &change_event_; } - private: properties::SelectPropertyEditor click_state_select_; - - Event<std::nullptr_t> change_event_; }; } // namespace cru::theme_builder::components::conditions diff --git a/src/theme_builder/components/conditions/CompoundConditionEditor.cpp b/src/theme_builder/components/conditions/CompoundConditionEditor.cpp index ae72b51f..b7f54f77 100644 --- a/src/theme_builder/components/conditions/CompoundConditionEditor.cpp +++ b/src/theme_builder/components/conditions/CompoundConditionEditor.cpp @@ -59,17 +59,18 @@ CompoundConditionEditor::CompoundConditionEditor() { break; } if (editor) { + ConnectChangeEvent(editor.get()); auto child = std::make_unique<CompoundConditionEditorChild>(std::move(editor)); child->RemoveEvent()->AddSpyOnlyHandler([this, c = child.get()] { auto index = this->children_container_.IndexOf(c->GetRootControl()); this->children_.erase(this->children_.begin() + index); this->children_container_.RemoveChildAt(index); - change_event_.Raise(nullptr); + RaiseChangeEvent(); }); children_.push_back(std::move(child)); children_container_.AddChild(children_.back()->GetRootControl()); - change_event_.Raise(nullptr); + RaiseChangeEvent(); } }); } @@ -92,19 +93,20 @@ void CompoundConditionEditor::SetChildren( children_.clear(); for (const auto& condition : children) { auto condition_editor = CreateConditionEditor(condition.get()); + ConnectChangeEvent(condition_editor.get()); auto child = std::make_unique<CompoundConditionEditorChild>( std::move(condition_editor)); child->RemoveEvent()->AddSpyOnlyHandler([this, c = child.get()] { auto index = this->children_container_.IndexOf(c->GetRootControl()); this->children_.erase(this->children_.begin() + index); this->children_container_.RemoveChildAt(index); - change_event_.Raise(nullptr); + RaiseChangeEvent(); }); children_.push_back(std::move(child)); children_container_.AddChild(children_.back()->GetRootControl()); } if (trigger_change) { - change_event_.Raise(nullptr); + RaiseChangeEvent(); } } } // namespace cru::theme_builder::components::conditions diff --git a/src/theme_builder/components/conditions/CompoundConditionEditor.h b/src/theme_builder/components/conditions/CompoundConditionEditor.h index 50f745c3..771d694f 100644 --- a/src/theme_builder/components/conditions/CompoundConditionEditor.h +++ b/src/theme_builder/components/conditions/CompoundConditionEditor.h @@ -42,14 +42,10 @@ class CompoundConditionEditor : public ConditionEditor { void SetChildren(std::vector<ClonablePtr<ui::style::Condition>> children, bool trigger_change = true); - IEvent<std::nullptr_t>* ChangeEvent() override { return &change_event_; } - private: ui::controls::FlexLayout children_container_; ui::components::PopupMenuTextButton add_child_button_; std::vector<std::unique_ptr<CompoundConditionEditorChild>> children_; - - Event<std::nullptr_t> change_event_; }; class AndConditionEditor : public CompoundConditionEditor { diff --git a/src/theme_builder/components/conditions/ConditionEditor.h b/src/theme_builder/components/conditions/ConditionEditor.h index 08128ed1..426e6ba8 100644 --- a/src/theme_builder/components/conditions/ConditionEditor.h +++ b/src/theme_builder/components/conditions/ConditionEditor.h @@ -1,12 +1,12 @@ #pragma once +#include "../Editor.h" #include "cru/common/ClonablePtr.h" -#include "cru/ui/components/Component.h" #include "cru/ui/controls/FlexLayout.h" #include "cru/ui/controls/TextBlock.h" #include "cru/ui/style/Condition.h" namespace cru::theme_builder::components::conditions { -class ConditionEditor : public ui::components::Component { +class ConditionEditor : public Editor { public: ConditionEditor(); ~ConditionEditor() override; @@ -20,7 +20,6 @@ class ConditionEditor : public ui::components::Component { void SetLabel(String label) { label_.SetText(std::move(label)); } virtual ClonablePtr<ui::style::Condition> GetCondition() = 0; - virtual IEvent<std::nullptr_t>* ChangeEvent() = 0; private: ui::controls::FlexLayout container_; diff --git a/src/theme_builder/components/conditions/FocusConditionEditor.cpp b/src/theme_builder/components/conditions/FocusConditionEditor.cpp index 7e650071..1fb99d64 100644 --- a/src/theme_builder/components/conditions/FocusConditionEditor.cpp +++ b/src/theme_builder/components/conditions/FocusConditionEditor.cpp @@ -8,8 +8,8 @@ FocusConditionEditor::FocusConditionEditor() { GetContainer()->AddChild(focus_check_box_.GetRootControl()); focus_check_box_.SetLabel(u"Focus"); - focus_check_box_.ChangeEvent()->AddSpyOnlyHandler( - [this] { change_event_.Raise(nullptr); }); + + ConnectChangeEvent(focus_check_box_); } FocusConditionEditor::~FocusConditionEditor() {} diff --git a/src/theme_builder/components/conditions/FocusConditionEditor.h b/src/theme_builder/components/conditions/FocusConditionEditor.h index 06cdcf69..1faf4d7d 100644 --- a/src/theme_builder/components/conditions/FocusConditionEditor.h +++ b/src/theme_builder/components/conditions/FocusConditionEditor.h @@ -22,11 +22,7 @@ class FocusConditionEditor : public ConditionEditor { return GetValue(); } - IEvent<std::nullptr_t>* ChangeEvent() override { return &change_event_; } - private: properties::CheckBoxPropertyEditor focus_check_box_; - - Event<std::nullptr_t> change_event_; }; } // namespace cru::theme_builder::components::conditions diff --git a/src/theme_builder/components/conditions/NoConditionEditor.h b/src/theme_builder/components/conditions/NoConditionEditor.h index da5f99b0..19616319 100644 --- a/src/theme_builder/components/conditions/NoConditionEditor.h +++ b/src/theme_builder/components/conditions/NoConditionEditor.h @@ -13,10 +13,5 @@ class NoConditionEditor : public ConditionEditor { 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 |