Skip to content

Commit fad6d20

Browse files
committed
Show alarm controller state in status icon
1 parent d69cfcf commit fad6d20

14 files changed

+243
-9
lines changed

src/displayapp/DisplayApp.cpp

+3-1
Original file line numberDiff line numberDiff line change
@@ -526,6 +526,7 @@ void DisplayApp::LoadScreen(Apps app, DisplayApp::FullRefreshDirections directio
526526
settingsController,
527527
batteryController,
528528
bleController,
529+
alarmController,
529530
dateTimeController,
530531
filesystem,
531532
std::move(apps));
@@ -580,7 +581,8 @@ void DisplayApp::LoadScreen(Apps app, DisplayApp::FullRefreshDirections directio
580581
brightnessController,
581582
motorController,
582583
settingsController,
583-
bleController);
584+
bleController,
585+
alarmController);
584586
break;
585587
case Apps::Settings:
586588
currentScreen = std::make_unique<Screens::Settings>(this, settingsController);

src/displayapp/screens/ApplicationList.cpp

+3
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,15 @@ ApplicationList::ApplicationList(DisplayApp* app,
2121
Pinetime::Controllers::Settings& settingsController,
2222
const Pinetime::Controllers::Battery& batteryController,
2323
const Pinetime::Controllers::Ble& bleController,
24+
const Pinetime::Controllers::AlarmController& alarmController,
2425
Controllers::DateTime& dateTimeController,
2526
Pinetime::Controllers::FS& filesystem,
2627
std::array<Tile::Applications, UserAppTypes::Count>&& apps)
2728
: app {app},
2829
settingsController {settingsController},
2930
batteryController {batteryController},
3031
bleController {bleController},
32+
alarmController {alarmController},
3133
dateTimeController {dateTimeController},
3234
filesystem {filesystem},
3335
apps {std::move(apps)},
@@ -59,6 +61,7 @@ std::unique_ptr<Screen> ApplicationList::CreateScreen(unsigned int screenNum) co
5961
settingsController,
6062
batteryController,
6163
bleController,
64+
alarmController,
6265
dateTimeController,
6366
pageApps);
6467
}

src/displayapp/screens/ApplicationList.h

+2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ namespace Pinetime {
1818
Pinetime::Controllers::Settings& settingsController,
1919
const Pinetime::Controllers::Battery& batteryController,
2020
const Pinetime::Controllers::Ble& bleController,
21+
const Pinetime::Controllers::AlarmController& alarmController,
2122
Controllers::DateTime& dateTimeController,
2223
Pinetime::Controllers::FS& filesystem,
2324
std::array<Tile::Applications, UserAppTypes::Count>&& apps);
@@ -32,6 +33,7 @@ namespace Pinetime {
3233
Controllers::Settings& settingsController;
3334
const Pinetime::Controllers::Battery& batteryController;
3435
const Pinetime::Controllers::Ble& bleController;
36+
const Pinetime::Controllers::AlarmController& alarmController;
3537
Controllers::DateTime& dateTimeController;
3638
Pinetime::Controllers::FS& filesystem;
3739
std::array<Tile::Applications, UserAppTypes::Count> apps;

src/displayapp/screens/Clock.cpp

+136
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
#include "displayapp/screens/Clock.h"
2+
3+
#include <lvgl/lvgl.h>
4+
#include "components/battery/BatteryController.h"
5+
#include "components/motion/MotionController.h"
6+
#include "components/ble/BleController.h"
7+
#include "components/ble/NotificationManager.h"
8+
#include "components/settings/Settings.h"
9+
#include "displayapp/DisplayApp.h"
10+
#include "displayapp/screens/WatchFaceDigital.h"
11+
#include "displayapp/screens/WatchFaceTerminal.h"
12+
#include "displayapp/screens/WatchFaceInfineat.h"
13+
#include "displayapp/screens/WatchFaceAnalog.h"
14+
#include "displayapp/screens/WatchFacePineTimeStyle.h"
15+
#include "displayapp/screens/WatchFaceCasioStyleG7710.h"
16+
17+
using namespace Pinetime::Applications::Screens;
18+
using namespace Pinetime::Applications;
19+
20+
Clock::Clock(Controllers::DateTime& dateTimeController,
21+
const Controllers::Battery& batteryController,
22+
const Controllers::Ble& bleController,
23+
const Controllers::AlarmController& alarmController,
24+
Controllers::NotificationManager& notificationManager,
25+
Controllers::Settings& settingsController,
26+
Controllers::HeartRateController& heartRateController,
27+
Controllers::MotionController& motionController,
28+
Controllers::WeatherService& weatherService,
29+
Controllers::FS& filesystem)
30+
: dateTimeController {dateTimeController},
31+
batteryController {batteryController},
32+
bleController {bleController},
33+
alarmController {alarmController},
34+
notificationManager {notificationManager},
35+
settingsController {settingsController},
36+
heartRateController {heartRateController},
37+
motionController {motionController},
38+
weatherService {weatherService},
39+
filesystem {filesystem},
40+
screen {[this, &settingsController]() {
41+
switch (settingsController.GetWatchFace()) {
42+
case WatchFace::Digital:
43+
return WatchFaceDigitalScreen();
44+
break;
45+
case WatchFace::Analog:
46+
return WatchFaceAnalogScreen();
47+
break;
48+
case WatchFace::PineTimeStyle:
49+
return WatchFacePineTimeStyleScreen();
50+
break;
51+
case WatchFace::Terminal:
52+
return WatchFaceTerminalScreen();
53+
break;
54+
case WatchFace::Infineat:
55+
return WatchFaceInfineatScreen();
56+
break;
57+
case WatchFace::CasioStyleG7710:
58+
return WatchFaceCasioStyleG7710();
59+
break;
60+
}
61+
return WatchFaceDigitalScreen();
62+
}()} {
63+
settingsController.SetAppMenu(0);
64+
}
65+
66+
Clock::~Clock() {
67+
lv_obj_clean(lv_scr_act());
68+
}
69+
70+
bool Clock::OnTouchEvent(Pinetime::Applications::TouchEvents event) {
71+
return screen->OnTouchEvent(event);
72+
}
73+
74+
bool Clock::OnButtonPushed() {
75+
return screen->OnButtonPushed();
76+
}
77+
78+
std::unique_ptr<Screen> Clock::WatchFaceDigitalScreen() {
79+
return std::make_unique<Screens::WatchFaceDigital>(dateTimeController,
80+
batteryController,
81+
bleController,
82+
alarmController,
83+
notificationManager,
84+
settingsController,
85+
heartRateController,
86+
motionController);
87+
}
88+
89+
std::unique_ptr<Screen> Clock::WatchFaceAnalogScreen() {
90+
return std::make_unique<Screens::WatchFaceAnalog>(dateTimeController,
91+
batteryController,
92+
bleController,
93+
notificationManager,
94+
settingsController);
95+
}
96+
97+
std::unique_ptr<Screen> Clock::WatchFacePineTimeStyleScreen() {
98+
return std::make_unique<Screens::WatchFacePineTimeStyle>(dateTimeController,
99+
batteryController,
100+
bleController,
101+
notificationManager,
102+
settingsController,
103+
motionController,
104+
weatherService);
105+
}
106+
107+
std::unique_ptr<Screen> Clock::WatchFaceTerminalScreen() {
108+
return std::make_unique<Screens::WatchFaceTerminal>(dateTimeController,
109+
batteryController,
110+
bleController,
111+
notificationManager,
112+
settingsController,
113+
heartRateController,
114+
motionController);
115+
}
116+
117+
std::unique_ptr<Screen> Clock::WatchFaceInfineatScreen() {
118+
return std::make_unique<Screens::WatchFaceInfineat>(dateTimeController,
119+
batteryController,
120+
bleController,
121+
notificationManager,
122+
settingsController,
123+
motionController,
124+
filesystem);
125+
}
126+
127+
std::unique_ptr<Screen> Clock::WatchFaceCasioStyleG7710() {
128+
return std::make_unique<Screens::WatchFaceCasioStyleG7710>(dateTimeController,
129+
batteryController,
130+
bleController,
131+
notificationManager,
132+
settingsController,
133+
heartRateController,
134+
motionController,
135+
filesystem);
136+
}

src/displayapp/screens/Clock.h

+66
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
#pragma once
2+
3+
#include <chrono>
4+
#include <cstdint>
5+
#include <memory>
6+
#include "displayapp/Controllers.h"
7+
#include "displayapp/screens/Screen.h"
8+
#include "displayapp/Apps.h"
9+
#include "Symbols.h"
10+
11+
namespace Pinetime {
12+
namespace Controllers {
13+
class Settings;
14+
class Battery;
15+
class Ble;
16+
class AlarmController;
17+
class NotificationManager;
18+
class MotionController;
19+
class DateTime;
20+
class HeartRateController;
21+
class WeatherService;
22+
class FS;
23+
}
24+
25+
namespace Applications {
26+
namespace Screens {
27+
class Clock : public Screen {
28+
public:
29+
Clock(Controllers::DateTime& dateTimeController,
30+
const Controllers::Battery& batteryController,
31+
const Controllers::Ble& bleController,
32+
const Controllers::AlarmController& alarmController,
33+
Controllers::NotificationManager& notificationManager,
34+
Controllers::Settings& settingsController,
35+
Controllers::HeartRateController& heartRateController,
36+
Controllers::MotionController& motionController,
37+
Controllers::WeatherService& weatherService,
38+
Controllers::FS& filesystem);
39+
~Clock() override;
40+
41+
bool OnTouchEvent(TouchEvents event) override;
42+
bool OnButtonPushed() override;
43+
44+
private:
45+
Controllers::DateTime& dateTimeController;
46+
const Controllers::Battery& batteryController;
47+
const Controllers::Ble& bleController;
48+
const Controllers::AlarmController& alarmController;
49+
Controllers::NotificationManager& notificationManager;
50+
Controllers::Settings& settingsController;
51+
Controllers::HeartRateController& heartRateController;
52+
Controllers::MotionController& motionController;
53+
Controllers::WeatherService& weatherService;
54+
Controllers::FS& filesystem;
55+
56+
std::unique_ptr<Screen> screen;
57+
std::unique_ptr<Screen> WatchFaceDigitalScreen();
58+
std::unique_ptr<Screen> WatchFaceAnalogScreen();
59+
std::unique_ptr<Screen> WatchFacePineTimeStyleScreen();
60+
std::unique_ptr<Screen> WatchFaceTerminalScreen();
61+
std::unique_ptr<Screen> WatchFaceInfineatScreen();
62+
std::unique_ptr<Screen> WatchFaceCasioStyleG7710();
63+
};
64+
}
65+
}
66+
}

src/displayapp/screens/SystemInfo.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@ std::unique_ptr<Screen> SystemInfo::CreateScreen2() {
180180

181181
extern int mallocFailedCount;
182182
extern int stackOverflowCount;
183+
183184
std::unique_ptr<Screen> SystemInfo::CreateScreen3() {
184185
lv_mem_monitor_t mon;
185186
lv_mem_monitor(&mon);

src/displayapp/screens/Tile.cpp

+5-1
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,13 @@ Tile::Tile(uint8_t screenID,
2929
Controllers::Settings& settingsController,
3030
const Controllers::Battery& batteryController,
3131
const Controllers::Ble& bleController,
32+
const Controllers::AlarmController& alarmController,
3233
Controllers::DateTime& dateTimeController,
3334
std::array<Applications, 6>& applications)
34-
: app {app}, dateTimeController {dateTimeController}, pageIndicator(screenID, numScreens), statusIcons(batteryController, bleController) {
35+
: app {app},
36+
dateTimeController {dateTimeController},
37+
pageIndicator(screenID, numScreens),
38+
statusIcons(batteryController, bleController, alarmController) {
3539

3640
settingsController.SetAppMenu(screenID);
3741

src/displayapp/screens/Tile.h

+1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ namespace Pinetime {
2828
Controllers::Settings& settingsController,
2929
const Controllers::Battery& batteryController,
3030
const Controllers::Ble& bleController,
31+
const Controllers::AlarmController& alarmController,
3132
Controllers::DateTime& dateTimeController,
3233
std::array<Applications, 6>& applications);
3334

src/displayapp/screens/WatchFaceDigital.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ using namespace Pinetime::Applications::Screens;
1919
WatchFaceDigital::WatchFaceDigital(Controllers::DateTime& dateTimeController,
2020
const Controllers::Battery& batteryController,
2121
const Controllers::Ble& bleController,
22+
const Controllers::AlarmController& alarmController,
2223
Controllers::NotificationManager& notificationManager,
2324
Controllers::Settings& settingsController,
2425
Controllers::HeartRateController& heartRateController,
@@ -31,7 +32,7 @@ WatchFaceDigital::WatchFaceDigital(Controllers::DateTime& dateTimeController,
3132
heartRateController {heartRateController},
3233
motionController {motionController},
3334
weatherService {weatherService},
34-
statusIcons(batteryController, bleController) {
35+
statusIcons(batteryController, bleController, alarmController) {
3536

3637
statusIcons.Create();
3738

src/displayapp/screens/WatchFaceDigital.h

+2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ namespace Pinetime {
1717
class Settings;
1818
class Battery;
1919
class Ble;
20+
class AlarmController;
2021
class NotificationManager;
2122
class HeartRateController;
2223
class MotionController;
@@ -30,6 +31,7 @@ namespace Pinetime {
3031
WatchFaceDigital(Controllers::DateTime& dateTimeController,
3132
const Controllers::Battery& batteryController,
3233
const Controllers::Ble& bleController,
34+
const Controllers::AlarmController& alarmController,
3335
Controllers::NotificationManager& notificationManager,
3436
Controllers::Settings& settingsController,
3537
Controllers::HeartRateController& heartRateController,

src/displayapp/screens/settings/QuickSettings.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,14 @@ QuickSettings::QuickSettings(Pinetime::Applications::DisplayApp* app,
3333
Controllers::BrightnessController& brightness,
3434
Controllers::MotorController& motorController,
3535
Pinetime::Controllers::Settings& settingsController,
36-
const Controllers::Ble& bleController)
36+
const Controllers::Ble& bleController,
37+
const Controllers::AlarmController& alarmController)
3738
: app {app},
3839
dateTimeController {dateTimeController},
3940
brightness {brightness},
4041
motorController {motorController},
4142
settingsController {settingsController},
42-
statusIcons(batteryController, bleController) {
43+
statusIcons(batteryController, bleController, alarmController) {
4344

4445
statusIcons.Create();
4546

src/displayapp/screens/settings/QuickSettings.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ namespace Pinetime {
2323
Controllers::BrightnessController& brightness,
2424
Controllers::MotorController& motorController,
2525
Pinetime::Controllers::Settings& settingsController,
26-
const Controllers::Ble& bleController);
26+
const Controllers::Ble& bleController,
27+
const Controllers::AlarmController& alarmController);
2728

2829
~QuickSettings() override;
2930

src/displayapp/widgets/StatusIcons.cpp

+11-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
#include "displayapp/widgets/StatusIcons.h"
22
#include "displayapp/screens/Symbols.h"
3+
#include "components/alarm/AlarmController.h"
34

45
using namespace Pinetime::Applications::Widgets;
56

6-
StatusIcons::StatusIcons(const Controllers::Battery& batteryController, const Controllers::Ble& bleController)
7-
: batteryIcon(true), batteryController {batteryController}, bleController {bleController} {
7+
StatusIcons::StatusIcons(const Controllers::Battery& batteryController,
8+
const Controllers::Ble& bleController,
9+
const Controllers::AlarmController& alarmController)
10+
: batteryIcon(true), batteryController {batteryController}, bleController {bleController}, alarmController {alarmController} {
811
}
912

1013
void StatusIcons::Create() {
@@ -20,6 +23,9 @@ void StatusIcons::Create() {
2023
batteryPlug = lv_label_create(container, nullptr);
2124
lv_label_set_text_static(batteryPlug, Screens::Symbols::plug);
2225

26+
alarmIcon = lv_label_create(container, nullptr);
27+
lv_label_set_text_static(alarmIcon, Screens::Symbols::clock);
28+
2329
batteryIcon.Create(container);
2430

2531
lv_obj_align(container, nullptr, LV_ALIGN_IN_TOP_RIGHT, 0, 0);
@@ -37,6 +43,9 @@ void StatusIcons::Update() {
3743
batteryIcon.SetBatteryPercentage(batteryPercent);
3844
}
3945

46+
bool alarmNotSet = (alarmController.State() == Pinetime::Controllers::AlarmController::AlarmState::Not_Set);
47+
lv_obj_set_hidden(alarmIcon, alarmNotSet);
48+
4049
bleState = bleController.IsConnected();
4150
bleRadioEnabled = bleController.IsRadioEnabled();
4251
if (bleState.IsUpdated() || bleRadioEnabled.IsUpdated()) {

0 commit comments

Comments
 (0)