InfiniTime.git

commit 3e23ee7c782904debabe3eb76ceba05f1e903be4

Author: Jozef Mlich <jmlich83@gmail.com>

Show alarm controller state in status icon

 src/displayapp/DisplayApp.cpp | 4 +++-
 src/displayapp/screens/ApplicationList.cpp | 3 +++
 src/displayapp/screens/ApplicationList.h | 2 ++
 src/displayapp/screens/Tile.cpp | 6 +++++-
 src/displayapp/screens/Tile.h | 1 +
 src/displayapp/screens/WatchFaceDigital.cpp | 3 ++-
 src/displayapp/screens/WatchFaceDigital.h | 3 +++
 src/displayapp/screens/settings/QuickSettings.cpp | 5 +++--
 src/displayapp/screens/settings/QuickSettings.h | 3 ++-
 src/displayapp/widgets/StatusIcons.cpp | 15 +++++++++++++--
 src/displayapp/widgets/StatusIcons.h | 8 +++++++-


diff --git a/src/displayapp/DisplayApp.cpp b/src/displayapp/DisplayApp.cpp
index b1594f197caa156298fda257ba3e48cfb549ac1c..6671ac9e511a18ea6964e827a8f043a94838c58c 100644
--- a/src/displayapp/DisplayApp.cpp
+++ b/src/displayapp/DisplayApp.cpp
@@ -526,6 +526,7 @@       currentScreen = std::make_unique(this,
                                                                  settingsController,
                                                                  batteryController,
                                                                  bleController,
+                                                                 alarmController,
                                                                  dateTimeController,
                                                                  filesystem,
                                                                  std::move(apps));
@@ -580,7 +581,8 @@                                                                dateTimeController,
                                                                brightnessController,
                                                                motorController,
                                                                settingsController,
-                                                               bleController);
+                                                               bleController,
+                                                               alarmController);
       break;
     case Apps::Settings:
       currentScreen = std::make_unique<Screens::Settings>(this, settingsController);




diff --git a/src/displayapp/screens/ApplicationList.cpp b/src/displayapp/screens/ApplicationList.cpp
index 41735349da8322d27b248cdb59ae1ecb7b0193c3..fb46b4138418a3cfb33993b9b3471982effab314 100644
--- a/src/displayapp/screens/ApplicationList.cpp
+++ b/src/displayapp/screens/ApplicationList.cpp
@@ -21,6 +21,7 @@ ApplicationList::ApplicationList(DisplayApp* app,
                                  Pinetime::Controllers::Settings& settingsController,
                                  const Pinetime::Controllers::Battery& batteryController,
                                  const Pinetime::Controllers::Ble& bleController,
+                                 const Pinetime::Controllers::AlarmController& alarmController,
                                  Controllers::DateTime& dateTimeController,
                                  Pinetime::Controllers::FS& filesystem,
                                  std::array<Tile::Applications, UserAppTypes::Count>&& apps)
@@ -28,6 +29,7 @@   : app {app},
     settingsController {settingsController},
     batteryController {batteryController},
     bleController {bleController},
+    alarmController {alarmController},
     dateTimeController {dateTimeController},
     filesystem {filesystem},
     apps {std::move(apps)},
@@ -59,6 +61,7 @@                                          app,
                                          settingsController,
                                          batteryController,
                                          bleController,
+                                         alarmController,
                                          dateTimeController,
                                          pageApps);
 }




diff --git a/src/displayapp/screens/ApplicationList.h b/src/displayapp/screens/ApplicationList.h
index 41a413af1a44a37674a65a9a89f92a24a21a6762..4a57d7c0345deba7a4aa1e8de77ec06b1ca6d1c8 100644
--- a/src/displayapp/screens/ApplicationList.h
+++ b/src/displayapp/screens/ApplicationList.h
@@ -18,6 +18,7 @@         explicit ApplicationList(DisplayApp* app,
                                  Pinetime::Controllers::Settings& settingsController,
                                  const Pinetime::Controllers::Battery& batteryController,
                                  const Pinetime::Controllers::Ble& bleController,
+                                 const Pinetime::Controllers::AlarmController& alarmController,
                                  Controllers::DateTime& dateTimeController,
                                  Pinetime::Controllers::FS& filesystem,
                                  std::array<Tile::Applications, UserAppTypes::Count>&& apps);
@@ -32,6 +33,7 @@
         Controllers::Settings& settingsController;
         const Pinetime::Controllers::Battery& batteryController;
         const Pinetime::Controllers::Ble& bleController;
+        const Pinetime::Controllers::AlarmController& alarmController;
         Controllers::DateTime& dateTimeController;
         Pinetime::Controllers::FS& filesystem;
         std::array<Tile::Applications, UserAppTypes::Count> apps;




diff --git a/src/displayapp/screens/Tile.cpp b/src/displayapp/screens/Tile.cpp
index 7c392c59e56b37245c29f070db83dba8c5c2654c..7c585a4b97346ad583eaa4e2695c3d27bc7ed228 100644
--- a/src/displayapp/screens/Tile.cpp
+++ b/src/displayapp/screens/Tile.cpp
@@ -29,9 +29,13 @@            DisplayApp* app,
            Controllers::Settings& settingsController,
            const Controllers::Battery& batteryController,
            const Controllers::Ble& bleController,
+           const Controllers::AlarmController& alarmController,
            Controllers::DateTime& dateTimeController,
            std::array<Applications, 6>& applications)
-  : app {app}, dateTimeController {dateTimeController}, pageIndicator(screenID, numScreens), statusIcons(batteryController, bleController) {
+  : app {app},
+    dateTimeController {dateTimeController},
+    pageIndicator(screenID, numScreens),
+    statusIcons(batteryController, bleController, alarmController) {
 
   settingsController.SetAppMenu(screenID);
 




diff --git a/src/displayapp/screens/Tile.h b/src/displayapp/screens/Tile.h
index f1b86246cec4c5b9497cc3aa422b0537d96e4e72..c16151d0e1a8bc0bdda0256f26768cf03873fbbb 100644
--- a/src/displayapp/screens/Tile.h
+++ b/src/displayapp/screens/Tile.h
@@ -28,6 +28,7 @@                       DisplayApp* app,
                       Controllers::Settings& settingsController,
                       const Controllers::Battery& batteryController,
                       const Controllers::Ble& bleController,
+                      const Controllers::AlarmController& alarmController,
                       Controllers::DateTime& dateTimeController,
                       std::array<Applications, 6>& applications);
 




diff --git a/src/displayapp/screens/WatchFaceDigital.cpp b/src/displayapp/screens/WatchFaceDigital.cpp
index d944117dd7e7a50bbd11e743d9eb972f0fe5e0b5..3163c6e75070880be7f1226e030836acb661e427 100644
--- a/src/displayapp/screens/WatchFaceDigital.cpp
+++ b/src/displayapp/screens/WatchFaceDigital.cpp
@@ -19,6 +19,7 @@
 WatchFaceDigital::WatchFaceDigital(Controllers::DateTime& dateTimeController,
                                    const Controllers::Battery& batteryController,
                                    const Controllers::Ble& bleController,
+                                   const Controllers::AlarmController& alarmController,
                                    Controllers::NotificationManager& notificationManager,
                                    Controllers::Settings& settingsController,
                                    Controllers::HeartRateController& heartRateController,
@@ -31,7 +32,7 @@     settingsController {settingsController},
     heartRateController {heartRateController},
     motionController {motionController},
     weatherService {weatherService},
-    statusIcons(batteryController, bleController) {
+    statusIcons(batteryController, bleController, alarmController) {
 
   statusIcons.Create();
 




diff --git a/src/displayapp/screens/WatchFaceDigital.h b/src/displayapp/screens/WatchFaceDigital.h
index 7bb713cbb89fff37204d73aee1f295898cedefcb..3005cea56f2ce45431cb3c9a4573fe4d8a1dd573 100644
--- a/src/displayapp/screens/WatchFaceDigital.h
+++ b/src/displayapp/screens/WatchFaceDigital.h
@@ -17,6 +17,7 @@   namespace Controllers {
     class Settings;
     class Battery;
     class Ble;
+    class AlarmController;
     class NotificationManager;
     class HeartRateController;
     class MotionController;
@@ -30,6 +31,7 @@       public:
         WatchFaceDigital(Controllers::DateTime& dateTimeController,
                          const Controllers::Battery& batteryController,
                          const Controllers::Ble& bleController,
+                         const Controllers::AlarmController& alarmController,
                          Controllers::NotificationManager& notificationManager,
                          Controllers::Settings& settingsController,
                          Controllers::HeartRateController& heartRateController,
@@ -84,6 +86,7 @@       static Screens::Screen* Create(AppControllers& controllers) {
         return new Screens::WatchFaceDigital(controllers.dateTimeController,
                                              controllers.batteryController,
                                              controllers.bleController,
+                                             controllers.alarmController,
                                              controllers.notificationManager,
                                              controllers.settingsController,
                                              controllers.heartRateController,




diff --git a/src/displayapp/screens/settings/QuickSettings.cpp b/src/displayapp/screens/settings/QuickSettings.cpp
index 0548488855d891f63b823c19a47628fd2a951da8..c5c3071aef22d776a2d6b6f9db174abe081a3dde 100644
--- a/src/displayapp/screens/settings/QuickSettings.cpp
+++ b/src/displayapp/screens/settings/QuickSettings.cpp
@@ -33,13 +33,14 @@                              Controllers::DateTime& dateTimeController,
                              Controllers::BrightnessController& brightness,
                              Controllers::MotorController& motorController,
                              Pinetime::Controllers::Settings& settingsController,
-                             const Controllers::Ble& bleController)
+                             const Controllers::Ble& bleController,
+                             const Controllers::AlarmController& alarmController)
   : app {app},
     dateTimeController {dateTimeController},
     brightness {brightness},
     motorController {motorController},
     settingsController {settingsController},
-    statusIcons(batteryController, bleController) {
+    statusIcons(batteryController, bleController, alarmController) {
 
   statusIcons.Create();
 




diff --git a/src/displayapp/screens/settings/QuickSettings.h b/src/displayapp/screens/settings/QuickSettings.h
index 55da6176292bcef09c48897865890c799c712583..87c126b7fafd7fdc3451d4af1c4b5e4002007f80 100644
--- a/src/displayapp/screens/settings/QuickSettings.h
+++ b/src/displayapp/screens/settings/QuickSettings.h
@@ -23,7 +23,8 @@                       Controllers::DateTime& dateTimeController,
                       Controllers::BrightnessController& brightness,
                       Controllers::MotorController& motorController,
                       Pinetime::Controllers::Settings& settingsController,
-                      const Controllers::Ble& bleController);
+                      const Controllers::Ble& bleController,
+                      const Controllers::AlarmController& alarmController);
 
         ~QuickSettings() override;
 




diff --git a/src/displayapp/widgets/StatusIcons.cpp b/src/displayapp/widgets/StatusIcons.cpp
index 423b53d97abbbd065de0dfffd69c55d8c4b91b14..777731a59fa270671586c56f13e52694e706074c 100644
--- a/src/displayapp/widgets/StatusIcons.cpp
+++ b/src/displayapp/widgets/StatusIcons.cpp
@@ -1,10 +1,13 @@
 #include "displayapp/widgets/StatusIcons.h"
 #include "displayapp/screens/Symbols.h"
+#include "components/alarm/AlarmController.h"
 
 using namespace Pinetime::Applications::Widgets;
 
-StatusIcons::StatusIcons(const Controllers::Battery& batteryController, const Controllers::Ble& bleController)
-  : batteryIcon(true), batteryController {batteryController}, bleController {bleController} {
+StatusIcons::StatusIcons(const Controllers::Battery& batteryController,
+                         const Controllers::Ble& bleController,
+                         const Controllers::AlarmController& alarmController)
+  : batteryIcon(true), batteryController {batteryController}, bleController {bleController}, alarmController {alarmController} {
 }
 
 void StatusIcons::Create() {
@@ -20,6 +23,9 @@
   batteryPlug = lv_label_create(container, nullptr);
   lv_label_set_text_static(batteryPlug, Screens::Symbols::plug);
 
+  alarmIcon = lv_label_create(container, nullptr);
+  lv_label_set_text_static(alarmIcon, Screens::Symbols::bell);
+
   batteryIcon.Create(container);
 
   lv_obj_align(container, nullptr, LV_ALIGN_IN_TOP_RIGHT, 0, 0);
@@ -35,6 +41,11 @@   batteryPercentRemaining = batteryController.PercentRemaining();
   if (batteryPercentRemaining.IsUpdated()) {
     auto batteryPercent = batteryPercentRemaining.Get();
     batteryIcon.SetBatteryPercentage(batteryPercent);
+  }
+
+  alarmEnabled = alarmController.IsEnabled();
+  if (alarmEnabled.IsUpdated()) {
+    lv_obj_set_hidden(alarmIcon, !alarmEnabled.Get());
   }
 
   bleState = bleController.IsConnected();




diff --git a/src/displayapp/widgets/StatusIcons.h b/src/displayapp/widgets/StatusIcons.h
index 9e21d3add0e542df21e22f0c10ee2de5dc439f71..5524e996c593d18a8fe1b32d286ee5b797682648 100644
--- a/src/displayapp/widgets/StatusIcons.h
+++ b/src/displayapp/widgets/StatusIcons.h
@@ -5,6 +5,7 @@
 #include "displayapp/screens/Screen.h"
 #include "components/battery/BatteryController.h"
 #include "components/ble/BleController.h"
+#include "components/alarm/AlarmController.h"
 #include "displayapp/screens/BatteryIcon.h"
 #include "utility/DirtyValue.h"
 
@@ -13,7 +14,9 @@   namespace Applications {
     namespace Widgets {
       class StatusIcons {
       public:
-        StatusIcons(const Controllers::Battery& batteryController, const Controllers::Ble& bleController);
+        StatusIcons(const Controllers::Battery& batteryController,
+                    const Controllers::Ble& bleController,
+                    const Controllers::AlarmController& alarmController);
         void Align();
         void Create();
 
@@ -27,13 +30,16 @@       private:
         Screens::BatteryIcon batteryIcon;
         const Pinetime::Controllers::Battery& batteryController;
         const Controllers::Ble& bleController;
+        const Controllers::AlarmController& alarmController;
 
         Utility::DirtyValue<uint8_t> batteryPercentRemaining {};
         Utility::DirtyValue<bool> powerPresent {};
         Utility::DirtyValue<bool> bleState {};
         Utility::DirtyValue<bool> bleRadioEnabled {};
+        Utility::DirtyValue<bool> alarmEnabled {};
 
         lv_obj_t* bleIcon;
+        lv_obj_t* alarmIcon;
         lv_obj_t* batteryPlug;
         lv_obj_t* container;
       };