aboutsummaryrefslogtreecommitdiffstats
path: root/src/DisplayApp/Screens
diff options
context:
space:
mode:
Diffstat (limited to 'src/DisplayApp/Screens')
-rw-r--r--src/DisplayApp/Screens/BatteryIcon.cpp21
-rw-r--r--src/DisplayApp/Screens/BatteryIcon.h16
-rw-r--r--src/DisplayApp/Screens/BleIcon.cpp8
-rw-r--r--src/DisplayApp/Screens/BleIcon.h12
-rw-r--r--src/DisplayApp/Screens/Brightness.cpp92
-rw-r--r--src/DisplayApp/Screens/Brightness.h33
-rw-r--r--src/DisplayApp/Screens/Clock.cpp228
-rw-r--r--src/DisplayApp/Screens/Clock.h88
-rw-r--r--src/DisplayApp/Screens/FirmwareUpdate.cpp82
-rw-r--r--src/DisplayApp/Screens/FirmwareUpdate.h41
-rw-r--r--src/DisplayApp/Screens/Gauge.cpp58
-rw-r--r--src/DisplayApp/Screens/Gauge.h32
-rw-r--r--src/DisplayApp/Screens/Label.cpp28
-rw-r--r--src/DisplayApp/Screens/Label.h24
-rw-r--r--src/DisplayApp/Screens/Message.cpp81
-rw-r--r--src/DisplayApp/Screens/Message.h31
-rw-r--r--src/DisplayApp/Screens/Meter.cpp47
-rw-r--r--src/DisplayApp/Screens/Meter.h32
-rw-r--r--src/DisplayApp/Screens/Modal.cpp81
-rw-r--r--src/DisplayApp/Screens/Modal.h39
-rw-r--r--src/DisplayApp/Screens/Music.cpp125
-rw-r--r--src/DisplayApp/Screens/Music.h49
-rw-r--r--src/DisplayApp/Screens/Screen.cpp2
-rw-r--r--src/DisplayApp/Screens/Screen.h27
-rw-r--r--src/DisplayApp/Screens/ScreenList.cpp139
-rw-r--r--src/DisplayApp/Screens/ScreenList.h42
-rw-r--r--src/DisplayApp/Screens/Symbols.h24
-rw-r--r--src/DisplayApp/Screens/Tab.cpp67
-rw-r--r--src/DisplayApp/Screens/Tab.h23
-rw-r--r--src/DisplayApp/Screens/Tile.cpp101
-rw-r--r--src/DisplayApp/Screens/Tile.h60
31 files changed, 0 insertions, 1733 deletions
diff --git a/src/DisplayApp/Screens/BatteryIcon.cpp b/src/DisplayApp/Screens/BatteryIcon.cpp
deleted file mode 100644
index 26939d18..00000000
--- a/src/DisplayApp/Screens/BatteryIcon.cpp
+++ /dev/null
@@ -1,21 +0,0 @@
-#include "BatteryIcon.h"
-#include "Symbols.h"
-using namespace Pinetime::Applications::Screens;
-
-const char* BatteryIcon::GetBatteryIcon(float batteryPercent) {
- if(batteryPercent > 90.0f) return Symbols::batteryFull;
- if(batteryPercent > 75.0f) return Symbols::batteryThreeQuarter;
- if(batteryPercent > 50.0f) return Symbols::batteryHalf;
- if(batteryPercent > 25.0f) return Symbols::batteryOneQuarter;
- return Symbols::batteryEmpty;
-}
-
-const char* BatteryIcon::GetUnknownIcon() {
- return Symbols::batteryEmpty;
-}
-
-const char *BatteryIcon::GetPlugIcon(bool isCharging) {
- if(isCharging)
- return Symbols::plug;
- else return "";
-}
diff --git a/src/DisplayApp/Screens/BatteryIcon.h b/src/DisplayApp/Screens/BatteryIcon.h
deleted file mode 100644
index 58f04a87..00000000
--- a/src/DisplayApp/Screens/BatteryIcon.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#pragma once
-
-#include <libs/lvgl/src/lv_draw/lv_img_decoder.h>
-
-namespace Pinetime {
- namespace Applications {
- namespace Screens {
- class BatteryIcon {
- public:
- static const char* GetUnknownIcon();
- static const char* GetBatteryIcon(float batteryPercent);
- static const char* GetPlugIcon(bool isCharging);
- };
- }
- }
-} \ No newline at end of file
diff --git a/src/DisplayApp/Screens/BleIcon.cpp b/src/DisplayApp/Screens/BleIcon.cpp
deleted file mode 100644
index 1bbbd053..00000000
--- a/src/DisplayApp/Screens/BleIcon.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "BleIcon.h"
-#include "Symbols.h"
-using namespace Pinetime::Applications::Screens;
-
-const char* BleIcon::GetIcon(bool isConnected) {
- if(isConnected) return Symbols::bluetooth;
- else return "";
-} \ No newline at end of file
diff --git a/src/DisplayApp/Screens/BleIcon.h b/src/DisplayApp/Screens/BleIcon.h
deleted file mode 100644
index c1398d2a..00000000
--- a/src/DisplayApp/Screens/BleIcon.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#pragma once
-
-namespace Pinetime {
- namespace Applications {
- namespace Screens {
- class BleIcon {
- public:
- static const char* GetIcon(bool isConnected);
- };
- }
- }
-} \ No newline at end of file
diff --git a/src/DisplayApp/Screens/Brightness.cpp b/src/DisplayApp/Screens/Brightness.cpp
deleted file mode 100644
index 9e3416c0..00000000
--- a/src/DisplayApp/Screens/Brightness.cpp
+++ /dev/null
@@ -1,92 +0,0 @@
-#include <libs/lvgl/lvgl.h>
-#include "Brightness.h"
-
-using namespace Pinetime::Applications::Screens;
-
-void slider_event_cb(lv_obj_t * slider, lv_event_t event) {
- if(event == LV_EVENT_VALUE_CHANGED) {
- auto* brightnessSlider = static_cast<Brightness*>(slider->user_data);
- brightnessSlider->OnValueChanged();
- }
-}
-
-Brightness::Brightness(Pinetime::Applications::DisplayApp *app, Controllers::BrightnessController& brightness) : Screen(app), brightness{brightness} {
- slider = lv_slider_create(lv_scr_act(), NULL);
- lv_obj_set_user_data(slider, this);
- lv_obj_set_width(slider, LV_DPI * 2);
- lv_obj_align(slider, NULL, LV_ALIGN_CENTER, 0, 0);
- lv_obj_set_event_cb(slider, slider_event_cb);
- lv_slider_set_range(slider, 0, 2);
- lv_slider_set_value(slider, LevelToInt(brightness.Level()), LV_ANIM_OFF);
-
- slider_label = lv_label_create(lv_scr_act(), NULL);
- lv_label_set_text(slider_label, LevelToString(brightness.Level()));
- lv_obj_set_auto_realign(slider_label, true);
- lv_obj_align(slider_label, slider, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);
-}
-
-Brightness::~Brightness() {
- lv_obj_clean(lv_scr_act());
-}
-
-bool Brightness::Refresh() {
- return running;
-}
-
-bool Brightness::OnButtonPushed() {
- running = false;
- return true;
-}
-
-const char *Brightness::LevelToString(Pinetime::Controllers::BrightnessController::Levels level) {
- switch(level) {
- case Pinetime::Controllers::BrightnessController::Levels::Off: return "Off";
- case Pinetime::Controllers::BrightnessController::Levels::Low: return "Low";
- case Pinetime::Controllers::BrightnessController::Levels::Medium: return "Medium";
- case Pinetime::Controllers::BrightnessController::Levels::High: return "High";
- default : return "???";
- }
-}
-
-void Brightness::OnValueChanged() {
- SetValue(lv_slider_get_value(slider));
-}
-
-void Brightness::SetValue(uint8_t value) {
- switch(value) {
- case 0: brightness.Set(Controllers::BrightnessController::Levels::Low); break;
- case 1: brightness.Set(Controllers::BrightnessController::Levels::Medium); break;
- case 2: brightness.Set(Controllers::BrightnessController::Levels::High); break;
- }
- lv_label_set_text(slider_label, LevelToString(brightness.Level()));
-}
-
-uint8_t Brightness::LevelToInt(Pinetime::Controllers::BrightnessController::Levels level) {
- switch(level) {
- case Pinetime::Controllers::BrightnessController::Levels::Off: return 0;
- case Pinetime::Controllers::BrightnessController::Levels::Low: return 0;
- case Pinetime::Controllers::BrightnessController::Levels::Medium: return 1;
- case Pinetime::Controllers::BrightnessController::Levels::High: return 2;
- default : return 0;
- }
-}
-
-bool Brightness::OnTouchEvent(Pinetime::Applications::TouchEvents event) {
- switch(event) {
- case TouchEvents::SwipeLeft:
- brightness.Lower();
- SetValue();
- return true;
- case TouchEvents::SwipeRight:
- brightness.Higher();
- SetValue();
- return true;
- default:
- return false;
- }
-}
-
-void Brightness::SetValue() {
- lv_slider_set_value(slider, LevelToInt(brightness.Level()), LV_ANIM_OFF);
- lv_label_set_text(slider_label, LevelToString(brightness.Level()));
-}
diff --git a/src/DisplayApp/Screens/Brightness.h b/src/DisplayApp/Screens/Brightness.h
deleted file mode 100644
index 37cbcd7e..00000000
--- a/src/DisplayApp/Screens/Brightness.h
+++ /dev/null
@@ -1,33 +0,0 @@
-#pragma once
-
-#include <libs/lvgl/src/lv_core/lv_obj.h>
-#include <Components/Brightness/BrightnessController.h>
-#include "Screen.h"
-
-namespace Pinetime {
- namespace Applications {
- namespace Screens {
- class Brightness : public Screen {
- public:
- Brightness(DisplayApp* app, Controllers::BrightnessController& brightness);
- ~Brightness() override;
- bool Refresh() override;
- bool OnButtonPushed() override;
- bool OnTouchEvent(TouchEvents event) override;
-
- void OnValueChanged();
- private:
- bool running = true;
- Controllers::BrightnessController& brightness;
-
- lv_obj_t * slider_label;
- lv_obj_t * slider;
-
- const char* LevelToString(Controllers::BrightnessController::Levels level);
- uint8_t LevelToInt(Controllers::BrightnessController::Levels level);
- void SetValue(uint8_t value);
- void SetValue();
- };
- }
- }
-} \ No newline at end of file
diff --git a/src/DisplayApp/Screens/Clock.cpp b/src/DisplayApp/Screens/Clock.cpp
deleted file mode 100644
index fc6441e8..00000000
--- a/src/DisplayApp/Screens/Clock.cpp
+++ /dev/null
@@ -1,228 +0,0 @@
-#include <cstdio>
-#include <libs/date/includes/date/date.h>
-#include <Components/DateTime/DateTimeController.h>
-#include <libs/lvgl/lvgl.h>
-#include "Clock.h"
-#include "../DisplayApp.h"
-#include "BatteryIcon.h"
-#include "BleIcon.h"
-#include "Symbols.h"
-using namespace Pinetime::Applications::Screens;
-extern lv_font_t jetbrains_mono_extrabold_compressed;
-extern lv_font_t jetbrains_mono_bold_20;
-extern lv_style_t* LabelBigStyle;
-
-static void event_handler(lv_obj_t * obj, lv_event_t event) {
- Clock* screen = static_cast<Clock *>(obj->user_data);
- screen->OnObjectEvent(obj, event);
-}
-
-Clock::Clock(DisplayApp* app,
- Controllers::DateTime& dateTimeController,
- Controllers::Battery& batteryController,
- Controllers::Ble& bleController) : Screen(app), currentDateTime{{}},
- dateTimeController{dateTimeController}, batteryController{batteryController}, bleController{bleController} {
- displayedChar[0] = 0;
- displayedChar[1] = 0;
- displayedChar[2] = 0;
- displayedChar[3] = 0;
- displayedChar[4] = 0;
-
- batteryIcon = lv_label_create(lv_scr_act(), NULL);
- lv_label_set_text(batteryIcon, Symbols::batteryFull);
- lv_obj_align(batteryIcon, lv_scr_act(), LV_ALIGN_IN_TOP_RIGHT, -5, 2);
-
- batteryPlug = lv_label_create(lv_scr_act(), NULL);
- lv_label_set_text(batteryPlug, Symbols::plug);
- lv_obj_align(batteryPlug, batteryIcon, LV_ALIGN_OUT_LEFT_MID, -5, 0);
-
- bleIcon = lv_label_create(lv_scr_act(), NULL);
- lv_label_set_text(bleIcon, Symbols::bluetooth);
- lv_obj_align(bleIcon, batteryPlug, LV_ALIGN_OUT_LEFT_MID, -5, 0);
-
-
- label_date = lv_label_create(lv_scr_act(), NULL);
-
- lv_obj_align(label_date, lv_scr_act(), LV_ALIGN_IN_LEFT_MID, 0, 60);
-
- label_time = lv_label_create(lv_scr_act(), NULL);
- lv_label_set_style(label_time, LV_LABEL_STYLE_MAIN, LabelBigStyle);
- lv_obj_align(label_time, lv_scr_act(), LV_ALIGN_IN_LEFT_MID, 0, 0);
-
- backgroundLabel = lv_label_create(lv_scr_act(), NULL);
- backgroundLabel->user_data = this;
- lv_obj_set_click(backgroundLabel, true);
- lv_obj_set_event_cb(backgroundLabel, event_handler);
- lv_label_set_long_mode(backgroundLabel, LV_LABEL_LONG_CROP);
- lv_obj_set_size(backgroundLabel, 240, 240);
- lv_obj_set_pos(backgroundLabel, 0, 0);
- lv_label_set_text(backgroundLabel, "");
-
-
- heartbeatIcon = lv_label_create(lv_scr_act(), NULL);
- lv_label_set_text(heartbeatIcon, Symbols::heartBeat);
- lv_obj_align(heartbeatIcon, lv_scr_act(), LV_ALIGN_IN_BOTTOM_LEFT, 5, -2);
-
- heartbeatValue = lv_label_create(lv_scr_act(), NULL);
- lv_label_set_text(heartbeatValue, "0");
- lv_obj_align(heartbeatValue, heartbeatIcon, LV_ALIGN_OUT_RIGHT_MID, 5, 0);
-
- heartbeatBpm = lv_label_create(lv_scr_act(), NULL);
- lv_label_set_text(heartbeatBpm, "BPM");
- lv_obj_align(heartbeatBpm, heartbeatValue, LV_ALIGN_OUT_RIGHT_MID, 5, 0);
-
- stepValue = lv_label_create(lv_scr_act(), NULL);
- lv_label_set_text(stepValue, "0");
- lv_obj_align(stepValue, lv_scr_act(), LV_ALIGN_IN_BOTTOM_RIGHT, -5, -2);
-
- stepIcon = lv_label_create(lv_scr_act(), NULL);
- lv_label_set_text(stepIcon, Symbols::shoe);
- lv_obj_align(stepIcon, stepValue, LV_ALIGN_OUT_LEFT_MID, -5, 0);
-}
-
-Clock::~Clock() {
- lv_obj_clean(lv_scr_act());
-}
-
-bool Clock::Refresh() {
- batteryPercentRemaining = batteryController.PercentRemaining();
- if (batteryPercentRemaining.IsUpdated()) {
- auto batteryPercent = batteryPercentRemaining.Get();
- lv_label_set_text(batteryIcon, BatteryIcon::GetBatteryIcon(batteryPercent));
- auto isCharging = batteryController.IsCharging() || batteryController.IsPowerPresent();
- lv_label_set_text(batteryPlug, BatteryIcon::GetPlugIcon(isCharging));
- }
-
- bleState = bleController.IsConnected();
- if (bleState.IsUpdated()) {
- if(bleState.Get() == true) {
- lv_label_set_text(bleIcon, BleIcon::GetIcon(true));
- } else {
- lv_label_set_text(bleIcon, BleIcon::GetIcon(false));
- }
- }
- lv_obj_align(batteryIcon, lv_scr_act(), LV_ALIGN_IN_TOP_RIGHT, -5, 5);
- lv_obj_align(batteryPlug, batteryIcon, LV_ALIGN_OUT_LEFT_MID, -5, 0);
- lv_obj_align(bleIcon, batteryPlug, LV_ALIGN_OUT_LEFT_MID, -5, 0);
-
- currentDateTime = dateTimeController.CurrentDateTime();
-
- if(currentDateTime.IsUpdated()) {
- auto newDateTime = currentDateTime.Get();
-
- auto dp = date::floor<date::days>(newDateTime);
- auto time = date::make_time(newDateTime-dp);
- auto yearMonthDay = date::year_month_day(dp);
-
- auto year = (int)yearMonthDay.year();
- auto month = static_cast<Pinetime::Controllers::DateTime::Months>((unsigned)yearMonthDay.month());
- auto day = (unsigned)yearMonthDay.day();
- auto dayOfWeek = static_cast<Pinetime::Controllers::DateTime::Days>(date::weekday(yearMonthDay).iso_encoding());
-
- auto hour = time.hours().count();
- auto minute = time.minutes().count();
- auto second = time.seconds().count();
-
- char minutesChar[3];
- sprintf(minutesChar, "%02d", minute);
-
- char hoursChar[3];
- sprintf(hoursChar, "%02d", hour);
-
- char timeStr[6];
- sprintf(timeStr, "%c%c:%c%c", hoursChar[0],hoursChar[1],minutesChar[0], minutesChar[1]);
-
- if(hoursChar[0] != displayedChar[0] || hoursChar[1] != displayedChar[1] || minutesChar[0] != displayedChar[2] || minutesChar[1] != displayedChar[3]) {
- displayedChar[0] = hoursChar[0];
- displayedChar[1] = hoursChar[1];
- displayedChar[2] = minutesChar[0];
- displayedChar[3] = minutesChar[1];
-
- lv_label_set_text(label_time, timeStr);
- }
-
- if ((year != currentYear) || (month != currentMonth) || (dayOfWeek != currentDayOfWeek) || (day != currentDay)) {
- char dateStr[22];
- sprintf(dateStr, "%s %d %s %d", DayOfWeekToString(dayOfWeek), day, MonthToString(month), year);
- lv_label_set_text(label_date, dateStr);
-
-
- currentYear = year;
- currentMonth = month;
- currentDayOfWeek = dayOfWeek;
- currentDay = day;
- }
- }
-
- // TODO heartbeat = heartBeatController.GetValue();
- if(heartbeat.IsUpdated()) {
- char heartbeatBuffer[4];
- sprintf(heartbeatBuffer, "%d", heartbeat.Get());
- lv_label_set_text(heartbeatValue, heartbeatBuffer);
- lv_obj_align(heartbeatIcon, lv_scr_act(), LV_ALIGN_IN_BOTTOM_LEFT, 5, -2);
- lv_obj_align(heartbeatValue, heartbeatIcon, LV_ALIGN_OUT_RIGHT_MID, 5, 0);
- lv_obj_align(heartbeatBpm, heartbeatValue, LV_ALIGN_OUT_RIGHT_MID, 5, 0);
- }
-
- // TODO stepCount = stepController.GetValue();
- if(stepCount.IsUpdated()) {
- char stepBuffer[5];
- sprintf(stepBuffer, "%lu", stepCount.Get());
- lv_label_set_text(stepValue, stepBuffer);
- lv_obj_align(stepValue, lv_scr_act(), LV_ALIGN_IN_BOTTOM_RIGHT, -5, -2);
- lv_obj_align(stepIcon, stepValue, LV_ALIGN_OUT_LEFT_MID, -5, 0);
- }
-
- return running;
-}
-
-const char *Clock::MonthToString(Pinetime::Controllers::DateTime::Months month) {
- return Clock::MonthsString[static_cast<uint8_t>(month)];
-}
-
-const char *Clock::DayOfWeekToString(Pinetime::Controllers::DateTime::Days dayOfWeek) {
- return Clock::DaysString[static_cast<uint8_t>(dayOfWeek)];
-}
-
-char const *Clock::DaysString[] = {
- "",
- "MONDAY",
- "TUESDAY",
- "WEDNESDAY",
- "THURSDAY",
- "FRIDAY",
- "SATURDAY",
- "SUNDAY"
-};
-
-char const *Clock::MonthsString[] = {
- "",
- "JAN",
- "FEB",
- "MAR",
- "APR",
- "MAY",
- "JUN",
- "JUL",
- "AUG",
- "SEP",
- "OCT",
- "NOV",
- "DEC"
-};
-
-void Clock::OnObjectEvent(lv_obj_t *obj, lv_event_t event) {
- if(obj == backgroundLabel) {
- if (event == LV_EVENT_CLICKED) {
-
- running = false;
- }
- }
-}
-
-bool Clock::OnButtonPushed() {
- running = false;
- return false;
-}
-
-
diff --git a/src/DisplayApp/Screens/Clock.h b/src/DisplayApp/Screens/Clock.h
deleted file mode 100644
index e1e10bdf..00000000
--- a/src/DisplayApp/Screens/Clock.h
+++ /dev/null
@@ -1,88 +0,0 @@
-#pragma once
-
-#include <cstdint>
-#include <chrono>
-#include "Screen.h"
-#include <bits/unique_ptr.h>
-#include <libs/lvgl/src/lv_core/lv_style.h>
-#include <libs/lvgl/src/lv_core/lv_obj.h>
-#include <Components/Battery/BatteryController.h>
-#include <Components/Ble/BleController.h>
-
-namespace Pinetime {
- namespace Applications {
- namespace Screens {
-
- template <class T>
- class DirtyValue {
- public:
- explicit DirtyValue(T v) { value = v; }
- explicit DirtyValue(T& v) { value = v; }
- bool IsUpdated() const { return isUpdated; }
- T& Get() { this->isUpdated = false; return value; }
-
- DirtyValue& operator=(const T& other) {
- if (this->value != other) {
- this->value = other;
- this->isUpdated = true;
- }
- return *this;
- }
- private:
- T value;
- bool isUpdated = true;
- };
- class Clock : public Screen{
- public:
- Clock(DisplayApp* app,
- Controllers::DateTime& dateTimeController,
- Controllers::Battery& batteryController,
- Controllers::Ble& bleController);
- ~Clock() override;
-
- bool Refresh() override;
- bool OnButtonPushed() override;
-
- void OnObjectEvent(lv_obj_t *pObj, lv_event_t i);
- private:
- static const char* MonthToString(Pinetime::Controllers::DateTime::Months month);
- static const char* DayOfWeekToString(Pinetime::Controllers::DateTime::Days dayOfWeek);
- static char const *DaysString[];
- static char const *MonthsString[];
-
- 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<uint8_t> batteryPercentRemaining {0};
- DirtyValue<bool> bleState {false};
- DirtyValue<std::chrono::time_point<std::chrono::system_clock, std::chrono::nanoseconds>> currentDateTime;
- DirtyValue<uint32_t> stepCount {0};
- DirtyValue<uint8_t> heartbeat {0};
-
-
- 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;
-
- Controllers::DateTime& dateTimeController;
- Controllers::Battery& batteryController;
- Controllers::Ble& bleController;
-
- bool running = true;
-
- };
- }
- }
-}
diff --git a/src/DisplayApp/Screens/FirmwareUpdate.cpp b/src/DisplayApp/Screens/FirmwareUpdate.cpp
deleted file mode 100644
index e831114d..00000000
--- a/src/DisplayApp/Screens/FirmwareUpdate.cpp
+++ /dev/null
@@ -1,82 +0,0 @@
-#include <libs/lvgl/lvgl.h>
-#include "FirmwareUpdate.h"
-#include "../DisplayApp.h"
-
-using namespace Pinetime::Applications::Screens;
-extern lv_font_t jetbrains_mono_extrabold_compressed;
-extern lv_font_t jetbrains_mono_bold_20;
-
-
-FirmwareUpdate::FirmwareUpdate(Pinetime::Applications::DisplayApp *app, Pinetime::Controllers::Ble& bleController) :
- Screen(app), bleController{bleController} {
-
- titleLabel = lv_label_create(lv_scr_act(), NULL);
- lv_label_set_text(titleLabel, "Firmware update");
- lv_obj_set_auto_realign(titleLabel, true);
- lv_obj_align(titleLabel, NULL, LV_ALIGN_IN_TOP_MID, 0, 50);
-
- bar1 = lv_bar_create(lv_scr_act(), NULL);
- lv_obj_set_size(bar1, 200, 30);
- lv_obj_align(bar1, NULL, LV_ALIGN_CENTER, 0, 0);
- lv_bar_set_anim_time(bar1, 10);
- lv_bar_set_range(bar1, 0, 100);
- lv_bar_set_value(bar1, 0, LV_ANIM_OFF);
-
- percentLabel = lv_label_create(lv_scr_act(), NULL);
- lv_label_set_text(percentLabel, "");
- lv_obj_set_auto_realign(percentLabel, true);
- lv_obj_align(percentLabel, bar1, LV_ALIGN_OUT_TOP_MID, 0, 60);
-}
-
-FirmwareUpdate::~FirmwareUpdate() {
- lv_obj_clean(lv_scr_act());
-}
-
-bool FirmwareUpdate::Refresh() {
- switch(bleController.State()) {
- default:
- case Pinetime::Controllers::Ble::FirmwareUpdateStates::Idle:
- case Pinetime::Controllers::Ble::FirmwareUpdateStates::Running:
- if(state != States::Running)
- state = States::Running;
- return DisplayProgression();
- case Pinetime::Controllers::Ble::FirmwareUpdateStates::Validated:
- if(state != States::Validated) {
- UpdateValidated();
- state = States::Validated;
- }
- return running;
- case Pinetime::Controllers::Ble::FirmwareUpdateStates::Error:
- if(state != States::Error) {
- UpdateError();
- state = States::Error;
- }
- return running;
- }
-}
-
-bool FirmwareUpdate::DisplayProgression() const {
- float current = bleController.FirmwareUpdateCurrentBytes() / 1024.0f;
- float total = bleController.FirmwareUpdateTotalBytes() / 1024.0f;
- int16_t pc = (current / total) * 100.0f;
- sprintf(percentStr, "%d %%", pc);
- lv_label_set_text(percentLabel, percentStr);
-
- lv_bar_set_value(bar1, pc, LV_ANIM_OFF);
- return running;
-}
-
-bool FirmwareUpdate::OnButtonPushed() {
- running = false;
- return true;
-}
-
-void FirmwareUpdate::UpdateValidated() {
- lv_label_set_recolor(percentLabel, true);
- lv_label_set_text(percentLabel, "#00ff00 Image Ok!#");
-}
-
-void FirmwareUpdate::UpdateError() {
- lv_label_set_recolor(percentLabel, true);
- lv_label_set_text(percentLabel, "#ff0000 Error!#");
-}
diff --git a/src/DisplayApp/Screens/FirmwareUpdate.h b/src/DisplayApp/Screens/FirmwareUpdate.h
deleted file mode 100644
index faaf3953..00000000
--- a/src/DisplayApp/Screens/FirmwareUpdate.h
+++ /dev/null
@@ -1,41 +0,0 @@
-#pragma once
-
-#include <cstdint>
-#include <chrono>
-#include "Screen.h"
-#include <bits/unique_ptr.h>
-#include <libs/lvgl/src/lv_core/lv_style.h>
-#include <libs/lvgl/src/lv_core/lv_obj.h>
-#include <Components/Ble/BleController.h>
-
-namespace Pinetime {
- namespace Applications {
- namespace Screens {
-
- class FirmwareUpdate : public Screen{
- public:
- FirmwareUpdate(DisplayApp* app, Pinetime::Controllers::Ble& bleController);
- ~FirmwareUpdate() override;
-
- bool Refresh() override;
- bool OnButtonPushed() override;
-
- private:
- enum class States { Idle, Running, Validated, Error };
- Pinetime::Controllers::Ble& bleController;
- lv_obj_t* bar1;
- lv_obj_t* percentLabel;
- lv_obj_t* titleLabel;
- mutable char percentStr[10];
- bool running = true;
- States state;
-
- bool DisplayProgression() const;
-
- void UpdateValidated();
-
- void UpdateError();
- };
- }
- }
-}
diff --git a/src/DisplayApp/Screens/Gauge.cpp b/src/DisplayApp/Screens/Gauge.cpp
deleted file mode 100644
index fd905231..00000000
--- a/src/DisplayApp/Screens/Gauge.cpp
+++ /dev/null
@@ -1,58 +0,0 @@
-#include <libs/lvgl/lvgl.h>
-#include "Gauge.h"
-#include "../DisplayApp.h"
-
-using namespace Pinetime::Applications::Screens;
-extern lv_font_t jetbrains_mono_extrabold_compressed;
-extern lv_font_t jetbrains_mono_bold_20;
-
-
-Gauge::Gauge(Pinetime::Applications::DisplayApp *app) : Screen(app) {
- /*Create a style*/
- lv_style_copy(&style, &lv_style_pretty_color);
- style.body.main_color = LV_COLOR_CYAN; /*Line color at the beginning*/
- style.body.grad_color = LV_COLOR_RED; /*Line color at the end*/
- style.body.padding.left = 10; /*Scale line length*/
- style.body.padding.inner = 8 ; /*Scale label padding*/
- style.body.border.color = lv_color_hex3(0x333); /*Needle middle circle color*/
- style.line.width = 3;
- style.text.color = LV_COLOR_WHITE;
- style.line.color = LV_COLOR_RED; /*Line color after the critical value*/
-
-
- /*Describe the color for the needles*/
-
- needle_colors[0] = LV_COLOR_ORANGE;
-
- /*Create a gauge*/
- gauge1 = lv_gauge_create(lv_scr_act(), NULL);
- lv_gauge_set_style(gauge1, LV_GAUGE_STYLE_MAIN, &style);
- lv_gauge_set_needle_count(gauge1, 1, needle_colors);
- lv_obj_set_size(gauge1, 180, 180);
- lv_obj_align(gauge1, NULL, LV_ALIGN_CENTER, 0, 0);
- lv_gauge_set_scale(gauge1, 360, 60, 0);
- lv_gauge_set_range(gauge1, 0, 59);
-
- /*Set the values*/
- lv_gauge_set_value(gauge1, 0, value);
-}
-
-Gauge::~Gauge() {
-
-
- lv_obj_clean(lv_scr_act());
-}
-
-bool Gauge::Refresh() {
-// lv_lmeter_set_value(lmeter, value++); /*Set the current value*/
-// if(value>=60) value = 0;
-
- lv_gauge_set_value(gauge1, 0, value++);
- if(value == 59) value = 0;
- return running;
-}
-
-bool Gauge::OnButtonPushed() {
- running = false;
- return true;
-}
diff --git a/src/DisplayApp/Screens/Gauge.h b/src/DisplayApp/Screens/Gauge.h
deleted file mode 100644
index 03c06bed..00000000
--- a/src/DisplayApp/Screens/Gauge.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#pragma once
-
-#include <cstdint>
-#include "Screen.h"
-#include <bits/unique_ptr.h>
-#include <libs/lvgl/src/lv_core/lv_style.h>
-#include <libs/lvgl/src/lv_core/lv_obj.h>
-
-namespace Pinetime {
- namespace Applications {
- namespace Screens {
-
- class Gauge : public Screen{
- public:
- Gauge(DisplayApp* app);
- ~Gauge() override;
-
- bool Refresh() override;
- bool OnButtonPushed() override;
-
- private:
- lv_style_t style;
- lv_color_t needle_colors[3];
- lv_obj_t * gauge1;
-
- uint32_t value=30;
- bool running = true;
-
- };
- }
- }
-}
diff --git a/src/DisplayApp/Screens/Label.cpp b/src/DisplayApp/Screens/Label.cpp
deleted file mode 100644
index ba35279d..00000000
--- a/src/DisplayApp/Screens/Label.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-#include <libs/lvgl/lvgl.h>
-#include "Label.h"
-
-using namespace Pinetime::Applications::Screens;
-
-
-Label::Label(const char* text) : text{text} {
-
-}
-
-Label::~Label() {
-
-}
-
-void Label::Refresh() {
-
-}
-
-void Label::Show() {
- label = lv_label_create(lv_scr_act(), NULL);
- lv_label_set_align(label, LV_LABEL_ALIGN_LEFT);
- lv_obj_set_size(label, 240, 240);
- lv_label_set_text(label, text);
-}
-
-void Label::Hide() {
- lv_obj_clean(lv_scr_act());
-}
diff --git a/src/DisplayApp/Screens/Label.h b/src/DisplayApp/Screens/Label.h
deleted file mode 100644
index b73540f4..00000000
--- a/src/DisplayApp/Screens/Label.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#pragma once
-
-#include <vector>
-#include "Screen.h"
-
-namespace Pinetime {
- namespace Applications {
- namespace Screens {
- class Label {
- public:
- Label() = default;
- explicit Label(const char* text);
- ~Label();
- void Refresh();
-
- void Hide();
- void Show();
- private:
- lv_obj_t * label = nullptr;
- const char* text = nullptr;
- };
- }
- }
-} \ No newline at end of file
diff --git a/src/DisplayApp/Screens/Message.cpp b/src/DisplayApp/Screens/Message.cpp
deleted file mode 100644
index b83cb751..00000000
--- a/src/DisplayApp/Screens/Message.cpp
+++ /dev/null
@@ -1,81 +0,0 @@
-#include <cstdio>
-#include <libs/date/includes/date/date.h>
-#include <Components/DateTime/DateTimeController.h>
-#include <Version.h>
-#include <libs/lvgl/src/lv_core/lv_obj.h>
-#include <libs/lvgl/src/lv_font/lv_font.h>
-#include <libs/lvgl/lvgl.h>
-#include <libraries/log/nrf_log.h>
-#include "Message.h"
-#include <DisplayApp/DisplayApp.h>
-
-
-using namespace Pinetime::Applications::Screens;
-
-extern lv_font_t jetbrains_mono_bold_20;
-
-static void event_handler(lv_obj_t * obj, lv_event_t event) {
- Message* screen = static_cast<Message *>(obj->user_data);
- screen->OnObjectEvent(obj, event);
-}
-
-Message::Message(DisplayApp* app) : Screen(app) {
-
- backgroundLabel = lv_label_create(lv_scr_act(), NULL);
- backgroundLabel->user_data = this;
-
- lv_obj_set_click(backgroundLabel, true);
- lv_obj_set_event_cb(backgroundLabel, event_handler);
- lv_label_set_long_mode(backgroundLabel, LV_LABEL_LONG_CROP);
- lv_obj_set_size(backgroundLabel, 240, 240);
- lv_obj_set_pos(backgroundLabel, 0, 0);
- lv_label_set_text(backgroundLabel, "");
-
- button = lv_btn_create(lv_scr_act(), NULL);
- lv_obj_set_event_cb(button, event_handler);
- lv_obj_align(button, NULL, LV_ALIGN_CENTER, 0, -40);
- button->user_data = this;
-
- label = lv_label_create(button, NULL);
- lv_label_set_text(label, "Hello!");
-
- labelClick = lv_label_create(lv_scr_act(), NULL);
- lv_obj_align(labelClick, button, LV_ALIGN_OUT_BOTTOM_MID, 0, 30);
- lv_label_set_text(labelClick, "0");
-}
-
-Message::~Message() {
- lv_obj_clean(lv_scr_act());
-}
-
-bool Message::Refresh() {
- if(previousClickCount != clickCount) {
- lv_label_set_text_fmt(labelClick, "%d", clickCount);
- previousClickCount = clickCount;
- }
-
- return running;
-}
-
-void Message::OnObjectEvent(lv_obj_t *obj, lv_event_t event) {
- if(obj == backgroundLabel) {
- if(event == LV_EVENT_CLICKED) {
- app->PushMessage(DisplayApp::Messages::SwitchScreen);
- NRF_LOG_INFO("SCREEN");
- }
- return ;
- }
-
- if(event == LV_EVENT_CLICKED) {
- NRF_LOG_INFO("Clicked");
- clickCount++;
- }
- else if(event == LV_EVENT_VALUE_CHANGED) {
- NRF_LOG_INFO("Toggled");
- }
-}
-
-bool Message::OnButtonPushed() {
- running = false;
- return true;
-}
diff --git a/src/DisplayApp/Screens/Message.h b/src/DisplayApp/Screens/Message.h
deleted file mode 100644
index 3ace66fe..00000000
--- a/src/DisplayApp/Screens/Message.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#pragma once
-
-#include <cstdint>
-#include "Screen.h"
-#include <bits/unique_ptr.h>
-#include <lvgl/src/lv_core/lv_style.h>
-
-namespace Pinetime {
- namespace Applications {
- namespace Screens {
- class Message : public Screen{
- public:
- explicit Message(DisplayApp* app);
- ~Message() override;
- bool Refresh() override;
- bool OnButtonPushed();
- void OnObjectEvent(lv_obj_t* obj, lv_event_t event);
-
- private:
- lv_obj_t * label;
- lv_obj_t* backgroundLabel;
- lv_obj_t * button;
- lv_obj_t * labelClick;
-
- uint32_t clickCount = 0 ;
- uint32_t previousClickCount = 0;
- bool running = true;
- };
- }
- }
-}
diff --git a/src/DisplayApp/Screens/Meter.cpp b/src/DisplayApp/Screens/Meter.cpp
deleted file mode 100644
index c74b8bdf..00000000
--- a/src/DisplayApp/Screens/Meter.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-#include <libs/lvgl/lvgl.h>
-#include "Meter.h"
-#include "../DisplayApp.h"
-
-using namespace Pinetime::Applications::Screens;
-extern lv_font_t jetbrains_mono_extrabold_compressed;
-extern lv_font_t jetbrains_mono_bold_20;
-
-
-Meter::Meter(Pinetime::Applications::DisplayApp *app) : Screen(app) {
-
- lv_style_copy(&style_lmeter, &lv_style_pretty_color);
- style_lmeter.line.width = 2;
- style_lmeter.line.color = LV_COLOR_SILVER;
- style_lmeter.body.main_color = lv_color_make(255,0,0);
- style_lmeter.body.grad_color = lv_color_make(160,0,0);
- style_lmeter.body.padding.left = 16; /*Line length*/
-
- /*Create a line meter */
- lmeter = lv_lmeter_create(lv_scr_act(), NULL);
- lv_lmeter_set_range(lmeter, 0, 60); /*Set the range*/
- lv_lmeter_set_value(lmeter, value); /*Set the current value*/
- lv_lmeter_set_angle_offset(lmeter, 180);
- lv_lmeter_set_scale(lmeter, 360, 60); /*Set the angle and number of lines*/
- lv_lmeter_set_style(lmeter, LV_LMETER_STYLE_MAIN, &style_lmeter); /*Apply the new style*/
- lv_obj_set_size(lmeter, 150, 150);
- lv_obj_align(lmeter, NULL, LV_ALIGN_CENTER, 0, 0);
-
-}
-
-Meter::~Meter() {
-
-
- lv_obj_clean(lv_scr_act());
-}
-
-bool Meter::Refresh() {
- lv_lmeter_set_value(lmeter, value++); /*Set the current value*/
- if(value>=60) value = 0;
-
- return running;
-}
-
-bool Meter::OnButtonPushed() {
- running = false;
- return true;
-}
diff --git a/src/DisplayApp/Screens/Meter.h b/src/DisplayApp/Screens/Meter.h
deleted file mode 100644
index ddf8be8d..00000000
--- a/src/DisplayApp/Screens/Meter.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#pragma once
-
-#include <cstdint>
-#include <chrono>
-#include "Screen.h"
-#include <bits/unique_ptr.h>
-#include <libs/lvgl/src/lv_core/lv_style.h>
-#include <libs/lvgl/src/lv_core/lv_obj.h>
-
-namespace Pinetime {
- namespace Applications {
- namespace Screens {
-
- class Meter : public Screen{
- public:
- Meter(DisplayApp* app);
- ~Meter() override;
-
- bool Refresh() override;
- bool OnButtonPushed() override;
-
- private:
- lv_style_t style_lmeter;
- lv_obj_t * lmeter;
-
- uint32_t value=0;
- bool running = true;
-
- };
- }
- }
-}
diff --git a/src/DisplayApp/Screens/Modal.cpp b/src/DisplayApp/Screens/Modal.cpp
deleted file mode 100644
index 63ae70c0..00000000
--- a/src/DisplayApp/Screens/Modal.cpp
+++ /dev/null
@@ -1,81 +0,0 @@
-#include <libs/lvgl/lvgl.h>
-#include "Modal.h"
-#include "../DisplayApp.h"
-
-using namespace Pinetime::Applications::Screens;
-extern lv_font_t jetbrains_mono_extrabold_compressed;
-extern lv_font_t jetbrains_mono_bold_20;
-
-Modal::Modal(Pinetime::Applications::DisplayApp *app) : Screen(app) {
-
-
-}
-
-Modal::~Modal() {
- lv_obj_clean(lv_scr_act());
-}
-
-bool Modal::Refresh() {
-
- return running;
-}
-
-bool Modal::OnButtonPushed() {
- running = false;
- return true;
-}
-
-void Modal::Hide() {
- /* Delete the parent modal background */
- lv_obj_del_async(lv_obj_get_parent(mbox));
- mbox = NULL; /* happens before object is actually deleted! */
- isVisible = false;
-}
-
-void Modal::mbox_event_cb(lv_obj_t *obj, lv_event_t evt) {
- auto* m = static_cast<Modal *>(obj->user_data);
- m->OnEvent(obj, evt);
-}
-
-void Modal::OnEvent(lv_obj_t *event_obj, lv_event_t evt) {
- if(evt == LV_EVENT_DELETE && event_obj == mbox) {
- Hide();
- } else if(evt == LV_EVENT_VALUE_CHANGED) {
- /* A button was clicked */
- lv_mbox_start_auto_close(mbox, 0);
-// Hide();
- }
-}
-
-void Modal::Show(const char* msg) {
- if(isVisible) return;
- isVisible = true;
- lv_style_copy(&modal_style, &lv_style_plain_color);
- modal_style.body.main_color = modal_style.body.grad_color = LV_COLOR_BLACK;
- modal_style.body.opa = LV_OPA_50;
-
- obj = lv_obj_create(lv_scr_act(), NULL);
- lv_obj_set_style(obj, &modal_style);
- lv_obj_set_pos(obj, 0, 0);
- lv_obj_set_size(obj, LV_HOR_RES, LV_VER_RES);
- lv_obj_set_opa_scale_enable(obj, true); /* Enable opacity scaling for the animation */
-
- static const char * btns2[] = {"Ok", ""};
-
- /* Create the message box as a child of the modal background */
- mbox = lv_mbox_create(obj, NULL);
- lv_mbox_add_btns(mbox, btns2);
- lv_mbox_set_text(mbox, msg);
- lv_obj_align(mbox, NULL, LV_ALIGN_CENTER, 0, 0);
- lv_obj_set_event_cb(mbox, Modal::mbox_event_cb);
-
- mbox->user_data = this;
-
- /* Fade the message box in with an animation */
- lv_anim_t a;
- lv_anim_init(&a);
- lv_anim_set_time(&a, 500, 0);
- lv_anim_set_values(&a, LV_OPA_TRANSP, LV_OPA_COVER);
- lv_anim_set_exec_cb(&a, obj, (lv_anim_exec_xcb_t)lv_obj_set_opa_scale);
- lv_anim_create(&a);
-}
diff --git a/src/DisplayApp/Screens/Modal.h b/src/DisplayApp/Screens/Modal.h
deleted file mode 100644
index c616c294..00000000
--- a/src/DisplayApp/Screens/Modal.h
+++ /dev/null
@@ -1,39 +0,0 @@
-#pragma once
-
-#include <cstdint>
-#include <chrono>
-#include "Screen.h"
-#include <bits/unique_ptr.h>
-#include <libs/lvgl/src/lv_core/lv_style.h>
-#include <libs/lvgl/src/lv_core/lv_obj.h>
-
-namespace Pinetime {
- namespace Applications {
- namespace Screens {
-
- class Modal : public Screen{
- public:
- Modal(DisplayApp* app);
- ~Modal() override;
-
- void Show(const char* msg);
- void Hide();
-
- bool Refresh() override;
- bool OnButtonPushed() override;
-
- static void mbox_event_cb(lv_obj_t *obj, lv_event_t evt);
- private:
- void OnEvent(lv_obj_t *event_obj, lv_event_t evt);
-
- lv_style_t modal_style;
- lv_obj_t *obj;
- lv_obj_t *mbox;
- lv_obj_t *info;
- bool running = true;
- bool isVisible = false;
-
- };
- }
- }
-}
diff --git a/src/DisplayApp/Screens/Music.cpp b/src/DisplayApp/Screens/Music.cpp
deleted file mode 100644
index 9b7d198b..00000000
--- a/src/DisplayApp/Screens/Music.cpp
+++ /dev/null
@@ -1,125 +0,0 @@
-#include <libs/lvgl/lvgl.h>
-#include "Music.h"
-
-using namespace Pinetime::Applications::Screens;
-extern lv_font_t jetbrains_mono_extrabold_compressed;
-extern lv_font_t jetbrains_mono_bold_20;
-
-static void event_handler(lv_obj_t * obj, lv_event_t event)
-{
- Music* screen = static_cast<Music *>(obj->user_data);
- screen->OnObjectEvent(obj, event);
-}
-
-Music::Music(Pinetime::Applications::DisplayApp *app, Pinetime::Controllers::MusicService &music) : Screen(app), musicService(music) {
- lv_obj_t * label;
-
- btnVolDown = lv_btn_create(lv_scr_act(), NULL);
- btnVolDown->user_data = this;
- lv_obj_set_event_cb(btnVolDown, event_handler);
- lv_obj_align(btnVolDown, NULL, LV_ALIGN_IN_TOP_LEFT, 10, 10);
- label = lv_label_create(btnVolDown, NULL);
- lv_label_set_text(label, "v-");
-
- btnVolUp = lv_btn_create(lv_scr_act(), NULL);
- btnVolUp->user_data = this;
- lv_obj_set_event_cb(btnVolUp, event_handler);
- lv_obj_align(btnVolUp, NULL, LV_ALIGN_IN_TOP_RIGHT, -10, 10);
- label = lv_label_create(btnVolUp, NULL);
- lv_label_set_text(label, "v+");
-
- btnPrev = lv_btn_create(lv_scr_act(), NULL);
- btnPrev->user_data = this;
- lv_obj_set_event_cb(btnPrev, event_handler);
- lv_obj_set_size(btnPrev, LV_HOR_RES / 4, LV_VER_RES / 4);
- lv_obj_align(btnPrev, NULL, LV_ALIGN_IN_BOTTOM_LEFT, 10,-10);
- label = lv_label_create(btnPrev, NULL);
- lv_label_set_text(label, "<<");
-
- btnPlayPause = lv_btn_create(lv_scr_act(), NULL);
- btnPlayPause->user_data = this;
- lv_obj_set_event_cb(btnPlayPause, event_handler);
- lv_obj_set_size(btnPlayPause, LV_HOR_RES / 4, LV_VER_RES / 4);
- lv_obj_align(btnPlayPause, NULL, LV_ALIGN_IN_BOTTOM_MID, 0,-10);
- txtPlayPause = lv_label_create(btnPlayPause, NULL);
- lv_label_set_text(txtPlayPause, ">");
-
- btnNext = lv_btn_create(lv_scr_act(), NULL);
- btnNext->user_data = this;
- lv_obj_set_event_cb(btnNext, event_handler);
- lv_obj_set_size(btnNext, LV_HOR_RES / 4, LV_VER_RES / 4);
- lv_obj_align(btnNext, NULL, LV_ALIGN_IN_BOTTOM_RIGHT, -10,-10);
- label = lv_label_create(btnNext, NULL);
- lv_label_set_text(label, ">>");
-
- txtArtist = lv_label_create(lv_scr_act(), NULL);
- lv_label_set_long_mode(txtArtist, LV_LABEL_LONG_SROLL);
- lv_obj_align(txtArtist, NULL, LV_ALIGN_IN_LEFT_MID, 0,-20);
- lv_label_set_text(txtArtist, "Artist Name");
- lv_label_set_align(txtArtist, LV_LABEL_ALIGN_CENTER);
- lv_obj_set_width(txtArtist, LV_HOR_RES);
-
- txtTrack = lv_label_create(lv_scr_act(), NULL);
- lv_label_set_long_mode(txtTrack, LV_LABEL_LONG_DOT);
- lv_obj_align(txtTrack, NULL, LV_ALIGN_IN_LEFT_MID, 0,20);
- lv_label_set_text(txtTrack, "This is a very long track name");
- lv_label_set_align(txtTrack, LV_LABEL_ALIGN_CENTER);
- lv_obj_set_width(txtTrack, LV_HOR_RES);
-
- musicService.event(Controllers::MusicService::EVENT_MUSIC_OPEN);
-}
-
-Music::~Music() {
- lv_obj_clean(lv_scr_act());
-}
-
-bool Music::OnButtonPushed() {
- running = false;
- return true;
-}
-
-bool Music::Refresh() {
-
- if (m_artist != musicService.artist()) {
- m_artist = musicService.artist();
- lv_label_set_text(txtArtist, m_artist.data());
- }
- if (m_track != musicService.track()) {
- m_track = musicService.track();
- lv_label_set_text(txtTrack, m_track.data());
- }
- if (m_album != musicService.album()) {
- m_album = musicService.album();
- }
- if (m_status != musicService.status()) {
- m_status = musicService.status();
- }
- if (m_status == Pinetime::Controllers::MusicService::STATUS_MUSIC_PLAYING) {
- lv_label_set_text(txtPlayPause, "||");
- } else {
- lv_label_set_text(txtPlayPause, ">");
- }
-
- return running;
-}
-
-void Music::OnObjectEvent(lv_obj_t* obj, lv_event_t event)
-{
- if (event == LV_EVENT_CLICKED) {
- if (obj == btnVolDown) {
- musicService.event(Controllers::MusicService::EVENT_MUSIC_VOLDOWN);
- } else if (obj == btnVolUp) {
- musicService.event(Controllers::MusicService::EVENT_MUSIC_VOLUP);
- } else if (obj == btnPrev) {
- musicService.event(Controllers::MusicService::EVENT_MUSIC_PREV);
- } else if (obj == btnPlayPause) {
- if (m_status == Pinetime::Controllers::MusicService::STATUS_MUSIC_PLAYING) {
- musicService.event(Controllers::MusicService::EVENT_MUSIC_PAUSE);
- } else {
- musicService.event(Controllers::MusicService::EVENT_MUSIC_PLAY);
- }
- } else if (obj == btnNext) {
- musicService.event(Controllers::MusicService::EVENT_MUSIC_NEXT);
- }
- }
-}
diff --git a/src/DisplayApp/Screens/Music.h b/src/DisplayApp/Screens/Music.h
deleted file mode 100644
index 95cac0f0..00000000
--- a/src/DisplayApp/Screens/Music.h
+++ /dev/null
@@ -1,49 +0,0 @@
-#pragma once
-
-#include <cstdint>
-#include <chrono>
-#include <Components/Gfx/Gfx.h>
-#include "Screen.h"
-#include <bits/unique_ptr.h>
-#include <libs/lvgl/src/lv_core/lv_style.h>
-#include <libs/lvgl/src/lv_core/lv_obj.h>
-#include <Components/Battery/BatteryController.h>
-#include <Components/Ble/BleController.h>
-#include "../../Version.h"
-#include <Components/Ble/MusicService.h>
-#include <string>
-
-namespace Pinetime {
- namespace Applications {
- namespace Screens {
-
- class Music : public Screen{
- public:
- Music(DisplayApp* app, Pinetime::Controllers::MusicService &music);
- ~Music() override;
-
- bool Refresh() override;
- bool OnButtonPushed() override;
-
- void OnObjectEvent(lv_obj_t* obj, lv_event_t event);
-
- private:
- lv_obj_t * btnPrev;
- lv_obj_t * btnPlayPause;
- lv_obj_t * btnNext;
- lv_obj_t * btnVolDown;
- lv_obj_t * btnVolUp;
- lv_obj_t * txtArtist;
- lv_obj_t * txtTrack;
- lv_obj_t * txtPlayPause;
-
- bool running = true;
- Pinetime::Controllers::MusicService &musicService;
- std::string m_artist;
- std::string m_album;
- std::string m_track;
- unsigned char m_status;
- };
- }
- }
-}
diff --git a/src/DisplayApp/Screens/Screen.cpp b/src/DisplayApp/Screens/Screen.cpp
deleted file mode 100644
index 1467df33..00000000
--- a/src/DisplayApp/Screens/Screen.cpp
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "Screen.h"
-using namespace Pinetime::Applications::Screens; \ No newline at end of file
diff --git a/src/DisplayApp/Screens/Screen.h b/src/DisplayApp/Screens/Screen.h
deleted file mode 100644
index d8902317..00000000
--- a/src/DisplayApp/Screens/Screen.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#pragma once
-#include "../TouchEvents.h"
-
-namespace Pinetime {
- namespace Applications {
- class DisplayApp;
- namespace Screens {
- class Screen {
- public:
- Screen(DisplayApp* app) : app{app} {}
- virtual ~Screen() = default;
-
- // Return false if the app can be closed, true if it must continue to run
- virtual bool Refresh() = 0;
-
- // Return false if the button hasn't been handled by the app, true if it has been handled
- virtual bool OnButtonPushed() { return false; }
-
- // Return false if the event hasn't been handled by the app, true if it has been handled
- virtual bool OnTouchEvent(TouchEvents event) { return false; }
-
- protected:
- DisplayApp* app;
- };
- }
- }
-}
diff --git a/src/DisplayApp/Screens/ScreenList.cpp b/src/DisplayApp/Screens/ScreenList.cpp
deleted file mode 100644
index 754d5f7e..00000000
--- a/src/DisplayApp/Screens/ScreenList.cpp
+++ /dev/null
@@ -1,139 +0,0 @@
-#include <libs/lvgl/lvgl.h>
-#include <DisplayApp/DisplayApp.h>
-#include "ScreenList.h"
-#include "../../Version.h"
-
-using namespace Pinetime::Applications::Screens;
-
-// TODO this class must be improved to receive the list of "sub screens" via pointer or
-// move operation.
-// It should accept many type of "sub screen" (it only supports Label for now).
-// The number of sub screen it supports must be dynamic.
-ScreenList::ScreenList(Pinetime::Applications::DisplayApp *app,
- Pinetime::Controllers::DateTime &dateTimeController,
- Pinetime::Controllers::Battery& batteryController,
- Pinetime::Controllers::BrightnessController& brightnessController,
- Pinetime::Controllers::Ble& bleController,
- Pinetime::Drivers::WatchdogView& watchdog) :
- Screen(app),
- dateTimeController{dateTimeController}, batteryController{batteryController},
- brightnessController{brightnessController}, bleController{bleController}, watchdog{watchdog} {
- screens.reserve(3);
-
- // TODO all of this is far too heavy (string processing). This should be improved.
- // TODO the info (battery, time,...) should be updated in the Refresh method.
-
-
- auto batteryPercent = static_cast<int16_t>(batteryController.PercentRemaining());
- if(batteryPercent > 100) batteryPercent = 100;
- else if(batteryPercent < 0) batteryPercent = 0;
-
- uint8_t brightness = 0;
- switch(brightnessController.Level()) {
- case Controllers::BrightnessController::Levels::Low: brightness = 1; break;
- case Controllers::BrightnessController::Levels::Medium: brightness = 2; break;
- case Controllers::BrightnessController::Levels::High: brightness = 3; break;
- }
- auto resetReason = [&watchdog]() {
- switch (watchdog.ResetReason()) {
- case Drivers::Watchdog::ResetReasons::Watchdog: return "wtdg";
- case Drivers::Watchdog::ResetReasons::HardReset: return "hardr";
- case Drivers::Watchdog::ResetReasons::NFC: return "nfc";
- case Drivers::Watchdog::ResetReasons::SoftReset: return "softr";
- case Drivers::Watchdog::ResetReasons::CpuLockup: return "cpulock";
- case Drivers::Watchdog::ResetReasons::SystemOff: return "off";
- case Drivers::Watchdog::ResetReasons::LpComp: return "lpcomp";
- case Drivers::Watchdog::ResetReasons::DebugInterface: return "dbg";
- case Drivers::Watchdog::ResetReasons::ResetPin: return "rst";
- default: return "?";
- }
- }();
-
- // uptime
- static constexpr uint32_t secondsInADay = 60*60*24;
- static constexpr uint32_t secondsInAnHour = 60*60;
- static constexpr uint32_t secondsInAMinute = 60;
- uint32_t uptimeSeconds = dateTimeController.Uptime().count();
- uint32_t uptimeDays = (uptimeSeconds / secondsInADay);
- uptimeSeconds = uptimeSeconds % secondsInADay;
- uint32_t uptimeHours = uptimeSeconds / secondsInAnHour;
- uptimeSeconds = uptimeSeconds % secondsInAnHour;
- uint32_t uptimeMinutes = uptimeSeconds / secondsInAMinute;
- uptimeSeconds = uptimeSeconds % secondsInAMinute;
- // TODO handle more than 100 days of uptime
-
- sprintf(t1, "Pinetime\n"
- "Version:%d.%d.%d\n"
- "Build: %s\n"
- " %s\n"
- "Date: %02d/%02d/%04d\n"
- "Time: %02d:%02d:%02d\n"
- "Uptime: %02lud %02lu:%02lu:%02lu\n"
- "Battery: %d%%\n"
- "Backlight: %d/3\n"
- "Last reset: %s\n",
- Version::Major(), Version::Minor(), Version::Patch(),
- __DATE__, __TIME__,
- dateTimeController.Day(), dateTimeController.Month(), dateTimeController.Year(),
- dateTimeController.Hours(), dateTimeController.Minutes(), dateTimeController.Seconds(),
- uptimeDays, uptimeHours, uptimeMinutes, uptimeSeconds,
- batteryPercent, brightness, resetReason);
-
- screens.emplace_back(t1);
-
- auto& bleAddr = bleController.Address();
- sprintf(t2, "BLE MAC: \n %2x:%2x:%2x:%2x:%2x:%2x",
- bleAddr[5], bleAddr[4], bleAddr[3], bleAddr[2], bleAddr[1], bleAddr[0]);
- screens.emplace_back(t2);
-
- strncpy(t3, "Hello from\nthe developper!", 27);
-
- screens.emplace_back(t3);
-
- auto &screen = screens[screenIndex];
- screen.Show();
-}
-
-ScreenList::~ScreenList() {
- lv_obj_clean(lv_scr_act());
-}
-
-bool ScreenList::Refresh() {
- auto &screen = screens[screenIndex];
- screen.Refresh();
-
- return running;
-}
-
-bool ScreenList::OnButtonPushed() {
- running = false;
- return true;
-}
-
-bool ScreenList::OnTouchEvent(Pinetime::Applications::TouchEvents event) {
- switch (event) {
- case TouchEvents::SwipeDown:
- if (screenIndex > 0) {
- app->SetFullRefresh(DisplayApp::FullRefreshDirections::Down);
- auto &oldScreen = screens[screenIndex];
- oldScreen.Hide();
- screenIndex--;
- auto &newScreen = screens[screenIndex];
- newScreen.Show();
- }
- return true;
- case TouchEvents::SwipeUp:
- app->SetFullRefresh(DisplayApp::FullRefreshDirections::Up);
- if (screenIndex < screens.size() - 1) {
- auto &oldScreen = screens[screenIndex];
- oldScreen.Hide();
- screenIndex++;
- auto &newScreen = screens[screenIndex];
- newScreen.Show();
- }
- return true;
- default:
- return false;
- }
- return false;
-}
diff --git a/src/DisplayApp/Screens/ScreenList.h b/src/DisplayApp/Screens/ScreenList.h
deleted file mode 100644
index b0ee016b..00000000
--- a/src/DisplayApp/Screens/ScreenList.h
+++ /dev/null
@@ -1,42 +0,0 @@
-#pragma once
-
-#include <vector>
-#include <Components/Ble/NimbleController.h>
-#include "Screen.h"
-#include "Label.h"
-
-namespace Pinetime {
- namespace Applications {
- namespace Screens {
- class ScreenList : public Screen {
- public:
- explicit ScreenList(DisplayApp* app,
- Pinetime::Controllers::DateTime& dateTimeController,
- Pinetime::Controllers::Battery& batteryController,
- Pinetime::Controllers::BrightnessController& brightnessController,
- Pinetime::Controllers::Ble& bleController,
- Pinetime::Drivers::WatchdogView& watchdog);
- ~ScreenList() override;
- bool Refresh() override;
- bool OnButtonPushed() override;
- bool OnTouchEvent(TouchEvents event) override;
- private:
- bool running = true;
- uint8_t screenIndex = 0;
-
- // TODO choose another container without dynamic alloc
- std::vector<Screens::Label> screens;
- Pinetime::Controllers::DateTime& dateTimeController;
- Pinetime::Controllers::Battery& batteryController;
- Pinetime::Controllers::BrightnessController& brightnessController;
- Pinetime::Controllers::Ble& bleController;
- Pinetime::Drivers::WatchdogView& watchdog;
-
-
- char t1[200];
- char t2[200];
- char t3[30];
- };
- }
- }
-} \ No newline at end of file
diff --git a/src/DisplayApp/Screens/Symbols.h b/src/DisplayApp/Screens/Symbols.h
deleted file mode 100644
index 3104db87..00000000
--- a/src/DisplayApp/Screens/Symbols.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#pragma once
-
-namespace Pinetime {
- namespace Applications {
- namespace Screens {
- namespace Symbols {
- static constexpr char* batteryFull = "\xEF\x89\x80";
- static constexpr char* batteryEmpty = "\xEF\x89\x84";
- static constexpr char* batteryThreeQuarter = "\xEF\x89\x81";
- static constexpr char* batteryHalf = "\xEF\x89\x82";
- static constexpr char* batteryOneQuarter = "\xEF\x89\x83";
- static constexpr char* heartBeat = "\xEF\x88\x9E";
- static constexpr char* bluetoothFull = "\xEF\x8A\x93";
- static constexpr char* bluetooth = "\xEF\x8A\x94";
- static constexpr char* plug = "\xEF\x87\xA6";
- static constexpr char* shoe = "\xEF\x95\x8B";
- static constexpr char* clock = "\xEF\x80\x97";
- static constexpr char* info = "\xEF\x84\xA9";
- static constexpr char* list = "\xEF\x80\xBA";
- static constexpr char* sun = "\xEF\x86\x85";
- }
- }
- }
-} \ No newline at end of file
diff --git a/src/DisplayApp/Screens/Tab.cpp b/src/DisplayApp/Screens/Tab.cpp
deleted file mode 100644
index adc32578..00000000
--- a/src/DisplayApp/Screens/Tab.cpp
+++ /dev/null
@@ -1,67 +0,0 @@
-#include <cstdio>
-#include <libs/date/includes/date/date.h>
-#include <Components/DateTime/DateTimeController.h>
-#include <Version.h>
-#include <libs/lvgl/src/lv_core/lv_obj.h>
-#include <libs/lvgl/src/lv_font/lv_font.h>
-#include <libs/lvgl/lvgl.h>
-#include <libraries/log/nrf_log.h>
-#include "Tab.h"
-#include <DisplayApp/DisplayApp.h>
-
-
-using namespace Pinetime::Applications::Screens;
-
-extern lv_font_t jetbrains_mono_bold_20;
-
-//static void event_handler(lv_obj_t * obj, lv_event_t event) {
-// Tile* screen = static_cast<Tile *>(obj->user_data);
-// screen->OnObjectEvent(obj, event);
-//}
-
-Tab::Tab(DisplayApp* app, Pinetime::Components::Gfx &gfx) : Screen(app, gfx) {
-/*Create a Tab view object*/
- lv_obj_t *tabview;
- tabview = lv_tabview_create(lv_scr_act(), NULL);
-
- /*Add 3 tabs (the tabs are page (lv_page) and can be scrolled*/
- lv_obj_t *tab1 = lv_tabview_add_tab(tabview, "Tab 1");
- lv_obj_t *tab2 = lv_tabview_add_tab(tabview, "Tab 2");
- lv_obj_t *tab3 = lv_tabview_add_tab(tabview, "Tab 3");
-
-
- /*Add content to the tabs*/
- lv_obj_t * label = lv_label_create(tab1, NULL);
- lv_label_set_text(label, "This the first tab\n\n"
- "If the content\n"
- "of a tab\n"
- "become too long\n"
- "the it \n"
- "automatically\n"
- "become\n"
- "scrollable.");
-
- label = lv_label_create(tab2, NULL);
- lv_label_set_text(label, "Second tab");
-
- label = lv_label_create(tab3, NULL);
- lv_label_set_text(label, "Third tab");
-
-}
-
-Tab::~Tab() {
- lv_obj_clean(lv_scr_act());
-}
-
-void Tab::Refresh(bool fullRefresh) {
-
-}
-
-void Tab::OnObjectEvent(lv_obj_t *obj, lv_event_t event) {
- if(event == LV_EVENT_CLICKED) {
- NRF_LOG_INFO("Clicked");
- }
- else if(event == LV_EVENT_VALUE_CHANGED) {
- NRF_LOG_INFO("Toggled");
- }
-}
diff --git a/src/DisplayApp/Screens/Tab.h b/src/DisplayApp/Screens/Tab.h
deleted file mode 100644
index e16dbb96..00000000
--- a/src/DisplayApp/Screens/Tab.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#pragma once
-
-#include <cstdint>
-#include "Screen.h"
-#include <bits/unique_ptr.h>
-#include <lvgl/src/lv_core/lv_style.h>
-
-namespace Pinetime {
- namespace Applications {
- namespace Screens {
- class Tab : public Screen {
- public:
- explicit Tab(DisplayApp* app, Components::Gfx& gfx);
- ~Tab() override;
- void Refresh(bool fullRefresh) override;
- void OnObjectEvent(lv_obj_t* obj, lv_event_t event);
-
- private:
-
- };
- }
- }
-}
diff --git a/src/DisplayApp/Screens/Tile.cpp b/src/DisplayApp/Screens/Tile.cpp
deleted file mode 100644
index c3a9d380..00000000
--- a/src/DisplayApp/Screens/Tile.cpp
+++ /dev/null
@@ -1,101 +0,0 @@
-#include <libs/lvgl/src/lv_core/lv_obj.h>
-#include <libs/lvgl/src/lv_font/lv_font.h>
-#include <libs/lvgl/lvgl.h>
-#include "Tile.h"
-#include <DisplayApp/DisplayApp.h>
-#include "Symbols.h"
-#include "../../Version.h"
-
-using namespace Pinetime::Applications::Screens;
-
-extern lv_font_t jetbrains_mono_bold_20;
-
-static void event_handler(lv_obj_t * obj, lv_event_t event) {
- Tile* screen = static_cast<Tile *>(obj->user_data);
- uint32_t* eventDataPtr = (uint32_t*) lv_event_get_data();
- uint32_t eventData = *eventDataPtr;
- screen->OnObjectEvent(obj, event, eventData);
-}
-
-static const char * btnm_map1[] = {Symbols::heartBeat, Symbols::shoe, Symbols::clock, "\n", Symbols::info, Symbols::list, Symbols::sun, ""};
-
-Tile::Tile(DisplayApp* app) : Screen(app) {
- modal.reset(new Modal(app));
-
- btnm1 = lv_btnm_create(lv_scr_act(), NULL);
- lv_btnm_set_map(btnm1, btnm_map1);
- lv_obj_set_size(btnm1, LV_HOR_RES, LV_VER_RES);
-
- btnm1->user_data = this;
- lv_obj_set_event_cb(btnm1, event_handler);
-}
-
-Tile::~Tile() {
- lv_obj_clean(lv_scr_act());
-}
-
-bool Tile::Refresh() {
- return running;
-}
-
-void Tile::OnObjectEvent(lv_obj_t *obj, lv_event_t event, uint32_t buttonId) {
- auto* tile = static_cast<Tile*>(obj->user_data);
- if(event == LV_EVENT_VALUE_CHANGED) {
- switch(buttonId) {
- case 0:
- tile->StartMeterApp();
- break;
- case 1:
- tile->StartGaugeApp();
- break;
- case 2:
- tile->StartClockApp();
- break;
- case 3:
- char versionStr[20];
- sprintf(versionStr, "VERSION: %d.%d.%d", Version::Major(), Version::Minor(), Version::Patch());
- modal->Show(versionStr);
- break;
- case 4:
- tile->StartSysInfoApp();
- break;
- case 5:
- tile->StartBrightnessApp();
-
- break;
- }
- clickCount++;
- }
-}
-
-bool Tile::OnButtonPushed() {
- app->StartApp(DisplayApp::Apps::Clock);
- running = false;
- return true;
-}
-
-void Tile::StartClockApp() {
- app->StartApp(DisplayApp::Apps::Clock);
- running = false;
-}
-
-void Tile::StartSysInfoApp() {
- app->StartApp(DisplayApp::Apps::SysInfo);
- running = false;
-}
-
-void Tile::StartBrightnessApp() {
- app->StartApp(DisplayApp::Apps::Brightness);
- running = false;
-}
-
-void Tile::StartMeterApp() {
- app->StartApp(DisplayApp::Apps::Meter);
- running = false;
-}
-
-void Tile::StartGaugeApp() {
- app->StartApp(DisplayApp::Apps::Music);
- running = false;
-}
-
diff --git a/src/DisplayApp/Screens/Tile.h b/src/DisplayApp/Screens/Tile.h
deleted file mode 100644
index a04b58a8..00000000
--- a/src/DisplayApp/Screens/Tile.h
+++ /dev/null
@@ -1,60 +0,0 @@
-#pragma once
-
-#include <cstdint>
-#include "Screen.h"
-#include <bits/unique_ptr.h>
-#include "Modal.h"
-#include <lvgl/src/lv_core/lv_style.h>
-
-namespace Pinetime {
- namespace Applications {
- namespace Screens {
- class Tile : public Screen {
- public:
- explicit Tile(DisplayApp* app);
- ~Tile() override;
-
- bool Refresh() override;
- bool OnButtonPushed() override;
-
- void OnObjectEvent(lv_obj_t* obj, lv_event_t event, uint32_t buttonId);
-
- private:
-
- lv_style_t* labelRelStyle;
- lv_style_t* labelPrStyle;
- lv_obj_t * label1;
- lv_obj_t * label2;
- lv_obj_t * label3;
-
- lv_obj_t* backgroundLabel;
- lv_obj_t * button;
- lv_obj_t * labelClick;
-
- lv_obj_t *tileview;
- lv_obj_t * tile1;
- lv_obj_t * tile2;
- lv_obj_t * list;
- lv_obj_t * list_btn;
- lv_obj_t * tile3;
- lv_obj_t * btn1;
- lv_obj_t * btn2;
- lv_obj_t * btn3;
-
- lv_obj_t * btnm1;
- lv_obj_t * btnm2;
-
- uint32_t clickCount = 0 ;
- uint32_t previousClickCount = 0;
- void StartClockApp();
- void StartSysInfoApp();
- void StartMeterApp();
- void StartGaugeApp();
- bool running = true;
-
- std::unique_ptr<Modal> modal;
- void StartBrightnessApp();
- };
- }
- }
-}