From 8f9c64e4e166763f5097295f8d3a9546ef489d8f Mon Sep 17 00:00:00 2001 From: rrandomsky Date: Fri, 15 Dec 2023 15:35:25 +0100 Subject: [PATCH] [BH-1845] Fixed time format in Settings and Onboarding Now the time format in Settings and Onboarding is currently set and changes dynamically during the user changing the time parameters. --- harmony_changelog.md | 1 + .../models/DateTimeUnitsModel.cpp | 10 ++++++---- .../widgets/TimeSetListItem.cpp | 5 ++++- .../widgets/TimeSetListItem.hpp | 4 +++- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/harmony_changelog.md b/harmony_changelog.md index 29ebbf7da8de090100ccf64c0c406e522aa7e479..2bb3303effce2f20e466cd82886d6c9ff6aa7e1f 100644 --- a/harmony_changelog.md +++ b/harmony_changelog.md @@ -6,6 +6,7 @@ * Fixed eink crash while refreshing * Fixed problem with occasional background playback after song has finished * Increase clock font in Relaxation, Meditation, Power nap mode +* Fixed time format in Settings and Onboarding ### Added * Added brightness fade in functionality diff --git a/products/BellHybrid/apps/application-bell-settings/models/DateTimeUnitsModel.cpp b/products/BellHybrid/apps/application-bell-settings/models/DateTimeUnitsModel.cpp index 491cba55e947e52632c607b23a0c165c1ca84cf3..948ec8480168996d05cdec30ec3226e8ff19a6f4 100644 --- a/products/BellHybrid/apps/application-bell-settings/models/DateTimeUnitsModel.cpp +++ b/products/BellHybrid/apps/application-bell-settings/models/DateTimeUnitsModel.cpp @@ -62,6 +62,7 @@ namespace app::bell_settings timeSetListItem = new gui::TimeSetListItem(0U, 0U, 0, 0, utils::translate("app_bell_settings_time_units_time_message")); internalData.push_back(timeSetListItem); + timeSetListItem->getTimeFormat = [this](void) { return timeFmtSetListItem->getTimeFmt(); }; timeFmtSetListItem = new gui::TimeFormatSetListItem( 0, 0, 0, 0, utils::translate("app_bell_settings_time_units_time_fmt_top_message")); @@ -103,9 +104,9 @@ namespace app::bell_settings void DateTimeUnitsModel::saveData() { const auto date = daySetListItem->dateSetSpinner->getDate(); - const auto year = date.year().operator int(); - const auto month = static_cast(date.month().operator unsigned int()); - const auto day = static_cast(date.day().operator unsigned int()); + const auto year = date.year().operator int(); + const auto month = static_cast(date.month().operator unsigned int()); + const auto day = static_cast(date.day().operator unsigned int()); const auto hour = timeSetListItem->timeSetSpinner->getHour(); const auto minute = timeSetListItem->timeSetSpinner->getMinute(); const auto timeFormat = timeFmtSetListItem->getTimeFmt(); @@ -133,6 +134,7 @@ namespace app::bell_settings const auto timeFormat = stm::api::timeFormat(); const auto dateFormat = stm::api::dateFormat(); timeSetListItem->timeSetSpinner->setTime(now); + timeSetListItem->timeSetSpinner->setTimeFormat(timeFormat); yearSetListItem->dateSetSpinner->setDate( date::year_month_day{date::floor(std::chrono::system_clock::now())}); @@ -190,7 +192,7 @@ namespace app::bell_settings using namespace date::literals; /// Default date/time after factory reset: 2023/01/01 12:00PM - const auto factoryResetDate = 2023_y / jan / 1_d; + const auto factoryResetDate = 2023_y / jan / 1_d; const auto factoryResetTimeFmt = utils::time::Locale::TimeFormat::FormatTime24H; const auto factoryResetDateFmt = utils::time::Locale::DateFormat::DD_MM_YYYY; diff --git a/products/BellHybrid/apps/application-bell-settings/widgets/TimeSetListItem.cpp b/products/BellHybrid/apps/application-bell-settings/widgets/TimeSetListItem.cpp index d4e59fdbce8e381e46a3acf0f42f68e96709ba91..a5886875768b89ac1ceba3543fac954d980a2d56 100644 --- a/products/BellHybrid/apps/application-bell-settings/widgets/TimeSetListItem.cpp +++ b/products/BellHybrid/apps/application-bell-settings/widgets/TimeSetListItem.cpp @@ -20,7 +20,7 @@ namespace gui { setupTopTextBox(description); setMinimumSize(style::sidelistview::list_item::w, style::sidelistview::list_item::h); - timeSetSpinner = new TimeSetSpinner(body->getCenterBox()); + timeSetSpinner = new TimeSetFmtSpinner(body->getCenterBox()); timeSetSpinner->setMaximumSize(style::bell_base_layout::w, style::bell_base_layout::h); timeSetSpinner->setFont(focusFontName, noFocusFontName); timeSetSpinner->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center)); @@ -33,6 +33,9 @@ namespace gui }; focusChangedCallback = [&](Item &item) { + if (getTimeFormat != nullptr) { + timeSetSpinner->setTimeFormat(getTimeFormat()); + } setFocusItem(focus ? body : nullptr); return true; }; diff --git a/products/BellHybrid/apps/application-bell-settings/widgets/TimeSetListItem.hpp b/products/BellHybrid/apps/application-bell-settings/widgets/TimeSetListItem.hpp index 163b312b2b17c34810caecfa18308d10bd6daf5f..d75d1be44c6d7dc94c0234e80b36d4218bcf3106 100644 --- a/products/BellHybrid/apps/application-bell-settings/widgets/TimeSetListItem.hpp +++ b/products/BellHybrid/apps/application-bell-settings/widgets/TimeSetListItem.hpp @@ -6,6 +6,7 @@ #include #include +#include "widgets/TimeSetFmtSpinner.hpp" namespace gui { @@ -14,7 +15,8 @@ namespace gui class TimeSetListItem : public BellSideListItem { public: - TimeSetSpinner *timeSetSpinner = nullptr; + TimeSetFmtSpinner *timeSetSpinner = nullptr; + std::function getTimeFormat = nullptr; TimeSetListItem(gui::Length x, gui::Length y, gui::Length w, gui::Length h, std::string description); };