mirror of
https://github.com/InfiniTimeOrg/InfiniTime.git
synced 2024-10-22 15:11:51 +02:00
added option to show or hide alarm status
This commit is contained in:
parent
1162fdbf14
commit
ab901b890b
|
@ -47,7 +47,8 @@ namespace Pinetime {
|
||||||
|
|
||||||
struct WatchFaceInfineat {
|
struct WatchFaceInfineat {
|
||||||
bool showSideCover = true;
|
bool showSideCover = true;
|
||||||
int colorIndex = 0;
|
bool showAlarmStatus = true;
|
||||||
|
int colorIndex = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
Settings(Pinetime::Controllers::FS& fs);
|
Settings(Pinetime::Controllers::FS& fs);
|
||||||
|
@ -123,6 +124,17 @@ namespace Pinetime {
|
||||||
return settings.watchFaceInfineat.showSideCover;
|
return settings.watchFaceInfineat.showSideCover;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void SetInfineatShowAlarmStatus(bool show) {
|
||||||
|
if (show != settings.watchFaceInfineat.showAlarmStatus) {
|
||||||
|
settings.watchFaceInfineat.showAlarmStatus = show;
|
||||||
|
settingsChanged = true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
bool GetInfineatShowAlarmStatus() const {
|
||||||
|
return settings.watchFaceInfineat.showAlarmStatus;
|
||||||
|
};
|
||||||
|
|
||||||
void SetInfineatColorIndex(int index) {
|
void SetInfineatColorIndex(int index) {
|
||||||
if (index != settings.watchFaceInfineat.colorIndex) {
|
if (index != settings.watchFaceInfineat.colorIndex) {
|
||||||
settings.watchFaceInfineat.colorIndex = index;
|
settings.watchFaceInfineat.colorIndex = index;
|
||||||
|
|
|
@ -232,19 +232,20 @@ WatchFaceInfineat::WatchFaceInfineat(Controllers::DateTime& dateTimeController,
|
||||||
bleIcon = lv_label_create(lv_scr_act(), nullptr);
|
bleIcon = lv_label_create(lv_scr_act(), nullptr);
|
||||||
lv_obj_set_style_local_text_color(bleIcon, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, grayColor);
|
lv_obj_set_style_local_text_color(bleIcon, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, grayColor);
|
||||||
lv_label_set_text_static(bleIcon, Symbols::bluetooth);
|
lv_label_set_text_static(bleIcon, Symbols::bluetooth);
|
||||||
lv_obj_align(bleIcon, dateContainer, LV_ALIGN_OUT_TOP_MID, 0, 0);
|
lv_obj_align(bleIcon, dateContainer, LV_ALIGN_OUT_BOTTOM_MID, 0, 0);
|
||||||
|
|
||||||
|
labelAlarm = lv_label_create(lv_scr_act(), nullptr);
|
||||||
|
lv_obj_set_style_local_text_color(labelAlarm, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, grayColor);
|
||||||
|
lv_obj_set_style_local_text_font(labelAlarm, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, font_teko);
|
||||||
|
lv_obj_align(labelAlarm, dateContainer, LV_ALIGN_OUT_BOTTOM_MID, -10, 0);
|
||||||
|
lv_obj_align(labelAlarm, lv_scr_act(), LV_ALIGN_IN_BOTTOM_RIGHT, -3, 0);
|
||||||
|
lv_label_set_text_static(labelAlarm, "00:00");
|
||||||
|
|
||||||
alarmIcon = lv_label_create(lv_scr_act(), nullptr);
|
alarmIcon = lv_label_create(lv_scr_act(), nullptr);
|
||||||
lv_obj_set_style_local_text_color(alarmIcon, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, grayColor);
|
lv_obj_set_style_local_text_color(alarmIcon, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, grayColor);
|
||||||
lv_label_set_text_static(alarmIcon, Symbols::notbell);
|
lv_label_set_text_static(alarmIcon, Symbols::notbell);
|
||||||
lv_obj_align(alarmIcon, dateContainer, LV_ALIGN_OUT_BOTTOM_MID, 0, 0);
|
lv_obj_align(alarmIcon, labelAlarm, LV_ALIGN_OUT_LEFT_MID, -3, 0);
|
||||||
|
|
||||||
labelAlarm = lv_label_create(lv_scr_act(), nullptr);
|
|
||||||
lv_obj_set_style_local_text_color(labelAlarm, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, grayColor);
|
|
||||||
lv_obj_set_style_local_text_font(labelAlarm, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, font_teko);
|
|
||||||
lv_obj_align(labelAlarm, alarmIcon, LV_ALIGN_OUT_BOTTOM_MID, -10, 0);
|
|
||||||
lv_label_set_text_static(labelAlarm, "00:00");
|
|
||||||
|
|
||||||
stepValue = lv_label_create(lv_scr_act(), nullptr);
|
stepValue = lv_label_create(lv_scr_act(), nullptr);
|
||||||
lv_obj_set_style_local_text_color(stepValue, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, grayColor);
|
lv_obj_set_style_local_text_color(stepValue, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, grayColor);
|
||||||
lv_obj_set_style_local_text_font(stepValue, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, font_teko);
|
lv_obj_set_style_local_text_font(stepValue, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, font_teko);
|
||||||
|
@ -290,7 +291,7 @@ WatchFaceInfineat::WatchFaceInfineat(Controllers::DateTime& dateTimeController,
|
||||||
btnToggleCover = lv_btn_create(lv_scr_act(), nullptr);
|
btnToggleCover = lv_btn_create(lv_scr_act(), nullptr);
|
||||||
btnToggleCover->user_data = this;
|
btnToggleCover->user_data = this;
|
||||||
lv_obj_set_size(btnToggleCover, 60, 60);
|
lv_obj_set_size(btnToggleCover, 60, 60);
|
||||||
lv_obj_align(btnToggleCover, lv_scr_act(), LV_ALIGN_CENTER, 0, 80);
|
lv_obj_align(btnToggleCover, lv_scr_act(), LV_ALIGN_IN_BOTTOM_LEFT, 15,-15);
|
||||||
lv_obj_set_style_local_bg_opa(btnToggleCover, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_70);
|
lv_obj_set_style_local_bg_opa(btnToggleCover, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_70);
|
||||||
const char* labelToggle = settingsController.GetInfineatShowSideCover() ? "ON" : "OFF";
|
const char* labelToggle = settingsController.GetInfineatShowSideCover() ? "ON" : "OFF";
|
||||||
lblToggle = lv_label_create(btnToggleCover, nullptr);
|
lblToggle = lv_label_create(btnToggleCover, nullptr);
|
||||||
|
@ -298,6 +299,17 @@ WatchFaceInfineat::WatchFaceInfineat(Controllers::DateTime& dateTimeController,
|
||||||
lv_obj_set_event_cb(btnToggleCover, event_handler);
|
lv_obj_set_event_cb(btnToggleCover, event_handler);
|
||||||
lv_obj_set_hidden(btnToggleCover, true);
|
lv_obj_set_hidden(btnToggleCover, true);
|
||||||
|
|
||||||
|
btnToggleAlarm = lv_btn_create(lv_scr_act(), nullptr);
|
||||||
|
btnToggleAlarm->user_data = this;
|
||||||
|
lv_obj_set_size(btnToggleAlarm, 60, 60);
|
||||||
|
lv_obj_align(btnToggleAlarm, lv_scr_act(), LV_ALIGN_IN_BOTTOM_RIGHT, -15, -15);
|
||||||
|
lv_obj_set_style_local_bg_opa(btnToggleAlarm, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_70);
|
||||||
|
const char* labelToggleAlarm = settingsController.GetInfineatShowAlarmStatus() ? Symbols::notbell : Symbols::bell;
|
||||||
|
lblAlarm = lv_label_create(btnToggleAlarm, nullptr);
|
||||||
|
lv_label_set_text_static(lblAlarm, labelToggleAlarm);
|
||||||
|
lv_obj_set_event_cb(btnToggleAlarm, event_handler);
|
||||||
|
lv_obj_set_hidden(btnToggleAlarm, true);
|
||||||
|
|
||||||
// Button to access the settings
|
// Button to access the settings
|
||||||
btnSettings = lv_btn_create(lv_scr_act(), nullptr);
|
btnSettings = lv_btn_create(lv_scr_act(), nullptr);
|
||||||
btnSettings->user_data = this;
|
btnSettings->user_data = this;
|
||||||
|
@ -347,6 +359,7 @@ void WatchFaceInfineat::CloseMenu() {
|
||||||
lv_obj_set_hidden(btnNextColor, true);
|
lv_obj_set_hidden(btnNextColor, true);
|
||||||
lv_obj_set_hidden(btnPrevColor, true);
|
lv_obj_set_hidden(btnPrevColor, true);
|
||||||
lv_obj_set_hidden(btnToggleCover, true);
|
lv_obj_set_hidden(btnToggleCover, true);
|
||||||
|
lv_obj_set_hidden(btnToggleAlarm, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool WatchFaceInfineat::OnButtonPushed() {
|
bool WatchFaceInfineat::OnButtonPushed() {
|
||||||
|
@ -361,6 +374,7 @@ void WatchFaceInfineat::UpdateSelected(lv_obj_t* object, lv_event_t event) {
|
||||||
if (event == LV_EVENT_CLICKED) {
|
if (event == LV_EVENT_CLICKED) {
|
||||||
bool showSideCover = settingsController.GetInfineatShowSideCover();
|
bool showSideCover = settingsController.GetInfineatShowSideCover();
|
||||||
int colorIndex = settingsController.GetInfineatColorIndex();
|
int colorIndex = settingsController.GetInfineatColorIndex();
|
||||||
|
bool showAlarmStatus = settingsController.GetInfineatShowAlarmStatus();
|
||||||
|
|
||||||
if (object == btnSettings) {
|
if (object == btnSettings) {
|
||||||
lv_obj_set_hidden(btnSettings, true);
|
lv_obj_set_hidden(btnSettings, true);
|
||||||
|
@ -368,6 +382,7 @@ void WatchFaceInfineat::UpdateSelected(lv_obj_t* object, lv_event_t event) {
|
||||||
lv_obj_set_hidden(btnNextColor, !showSideCover);
|
lv_obj_set_hidden(btnNextColor, !showSideCover);
|
||||||
lv_obj_set_hidden(btnPrevColor, !showSideCover);
|
lv_obj_set_hidden(btnPrevColor, !showSideCover);
|
||||||
lv_obj_set_hidden(btnToggleCover, false);
|
lv_obj_set_hidden(btnToggleCover, false);
|
||||||
|
lv_obj_set_hidden(btnToggleAlarm, false);
|
||||||
}
|
}
|
||||||
if (object == btnClose) {
|
if (object == btnClose) {
|
||||||
CloseMenu();
|
CloseMenu();
|
||||||
|
@ -383,6 +398,15 @@ void WatchFaceInfineat::UpdateSelected(lv_obj_t* object, lv_event_t event) {
|
||||||
const char* labelToggle = showSideCover ? "OFF" : "ON";
|
const char* labelToggle = showSideCover ? "OFF" : "ON";
|
||||||
lv_label_set_text_static(lblToggle, labelToggle);
|
lv_label_set_text_static(lblToggle, labelToggle);
|
||||||
}
|
}
|
||||||
|
if (object == btnToggleAlarm) {
|
||||||
|
settingsController.SetInfineatShowAlarmStatus(!showAlarmStatus);
|
||||||
|
lv_obj_set_hidden(labelAlarm, showAlarmStatus);
|
||||||
|
lv_obj_set_hidden(alarmIcon, showAlarmStatus);
|
||||||
|
const char* labelToggleAlarm = showAlarmStatus ? Symbols::notbell : Symbols::bell;
|
||||||
|
lv_label_set_text_static(lblAlarm, labelToggleAlarm);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (object == btnNextColor) {
|
if (object == btnNextColor) {
|
||||||
colorIndex = (colorIndex + 1) % nColors;
|
colorIndex = (colorIndex + 1) % nColors;
|
||||||
settingsController.SetInfineatColorIndex(colorIndex);
|
settingsController.SetInfineatColorIndex(colorIndex);
|
||||||
|
@ -464,18 +488,23 @@ void WatchFaceInfineat::Refresh() {
|
||||||
bleRadioEnabled = bleController.IsRadioEnabled();
|
bleRadioEnabled = bleController.IsRadioEnabled();
|
||||||
if (bleState.IsUpdated()) {
|
if (bleState.IsUpdated()) {
|
||||||
lv_label_set_text_static(bleIcon, BleIcon::GetIcon(bleState.Get()));
|
lv_label_set_text_static(bleIcon, BleIcon::GetIcon(bleState.Get()));
|
||||||
lv_obj_align(bleIcon, dateContainer, LV_ALIGN_OUT_TOP_MID, 0, 3);
|
lv_obj_align(bleIcon, dateContainer, LV_ALIGN_OUT_BOTTOM_MID, 0, 3);
|
||||||
}
|
}
|
||||||
alarmState = alarmController.State()==Pinetime::Controllers::AlarmController::AlarmState::Set;
|
alarmState = alarmController.State()==Pinetime::Controllers::AlarmController::AlarmState::Set;
|
||||||
lv_label_set_text_static(alarmIcon, AlarmIcon::GetIcon(alarmState));
|
lv_label_set_text_static(alarmIcon, AlarmIcon::GetIcon(alarmState));
|
||||||
lv_obj_align(alarmIcon, dateContainer, LV_ALIGN_OUT_BOTTOM_MID, 0, 0);
|
|
||||||
if (alarmState) {
|
if (alarmState) {
|
||||||
uint8_t alarmHours = alarmController.Hours();
|
uint8_t alarmHours = alarmController.Hours();
|
||||||
uint8_t alarmMinutes = alarmController.Minutes();
|
uint8_t alarmMinutes = alarmController.Minutes();
|
||||||
lv_label_set_text_fmt(labelAlarm, "%02d:%02d", alarmHours, alarmMinutes);
|
lv_label_set_text_fmt(labelAlarm, "%02d:%02d", alarmHours, alarmMinutes);
|
||||||
|
lv_obj_align(alarmIcon, labelAlarm, LV_ALIGN_OUT_LEFT_MID, -3, 0);
|
||||||
|
lv_obj_align(labelAlarm, dateContainer, LV_ALIGN_OUT_BOTTOM_MID, -10, 0);
|
||||||
|
lv_obj_align(labelAlarm, lv_scr_act(), LV_ALIGN_IN_BOTTOM_RIGHT, -3, 0);
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
lv_label_set_text_static(labelAlarm, Symbols::none);
|
lv_label_set_text_static(labelAlarm, Symbols::none);
|
||||||
|
lv_obj_align(alarmIcon, dateContainer, LV_ALIGN_OUT_BOTTOM_MID, 0, 0);
|
||||||
|
lv_obj_align(alarmIcon, lv_scr_act(), LV_ALIGN_IN_BOTTOM_RIGHT, -3, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
stepCount = motionController.NbSteps();
|
stepCount = motionController.NbSteps();
|
||||||
|
|
|
@ -81,10 +81,12 @@ namespace Pinetime {
|
||||||
lv_obj_t* btnClose;
|
lv_obj_t* btnClose;
|
||||||
lv_obj_t* btnNextColor;
|
lv_obj_t* btnNextColor;
|
||||||
lv_obj_t* btnToggleCover;
|
lv_obj_t* btnToggleCover;
|
||||||
|
lv_obj_t* btnToggleAlarm;
|
||||||
lv_obj_t* btnPrevColor;
|
lv_obj_t* btnPrevColor;
|
||||||
lv_obj_t* btnSettings;
|
lv_obj_t* btnSettings;
|
||||||
lv_obj_t* labelBtnSettings;
|
lv_obj_t* labelBtnSettings;
|
||||||
lv_obj_t* lblToggle;
|
lv_obj_t* lblToggle;
|
||||||
|
lv_obj_t* lblAlarm;
|
||||||
|
|
||||||
lv_obj_t* lines[nLines];
|
lv_obj_t* lines[nLines];
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue