diff options
Diffstat (limited to 'src/displayapp/screens/ApplicationList.h')
| -rw-r--r-- | src/displayapp/screens/ApplicationList.h | 56 |
1 files changed, 33 insertions, 23 deletions
diff --git a/src/displayapp/screens/ApplicationList.h b/src/displayapp/screens/ApplicationList.h index dfd9119..d2ede1b 100644 --- a/src/displayapp/screens/ApplicationList.h +++ b/src/displayapp/screens/ApplicationList.h @@ -31,29 +31,39 @@ namespace Pinetime { Controllers::DateTime& dateTimeController; static constexpr int appsPerScreen = 6; - static constexpr std::array<Tile::Applications, appsPerScreen * 3> applications {{ - {Symbols::stopWatch, Apps::StopWatch}, - {Symbols::clock, Apps::Alarm}, - {Symbols::hourGlass, Apps::Timer}, - {Symbols::shoe, Apps::Steps}, - {Symbols::heartBeat, Apps::HeartRate}, - {Symbols::music, Apps::Music}, - - {Symbols::paintbrush, Apps::Paint}, - {Symbols::paddle, Apps::Paddle}, - {"2", Apps::Twos}, - {Symbols::chartLine, Apps::Motion}, - {Symbols::drum, Apps::Metronome}, - {Symbols::map, Apps::Navigation}, - - {Symbols::drum, Apps::Jumpscore}, - {Symbols::none, Apps::None}, - {Symbols::none, Apps::None}, - {Symbols::none, Apps::None}, - {Symbols::none, Apps::None}, - {Symbols::none, Apps::None}, - }}; - static constexpr int nScreens = (applications.size() + appsPerScreen - 1) / appsPerScreen; + static constexpr auto applications{[]() constexpr{ + constexpr Tile::Applications list[] = { + {Symbols::stopWatch, Apps::StopWatch}, + {Symbols::clock, Apps::Alarm}, + {Symbols::hourGlass, Apps::Timer}, + {Symbols::shoe, Apps::Steps}, + {Symbols::heartBeat, Apps::HeartRate}, + {Symbols::music, Apps::Music}, + + {Symbols::paintbrush, Apps::Paint}, + {Symbols::paddle, Apps::Paddle}, + {"2", Apps::Twos}, + {Symbols::chartLine, Apps::Motion}, + {Symbols::drum, Apps::Metronome}, + {Symbols::map, Apps::Navigation}, + + {Symbols::drum, Apps::Jumpscore}, + }; + std::array<std::array<Tile::Applications, appsPerScreen>, ((std::size(list) + appsPerScreen - 1) / appsPerScreen)> r{};; + int idx = 0; + for (auto& f : r) { + for (auto& e : f) { + if (idx < std::size(list)) { + e = list[idx]; + } else { + e = { Symbols::none, Apps::None }; + } + idx++; + } + } + return r; + }()}; + static constexpr auto nScreens = std::size(applications); ScreenList<nScreens> screens; }; } |
