diff options
| author | JF002 <JF002@users.noreply.github.com> | 2021-03-20 11:27:16 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-03-20 11:27:16 +0100 |
| commit | 9e9bb2085e70a9c8b8c2e74f6027f5392e366158 (patch) | |
| tree | 0549cf49f95f6142af862063f46750ea994a8941 /src/displayapp/screens/WatchFaceAnalog.h | |
| parent | ada942535718d48eec37cca4f50d678e7201dc67 (diff) | |
| parent | 282e34dca14ddc799b9511643e50a4f9023003ed (diff) | |
Merge pull request #217 from joaquimorg/MultiFaceClock
Multi face support, analog clock, 12/24 config
Diffstat (limited to 'src/displayapp/screens/WatchFaceAnalog.h')
| -rw-r--r-- | src/displayapp/screens/WatchFaceAnalog.h | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/src/displayapp/screens/WatchFaceAnalog.h b/src/displayapp/screens/WatchFaceAnalog.h new file mode 100644 index 00000000..56b086ab --- /dev/null +++ b/src/displayapp/screens/WatchFaceAnalog.h @@ -0,0 +1,90 @@ +#pragma once + +#include <lvgl/src/lv_core/lv_obj.h> +#include <chrono> +#include <cstdint> +#include <memory> +#include "Screen.h" +#include "ScreenList.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& notificatioManager, + Controllers::Settings &settingsController); + + ~WatchFaceAnalog() override; + + bool Refresh() override; + + private: + uint8_t sHour, sMinute, sSecond; + uint8_t hour; + uint8_t minute; + uint8_t second; + + Pinetime::Controllers::DateTime::Months month; + uint8_t day; + Pinetime::Controllers::DateTime::Days dayOfWeek; + + 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<float> batteryPercentRemaining {0}; + DirtyValue<std::chrono::time_point<std::chrono::system_clock, std::chrono::nanoseconds>> currentDateTime; + DirtyValue<bool> 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& notificatioManager; + Controllers::Settings& settingsController; + + void UpdateClock(); + }; + } + } +}
\ No newline at end of file |
