From df1d1cdfe2b33b193f23ec281c5f205a6d606de5 Mon Sep 17 00:00:00 2001 From: Przemyslaw Brudny Date: Thu, 5 Aug 2021 20:05:20 +0200 Subject: [PATCH] [BH-723] Added ThreeBox and BellBaseLayout Added ThreeBox template layout type. Applied it to Pure header. Created BellBaseLayout for most of Bell windows. Modified SideListView to proper handle new layout with page bar on/off. --- .../data/BellSettingsStyle.hpp | 8 --- .../widgets/TimeFormatSetListItem.cpp | 31 ++++------- .../widgets/TimeFormatSetListItem.hpp | 5 +- .../widgets/TimeSetListItem.cpp | 17 ++---- .../widgets/TimeSetListItem.hpp | 7 +-- .../windows/BellSettingsTimeUnitsWindow.cpp | 5 +- module-apps/apps-common/CMakeLists.txt | 2 + .../apps-common/widgets/BellBaseLayout.cpp | 37 +++++++++++++ .../apps-common/widgets/BellBaseLayout.hpp | 24 +++++++++ .../apps-common/widgets/BellSideListItem.cpp | 14 +++-- .../apps-common/widgets/BellSideListItem.hpp | 23 ++++++++ module-gui/gui/widgets/CMakeLists.txt | 4 +- module-gui/gui/widgets/SideListItem.hpp | 18 ------- module-gui/gui/widgets/SideListView.cpp | 20 +++---- module-gui/gui/widgets/SideListView.hpp | 11 ++-- module-gui/gui/widgets/Style.hpp | 24 ++------- module-gui/gui/widgets/ThreeBox.cpp | 26 ++++++++++ module-gui/gui/widgets/ThreeBox.hpp | 32 ++++++++++++ module-gui/gui/widgets/header/Header.cpp | 52 +++++++++---------- module-gui/gui/widgets/header/Header.hpp | 7 +-- 20 files changed, 217 insertions(+), 150 deletions(-) create mode 100644 module-apps/apps-common/widgets/BellBaseLayout.cpp create mode 100644 module-apps/apps-common/widgets/BellBaseLayout.hpp rename module-gui/gui/widgets/SideListItem.cpp => module-apps/apps-common/widgets/BellSideListItem.cpp (51%) create mode 100644 module-apps/apps-common/widgets/BellSideListItem.hpp delete mode 100644 module-gui/gui/widgets/SideListItem.hpp create mode 100644 module-gui/gui/widgets/ThreeBox.cpp create mode 100644 module-gui/gui/widgets/ThreeBox.hpp diff --git a/module-apps/application-bell-settings/data/BellSettingsStyle.hpp b/module-apps/application-bell-settings/data/BellSettingsStyle.hpp index 5767e74990f915914dcbde0e0c0dcb5e5b4570df..30ce7361341062873a6e00c3ab1f5fa252c9c88a 100644 --- a/module-apps/application-bell-settings/data/BellSettingsStyle.hpp +++ b/module-apps/application-bell-settings/data/BellSettingsStyle.hpp @@ -17,16 +17,8 @@ namespace gui inline constexpr auto default_body_width = 400; } // namespace settings_window - namespace time_set_spinner_list_item - { - inline constexpr auto w = 450; - inline constexpr auto h = 250; - } // namespace time_set_spinner_list_item - namespace time_fmt_set_list_item { - inline constexpr auto w = 129; - inline constexpr auto h = 130; inline constexpr auto font = style::window::font::supersizemelight; } // namespace time_fmt_set_list_item } // namespace bell_settings_style diff --git a/module-apps/application-bell-settings/widgets/TimeFormatSetListItem.cpp b/module-apps/application-bell-settings/widgets/TimeFormatSetListItem.cpp index 947b810b07677d2720478aebcb17fdb06f2922e5..c6afa51574700d8a71fa38306a25efe22c440280 100644 --- a/module-apps/application-bell-settings/widgets/TimeFormatSetListItem.cpp +++ b/module-apps/application-bell-settings/widgets/TimeFormatSetListItem.cpp @@ -16,43 +16,35 @@ namespace constexpr auto fmtSpinnerMin = 12U; constexpr auto fmtSpinnerMax = 24U; constexpr auto fmtSpinnerStep = 12U; - - uint16_t getFontHeight() - { - const gui::RawFont *font = gui::FontManager::getInstance().getFont(style::window::font::supersizemelight); - return font->info.line_height; - } } // namespace namespace gui { - TimeFormatSetListItem::TimeFormatSetListItem( Length x, Length y, Length w, Length h, const UTF8 &topDesc, const UTF8 &botDesc) - : SideListItem(topDesc) + : BellSideListItem(topDesc) { setMinimumSize(style::sidelistview::list_item::w, style::sidelistview::list_item::h); setEdges(RectangleEdge::None); setFocusItem(body); timeFormat = new Spinner(fmtSpinnerMin, fmtSpinnerMax, fmtSpinnerStep, Boundaries::Continuous); - timeFormat->setMinimumSize(bell_settings_style::time_fmt_set_list_item::w, getFontHeight()); + timeFormat->setMaximumSize(style::bell_base_layout::w, style::bell_base_layout::h); timeFormat->setFont(bell_settings_style::time_fmt_set_list_item::font); - timeFormat->setMargins(calculateMargins()); timeFormat->setAlignment(Alignment(Alignment::Horizontal::Center)); timeFormat->setFixedFieldWidth(2); timeFormat->setEdges(RectangleEdge::None); timeFormat->setCurrentValue(fmtSpinnerMin); timeFormat->setFocusEdges(RectangleEdge::None); - body->addWidget(timeFormat); + body->centerBox->addWidget(timeFormat); - bottomDescription = new Label(body); - bottomDescription->setMinimumSize(style::sidelistview::top_message::w, style::sidelistview::top_message::h); - bottomDescription->setFont(style::sidelistview::top_message::font); + bottomDescription = new Label(body->lastBox); + bottomDescription->setMaximumSize(style::bell_base_layout::w, style::bell_base_layout::outer_layouts_h); + bottomDescription->setFont(style::bell_sidelist_item::description_font); bottomDescription->setEdges(RectangleEdge::None); bottomDescription->activeItem = false; - bottomDescription->setAlignment(Alignment(Alignment::Horizontal::Center)); + bottomDescription->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center)); bottomDescription->setText(botDesc); dimensionChangedCallback = [&](Item &, const BoundingBox &newDim) -> bool { @@ -76,18 +68,13 @@ namespace gui inputCallback = [&](Item &, const InputEvent &inputEvent) -> bool { return body->onInput(inputEvent); }; } + auto TimeFormatSetListItem::getTimeFmt() const noexcept -> utils::time::Locale::TimeFormat { return timeFormat->getCurrentValue() == fmtSpinnerMin ? utils::time::Locale::TimeFormat::FormatTime12H : utils::time::Locale::TimeFormat::FormatTime24H; } - Margins TimeFormatSetListItem::calculateMargins() const noexcept - { - constexpr Position availableHeight = - style::sidelistview::list_item::h - - (bell_settings_style::time_fmt_set_list_item::h + (2 * style::sidelistview::top_message::h)); - return Margins{0, availableHeight / 2, 0, availableHeight / 4}; - } + auto TimeFormatSetListItem::setTimeFmt(utils::time::Locale::TimeFormat fmt) noexcept -> void { using namespace utils::time; diff --git a/module-apps/application-bell-settings/widgets/TimeFormatSetListItem.hpp b/module-apps/application-bell-settings/widgets/TimeFormatSetListItem.hpp index 7fa4f956425d8fb4989da2c48d26cdb6120b6bed..53c38ce372b13f3f4fb69a2bcd47a89c277b0bcb 100644 --- a/module-apps/application-bell-settings/widgets/TimeFormatSetListItem.hpp +++ b/module-apps/application-bell-settings/widgets/TimeFormatSetListItem.hpp @@ -5,7 +5,7 @@ #include