From 960e798aff86634a9270c0ace174944801243299 Mon Sep 17 00:00:00 2001 From: Davis Mosenkovs Date: Thu, 22 Oct 2026 07:45:17 +0300 Subject: [PATCH] SettingWatchFace: Initial screen with selection Initially open the screen with selected watch face. --- src/displayapp/screens/settings/SettingWatchFace.cpp | 10 +++++++++- src/displayapp/screens/settings/SettingWatchFace.h | 2 ++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/displayapp/screens/settings/SettingWatchFace.cpp b/src/displayapp/screens/settings/SettingWatchFace.cpp index 0d5168d26f..6522071fab 100644 --- a/src/displayapp/screens/settings/SettingWatchFace.cpp +++ b/src/displayapp/screens/settings/SettingWatchFace.cpp @@ -50,6 +50,14 @@ auto SettingWatchFace::CreateScreenList() const { return screens; } +uint8_t SettingWatchFace::GetActiveScreenIndex() { + uint8_t index = IndexOf(watchfaceItems, settingsController.GetWatchFace()) / settingsPerScreen; + if (index > nScreens - 1) { + index = 0; + } + return index; +} + SettingWatchFace::SettingWatchFace(Pinetime::Applications::DisplayApp* app, std::array&& watchfaceItems, Pinetime::Controllers::Settings& settingsController, @@ -57,7 +65,7 @@ SettingWatchFace::SettingWatchFace(Pinetime::Applications::DisplayApp* app, : watchfaceItems {std::move(watchfaceItems)}, settingsController {settingsController}, filesystem {filesystem}, - screens {app, 0, CreateScreenList(), Screens::ScreenListModes::UpDown} { + screens {app, GetActiveScreenIndex(), CreateScreenList(), Screens::ScreenListModes::UpDown} { } SettingWatchFace::~SettingWatchFace() { diff --git a/src/displayapp/screens/settings/SettingWatchFace.h b/src/displayapp/screens/settings/SettingWatchFace.h index 9edc1f7ac8..ce48e6814a 100644 --- a/src/displayapp/screens/settings/SettingWatchFace.h +++ b/src/displayapp/screens/settings/SettingWatchFace.h @@ -37,6 +37,8 @@ namespace Pinetime { auto CreateScreenList() const; std::unique_ptr CreateScreen(unsigned int screenNum) const; + uint8_t GetActiveScreenIndex(); + static constexpr int settingsPerScreen = 4; std::array watchfaceItems; static constexpr int nScreens = UserWatchFaceTypes::Count > 0 ? (UserWatchFaceTypes ::Count - 1) / settingsPerScreen + 1 : 1;