aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/displayapp/DisplayApp.cpp2
-rw-r--r--src/displayapp/screens/ApplicationList.cpp6
-rw-r--r--src/displayapp/screens/ApplicationList.h31
-rw-r--r--src/displayapp/screens/Navigation.cpp16
-rw-r--r--src/displayapp/screens/Navigation.h2
-rw-r--r--src/displayapp/screens/Tile.cpp2
-rw-r--r--src/displayapp/screens/Tile.h1
7 files changed, 41 insertions, 19 deletions
diff --git a/src/displayapp/DisplayApp.cpp b/src/displayapp/DisplayApp.cpp
index a930fe96..cd941f16 100644
--- a/src/displayapp/DisplayApp.cpp
+++ b/src/displayapp/DisplayApp.cpp
@@ -404,7 +404,7 @@ void DisplayApp::LoadScreen(Apps app, DisplayApp::FullRefreshDirections directio
switch (app) {
case Apps::Launcher:
currentScreen =
- std::make_unique<Screens::ApplicationList>(this, settingsController, batteryController, bleController, dateTimeController);
+ std::make_unique<Screens::ApplicationList>(this, settingsController, batteryController, bleController, dateTimeController, filesystem);
break;
case Apps::Motion:
// currentScreen = std::make_unique<Screens::Motion>(motionController);
diff --git a/src/displayapp/screens/ApplicationList.cpp b/src/displayapp/screens/ApplicationList.cpp
index 0a65a5d4..6014cf53 100644
--- a/src/displayapp/screens/ApplicationList.cpp
+++ b/src/displayapp/screens/ApplicationList.cpp
@@ -6,8 +6,6 @@
using namespace Pinetime::Applications::Screens;
-constexpr std::array<Tile::Applications, ApplicationList::applications.size()> ApplicationList::applications;
-
auto ApplicationList::CreateScreenList() const {
std::array<std::function<std::unique_ptr<Screen>()>, nScreens> screens;
for (size_t i = 0; i < screens.size(); i++) {
@@ -22,12 +20,14 @@ ApplicationList::ApplicationList(Pinetime::Applications::DisplayApp* app,
Pinetime::Controllers::Settings& settingsController,
const Pinetime::Controllers::Battery& batteryController,
const Pinetime::Controllers::Ble& bleController,
- Controllers::DateTime& dateTimeController)
+ Controllers::DateTime& dateTimeController,
+ Pinetime::Controllers::FS& filesystem)
: app {app},
settingsController {settingsController},
batteryController {batteryController},
bleController {bleController},
dateTimeController {dateTimeController},
+ filesystem{filesystem},
screens {app, settingsController.GetAppMenu(), CreateScreenList(), Screens::ScreenListModes::UpDown} {
}
diff --git a/src/displayapp/screens/ApplicationList.h b/src/displayapp/screens/ApplicationList.h
index 7bdd1154..371ee710 100644
--- a/src/displayapp/screens/ApplicationList.h
+++ b/src/displayapp/screens/ApplicationList.h
@@ -10,6 +10,7 @@
#include "components/battery/BatteryController.h"
#include "displayapp/screens/Symbols.h"
#include "displayapp/screens/Tile.h"
+#include "displayapp/screens/Navigation.h"
namespace Pinetime {
namespace Applications {
@@ -20,7 +21,8 @@ namespace Pinetime {
Pinetime::Controllers::Settings& settingsController,
const Pinetime::Controllers::Battery& batteryController,
const Pinetime::Controllers::Ble& bleController,
- Controllers::DateTime& dateTimeController);
+ Controllers::DateTime& dateTimeController,
+ Pinetime::Controllers::FS& filesystem);
~ApplicationList() override;
bool OnTouchEvent(TouchEvents event) override;
@@ -33,26 +35,27 @@ namespace Pinetime {
const Pinetime::Controllers::Battery& batteryController;
const Pinetime::Controllers::Ble& bleController;
Controllers::DateTime& dateTimeController;
+ Pinetime::Controllers::FS& filesystem;
static constexpr int appsPerScreen = 6;
// Increment this when more space is needed
static constexpr int nScreens = 2;
- static constexpr std::array<Tile::Applications, appsPerScreen * nScreens> 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},
+ std::array<Tile::Applications, appsPerScreen * nScreens> applications {{
+ {Symbols::stopWatch, Apps::StopWatch, true},
+ {Symbols::clock, Apps::Alarm, true},
+ {Symbols::hourGlass, Apps::Timer, true},
+ {Symbols::shoe, Apps::Steps, true},
+ {Symbols::heartBeat, Apps::HeartRate, true},
+ {Symbols::music, Apps::Music, true},
- {Symbols::paintbrush, Apps::Paint},
- {Symbols::paddle, Apps::Paddle},
- {"2", Apps::Twos},
- {Symbols::drum, Apps::Metronome},
- {Symbols::map, Apps::Navigation},
- {Symbols::none, Apps::None},
+ {Symbols::paintbrush, Apps::Paint, true},
+ {Symbols::paddle, Apps::Paddle, true},
+ {"2", Apps::Twos, true},
+ {Symbols::drum, Apps::Metronome, true},
+ {Symbols::map, Apps::Navigation, Applications::Screens::Navigation::IsAvailable(filesystem)},
+ {Symbols::none, Apps::None, false},
// {"M", Apps::Motion},
}};
diff --git a/src/displayapp/screens/Navigation.cpp b/src/displayapp/screens/Navigation.cpp
index fe2f1eb6..799ac8a9 100644
--- a/src/displayapp/screens/Navigation.cpp
+++ b/src/displayapp/screens/Navigation.cpp
@@ -265,3 +265,19 @@ void Navigation::Refresh() {
}
}
}
+
+bool Navigation::IsAvailable(Pinetime::Controllers::FS& filesystem) {
+ lfs_file file = {};
+
+ if (filesystem.FileOpen(&file, "/images/navigation0.bin", LFS_O_RDONLY) < 0) {
+ return false;
+ }
+ filesystem.FileClose(&file);
+
+ if (filesystem.FileOpen(&file, "/images/navigation1.bin", LFS_O_RDONLY) < 0) {
+ return false;
+ }
+ filesystem.FileClose(&file);
+
+ return true;
+}
diff --git a/src/displayapp/screens/Navigation.h b/src/displayapp/screens/Navigation.h
index ab81d48c..eb243b01 100644
--- a/src/displayapp/screens/Navigation.h
+++ b/src/displayapp/screens/Navigation.h
@@ -26,6 +26,7 @@
namespace Pinetime {
namespace Controllers {
class NavigationService;
+ class FS;
}
namespace Applications {
@@ -36,6 +37,7 @@ namespace Pinetime {
~Navigation() override;
void Refresh() override;
+ static bool IsAvailable(Pinetime::Controllers::FS& filesystem);
private:
lv_obj_t* imgFlag;
diff --git a/src/displayapp/screens/Tile.cpp b/src/displayapp/screens/Tile.cpp
index 1266f379..343755e3 100644
--- a/src/displayapp/screens/Tile.cpp
+++ b/src/displayapp/screens/Tile.cpp
@@ -76,7 +76,7 @@ Tile::Tile(uint8_t screenID,
for (uint8_t i = 0; i < 6; i++) {
lv_btnmatrix_set_btn_ctrl(btnm1, i, LV_BTNMATRIX_CTRL_CLICK_TRIG);
- if (applications[i].application == Apps::None) {
+ if (applications[i].application == Apps::None || !applications[i].enabled) {
lv_btnmatrix_set_btn_ctrl(btnm1, i, LV_BTNMATRIX_CTRL_DISABLED);
}
}
diff --git a/src/displayapp/screens/Tile.h b/src/displayapp/screens/Tile.h
index 91acb26c..8c1cd12c 100644
--- a/src/displayapp/screens/Tile.h
+++ b/src/displayapp/screens/Tile.h
@@ -19,6 +19,7 @@ namespace Pinetime {
struct Applications {
const char* icon;
Pinetime::Applications::Apps application;
+ bool enabled;
};
explicit Tile(uint8_t screenID,