Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 19 additions & 2 deletions src/displayapp/screens/WatchFaceAnalog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
#include "displayapp/screens/Symbols.h"
#include "displayapp/screens/NotificationIcon.h"
#include "components/settings/Settings.h"
#include "components/alarm/AlarmController.h"
#include "displayapp/InfiniTimeTheme.h"

using namespace Pinetime::Applications::Screens;
Expand Down Expand Up @@ -48,14 +49,16 @@ WatchFaceAnalog::WatchFaceAnalog(Controllers::DateTime& dateTimeController,
const Controllers::Battery& batteryController,
const Controllers::Ble& bleController,
Controllers::NotificationManager& notificationManager,
Controllers::Settings& settingsController)
Controllers::Settings& settingsController,
Controllers::AlarmController& alarmController)
: currentDateTime {{}},
batteryIcon(true),
dateTimeController {dateTimeController},
batteryController {batteryController},
bleController {bleController},
notificationManager {notificationManager},
settingsController {settingsController} {
settingsController {settingsController},
alarmController {alarmController} {

sHour = 99;
sMinute = 99;
Expand Down Expand Up @@ -157,6 +160,11 @@ WatchFaceAnalog::WatchFaceAnalog(Controllers::DateTime& dateTimeController,
lv_style_set_line_rounded(&hour_line_style_trace, LV_STATE_DEFAULT, false);
lv_obj_add_style(hour_body_trace, LV_LINE_PART_MAIN, &hour_line_style_trace);

alarmIcon = lv_label_create(lv_scr_act(), nullptr);
lv_obj_set_style_local_text_color(alarmIcon, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x00FFE7));
lv_label_set_text_static(alarmIcon, Symbols::bell);
lv_obj_align(alarmIcon, nullptr, LV_ALIGN_IN_TOP_LEFT, 0, 0);

taskRefresh = lv_task_create(RefreshTaskCallback, LV_DISP_DEF_REFR_PERIOD, LV_TASK_PRIO_MID, this);

Refresh();
Expand Down Expand Up @@ -264,4 +272,13 @@ void WatchFaceAnalog::Refresh() {
lv_label_set_text_fmt(label_date_day, "%s\n%02i", dateTimeController.DayOfWeekShortToString(), dateTimeController.Day());
}
}

alarmSet = alarmController.IsEnabled();
if (alarmSet.Get()) {
lv_obj_set_style_local_text_color(alarmIcon, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x6AA84F));
lv_obj_realign(alarmIcon);
} else {
lv_obj_set_style_local_text_color(alarmIcon, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x1B1B1B));
lv_obj_realign(alarmIcon);
}
}
10 changes: 8 additions & 2 deletions src/displayapp/screens/WatchFaceAnalog.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ namespace Pinetime {
class Battery;
class Ble;
class NotificationManager;
class AlarmController;
}

namespace Applications {
Expand All @@ -29,7 +30,8 @@ namespace Pinetime {
const Controllers::Battery& batteryController,
const Controllers::Ble& bleController,
Controllers::NotificationManager& notificationManager,
Controllers::Settings& settingsController);
Controllers::Settings& settingsController,
Controllers::AlarmController& alarmController);

~WatchFaceAnalog() override;

Expand All @@ -44,6 +46,7 @@ namespace Pinetime {
Utility::DirtyValue<std::chrono::time_point<std::chrono::system_clock, std::chrono::nanoseconds>> currentDateTime;
Utility::DirtyValue<bool> notificationState {false};
Utility::DirtyValue<std::chrono::time_point<std::chrono::system_clock, std::chrono::days>> currentDate;
Utility::DirtyValue<bool> alarmSet {};

lv_obj_t* minor_scales;
lv_obj_t* major_scales;
Expand Down Expand Up @@ -72,6 +75,7 @@ namespace Pinetime {
lv_obj_t* plugIcon;
lv_obj_t* notificationIcon;
lv_obj_t* bleIcon;
lv_obj_t* alarmIcon;

BatteryIcon batteryIcon;

Expand All @@ -80,6 +84,7 @@ namespace Pinetime {
const Controllers::Ble& bleController;
Controllers::NotificationManager& notificationManager;
Controllers::Settings& settingsController;
Controllers::AlarmController& alarmController;

void UpdateClock();
void SetBatteryIcon();
Expand All @@ -98,7 +103,8 @@ namespace Pinetime {
controllers.batteryController,
controllers.bleController,
controllers.notificationManager,
controllers.settingsController);
controllers.settingsController,
controllers.alarmController);
};

static bool IsAvailable(Pinetime::Controllers::FS& /*filesystem*/) {
Expand Down
22 changes: 20 additions & 2 deletions src/displayapp/screens/WatchFacePineTimeStyle.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
#include "components/settings/Settings.h"
#include "displayapp/DisplayApp.h"
#include "components/ble/SimpleWeatherService.h"
#include "components/alarm/AlarmController.h"

using namespace Pinetime::Applications::Screens;

Expand All @@ -51,7 +52,8 @@ WatchFacePineTimeStyle::WatchFacePineTimeStyle(Controllers::DateTime& dateTimeCo
Controllers::NotificationManager& notificationManager,
Controllers::Settings& settingsController,
Controllers::MotionController& motionController,
Controllers::SimpleWeatherService& weatherService)
Controllers::SimpleWeatherService& weatherService,
Controllers::AlarmController& alarmController)
: currentDateTime {{}},
batteryIcon(false),
dateTimeController {dateTimeController},
Expand All @@ -60,7 +62,8 @@ WatchFacePineTimeStyle::WatchFacePineTimeStyle(Controllers::DateTime& dateTimeCo
notificationManager {notificationManager},
settingsController {settingsController},
motionController {motionController},
weatherService {weatherService} {
weatherService {weatherService},
alarmController {alarmController} {

// Create a 200px wide background rectangle
timebar = lv_obj_create(lv_scr_act(), nullptr);
Expand Down Expand Up @@ -135,6 +138,11 @@ WatchFacePineTimeStyle::WatchFacePineTimeStyle(Controllers::DateTime& dateTimeCo
lv_obj_set_hidden(temperature, true);
}

alarmIcon = lv_label_create(lv_scr_act(), nullptr);
lv_obj_set_style_local_text_color(alarmIcon, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
lv_label_set_text_static(alarmIcon, Symbols::bell);
lv_obj_align(alarmIcon, nullptr, LV_ALIGN_IN_TOP_MID, 92, 1);

// Calendar icon
calendarOuter = lv_obj_create(lv_scr_act(), nullptr);
lv_obj_set_style_local_bg_color(calendarOuter, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
Expand Down Expand Up @@ -564,6 +572,16 @@ void WatchFacePineTimeStyle::Refresh() {
savedTick = 0;
}
}

alarmSet = alarmController.IsEnabled();
if (alarmSet.Get()) {
lv_obj_set_hidden(alarmIcon, false);
lv_obj_set_style_local_text_color(alarmIcon, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
lv_obj_realign(alarmIcon);
} else {
lv_obj_set_hidden(alarmIcon, true);
lv_obj_realign(alarmIcon);
}
}

void WatchFacePineTimeStyle::UpdateSelected(lv_obj_t* object, lv_event_t event) {
Expand Down
10 changes: 8 additions & 2 deletions src/displayapp/screens/WatchFacePineTimeStyle.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ namespace Pinetime {
class NotificationManager;
class HeartRateController;
class MotionController;
class AlarmController;
}

namespace Applications {
Expand All @@ -33,7 +34,8 @@ namespace Pinetime {
Controllers::NotificationManager& notificationManager,
Controllers::Settings& settingsController,
Controllers::MotionController& motionController,
Controllers::SimpleWeatherService& weather);
Controllers::SimpleWeatherService& weather,
Controllers::AlarmController& alarmController);
~WatchFacePineTimeStyle() override;

bool OnTouchEvent(TouchEvents event) override;
Expand Down Expand Up @@ -62,6 +64,7 @@ namespace Pinetime {
Utility::DirtyValue<uint32_t> stepCount {};
Utility::DirtyValue<bool> notificationState {};
Utility::DirtyValue<std::optional<Pinetime::Controllers::SimpleWeatherService::CurrentWeather>> currentWeather {};
Utility::DirtyValue<bool> alarmSet {};

static Pinetime::Controllers::Settings::Colors GetNext(Controllers::Settings::Colors color);
static Pinetime::Controllers::Settings::Colors GetPrevious(Controllers::Settings::Colors color);
Expand Down Expand Up @@ -102,6 +105,7 @@ namespace Pinetime {
lv_obj_t* btnSetOpts;
lv_obj_t* stepIcon;
lv_obj_t* stepValue;
lv_obj_t* alarmIcon;
lv_color_t needle_colors[1];

BatteryIcon batteryIcon;
Expand All @@ -113,6 +117,7 @@ namespace Pinetime {
Controllers::Settings& settingsController;
Controllers::MotionController& motionController;
Controllers::SimpleWeatherService& weatherService;
Controllers::AlarmController& alarmController;

void SetBatteryIcon();
void CloseMenu();
Expand All @@ -133,7 +138,8 @@ namespace Pinetime {
controllers.notificationManager,
controllers.settingsController,
controllers.motionController,
*controllers.weatherController);
*controllers.weatherController,
controllers.alarmController);
};

static bool IsAvailable(Pinetime::Controllers::FS& /*filesystem*/) {
Expand Down
35 changes: 32 additions & 3 deletions src/displayapp/screens/WatchFaceTerminal.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#include "components/ble/NotificationManager.h"
#include "components/heartrate/HeartRateController.h"
#include "components/motion/MotionController.h"
#include "components/alarm/AlarmController.h"
#include "components/settings/Settings.h"

using namespace Pinetime::Applications::Screens;
Expand All @@ -18,15 +19,17 @@ WatchFaceTerminal::WatchFaceTerminal(Controllers::DateTime& dateTimeController,
Controllers::NotificationManager& notificationManager,
Controllers::Settings& settingsController,
Controllers::HeartRateController& heartRateController,
Controllers::MotionController& motionController)
Controllers::MotionController& motionController,
Controllers::AlarmController& alarmController)
: currentDateTime {{}},
dateTimeController {dateTimeController},
batteryController {batteryController},
bleController {bleController},
notificationManager {notificationManager},
settingsController {settingsController},
heartRateController {heartRateController},
motionController {motionController} {
motionController {motionController},
alarmController {alarmController} {
batteryValue = lv_label_create(lv_scr_act(), nullptr);
lv_label_set_recolor(batteryValue, true);
lv_obj_align(batteryValue, lv_scr_act(), LV_ALIGN_IN_LEFT_MID, 0, -20);
Expand All @@ -47,7 +50,7 @@ WatchFaceTerminal::WatchFaceTerminal(Controllers::DateTime& dateTimeController,
lv_label_set_text_static(label_prompt_1, "user@watch:~ $ now");

label_prompt_2 = lv_label_create(lv_scr_act(), nullptr);
lv_obj_align(label_prompt_2, lv_scr_act(), LV_ALIGN_IN_LEFT_MID, 0, 60);
lv_obj_align(label_prompt_2, lv_scr_act(), LV_ALIGN_IN_LEFT_MID, 0, 80);
lv_label_set_text_static(label_prompt_2, "user@watch:~ $");

label_time = lv_label_create(lv_scr_act(), nullptr);
Expand All @@ -62,6 +65,10 @@ WatchFaceTerminal::WatchFaceTerminal(Controllers::DateTime& dateTimeController,
lv_label_set_recolor(stepValue, true);
lv_obj_align(stepValue, lv_scr_act(), LV_ALIGN_IN_LEFT_MID, 0, 0);

alarmTime = lv_label_create(lv_scr_act(), nullptr);
lv_label_set_recolor(alarmTime, true);
lv_obj_align(alarmTime, nullptr, LV_ALIGN_IN_LEFT_MID, 0, 60);

taskRefresh = lv_task_create(RefreshTaskCallback, LV_DISP_DEF_REFR_PERIOD, LV_TASK_PRIO_MID, this);
Refresh();
}
Expand Down Expand Up @@ -148,4 +155,26 @@ void WatchFaceTerminal::Refresh() {
if (stepCount.IsUpdated()) {
lv_label_set_text_fmt(stepValue, "[STEP]#ee3377 %lu steps#", stepCount.Get());
}

alarmSet = alarmController.IsEnabled();
if (alarmSet.Get()) {
uint8_t hour = alarmController.Hours();
uint8_t minute = alarmController.Minutes();
if (settingsController.GetClockType() == Controllers::Settings::ClockType::H12) {
char ampmChar[3] = "AM";
if (hour == 0) {
hour = 12;
} else if (hour == 12) {
ampmChar[0] = 'P';
} else if (hour > 12) {
hour = hour - 12;
ampmChar[0] = 'P';
}
lv_label_set_text_fmt(alarmTime, "[RING]#11cc55 At %02d:%02d %s#", hour, minute, ampmChar);
} else {
lv_label_set_text_fmt(alarmTime, "[RING]#11cc55 At %02d:%02d#", hour, minute);
}
} else {
lv_label_set_text_fmt(alarmTime, "[RING]#11cc55 Not Set#");
}
}
10 changes: 8 additions & 2 deletions src/displayapp/screens/WatchFaceTerminal.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ namespace Pinetime {
class NotificationManager;
class HeartRateController;
class MotionController;
class AlarmController;
}

namespace Applications {
Expand All @@ -30,7 +31,8 @@ namespace Pinetime {
Controllers::NotificationManager& notificationManager,
Controllers::Settings& settingsController,
Controllers::HeartRateController& heartRateController,
Controllers::MotionController& motionController);
Controllers::MotionController& motionController,
Controllers::AlarmController& alarmController);
~WatchFaceTerminal() override;

void Refresh() override;
Expand All @@ -46,6 +48,7 @@ namespace Pinetime {
Utility::DirtyValue<bool> heartbeatRunning {};
Utility::DirtyValue<bool> notificationState {};
Utility::DirtyValue<std::chrono::time_point<std::chrono::system_clock, std::chrono::days>> currentDate;
Utility::DirtyValue<bool> alarmSet {};

lv_obj_t* label_time;
lv_obj_t* label_date;
Expand All @@ -56,6 +59,7 @@ namespace Pinetime {
lv_obj_t* stepValue;
lv_obj_t* notificationIcon;
lv_obj_t* connectState;
lv_obj_t* alarmTime;

Controllers::DateTime& dateTimeController;
const Controllers::Battery& batteryController;
Expand All @@ -64,6 +68,7 @@ namespace Pinetime {
Controllers::Settings& settingsController;
Controllers::HeartRateController& heartRateController;
Controllers::MotionController& motionController;
Controllers::AlarmController& alarmController;

lv_task_t* taskRefresh;
};
Expand All @@ -81,7 +86,8 @@ namespace Pinetime {
controllers.notificationManager,
controllers.settingsController,
controllers.heartRateController,
controllers.motionController);
controllers.motionController,
controllers.alarmController);
};

static bool IsAvailable(Pinetime::Controllers::FS& /*filesystem*/) {
Expand Down