aboutsummaryrefslogtreecommitdiff
path: root/src/theme_builder/components/properties/OptionalPropertyEditor.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/theme_builder/components/properties/OptionalPropertyEditor.h')
-rw-r--r--src/theme_builder/components/properties/OptionalPropertyEditor.h65
1 files changed, 0 insertions, 65 deletions
diff --git a/src/theme_builder/components/properties/OptionalPropertyEditor.h b/src/theme_builder/components/properties/OptionalPropertyEditor.h
deleted file mode 100644
index 0f22616a..00000000
--- a/src/theme_builder/components/properties/OptionalPropertyEditor.h
+++ /dev/null
@@ -1,65 +0,0 @@
-#pragma once
-#include "../Editor.h"
-#include "cru/ui/controls/CheckBox.h"
-#include "cru/ui/controls/FlexLayout.h"
-#include "cru/ui/controls/TextBlock.h"
-
-#include <optional>
-
-namespace cru::theme_builder::components::properties {
-template <typename TEditor>
-class OptionalPropertyEditor : public Editor {
- public:
- using PropertyType = typename TEditor::PropertyType;
-
- OptionalPropertyEditor() {
- container_.AddChild(&label_);
- container_.AddChild(&check_box_);
- check_box_.SetMargin({0, 0, 10, 0});
- container_.AddChild(editor_.GetRootControl());
-
- editor_.ChangeEvent()->AddHandler([this](std::nullptr_t) {
- if (IsEnabled()) {
- RaiseChangeEvent();
- }
- });
- }
- ~OptionalPropertyEditor() override {}
-
- ui::controls::Control* GetRootControl() override { return &container_; }
-
- String GetLabel() const { return label_.GetText(); }
- void SetLabel(String label) { label_.SetText(std::move(label)); }
-
- bool IsEnabled() const { return check_box_.IsChecked(); }
- void SetEnabled(bool enabled, bool trigger_change = true) {
- check_box_.SetChecked(enabled);
- if (trigger_change) {
- RaiseChangeEvent();
- }
- }
-
- std::optional<PropertyType> GetValue() const {
- return IsEnabled() ? std::optional<PropertyType>(editor_.GetValue())
- : std::nullopt;
- }
-
- void SetValue(std::optional<PropertyType> value, bool trigger_change = true) {
- if (value) {
- SetEnabled(true, false);
- editor_.SetValue(*value, false);
- if (trigger_change) RaiseChangeEvent();
- } else {
- SetEnabled(false, trigger_change);
- }
- }
-
- TEditor* GetEditor() { return &editor_; }
-
- private:
- ui::controls::FlexLayout container_;
- ui::controls::TextBlock label_;
- ui::controls::CheckBox check_box_;
- TEditor editor_;
-};
-} // namespace cru::theme_builder::components::properties