diff options
Diffstat (limited to 'src/displayapp/screens/ApplicationList.cpp')
| -rw-r--r-- | src/displayapp/screens/ApplicationList.cpp | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/src/displayapp/screens/ApplicationList.cpp b/src/displayapp/screens/ApplicationList.cpp index 6014cf53..e5e26098 100644 --- a/src/displayapp/screens/ApplicationList.cpp +++ b/src/displayapp/screens/ApplicationList.cpp @@ -1,8 +1,9 @@ #include "displayapp/screens/ApplicationList.h" +#include "displayapp/screens/Tile.h" #include <lvgl/lvgl.h> #include <functional> -#include "displayapp/Apps.h" -#include "displayapp/DisplayApp.h" +#include <algorithm> +#include "components/settings/Settings.h" using namespace Pinetime::Applications::Screens; @@ -16,18 +17,20 @@ auto ApplicationList::CreateScreenList() const { return screens; } -ApplicationList::ApplicationList(Pinetime::Applications::DisplayApp* app, +ApplicationList::ApplicationList(DisplayApp* app, Pinetime::Controllers::Settings& settingsController, const Pinetime::Controllers::Battery& batteryController, const Pinetime::Controllers::Ble& bleController, Controllers::DateTime& dateTimeController, - Pinetime::Controllers::FS& filesystem) + Pinetime::Controllers::FS& filesystem, + std::array<Tile::Applications, UserAppTypes::Count>&& apps) : app {app}, settingsController {settingsController}, batteryController {batteryController}, bleController {bleController}, dateTimeController {dateTimeController}, filesystem{filesystem}, + apps{std::move(apps)}, screens {app, settingsController.GetAppMenu(), CreateScreenList(), Screens::ScreenListModes::UpDown} { } @@ -40,9 +43,14 @@ bool ApplicationList::OnTouchEvent(Pinetime::Applications::TouchEvents event) { } std::unique_ptr<Screen> ApplicationList::CreateScreen(unsigned int screenNum) const { - std::array<Tile::Applications, appsPerScreen> apps; - for (int i = 0; i < appsPerScreen; i++) { - apps[i] = applications[screenNum * appsPerScreen + i]; + std::array<Tile::Applications, appsPerScreen> pageApps; + + for(int i = 0; i < appsPerScreen; i++) { + if(i+(screenNum * appsPerScreen) >= apps.size()) { + pageApps[i] = {"", Pinetime::Applications::Apps::None, false}; + } else { + pageApps[i] = apps[i + (screenNum * appsPerScreen)]; + } } return std::make_unique<Screens::Tile>(screenNum, @@ -52,5 +60,5 @@ std::unique_ptr<Screen> ApplicationList::CreateScreen(unsigned int screenNum) co batteryController, bleController, dateTimeController, - apps); + pageApps); } |
