#pragma once #include #include #include #include #include "displayapp/screens/Screen.h" #include "components/datetime/DateTimeController.h" #include "components/battery/BatteryController.h" #include "components/ble/BleController.h" #include "components/ble/NotificationManager.h" namespace Pinetime { namespace Controllers { class Settings; class Battery; class Ble; class NotificationManager; } namespace Applications { namespace Screens { class WatchFaceAnalog : public Screen { public: WatchFaceAnalog(DisplayApp* app, Controllers::DateTime& dateTimeController, Controllers::Battery& batteryController, Controllers::Ble& bleController, Controllers::NotificationManager& notificationManager, Controllers::Settings& settingsController); ~WatchFaceAnalog() override; void Refresh() override; private: uint8_t sHour, sMinute, sSecond; Pinetime::Controllers::DateTime::Months currentMonth = Pinetime::Controllers::DateTime::Months::Unknown; Pinetime::Controllers::DateTime::Days currentDayOfWeek = Pinetime::Controllers::DateTime::Days::Unknown; uint8_t currentDay = 0; DirtyValue batteryPercentRemaining {0}; DirtyValue isCharging {}; DirtyValue> currentDateTime; DirtyValue notificationState {false}; lv_obj_t* hour_body; lv_obj_t* hour_body_trace; lv_obj_t* minute_body; lv_obj_t* minute_body_trace; lv_obj_t* second_body; lv_point_t hour_point[2]; lv_point_t hour_point_trace[2]; lv_point_t minute_point[2]; lv_point_t minute_point_trace[2]; lv_point_t second_point[2]; lv_style_t hour_line_style; lv_style_t hour_line_style_trace; lv_style_t minute_line_style; lv_style_t minute_line_style_trace; lv_style_t second_line_style; lv_obj_t* label_date_day; lv_obj_t* batteryIcon; lv_obj_t* notificationIcon; Controllers::DateTime& dateTimeController; Controllers::Battery& batteryController; Controllers::Ble& bleController; Controllers::NotificationManager& notificationManager; Controllers::Settings& settingsController; void UpdateClock(); void SetBatteryIcon(); lv_task_t* taskRefresh; }; } } }