From 39bc166e549e8ccae75468aa2dd3613d51f54e27 Mon Sep 17 00:00:00 2001 From: Jean-François Milants Date: Sun, 10 Dec 2023 18:35:19 +0100 Subject: Watch face selection at build time Watch faces can now be selected at buid time. It's implemented in a similar way than the selection of user apps, using a list of watch face description that is generated at build time (consteval, constexpr) --- src/displayapp/screens/settings/SettingWatchFace.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src/displayapp/screens/settings/SettingWatchFace.cpp') diff --git a/src/displayapp/screens/settings/SettingWatchFace.cpp b/src/displayapp/screens/settings/SettingWatchFace.cpp index 5498d067..f052573c 100644 --- a/src/displayapp/screens/settings/SettingWatchFace.cpp +++ b/src/displayapp/screens/settings/SettingWatchFace.cpp @@ -3,7 +3,6 @@ #include "displayapp/DisplayApp.h" #include "displayapp/screens/Screen.h" #include "components/settings/Settings.h" -#include "displayapp/WatchFaces.h" using namespace Pinetime::Applications::Screens; @@ -21,9 +20,11 @@ auto SettingWatchFace::CreateScreenList() const { } SettingWatchFace::SettingWatchFace(Pinetime::Applications::DisplayApp* app, + std::array&& watchfaceItems, Pinetime::Controllers::Settings& settingsController, Pinetime::Controllers::FS& filesystem) : app {app}, + watchfaceItems {std::move(watchfaceItems)}, settingsController {settingsController}, filesystem {filesystem}, screens {app, 0, CreateScreenList(), Screens::ScreenListModes::UpDown} { @@ -40,7 +41,11 @@ bool SettingWatchFace::OnTouchEvent(Pinetime::Applications::TouchEvents event) { std::unique_ptr SettingWatchFace::CreateScreen(unsigned int screenNum) const { std::array watchfacesOnThisScreen; for (int i = 0; i < settingsPerScreen; i++) { - watchfacesOnThisScreen[i] = watchfaces[screenNum * settingsPerScreen + i]; + if (i + (screenNum * settingsPerScreen) >= watchfaceItems.size()) { + watchfacesOnThisScreen[i] = {"", false}; + } else { + watchfacesOnThisScreen[i] = watchfaceItems[i + (screenNum * settingsPerScreen)]; + } } return std::make_unique( -- cgit v1.2.3-70-g09d2