ref: e5b73212f6addcfdb5e306df63d7135e543c4f8d
src/displayapp/screens/WatchFacePineTimeStyle.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 |
#pragma once #include <lvgl/src/lv_core/lv_obj.h> #include <chrono> #include <cstdint> #include <memory> #include <displayapp/Controllers.h> #include "displayapp/screens/Screen.h" #include "displayapp/screens/BatteryIcon.h" #include "displayapp/Colors.h" #include "components/datetime/DateTimeController.h" #include "components/ble/SimpleWeatherService.h" #include "components/ble/BleController.h" #include "utility/DirtyValue.h" namespace Pinetime { namespace Controllers { class Settings; class Battery; class Ble; class NotificationManager; class HeartRateController; class MotionController; } namespace Applications { namespace Screens { class WatchFacePineTimeStyle : public Screen { public: WatchFacePineTimeStyle(Controllers::DateTime& dateTimeController, const Controllers::Battery& batteryController, const Controllers::Ble& bleController, Controllers::NotificationManager& notificationManager, Controllers::Settings& settingsController, Controllers::MotionController& motionController, Controllers::SimpleWeatherService& weather); ~WatchFacePineTimeStyle() override; bool OnTouchEvent(TouchEvents event) override; bool OnButtonPushed() override; void Refresh() override; void UpdateSelected(lv_obj_t* object, lv_event_t event); private: uint8_t displayedHour = -1; uint8_t displayedMinute = -1; uint8_t displayedSecond = -1; uint16_t currentYear = 1970; Controllers::DateTime::Months currentMonth = Pinetime::Controllers::DateTime::Months::Unknown; Controllers::DateTime::Days currentDayOfWeek = Pinetime::Controllers::DateTime::Days::Unknown; uint8_t currentDay = 0; uint32_t savedTick = 0; Utility::DirtyValue<uint8_t> batteryPercentRemaining {}; Utility::DirtyValue<bool> isCharging {}; Utility::DirtyValue<bool> bleState {}; Utility::DirtyValue<bool> bleRadioEnabled {}; Utility::DirtyValue<std::chrono::time_point<std::chrono::system_clock, std::chrono::nanoseconds>> currentDateTime {}; Utility::DirtyValue<uint32_t> stepCount {}; Utility::DirtyValue<bool> notificationState {}; Utility::DirtyValue<std::optional<Pinetime::Controllers::SimpleWeatherService::CurrentWeather>> currentWeather {}; static Pinetime::Controllers::Settings::Colors GetNext(Controllers::Settings::Colors color); static Pinetime::Controllers::Settings::Colors GetPrevious(Controllers::Settings::Colors color); lv_obj_t* btnNextTime; lv_obj_t* btnPrevTime; lv_obj_t* btnNextBar; lv_obj_t* btnPrevBar; lv_obj_t* btnNextBG; lv_obj_t* btnPrevBG; lv_obj_t* btnReset; lv_obj_t* btnRandom; lv_obj_t* btnClose; lv_obj_t* btnSteps; lv_obj_t* btnWeather; lv_obj_t* timebar; lv_obj_t* sidebar; lv_obj_t* timeDD1; lv_obj_t* timeDD2; lv_obj_t* timeDD3; lv_obj_t* timeAMPM; lv_obj_t* dateDayOfWeek; lv_obj_t* dateDay; lv_obj_t* dateMonth; lv_obj_t* weatherIcon; lv_obj_t* temperature; lv_obj_t* plugIcon; lv_obj_t* bleIcon; lv_obj_t* calendarOuter; lv_obj_t* calendarInner; lv_obj_t* calendarBar1; lv_obj_t* calendarBar2; lv_obj_t* calendarCrossBar1; lv_obj_t* calendarCrossBar2; lv_obj_t* notificationIcon; lv_obj_t* stepGauge; lv_obj_t* btnSetColor; lv_obj_t* btnSetOpts; lv_obj_t* stepIcon; lv_obj_t* stepValue; lv_color_t needle_colors[1]; BatteryIcon batteryIcon; Controllers::DateTime& dateTimeController; const Controllers::Battery& batteryController; const Controllers::Ble& bleController; Controllers::NotificationManager& notificationManager; Controllers::Settings& settingsController; Controllers::MotionController& motionController; Controllers::SimpleWeatherService& weatherService; void SetBatteryIcon(); void CloseMenu(); lv_task_t* taskRefresh; }; } template <> struct WatchFaceTraits<WatchFace::PineTimeStyle> { static constexpr WatchFace watchFace = WatchFace::PineTimeStyle; static constexpr const char* name = "PineTimeStyle"; static Screens::Screen* Create(AppControllers& controllers) { return new Screens::WatchFacePineTimeStyle(controllers.dateTimeController, controllers.batteryController, controllers.bleController, controllers.notificationManager, controllers.settingsController, controllers.motionController, *controllers.weatherController); }; static bool IsAvailable(Pinetime::Controllers::FS& /*filesystem*/) { return true; } }; } } |