diff options
author | crupest <crupest@outlook.com> | 2022-02-16 17:35:47 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2022-02-16 17:35:47 +0800 |
commit | ec2060983edd2b77ff90b2533404d77ea892a5d9 (patch) | |
tree | 1b86a4cd6a6b239ed8f529e2c501119901d24d76 | |
parent | da6f0bcfc6ec786cf14f67f100b4c50cf2325db4 (diff) | |
download | cru-ec2060983edd2b77ff90b2533404d77ea892a5d9.tar.gz cru-ec2060983edd2b77ff90b2533404d77ea892a5d9.tar.bz2 cru-ec2060983edd2b77ff90b2533404d77ea892a5d9.zip |
...
-rw-r--r-- | include/cru/ui/style/Condition.h | 2 | ||||
-rw-r--r-- | src/theme_builder/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/theme_builder/components/conditions/CheckedConditionEditor.cpp | 25 | ||||
-rw-r--r-- | src/theme_builder/components/conditions/CheckedConditionEditor.h | 29 |
4 files changed, 57 insertions, 0 deletions
diff --git a/include/cru/ui/style/Condition.h b/include/cru/ui/style/Condition.h index 446e5bc0..b45c0e07 100644 --- a/include/cru/ui/style/Condition.h +++ b/include/cru/ui/style/Condition.h @@ -150,6 +150,8 @@ class CRU_UI_API CheckedCondition : public Condition { return new CheckedCondition(checked_); } + bool IsChecked() const { return checked_; } + private: bool checked_; }; diff --git a/src/theme_builder/CMakeLists.txt b/src/theme_builder/CMakeLists.txt index 41c3808f..6b0242c7 100644 --- a/src/theme_builder/CMakeLists.txt +++ b/src/theme_builder/CMakeLists.txt @@ -3,6 +3,7 @@ add_executable(cru_theme_builder components/MainWindow.cpp components/StyleRuleEditor.cpp components/StyleRuleSetEditor.cpp + components/conditions/CheckedConditionEditor.cpp components/conditions/ClickStateConditionEditor.cpp components/conditions/ConditionEditor.cpp components/conditions/FocusConditionEditor.cpp diff --git a/src/theme_builder/components/conditions/CheckedConditionEditor.cpp b/src/theme_builder/components/conditions/CheckedConditionEditor.cpp new file mode 100644 index 00000000..0d9b5956 --- /dev/null +++ b/src/theme_builder/components/conditions/CheckedConditionEditor.cpp @@ -0,0 +1,25 @@ +#include "CheckedConditionEditor.h" +#include "cru/common/ClonablePtr.h" +#include "cru/ui/style/Condition.h" + +namespace cru::theme_builder::components::conditions { +CheckedConditionEditor::CheckedConditionEditor() { + GetContainer()->AddChild(checked_check_box_.GetRootControl()); + + checked_check_box_.ChangeEvent()->AddSpyOnlyHandler( + [this] { change_event_.Raise(nullptr); }); +} + +CheckedConditionEditor::~CheckedConditionEditor() {} + +ClonablePtr<ui::style::CheckedCondition> CheckedConditionEditor::GetValue() + const { + return ui::style::CheckedCondition::Create(checked_check_box_.GetValue()); +} + +void CheckedConditionEditor::SetValue( + const ClonablePtr<ui::style::CheckedCondition> &value, + bool trigger_change) { + checked_check_box_.SetValue(value->IsChecked(), trigger_change); +} +} // namespace cru::theme_builder::components::conditions diff --git a/src/theme_builder/components/conditions/CheckedConditionEditor.h b/src/theme_builder/components/conditions/CheckedConditionEditor.h new file mode 100644 index 00000000..4a5fae4e --- /dev/null +++ b/src/theme_builder/components/conditions/CheckedConditionEditor.h @@ -0,0 +1,29 @@ +#pragma once +#include "../properties/CheckBoxPropertyEditor.h" +#include "ConditionEditor.h" +#include "cru/common/ClonablePtr.h" +#include "cru/ui/style/Condition.h" + +namespace cru::theme_builder::components::conditions { +class CheckedConditionEditor : public ConditionEditor { + public: + CheckedConditionEditor(); + ~CheckedConditionEditor() override; + + public: + ClonablePtr<ui::style::CheckedCondition> GetValue() const; + void SetValue(const ClonablePtr<ui::style::CheckedCondition>& value, + bool trigger_change = true); + + ClonablePtr<ui::style::Condition> GetCondition() override { + return GetValue(); + } + + IEvent<std::nullptr_t>* ChangeEvent() { return &change_event_; } + + private: + properties::CheckBoxPropertyEditor checked_check_box_; + + Event<std::nullptr_t> change_event_; +}; +} // namespace cru::theme_builder::components::conditions |