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
6 changes: 6 additions & 0 deletions src/displayapp/DisplayApp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -651,6 +651,12 @@ void DisplayApp::LoadScreen(Apps app, DisplayApp::FullRefreshDirections directio
case Apps::FlashLight:
currentScreen = std::make_unique<Screens::FlashLight>(*systemTask, brightnessController);
break;
case Apps::Weather:
currentScreen = std::make_unique<Screens::Weather>(settingsController, *controllers.weatherController);
break;
case Apps::Steps:
currentScreen = std::make_unique<Screens::Steps>(motionController, settingsController);
break;
default: {
const auto* d = std::ranges::find_if(userApps, [app](const AppDescription& appDescription) {
return appDescription.app == app;
Expand Down
32 changes: 30 additions & 2 deletions src/displayapp/screens/WatchFaceDigital.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,15 @@

using namespace Pinetime::Applications::Screens;

WatchFaceDigital::WatchFaceDigital(Controllers::DateTime& dateTimeController,
namespace {
void ButtonEventHandler(lv_obj_t* obj, lv_event_t event) {
auto* screen = static_cast<WatchFaceDigital*>(obj->user_data);
screen->OnButtonEvent(obj, event);
}
}

WatchFaceDigital::WatchFaceDigital(DisplayApp* app,
Controllers::DateTime& dateTimeController,
const Controllers::Battery& batteryController,
const Controllers::Ble& bleController,
const Controllers::AlarmController& alarmController,
Expand All @@ -25,7 +33,8 @@ WatchFaceDigital::WatchFaceDigital(Controllers::DateTime& dateTimeController,
Controllers::HeartRateController& heartRateController,
Controllers::MotionController& motionController,
Controllers::SimpleWeatherService& weatherService)
: currentDateTime {{}},
: app {app},
currentDateTime {{}},
dateTimeController {dateTimeController},
notificationManager {notificationManager},
settingsController {settingsController},
Expand All @@ -42,6 +51,10 @@ WatchFaceDigital::WatchFaceDigital(Controllers::DateTime& dateTimeController,
lv_obj_align(notificationIcon, nullptr, LV_ALIGN_IN_TOP_LEFT, 0, 0);

weatherIcon = lv_label_create(lv_scr_act(), nullptr);
weatherIcon->user_data = this;
lv_obj_set_click(weatherIcon, true);
lv_obj_set_ext_click_area(weatherIcon, 25, 25, 25, 25);
lv_obj_set_event_cb(weatherIcon, ButtonEventHandler);
lv_obj_set_style_local_text_color(weatherIcon, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x999999));
lv_obj_set_style_local_text_font(weatherIcon, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &fontawesome_weathericons);
lv_label_set_text(weatherIcon, "");
Expand Down Expand Up @@ -82,6 +95,10 @@ WatchFaceDigital::WatchFaceDigital(Controllers::DateTime& dateTimeController,
lv_obj_align(stepValue, lv_scr_act(), LV_ALIGN_IN_BOTTOM_RIGHT, 0, 0);

stepIcon = lv_label_create(lv_scr_act(), nullptr);
stepIcon->user_data = this;
lv_obj_set_click(stepIcon, true);
lv_obj_set_ext_click_area(stepIcon, 0, 25, 25, 0);
lv_obj_set_event_cb(stepIcon, ButtonEventHandler);
lv_obj_set_style_local_text_color(stepIcon, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x00FFE7));
lv_label_set_text_static(stepIcon, Symbols::shoe);
lv_obj_align(stepIcon, stepValue, LV_ALIGN_OUT_LEFT_MID, -5, 0);
Expand Down Expand Up @@ -192,3 +209,14 @@ void WatchFaceDigital::Refresh() {
lv_obj_realign(weatherIcon);
}
}

void WatchFaceDigital::OnButtonEvent(lv_obj_t* object, lv_event_t event) {
if (event != LV_EVENT_CLICKED) {
return;
}
if (object == stepIcon) {
app->StartApp(Apps::Steps, DisplayApp::FullRefreshDirections::Up);
} else if (object == weatherIcon) {
app->StartApp(Apps::Weather, DisplayApp::FullRefreshDirections::Up);
}
}
9 changes: 7 additions & 2 deletions src/displayapp/screens/WatchFaceDigital.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ namespace Pinetime {

class WatchFaceDigital : public Screen {
public:
WatchFaceDigital(Controllers::DateTime& dateTimeController,
WatchFaceDigital(DisplayApp* app,
Controllers::DateTime& dateTimeController,
const Controllers::Battery& batteryController,
const Controllers::Ble& bleController,
const Controllers::AlarmController& alarmController,
Expand All @@ -39,9 +40,12 @@ namespace Pinetime {
Controllers::SimpleWeatherService& weather);
~WatchFaceDigital() override;

void OnButtonEvent(lv_obj_t* object, lv_event_t event);

void Refresh() override;

private:
DisplayApp* app;
uint8_t displayedHour = -1;
uint8_t displayedMinute = -1;

Expand Down Expand Up @@ -83,7 +87,8 @@ namespace Pinetime {
static constexpr const char* name = "Digital";

static Screens::Screen* Create(AppControllers& controllers) {
return new Screens::WatchFaceDigital(controllers.dateTimeController,
return new Screens::WatchFaceDigital(controllers.displayApp,
controllers.dateTimeController,
controllers.batteryController,
controllers.bleController,
controllers.alarmController,
Expand Down
Loading