diff options
| author | panky-codes <pankaj.sarathy1992@gmail.com> | 2021-03-20 21:45:29 (GMT) |
|---|---|---|
| committer | panky-codes <pankaj.sarathy1992@gmail.com> | 2021-03-20 21:45:29 (GMT) |
| commit | 534565088033221d29e968acf7267145ff10203b (patch) | |
| tree | c93ae7c7aa7995204f56b979ff6524feba83763d /src/displayapp/screens/Clock.h | |
| parent | 754ac233040af805ffa2e15b24539d5d02a876e5 (diff) | |
| parent | a3ff2e46ca9e663af864a2bd04b9afa3efbddfb8 (diff) | |
Merged upstream
Diffstat (limited to 'src/displayapp/screens/Clock.h')
| -rw-r--r-- | src/displayapp/screens/Clock.h | 66 |
1 files changed, 17 insertions, 49 deletions
diff --git a/src/displayapp/screens/Clock.h b/src/displayapp/screens/Clock.h index 5e9cfea..964ccbf 100644 --- a/src/displayapp/screens/Clock.h +++ b/src/displayapp/screens/Clock.h @@ -5,38 +5,22 @@ #include <cstdint> #include <memory> #include "Screen.h" +#include "ScreenList.h" #include "components/datetime/DateTimeController.h" namespace Pinetime { + namespace Drivers { + class BMA421; + } namespace Controllers { + class Settings; class Battery; class Ble; class NotificationManager; - class HeartRateController; } namespace Applications { namespace Screens { - - template <class T> - class DirtyValue { - public: - DirtyValue() = default; // Use NSDMI - explicit DirtyValue(T const& v):value{v}{} // Use MIL and const-lvalue-ref - bool IsUpdated() const { return isUpdated; } - T const& Get() { this->isUpdated = false; return value; } // never expose a non-const lvalue-ref - DirtyValue& operator=(const T& other) { - if (this->value != other) { - this->value = other; - this->isUpdated = true; - } - return *this; - } - private: - T value{}; // NSDMI - default initialise type - bool isUpdated{true}; // NSDMI - use brace initilisation - }; - class Clock : public Screen { public: Clock(DisplayApp* app, @@ -44,48 +28,32 @@ namespace Pinetime { Controllers::Battery& batteryController, Controllers::Ble& bleController, Controllers::NotificationManager& notificatioManager, + Controllers::Settings &settingsController, Controllers::HeartRateController& heartRateController); ~Clock() override; bool Refresh() override; bool OnButtonPushed() override; + bool OnTouchEvent(TouchEvents event) override; - void OnObjectEvent(lv_obj_t *pObj, lv_event_t i); private: - char displayedChar[5]; - - uint16_t currentYear = 1970; - 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<int> batteryPercentRemaining {}; - DirtyValue<bool> bleState {}; - DirtyValue<std::chrono::time_point<std::chrono::system_clock, std::chrono::nanoseconds>> currentDateTime{}; - DirtyValue<uint32_t> stepCount {}; - DirtyValue<uint8_t> heartbeat {}; - DirtyValue<bool> heartbeatRunning {}; - DirtyValue<bool> notificationState {}; - - lv_obj_t* label_time; - lv_obj_t* label_date; - lv_obj_t* backgroundLabel; - lv_obj_t* batteryIcon; - lv_obj_t* bleIcon; - lv_obj_t* batteryPlug; - lv_obj_t* heartbeatIcon; - lv_obj_t* heartbeatValue; - lv_obj_t* heartbeatBpm; - lv_obj_t* stepIcon; - lv_obj_t* stepValue; - lv_obj_t* notificationIcon; Controllers::DateTime& dateTimeController; Controllers::Battery& batteryController; Controllers::Ble& bleController; Controllers::NotificationManager& notificatioManager; + Controllers::Settings& settingsController; Controllers::HeartRateController& heartRateController; + + ScreenList<2> screens; + std::unique_ptr<Screen> WatchFaceDigitalScreen(); + std::unique_ptr<Screen> WatchFaceAnalogScreen(); + + // Examples for more watch faces + //std::unique_ptr<Screen> WatchFaceMinimalScreen(); + //std::unique_ptr<Screen> WatchFaceCustomScreen(); + bool running = true; }; |
