aboutsummaryrefslogtreecommitdiffstats
path: root/src/displayapp/screens/ApplicationList.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/displayapp/screens/ApplicationList.cpp')
-rw-r--r--src/displayapp/screens/ApplicationList.cpp24
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);
}