From 37e046d766a187d5c8786139504f8de75f7746de Mon Sep 17 00:00:00 2001 From: apio Date: Wed, 11 Oct 2023 22:56:14 +0200 Subject: [PATCH] libui: Make Label initialization step-by-step instead of setting everything in the constructor --- apps/about.cpp | 5 +++-- apps/clock.cpp | 6 ++++-- libui/include/ui/Label.h | 25 ++++++++++++++++++++----- libui/src/Label.cpp | 5 ++--- 4 files changed, 29 insertions(+), 12 deletions(-) diff --git a/apps/about.cpp b/apps/about.cpp index d1c4e099..b5bd18cd 100644 --- a/apps/about.cpp +++ b/apps/about.cpp @@ -24,8 +24,9 @@ Result luna_main(int argc, char** argv) ui::VerticalLayout main_layout; window->set_main_widget(main_layout); - ui::Label title("About Luna", ui::WHITE, ui::VerticalAlignment::Center, ui::HorizontalAlignment::Center, - ui::Font::default_bold_font()); + ui::Label title("About Luna"); + title.set_font(ui::Font::default_bold_font()); + main_layout.add_widget(title); ui::VerticalLayout version_info; diff --git a/apps/clock.cpp b/apps/clock.cpp index 296683cc..b63b3dae 100644 --- a/apps/clock.cpp +++ b/apps/clock.cpp @@ -30,8 +30,10 @@ Result luna_main(int argc, char** argv) window->set_title("Clock"); window->set_background(ui::GRAY); - g_label = TRY(make("00:00:00", ui::BLACK, ui::VerticalAlignment::Center, ui::HorizontalAlignment::Center, - ui::Font::default_bold_font())); + g_label = TRY(make("00:00:00")); + g_label->set_font(ui::Font::default_bold_font()); + g_label->set_color(ui::BLACK); + window->set_main_widget(*g_label); update_time(); diff --git a/libui/include/ui/Label.h b/libui/include/ui/Label.h index ca449335..0de287ab 100644 --- a/libui/include/ui/Label.h +++ b/libui/include/ui/Label.h @@ -22,8 +22,23 @@ namespace ui class Label final : public Widget { public: - Label(StringView text, ui::Color color = ui::WHITE, VerticalAlignment valign = VerticalAlignment::Center, - HorizontalAlignment halign = HorizontalAlignment::Center, SharedPtr font = Font::default_font()); + Label(StringView text); + + void set_alignment(VerticalAlignment valign, HorizontalAlignment halign) + { + m_valign = valign; + m_halign = halign; + } + + void set_color(ui::Color color) + { + m_color = color; + } + + void set_font(SharedPtr font) + { + m_font = font; + } void set_text(StringView text) { @@ -34,9 +49,9 @@ namespace ui private: StringView m_text; - VerticalAlignment m_valign; - HorizontalAlignment m_halign; - ui::Color m_color; + VerticalAlignment m_valign = VerticalAlignment::Center; + HorizontalAlignment m_halign = HorizontalAlignment::Center; + ui::Color m_color = ui::WHITE; SharedPtr m_font; }; } diff --git a/libui/src/Label.cpp b/libui/src/Label.cpp index 71015c6e..8dacb8fa 100644 --- a/libui/src/Label.cpp +++ b/libui/src/Label.cpp @@ -12,10 +12,9 @@ namespace ui { - Label::Label(StringView text, ui::Color color, VerticalAlignment valign, HorizontalAlignment halign, - SharedPtr font) - : m_text(text), m_valign(valign), m_halign(halign), m_color(color), m_font(font) + Label::Label(StringView text) : m_text(text) { + m_font = ui::Font::default_font(); } Result Label::draw(Canvas& canvas)