From cd4a3e1dfef7d9803aa726ef4c177a6d7d5e876d Mon Sep 17 00:00:00 2001 From: Joaquim Date: Mon, 19 Apr 2021 15:28:38 +0100 Subject: New Steps app Settings to set the steps goal More detail in Motion app New 42px Font --- src/displayapp/screens/settings/SettingSteps.cpp | 102 +++++++++++++++++++++++ src/displayapp/screens/settings/SettingSteps.h | 32 +++++++ src/displayapp/screens/settings/Settings.cpp | 2 +- 3 files changed, 135 insertions(+), 1 deletion(-) create mode 100644 src/displayapp/screens/settings/SettingSteps.cpp create mode 100644 src/displayapp/screens/settings/SettingSteps.h (limited to 'src/displayapp/screens/settings') diff --git a/src/displayapp/screens/settings/SettingSteps.cpp b/src/displayapp/screens/settings/SettingSteps.cpp new file mode 100644 index 00000000..8bd94fc6 --- /dev/null +++ b/src/displayapp/screens/settings/SettingSteps.cpp @@ -0,0 +1,102 @@ +#include "SettingSteps.h" +#include +#include "displayapp/DisplayApp.h" +#include "displayapp/screens/Symbols.h" + +using namespace Pinetime::Applications::Screens; + +namespace { + static void event_handler(lv_obj_t * obj, lv_event_t event) { + SettingSteps* screen = static_cast(obj->user_data); + screen->UpdateSelected(obj, event); + } +} + +SettingSteps::SettingSteps( + Pinetime::Applications::DisplayApp *app, Pinetime::Controllers::Settings &settingsController) : + Screen(app), + settingsController{settingsController} +{ + + lv_obj_t * container1 = lv_cont_create(lv_scr_act(), nullptr); + + //lv_obj_set_style_local_bg_color(container1, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x111111)); + 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, 30, 60); + lv_obj_set_width(container1, LV_HOR_RES - 50); + lv_obj_set_height(container1, LV_VER_RES - 60); + //lv_obj_set_auto_realign(container1, true); + //lv_obj_align_origo(container1, NULL, LV_ALIGN_CENTER, 0, 0); + //lv_cont_set_fit(container1, LV_FIT_MAX); + lv_cont_set_layout(container1, LV_LAYOUT_COLUMN_LEFT); + + lv_obj_t * title = lv_label_create(lv_scr_act(), NULL); + lv_label_set_text_static(title,"Daily steps goal"); + lv_label_set_align(title, LV_LABEL_ALIGN_CENTER); + lv_obj_align(title, lv_scr_act(), LV_ALIGN_IN_TOP_MID, 15, 15); + + lv_obj_t * icon = lv_label_create(lv_scr_act(), NULL); + lv_obj_set_style_local_text_color(icon, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_ORANGE); + + lv_label_set_text_static(icon, Symbols::shoe); + lv_label_set_align(icon, LV_LABEL_ALIGN_CENTER); + lv_obj_align(icon, title, LV_ALIGN_OUT_LEFT_MID, -10, 0); + + + stepValue = lv_label_create(lv_scr_act(), NULL); + lv_obj_set_style_local_text_font(stepValue, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &jetbrains_mono_42); + lv_label_set_text_fmt(stepValue,"%i", settingsController.GetStepsGoal()); + lv_label_set_align(stepValue, LV_LABEL_ALIGN_CENTER); + lv_obj_align(stepValue, lv_scr_act(), LV_ALIGN_CENTER, 0, 0); + + btnPlus = lv_btn_create(lv_scr_act(), NULL); + btnPlus->user_data = this; + lv_obj_set_size(btnPlus, 60, 40); + lv_obj_align(btnPlus, lv_scr_act(), LV_ALIGN_CENTER, 50, 80); + lv_obj_set_style_local_value_str(btnPlus, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, "+"); + lv_obj_set_event_cb(btnPlus, event_handler); + + btnMinus = lv_btn_create(lv_scr_act(), NULL); + btnMinus->user_data = this; + lv_obj_set_size(btnMinus, 60, 40); + lv_obj_set_event_cb(btnMinus, event_handler); + lv_obj_align(btnMinus, lv_scr_act(), LV_ALIGN_CENTER, -50, 80); + lv_obj_set_style_local_value_str(btnMinus, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, "-"); + + +} + +SettingSteps::~SettingSteps() { + lv_obj_clean(lv_scr_act()); + settingsController.SaveSettings(); +} + +bool SettingSteps::Refresh() { + return running; +} + + +void SettingSteps::UpdateSelected(lv_obj_t *object, lv_event_t event) { + uint32_t value = settingsController.GetStepsGoal(); + if(object == btnPlus && (event == LV_EVENT_PRESSED)) { + value += 1000; + if ( value <= 500000 ) { + settingsController.SetStepsGoal(value); + lv_label_set_text_fmt(stepValue,"%i", settingsController.GetStepsGoal()); + lv_obj_align(stepValue, lv_scr_act(), LV_ALIGN_CENTER, 0, 0); + } + } + + if(object == btnMinus && (event == LV_EVENT_PRESSED)) { + value -= 1000; + if ( value >= 1000 ) { + settingsController.SetStepsGoal(value); + lv_label_set_text_fmt(stepValue,"%i", settingsController.GetStepsGoal()); + lv_obj_align(stepValue, lv_scr_act(), LV_ALIGN_CENTER, 0, 0); + } + } + +} \ No newline at end of file diff --git a/src/displayapp/screens/settings/SettingSteps.h b/src/displayapp/screens/settings/SettingSteps.h new file mode 100644 index 00000000..0a4c2056 --- /dev/null +++ b/src/displayapp/screens/settings/SettingSteps.h @@ -0,0 +1,32 @@ +#pragma once + +#include +#include +#include "components/settings/Settings.h" +#include "displayapp/screens/Screen.h" + +namespace Pinetime { + + namespace Applications { + namespace Screens { + + class SettingSteps : public Screen{ + public: + SettingSteps(DisplayApp* app, Pinetime::Controllers::Settings &settingsController); + ~SettingSteps() override; + + bool Refresh() override; + void UpdateSelected(lv_obj_t *object, lv_event_t event); + + private: + + Controllers::Settings& settingsController; + + lv_obj_t * stepValue; + lv_obj_t * btnPlus; + lv_obj_t * btnMinus; + + }; + } + } +} diff --git a/src/displayapp/screens/settings/Settings.cpp b/src/displayapp/screens/settings/Settings.cpp index b2825915..06776525 100644 --- a/src/displayapp/screens/settings/Settings.cpp +++ b/src/displayapp/screens/settings/Settings.cpp @@ -57,10 +57,10 @@ std::unique_ptr Settings::CreateScreen2() { std::array applications { { + {Symbols::shoe, "Steps", Apps::SettingSteps}, {Symbols::batteryHalf, "Battery", Apps::BatteryInfo}, {Symbols::check, "Firmware", Apps::FirmwareValidation}, {Symbols::list, "About", Apps::SysInfo}, - {"", "", Apps::None}, } }; -- cgit v1.2.3 From 5fc07a8df7d18d1fa9c4971f2c7b69ea68db559b Mon Sep 17 00:00:00 2001 From: Joaquim Date: Tue, 20 Apr 2021 16:21:01 +0100 Subject: Fix button size and default step goal --- src/components/settings/Settings.h | 2 +- src/displayapp/screens/settings/SettingSteps.cpp | 18 +++++++----------- 2 files changed, 8 insertions(+), 12 deletions(-) (limited to 'src/displayapp/screens/settings') diff --git a/src/components/settings/Settings.h b/src/components/settings/Settings.h index f444cdc6..1c412d24 100644 --- a/src/components/settings/Settings.h +++ b/src/components/settings/Settings.h @@ -76,7 +76,7 @@ namespace Pinetime { uint8_t clockFace = 0; - uint32_t stepsGoal = 1000; + uint32_t stepsGoal = 10000; uint32_t screenTimeOut = 15000; WakeUpMode wakeUpMode = WakeUpMode::None; diff --git a/src/displayapp/screens/settings/SettingSteps.cpp b/src/displayapp/screens/settings/SettingSteps.cpp index 8bd94fc6..b7c024f1 100644 --- a/src/displayapp/screens/settings/SettingSteps.cpp +++ b/src/displayapp/screens/settings/SettingSteps.cpp @@ -28,9 +28,6 @@ SettingSteps::SettingSteps( lv_obj_set_pos(container1, 30, 60); lv_obj_set_width(container1, LV_HOR_RES - 50); lv_obj_set_height(container1, LV_VER_RES - 60); - //lv_obj_set_auto_realign(container1, true); - //lv_obj_align_origo(container1, NULL, LV_ALIGN_CENTER, 0, 0); - //lv_cont_set_fit(container1, LV_FIT_MAX); lv_cont_set_layout(container1, LV_LAYOUT_COLUMN_LEFT); lv_obj_t * title = lv_label_create(lv_scr_act(), NULL); @@ -50,23 +47,22 @@ SettingSteps::SettingSteps( lv_obj_set_style_local_text_font(stepValue, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &jetbrains_mono_42); lv_label_set_text_fmt(stepValue,"%i", settingsController.GetStepsGoal()); lv_label_set_align(stepValue, LV_LABEL_ALIGN_CENTER); - lv_obj_align(stepValue, lv_scr_act(), LV_ALIGN_CENTER, 0, 0); + lv_obj_align(stepValue, lv_scr_act(), LV_ALIGN_CENTER, 0, -10); btnPlus = lv_btn_create(lv_scr_act(), NULL); btnPlus->user_data = this; - lv_obj_set_size(btnPlus, 60, 40); - lv_obj_align(btnPlus, lv_scr_act(), LV_ALIGN_CENTER, 50, 80); + lv_obj_set_size(btnPlus, 80, 50); + lv_obj_align(btnPlus, lv_scr_act(), LV_ALIGN_CENTER, 55, 80); lv_obj_set_style_local_value_str(btnPlus, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, "+"); lv_obj_set_event_cb(btnPlus, event_handler); btnMinus = lv_btn_create(lv_scr_act(), NULL); btnMinus->user_data = this; - lv_obj_set_size(btnMinus, 60, 40); + lv_obj_set_size(btnMinus, 80, 50); lv_obj_set_event_cb(btnMinus, event_handler); - lv_obj_align(btnMinus, lv_scr_act(), LV_ALIGN_CENTER, -50, 80); + lv_obj_align(btnMinus, lv_scr_act(), LV_ALIGN_CENTER, -55, 80); lv_obj_set_style_local_value_str(btnMinus, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, "-"); - } SettingSteps::~SettingSteps() { @@ -86,7 +82,7 @@ void SettingSteps::UpdateSelected(lv_obj_t *object, lv_event_t event) { if ( value <= 500000 ) { settingsController.SetStepsGoal(value); lv_label_set_text_fmt(stepValue,"%i", settingsController.GetStepsGoal()); - lv_obj_align(stepValue, lv_scr_act(), LV_ALIGN_CENTER, 0, 0); + lv_obj_align(stepValue, lv_scr_act(), LV_ALIGN_CENTER, 0, -10); } } @@ -95,7 +91,7 @@ void SettingSteps::UpdateSelected(lv_obj_t *object, lv_event_t event) { if ( value >= 1000 ) { settingsController.SetStepsGoal(value); lv_label_set_text_fmt(stepValue,"%i", settingsController.GetStepsGoal()); - lv_obj_align(stepValue, lv_scr_act(), LV_ALIGN_CENTER, 0, 0); + lv_obj_align(stepValue, lv_scr_act(), LV_ALIGN_CENTER, 0, -10); } } -- cgit v1.2.3