diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d8d92432..9dacf378 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -406,7 +406,6 @@ list(APPEND SOURCE_FILES displayapp/screens/FlashLight.cpp displayapp/screens/List.cpp displayapp/screens/BatteryInfo.cpp - displayapp/screens/Tasks.cpp ## Settings displayapp/screens/settings/QuickSettings.cpp diff --git a/src/displayapp/Apps.h b/src/displayapp/Apps.h index 5daa82ff..358ea1f7 100644 --- a/src/displayapp/Apps.h +++ b/src/displayapp/Apps.h @@ -4,7 +4,7 @@ namespace Pinetime { namespace Applications { enum class Apps { None, Launcher, Clock, SysInfo, FirmwareUpdate, FirmwareValidation, NotificationsPreview, Notifications, FlashLight, BatteryInfo, - Music, Paint, Paddle, Twos, HeartRate, Navigation, StopWatch, Motion, Tasks, + Music, Paint, Paddle, Twos, HeartRate, Navigation, StopWatch, Motion, QuickSettings, Settings, SettingWatchFace, SettingTimeFormat, SettingDisplay, SettingWakeUp }; } diff --git a/src/displayapp/DisplayApp.cpp b/src/displayapp/DisplayApp.cpp index eab4e3b3..773ae9c0 100644 --- a/src/displayapp/DisplayApp.cpp +++ b/src/displayapp/DisplayApp.cpp @@ -24,7 +24,7 @@ #include "displayapp/screens/Twos.h" #include "displayapp/screens/FlashLight.h" #include "displayapp/screens/BatteryInfo.h" -#include "displayapp/screens/Tasks.h" + #include "drivers/Cst816s.h" #include "drivers/St7789.h" #include "drivers/Watchdog.h" @@ -308,11 +308,6 @@ void DisplayApp::LoadApp(Apps app, DisplayApp::FullRefreshDirections direction) case Apps::Motion: currentScreen = std::make_unique(this, motionController); break; - case Apps::Tasks: - currentScreen = std::make_unique(this); - returnApp(Apps::Launcher, FullRefreshDirections::Down, TouchEvents::SwipeDown); - break; - } currentApp = app; } diff --git a/src/displayapp/screens/ApplicationList.cpp b/src/displayapp/screens/ApplicationList.cpp index ccbd8ca4..056d128c 100644 --- a/src/displayapp/screens/ApplicationList.cpp +++ b/src/displayapp/screens/ApplicationList.cpp @@ -49,7 +49,7 @@ std::unique_ptr ApplicationList::CreateScreen1() { {Symbols::map, Apps::Navigation}, {Symbols::shoe, Apps::Motion}, {Symbols::heartBeat, Apps::HeartRate}, - {"Tasks", Apps::Tasks}, + {"", Apps::None}, } }; diff --git a/src/displayapp/screens/SystemInfo.cpp b/src/displayapp/screens/SystemInfo.cpp index f3ac7490..48dba547 100644 --- a/src/displayapp/screens/SystemInfo.cpp +++ b/src/displayapp/screens/SystemInfo.cpp @@ -26,7 +26,8 @@ SystemInfo::SystemInfo(Pinetime::Applications::DisplayApp *app, [this]() -> std::unique_ptr { return CreateScreen1(); }, [this]() -> std::unique_ptr { return CreateScreen2(); }, [this]() -> std::unique_ptr { return CreateScreen3(); }, - [this]() -> std::unique_ptr { return CreateScreen4(); } + [this]() -> std::unique_ptr { return CreateScreen4(); }, + [this]() -> std::unique_ptr { return CreateScreen5(); } }, Screens::ScreenListModes::UpDown } {} @@ -37,7 +38,9 @@ SystemInfo::~SystemInfo() { } bool SystemInfo::Refresh() { - screens.Refresh(); + if (running) { + screens.Refresh(); + } return running; } @@ -50,27 +53,8 @@ bool SystemInfo::OnTouchEvent(Pinetime::Applications::TouchEvents event) { return screens.OnTouchEvent(event); } -void SystemInfo::CreateContainer() { - - if ( container1 ) { - container1 = lv_cont_create(lv_scr_act(), nullptr); - - lv_obj_set_style_local_bg_opa(container1, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_TRANSP); - lv_obj_set_style_local_pad_all(container1, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, 10); - lv_obj_set_style_local_pad_inner(container1, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, 5); - lv_obj_set_style_local_border_width(container1, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, 0); - - lv_obj_set_pos(container1, 0, 0); - lv_obj_set_width(container1, LV_HOR_RES - 10); - lv_obj_set_height(container1, LV_VER_RES); - lv_cont_set_layout(container1, LV_LAYOUT_CENTER); - } -} - std::unique_ptr SystemInfo::CreateScreen1() { - CreateContainer(); - - lv_obj_t * label = lv_label_create(container1, nullptr); + lv_obj_t * label = lv_label_create(lv_scr_act(), nullptr); lv_label_set_recolor(label, true); lv_label_set_text_fmt(label, "#FFFF00 InfiniTime#\n\n" @@ -81,12 +65,11 @@ std::unique_ptr SystemInfo::CreateScreen1() { Version::Major(), Version::Minor(), Version::Patch(), __DATE__, __TIME__); lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); - return std::unique_ptr(new Screens::Label(0, 4, app, label)); + lv_obj_align(label, lv_scr_act(), LV_ALIGN_CENTER, 0, 0); + return std::unique_ptr(new Screens::Label(0, 5, app, label)); } std::unique_ptr SystemInfo::CreateScreen2() { - CreateContainer(); - auto batteryPercent = static_cast(batteryController.PercentRemaining()); float batteryVoltage = batteryController.Voltage(); @@ -126,7 +109,7 @@ std::unique_ptr SystemInfo::CreateScreen2() { batteryVoltageBytes[0] = static_cast((batteryVoltage - batteryVoltageBytes[1]) * 100); //remove whole part of flt and shift 2 places over // - lv_obj_t * label = lv_label_create(container1, nullptr); + lv_obj_t * label = lv_label_create(lv_scr_act(), nullptr); lv_label_set_recolor(label, true); lv_label_set_text_fmt(label, "#444444 Date# %02d/%02d/%04d\n" @@ -140,6 +123,7 @@ std::unique_ptr SystemInfo::CreateScreen2() { uptimeDays, uptimeHours, uptimeMinutes, uptimeSeconds, batteryPercent, batteryVoltageBytes[1], batteryVoltageBytes[0], brightnessController.ToString(), resetReason ); + lv_obj_align(label, lv_scr_act(), LV_ALIGN_CENTER, 0, 0); return std::unique_ptr(new Screens::Label(1, 4, app, label)); } @@ -147,9 +131,8 @@ std::unique_ptr SystemInfo::CreateScreen2() { std::unique_ptr SystemInfo::CreateScreen3() { lv_mem_monitor_t mon; lv_mem_monitor(&mon); - CreateContainer(); - - lv_obj_t * label = lv_label_create(container1, nullptr); + + lv_obj_t * label = lv_label_create(lv_scr_act(), nullptr); lv_label_set_recolor(label, true); auto& bleAddr = bleController.Address(); lv_label_set_text_fmt(label, @@ -169,13 +152,46 @@ std::unique_ptr SystemInfo::CreateScreen3() { (int)mon.free_biggest_size, 0 ); - - return std::unique_ptr(new Screens::Label(2, 4, app, label)); + lv_obj_align(label, lv_scr_act(), LV_ALIGN_CENTER, 0, 0); + return std::unique_ptr(new Screens::Label(2, 5, app, label)); } + +bool sortById(const TaskStatus_t &lhs, const TaskStatus_t &rhs) { return lhs.xTaskNumber < rhs.xTaskNumber; } + std::unique_ptr SystemInfo::CreateScreen4() { - CreateContainer(); - lv_obj_t * label = lv_label_create(container1, nullptr); + TaskStatus_t tasksStatus[7]; + lv_obj_t * infoTask = lv_table_create(lv_scr_act(), NULL); + lv_table_set_col_cnt(infoTask, 3); + lv_table_set_row_cnt(infoTask, 8); + lv_obj_set_pos(infoTask, 10, 10); + + lv_table_set_cell_value(infoTask, 0, 0, "#"); + lv_table_set_col_width(infoTask, 0, 50); + lv_table_set_cell_value(infoTask, 0, 1, "Task"); + lv_table_set_col_width(infoTask, 1, 80); + lv_table_set_cell_value(infoTask, 0, 2, "Free"); + lv_table_set_col_width(infoTask, 2, 90); + + auto nb = uxTaskGetSystemState(tasksStatus, 7, nullptr); + std::sort(tasksStatus, tasksStatus + nb, sortById); + for (uint8_t i = 0; i < nb; i++) { + + lv_table_set_cell_value(infoTask, i + 1, 0, std::to_string(tasksStatus[i].xTaskNumber).c_str()); + lv_table_set_cell_value(infoTask, i + 1, 1, tasksStatus[i].pcTaskName); + if (tasksStatus[i].usStackHighWaterMark < 20) { + std::string str1 = std::to_string(tasksStatus[i].usStackHighWaterMark) + " low"; + lv_table_set_cell_value(infoTask, i + 1, 2, str1.c_str()); + } else { + lv_table_set_cell_value(infoTask, i + 1, 2, std::to_string(tasksStatus[i].usStackHighWaterMark).c_str()); + } + + } + return std::unique_ptr(new Screens::Label(3, 5, app, infoTask)); +} + +std::unique_ptr SystemInfo::CreateScreen5() { + lv_obj_t * label = lv_label_create(lv_scr_act(), nullptr); lv_label_set_recolor(label, true); lv_label_set_text_static(label, "Software Licensed\n" @@ -186,5 +202,6 @@ std::unique_ptr SystemInfo::CreateScreen4() { "#FFFF00 https://github.com/#\n" "#FFFF00 JF002/InfiniTime#"); lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); - return std::unique_ptr(new Screens::Label(3, 4, app, label)); + lv_obj_align(label, lv_scr_act(), LV_ALIGN_CENTER, 0, 0); + return std::unique_ptr(new Screens::Label(4, 5, app, label)); } \ No newline at end of file diff --git a/src/displayapp/screens/SystemInfo.h b/src/displayapp/screens/SystemInfo.h index 574ded74..f5f50a42 100644 --- a/src/displayapp/screens/SystemInfo.h +++ b/src/displayapp/screens/SystemInfo.h @@ -35,21 +35,19 @@ namespace Pinetime { private: bool running = true; - lv_obj_t* container1; - Pinetime::Controllers::DateTime& dateTimeController; Pinetime::Controllers::Battery& batteryController; Pinetime::Controllers::BrightnessController& brightnessController; Pinetime::Controllers::Ble& bleController; Pinetime::Drivers::WatchdogView& watchdog; - ScreenList<4> screens; + ScreenList<5> screens; std::unique_ptr CreateScreen1(); std::unique_ptr CreateScreen2(); std::unique_ptr CreateScreen3(); std::unique_ptr CreateScreen4(); + std::unique_ptr CreateScreen5(); - void CreateContainer(); }; } } diff --git a/src/displayapp/screens/Tasks.cpp b/src/displayapp/screens/Tasks.cpp deleted file mode 100644 index 7bd6c09d..00000000 --- a/src/displayapp/screens/Tasks.cpp +++ /dev/null @@ -1,77 +0,0 @@ -#include -#include -#include "Tasks.h" -#include -#include "../DisplayApp.h" -#include -#include - -using namespace Pinetime::Applications::Screens; - -static void lv_update_task(struct _lv_task_t *task) { - auto user_data = static_cast(task->user_data); - user_data->UpdateScreen(); -} - -Tasks::Tasks( - Pinetime::Applications::DisplayApp *app) : - Screen(app) -{ - - table = lv_table_create(lv_scr_act(), NULL); - lv_table_set_col_cnt(table, 3); - lv_table_set_row_cnt(table, 8); - //lv_obj_align(table, NULL, LV_ALIGN_CENTER, 0, 0); - lv_obj_set_size(table, 240, 240); - lv_obj_set_pos(table, 0, 0); - - /*lv_table_set_cell_type(table, 0, 0, 1); - lv_table_set_cell_type(table, 0, 1, 1); - lv_table_set_cell_type(table, 0, 2, 1); - lv_table_set_cell_type(table, 0, 3, 1);*/ - - lv_table_set_cell_value(table, 0, 0, "#"); - lv_table_set_col_width(table, 0, 50); - lv_table_set_cell_value(table, 0, 1, "Task"); - lv_table_set_col_width(table, 1, 80); - lv_table_set_cell_value(table, 0, 2, "Free"); - lv_table_set_col_width(table, 2, 80); - - lv_obj_t * backgroundLabel = lv_label_create(lv_scr_act(), nullptr); - 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_static(backgroundLabel, ""); - - UpdateScreen(); - taskUpdate = lv_task_create(lv_update_task, 100000, LV_TASK_PRIO_LOW, this); - -} - -Tasks::~Tasks() { - lv_task_del(taskUpdate); - lv_obj_clean(lv_scr_act()); -} - -bool sortById(const TaskStatus_t &lhs, const TaskStatus_t &rhs) { return lhs.xTaskNumber < rhs.xTaskNumber; } - -void Tasks::UpdateScreen() { - auto nb = uxTaskGetSystemState(tasksStatus, 7, nullptr); - std::sort(tasksStatus, tasksStatus + nb, sortById); - for (uint8_t i = 0; i < nb; i++) { - - lv_table_set_cell_value(table, i + 1, 0, std::to_string(tasksStatus[i].xTaskNumber).c_str()); - lv_table_set_cell_value(table, i + 1, 1, tasksStatus[i].pcTaskName); - if (tasksStatus[i].usStackHighWaterMark < 20) { - std::string str1 = std::to_string(tasksStatus[i].usStackHighWaterMark) + " low"; - lv_table_set_cell_value(table, i + 1, 2, str1.c_str()); - } else { - lv_table_set_cell_value(table, i + 1, 2, std::to_string(tasksStatus[i].usStackHighWaterMark).c_str()); - } - - } -} - -bool Tasks::Refresh() { - return running; -} \ No newline at end of file diff --git a/src/displayapp/screens/Tasks.h b/src/displayapp/screens/Tasks.h deleted file mode 100644 index e9a49db4..00000000 --- a/src/displayapp/screens/Tasks.h +++ /dev/null @@ -1,31 +0,0 @@ -#pragma once -#include -#include -#include -#include -#include -#include "Screen.h" - -namespace Pinetime { - - namespace Applications { - namespace Screens { - - class Tasks : public Screen{ - public: - Tasks(DisplayApp* app); - ~Tasks() override; - - bool Refresh() override; - void UpdateScreen(); - - private: - mutable TaskStatus_t tasksStatus[7]; - - lv_task_t* taskUpdate; - lv_obj_t * table; - - }; - } - } -} diff --git a/src/displayapp/screens/WatchFaceDigital.cpp b/src/displayapp/screens/WatchFaceDigital.cpp index b1e21924..15f73e8b 100644 --- a/src/displayapp/screens/WatchFaceDigital.cpp +++ b/src/displayapp/screens/WatchFaceDigital.cpp @@ -228,10 +228,10 @@ bool WatchFaceDigital::Refresh() { heartbeatRunning = heartRateController.State() != Controllers::HeartRateController::States::Stopped; if(heartbeat.IsUpdated() || heartbeatRunning.IsUpdated()) { if(heartbeatRunning.Get()) - lv_label_set_text_fmt(heartbeatValue, "%d", heartbeat.Get()); + lv_label_set_text_fmt(heartbeatValue, "%d", heartbeat.Get()); else lv_label_set_text_static(heartbeatValue, "---"); - 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); @@ -241,7 +241,6 @@ bool WatchFaceDigital::Refresh() { motionSensorOk = motionController.IsSensorOk(); if(stepCount.IsUpdated() || motionSensorOk.IsUpdated()) { lv_label_set_text_fmt(stepValue, "%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); }