1
1
#include " displayapp/screens/settings/SettingWatchFace.h"
2
2
#include < lvgl/lvgl.h>
3
3
#include " displayapp/DisplayApp.h"
4
- #include " displayapp/screens/CheckboxList.h"
5
4
#include " displayapp/screens/Screen.h"
6
5
#include " components/settings/Settings.h"
7
- #include " displayapp/screens/WatchFaceInfineat.h"
8
- #include " displayapp/screens/WatchFaceCasioStyleG7710.h"
9
6
10
7
using namespace Pinetime ::Applications::Screens;
11
8
12
9
constexpr const char * SettingWatchFace::title;
13
10
constexpr const char * SettingWatchFace::symbol;
14
11
12
+ auto SettingWatchFace::CreateScreenList () const {
13
+ std::array<std::function<std::unique_ptr<Screen>()>, nScreens> screens;
14
+ for (size_t i = 0 ; i < screens.size (); i++) {
15
+ screens[i] = [this , i]() -> std::unique_ptr<Screen> {
16
+ return CreateScreen (i);
17
+ };
18
+ }
19
+ return screens;
20
+ }
21
+
15
22
SettingWatchFace::SettingWatchFace (Pinetime::Applications::DisplayApp* app,
16
23
Pinetime::Controllers::Settings& settingsController,
17
24
Pinetime::Controllers::FS& filesystem)
18
25
: Screen(app),
19
26
settingsController {settingsController},
20
27
filesystem {filesystem},
21
- screens {app,
22
- 0 ,
23
- {[this ]() -> std::unique_ptr<Screen> {
24
- return CreateScreen1 ();
25
- },
26
- [this ]() -> std::unique_ptr<Screen> {
27
- return CreateScreen2 ();
28
- }},
29
- Screens::ScreenListModes::UpDown} {
28
+ screens {app, 0 , CreateScreenList (), Screens::ScreenListModes::UpDown} {
30
29
}
31
30
32
31
SettingWatchFace::~SettingWatchFace () {
@@ -37,32 +36,15 @@ bool SettingWatchFace::OnTouchEvent(Pinetime::Applications::TouchEvents event) {
37
36
return screens.OnTouchEvent (event);
38
37
}
39
38
40
- std::unique_ptr<Screen> SettingWatchFace::CreateScreen1 () {
41
- std::array<Screens::CheckboxList::Item, 4 > watchfaces {
42
- {{" Digital face" , true }, {" Analog face" , true }, {" PineTimeStyle" , true }, {" Terminal" , true }}};
43
- return std::make_unique<Screens::CheckboxList>(
44
- 0 ,
45
- 2 ,
46
- app,
47
- title,
48
- symbol,
49
- settingsController.GetClockFace (),
50
- [&settings = settingsController](uint32_t clockFace) {
51
- settings.SetClockFace (clockFace);
52
- settings.SaveSettings ();
53
- },
54
- watchfaces);
55
- }
39
+ std::unique_ptr<Screen> SettingWatchFace::CreateScreen (unsigned int screenNum) const {
40
+ std::array<Screens::CheckboxList::Item, settingsPerScreen> watchfacesOnThisScreen;
41
+ for (int i = 0 ; i < settingsPerScreen; i++) {
42
+ watchfacesOnThisScreen[i] = watchfaces[screenNum * settingsPerScreen + i];
43
+ }
56
44
57
- std::unique_ptr<Screen> SettingWatchFace::CreateScreen2 () {
58
- std::array<Screens::CheckboxList::Item, 4 > watchfaces {
59
- {{" Infineat face" , Applications::Screens::WatchFaceInfineat::IsAvailable (filesystem)},
60
- {" Casio G7710" , Applications::Screens::WatchFaceCasioStyleG7710::IsAvailable (filesystem)},
61
- {" " , false },
62
- {" " , false }}};
63
45
return std::make_unique<Screens::CheckboxList>(
64
- 1 ,
65
- 2 ,
46
+ screenNum ,
47
+ nScreens ,
66
48
app,
67
49
title,
68
50
symbol,
@@ -71,5 +53,5 @@ std::unique_ptr<Screen> SettingWatchFace::CreateScreen2() {
71
53
settings.SetClockFace (clockFace);
72
54
settings.SaveSettings ();
73
55
},
74
- watchfaces );
56
+ watchfacesOnThisScreen );
75
57
}
0 commit comments