aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/theme_builder/components/MainWindow.cpp27
-rw-r--r--src/theme_builder/components/MainWindow.h12
-rw-r--r--src/theme_builder/components/StyleRuleEditor.cpp9
-rw-r--r--src/theme_builder/components/StyleRuleEditor.h4
-rw-r--r--src/theme_builder/components/StyleRuleSetEditor.cpp9
-rw-r--r--src/theme_builder/components/StyleRuleSetEditor.h4
-rw-r--r--src/ui/components/Menu.cpp57
-rw-r--r--src/ui/controls/TextBlock.cpp9
-rw-r--r--src/ui/controls/Window.cpp4
9 files changed, 46 insertions, 89 deletions
diff --git a/src/theme_builder/components/MainWindow.cpp b/src/theme_builder/components/MainWindow.cpp
index 4c605756..91c093cc 100644
--- a/src/theme_builder/components/MainWindow.cpp
+++ b/src/theme_builder/components/MainWindow.cpp
@@ -9,27 +9,22 @@ using namespace cru::ui::controls;
using namespace cru::platform::gui;
MainWindow::MainWindow() {
- window_ = Window::Create();
- window_->GetNativeWindow()->SetTitle(u"CruUI Theme Builder");
+ window_.GetNativeWindow()->SetTitle(u"CruUI Theme Builder");
+ main_layout_.SetFlexDirection(FlexDirection::Horizontal);
+ window_.AddChild(&main_layout_);
+ main_layout_.AddChild(&preview_layout_);
- main_layout_ = FlexLayout::Create();
- main_layout_->SetFlexDirection(FlexDirection::Horizontal);
- window_->AddChild(main_layout_);
-
- preview_layout_ = StackLayout::Create();
- main_layout_->AddChild(preview_layout_);
-
- preview_button_ = Button::Create();
- preview_button_->SetChild(TextBlock::Create(u"Preview"));
- preview_layout_->AddChild(preview_button_);
- preview_layout_->SetChildLayoutData(
+ preview_button_text_.SetText(u"Preview");
+ preview_button_.SetChild(&preview_button_text_);
+ preview_layout_.AddChild(&preview_button_);
+ preview_layout_.SetChildLayoutData(
0, StackChildLayoutData{Alignment::Center, Alignment::Center});
}
-MainWindow::~MainWindow() { delete window_; }
+MainWindow::~MainWindow() {}
void MainWindow::Show() {
- window_->GetNativeWindow()->SetVisibility(WindowVisibilityType::Show);
- window_->GetNativeWindow()->SetToForeground();
+ window_.GetNativeWindow()->SetVisibility(WindowVisibilityType::Show);
+ window_.GetNativeWindow()->SetToForeground();
}
} // namespace cru::theme_builder
diff --git a/src/theme_builder/components/MainWindow.h b/src/theme_builder/components/MainWindow.h
index 101b678e..c6733111 100644
--- a/src/theme_builder/components/MainWindow.h
+++ b/src/theme_builder/components/MainWindow.h
@@ -3,6 +3,7 @@
#include "cru/ui/controls/Button.h"
#include "cru/ui/controls/FlexLayout.h"
#include "cru/ui/controls/StackLayout.h"
+#include "cru/ui/controls/TextBlock.h"
#include "cru/ui/controls/Window.h"
namespace cru::theme_builder {
@@ -15,14 +16,15 @@ class MainWindow : public ui::components::Component {
~MainWindow() override;
- ui::controls::Control* GetRootControl() override { return window_; }
+ ui::controls::Control* GetRootControl() override { return &window_; }
void Show();
private:
- ui::controls::Window* window_;
- ui::controls::FlexLayout* main_layout_;
- ui::controls::StackLayout* preview_layout_;
- ui::controls::Button* preview_button_;
+ ui::controls::Window window_;
+ ui::controls::FlexLayout main_layout_;
+ ui::controls::StackLayout preview_layout_;
+ ui::controls::Button preview_button_;
+ ui::controls::TextBlock preview_button_text_;
};
} // namespace cru::theme_builder
diff --git a/src/theme_builder/components/StyleRuleEditor.cpp b/src/theme_builder/components/StyleRuleEditor.cpp
index 1cbeaeb2..977672e3 100644
--- a/src/theme_builder/components/StyleRuleEditor.cpp
+++ b/src/theme_builder/components/StyleRuleEditor.cpp
@@ -1,14 +1,9 @@
#include "StyleRuleEditor.h"
namespace cru::theme_builder {
-StyleRuleEditor::StyleRuleEditor() {
- main_layout_ = ui::controls::FlexLayout::Create();
-}
+StyleRuleEditor::StyleRuleEditor() {}
-StyleRuleEditor::~StyleRuleEditor() {
- main_layout_->RemoveFromParent();
- delete main_layout_;
-}
+StyleRuleEditor::~StyleRuleEditor() { main_layout_.RemoveFromParent(); }
void StyleRuleEditor::BindStyleRule(ui::style::StyleRule *rule) {
style_rule_ = rule;
diff --git a/src/theme_builder/components/StyleRuleEditor.h b/src/theme_builder/components/StyleRuleEditor.h
index 181ff0ef..5a14161e 100644
--- a/src/theme_builder/components/StyleRuleEditor.h
+++ b/src/theme_builder/components/StyleRuleEditor.h
@@ -15,7 +15,7 @@ class StyleRuleEditor : public ui::components::Component {
~StyleRuleEditor() override;
public:
- ui::controls::Control* GetRootControl() override { return main_layout_; }
+ ui::controls::Control* GetRootControl() override { return &main_layout_; }
void BindStyleRule(ui::style::StyleRule* rule);
@@ -23,7 +23,7 @@ class StyleRuleEditor : public ui::components::Component {
void UpdateView();
private:
- ui::controls::FlexLayout* main_layout_;
+ ui::controls::FlexLayout main_layout_;
ui::style::StyleRule* style_rule_;
};
diff --git a/src/theme_builder/components/StyleRuleSetEditor.cpp b/src/theme_builder/components/StyleRuleSetEditor.cpp
index 313b53da..072b8307 100644
--- a/src/theme_builder/components/StyleRuleSetEditor.cpp
+++ b/src/theme_builder/components/StyleRuleSetEditor.cpp
@@ -3,14 +3,9 @@
namespace cru::theme_builder {
using namespace cru::ui::controls;
-StyleRuleSetEditor::StyleRuleSetEditor() {
- main_layout_ = FlexLayout::Create();
-}
+StyleRuleSetEditor::StyleRuleSetEditor() {}
-StyleRuleSetEditor::~StyleRuleSetEditor() {
- main_layout_->RemoveFromParent();
- delete main_layout_;
-}
+StyleRuleSetEditor::~StyleRuleSetEditor() { main_layout_.RemoveFromParent(); }
void StyleRuleSetEditor::BindStyleRuleSet(
std::shared_ptr<ui::style::StyleRuleSet> rule_set) {
diff --git a/src/theme_builder/components/StyleRuleSetEditor.h b/src/theme_builder/components/StyleRuleSetEditor.h
index 50f1c80d..75597cf4 100644
--- a/src/theme_builder/components/StyleRuleSetEditor.h
+++ b/src/theme_builder/components/StyleRuleSetEditor.h
@@ -15,7 +15,7 @@ class StyleRuleSetEditor : public ui::components::Component {
~StyleRuleSetEditor() override;
public:
- ui::controls::Control* GetRootControl() override { return main_layout_; }
+ ui::controls::Control* GetRootControl() override { return &main_layout_; }
void BindStyleRuleSet(std::shared_ptr<ui::style::StyleRuleSet> rule_set);
@@ -23,7 +23,7 @@ class StyleRuleSetEditor : public ui::components::Component {
void UpdateView();
private:
- ui::controls::FlexLayout* main_layout_;
+ ui::controls::FlexLayout main_layout_;
std::shared_ptr<ui::style::StyleRuleSet> style_rule_set_;
};
diff --git a/src/ui/components/Menu.cpp b/src/ui/components/Menu.cpp
index af2043a9..ab897077 100644
--- a/src/ui/components/Menu.cpp
+++ b/src/ui/components/Menu.cpp
@@ -5,6 +5,7 @@
#include "cru/ui/controls/Button.h"
#include "cru/ui/controls/Control.h"
#include "cru/ui/controls/FlexLayout.h"
+#include "cru/ui/controls/Popup.h"
#include "cru/ui/controls/TextBlock.h"
#include "cru/ui/helper/ClickDetector.h"
#include "cru/ui/host/WindowHost.h"
@@ -12,44 +13,35 @@
namespace cru::ui::components {
MenuItem::MenuItem() {
- container_ = controls::Button::Create();
- text_ = controls::TextBlock::Create();
- container_->SetChild(text_);
- container_->GetStyleRuleSet()->SetParent(
+ container_.SetChild(&text_);
+ container_.GetStyleRuleSet()->SetParent(
ThemeManager::GetInstance()->GetResourceStyleRuleSet(u"menuitem.style"));
- container_->ClickEvent()->AddHandler([this](const helper::ClickEventArgs&) {
+ container_.ClickEvent()->AddHandler([this](const helper::ClickEventArgs&) {
if (this->on_click_) this->on_click_();
});
}
MenuItem::MenuItem(String text) : MenuItem() { SetText(std::move(text)); }
-MenuItem::~MenuItem() {
- container_->RemoveFromParent();
- delete container_;
-}
+MenuItem::~MenuItem() { container_.RemoveFromParent(); }
-void MenuItem::SetText(String text) { text_->SetText(std::move(text)); }
+void MenuItem::SetText(String text) { text_.SetText(std::move(text)); }
-Menu::Menu() {
- container_ = controls::FlexLayout::Create();
- container_->SetFlexDirection(controls::FlexDirection::Vertical);
-}
+Menu::Menu() { container_.SetFlexDirection(controls::FlexDirection::Vertical); }
Menu::~Menu() {
for (auto item : items_) {
delete item;
}
- container_->RemoveFromParent();
- delete container_;
+ container_.RemoveFromParent();
}
void Menu::AddItem(Component* item, gsl::index index) {
Expects(index >= 0 && index <= GetItemCount());
items_.insert(items_.cbegin() + index, item);
- container_->AddChildAt(item->GetRootControl(), index);
+ container_.AddChildAt(item->GetRootControl(), index);
}
Component* Menu::RemoveItem(gsl::index index) {
@@ -58,7 +50,7 @@ Component* Menu::RemoveItem(gsl::index index) {
Component* item = items_[index];
items_.erase(items_.cbegin() + index);
- container_->RemoveChildAt(index);
+ container_.RemoveChildAt(index);
return item;
}
@@ -70,7 +62,7 @@ void Menu::ClearItems() {
items_.clear();
- container_->ClearChildren();
+ container_.ClearChildren();
}
void Menu::AddTextItem(String text, gsl::index index,
@@ -84,33 +76,24 @@ void Menu::AddTextItem(String text, gsl::index index,
}
PopupMenu::PopupMenu(controls::Control* attached_control)
- : attached_control_(attached_control) {
- popup_ = controls::Popup::Create(attached_control);
-
- menu_ = new Menu();
-
- menu_->SetOnItemClick([this](Index) { this->Close(); });
-
- popup_->AddChildAt(menu_->GetRootControl(), 0);
+ : attached_control_(attached_control), popup_(attached_control) {
+ menu_.SetOnItemClick([this](Index) { this->Close(); });
+ popup_.AddChildAt(menu_.GetRootControl(), 0);
}
-PopupMenu::~PopupMenu() {
- delete menu_;
-
- delete popup_;
-}
+PopupMenu::~PopupMenu() {}
-controls::Control* PopupMenu::GetRootControl() { return popup_; }
+controls::Control* PopupMenu::GetRootControl() { return &popup_; }
void PopupMenu::SetPosition(const Point& position) {
- popup_->GetWindowHost()->GetNativeWindow()->SetClientRect(Rect{position, {}});
+ popup_.GetWindowHost()->GetNativeWindow()->SetClientRect(Rect{position, {}});
}
void PopupMenu::Show() {
- popup_->GetWindowHost()->RelayoutWithSize(Size::Infinate(), true);
- popup_->GetWindowHost()->GetNativeWindow()->SetVisibility(
+ popup_.GetWindowHost()->RelayoutWithSize(Size::Infinate(), true);
+ popup_.GetWindowHost()->GetNativeWindow()->SetVisibility(
platform::gui::WindowVisibilityType::Show);
}
-void PopupMenu::Close() { popup_->GetWindowHost()->GetNativeWindow()->Close(); }
+void PopupMenu::Close() { popup_.GetWindowHost()->GetNativeWindow()->Close(); }
} // namespace cru::ui::components
diff --git a/src/ui/controls/TextBlock.cpp b/src/ui/controls/TextBlock.cpp
index 80d9fe34..f3d2405b 100644
--- a/src/ui/controls/TextBlock.cpp
+++ b/src/ui/controls/TextBlock.cpp
@@ -8,15 +8,6 @@
namespace cru::ui::controls {
using render::TextRenderObject;
-TextBlock* TextBlock::Create() { return new TextBlock(); }
-
-TextBlock* TextBlock::Create(String text, bool selectable) {
- auto c = new TextBlock();
- c->SetText(text);
- c->SetSelectable(selectable);
- return c;
-}
-
TextBlock::TextBlock() {
const auto theme_manager = ThemeManager::GetInstance();
diff --git a/src/ui/controls/Window.cpp b/src/ui/controls/Window.cpp
index 6891c918..b1881136 100644
--- a/src/ui/controls/Window.cpp
+++ b/src/ui/controls/Window.cpp
@@ -1,10 +1,6 @@
#include "cru/ui/controls/Window.h"
namespace cru::ui::controls {
-Window* Window::Create(Control* attached_control) {
- return new Window(attached_control);
-}
-
Window::Window(Control* attached_control) : RootControl(attached_control) {}
Window::~Window() {}