aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/theme_builder/components/conditions/CompoundConditionEditor.h25
-rw-r--r--src/theme_builder/components/conditions/CompoundConditonEditor.cpp17
2 files changed, 41 insertions, 1 deletions
diff --git a/src/theme_builder/components/conditions/CompoundConditionEditor.h b/src/theme_builder/components/conditions/CompoundConditionEditor.h
index 6631618f..db58b50a 100644
--- a/src/theme_builder/components/conditions/CompoundConditionEditor.h
+++ b/src/theme_builder/components/conditions/CompoundConditionEditor.h
@@ -2,11 +2,35 @@
#include "ConditionEditor.h"
#include "cru/common/ClonablePtr.h"
#include "cru/common/Event.h"
+#include "cru/ui/components/Component.h"
#include "cru/ui/controls/Button.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 CompoundConditionEditorChild : public ui::components::Component {
+ public:
+ explicit CompoundConditionEditorChild(
+ std::unique_ptr<ConditionEditor>&& editor);
+ ~CompoundConditionEditorChild() override;
+
+ public:
+ ui::controls::Control* GetRootControl() override { return &container_; }
+
+ ConditionEditor* GetConditionEditor() { return condition_editor_.get(); }
+
+ IEvent<std::nullptr_t>* RemoveEvent() { return &remove_event_; }
+
+ private:
+ ui::controls::FlexLayout container_;
+ ui::controls::Button remove_button_;
+ ui::controls::TextBlock remove_button_text_;
+ std::unique_ptr<ConditionEditor> condition_editor_;
+
+ Event<std::nullptr_t> remove_event_;
+};
+
class CompoundConditionEditor : public ConditionEditor {
public:
CompoundConditionEditor();
@@ -24,6 +48,7 @@ class CompoundConditionEditor : public ConditionEditor {
ui::controls::FlexLayout children_container_;
ui::controls::Button add_child_button_;
ui::controls::TextBlock add_child_button_text_;
+ std::vector<std::unique_ptr<CompoundConditionEditorChild>> children_;
Event<std::nullptr_t> children_change_event_;
};
diff --git a/src/theme_builder/components/conditions/CompoundConditonEditor.cpp b/src/theme_builder/components/conditions/CompoundConditonEditor.cpp
index d3e82878..812c27dc 100644
--- a/src/theme_builder/components/conditions/CompoundConditonEditor.cpp
+++ b/src/theme_builder/components/conditions/CompoundConditonEditor.cpp
@@ -1,12 +1,27 @@
#include "CompoundConditionEditor.h"
namespace cru::theme_builder::components::conditions {
+CompoundConditionEditorChild::CompoundConditionEditorChild(
+ std::unique_ptr<ConditionEditor>&& condition_editor)
+ : condition_editor_(std::move(condition_editor)) {
+ container_.SetFlexDirection(ui::controls::FlexDirection::Horizontal);
+ container_.AddChild(&remove_button_);
+
+ remove_button_.SetChild(&remove_button_text_);
+ remove_button_text_.SetText(u"-");
+
+ container_.AddChild(condition_editor_->GetRootControl());
+
+ remove_button_.ClickEvent()->AddSpyOnlyHandler(
+ [this] { this->remove_event_.Raise(nullptr); });
+}
+
CompoundConditionEditor::CompoundConditionEditor() {
GetContainer()->AddChild(&children_container_);
GetContainer()->AddChild(&add_child_button_);
add_child_button_.SetChild(&add_child_button_text_);
- add_child_button_text_.SetText(u"Add");
+ add_child_button_text_.SetText(u"+");
}
CompoundConditionEditor::~CompoundConditionEditor() {}