From 792b3229501e6edc69ea7514268cdc1ce8fee8d9 Mon Sep 17 00:00:00 2001 From: Finlay Davidson Date: Wed, 3 Aug 2022 21:04:25 +0200 Subject: [PATCH] screenlock: Add button to QuickSettings to disable touch panel --- src/CMakeLists.txt | 1 + src/displayapp/Apps.h | 1 + src/displayapp/DisplayApp.cpp | 23 +++++++++-- src/displayapp/fonts/fonts.json | 6 ++- src/displayapp/screens/ApplicationList.cpp | 5 ++- src/displayapp/screens/ApplicationList.h | 7 +++- src/displayapp/screens/Clock.cpp | 7 +++- src/displayapp/screens/Clock.h | 5 ++- .../screens/ScreenLockConfirmation.cpp | 41 +++++++++++++++++++ .../screens/ScreenLockConfirmation.h | 27 ++++++++++++ src/displayapp/screens/Symbols.h | 2 + src/displayapp/screens/Tile.cpp | 8 +++- src/displayapp/screens/Tile.h | 2 + src/displayapp/screens/WatchFaceDigital.cpp | 5 ++- src/displayapp/screens/WatchFaceDigital.h | 4 +- .../screens/settings/QuickSettings.cpp | 9 ++-- .../screens/settings/QuickSettings.h | 4 +- src/displayapp/widgets/StatusIcons.cpp | 11 ++++- src/displayapp/widgets/StatusIcons.h | 8 +++- src/touchhandler/TouchHandler.cpp | 2 +- src/touchhandler/TouchHandler.h | 8 ++++ 21 files changed, 161 insertions(+), 25 deletions(-) create mode 100644 src/displayapp/screens/ScreenLockConfirmation.cpp create mode 100644 src/displayapp/screens/ScreenLockConfirmation.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d903629b17..2dea40f71f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -405,6 +405,7 @@ list(APPEND SOURCE_FILES displayapp/screens/Error.cpp displayapp/screens/Alarm.cpp displayapp/screens/Styles.cpp + displayapp/screens/ScreenLockConfirmation.cpp displayapp/Colors.cpp displayapp/widgets/Counter.cpp displayapp/widgets/PageIndicator.cpp diff --git a/src/displayapp/Apps.h b/src/displayapp/Apps.h index f253bc0387..48a4b02921 100644 --- a/src/displayapp/Apps.h +++ b/src/displayapp/Apps.h @@ -25,6 +25,7 @@ namespace Pinetime { Metronome, Motion, Steps, + ScreenLockConfirmation, PassKey, QuickSettings, Settings, diff --git a/src/displayapp/DisplayApp.cpp b/src/displayapp/DisplayApp.cpp index a930fe961c..0d56061ff7 100644 --- a/src/displayapp/DisplayApp.cpp +++ b/src/displayapp/DisplayApp.cpp @@ -27,6 +27,7 @@ #include "displayapp/screens/FlashLight.h" #include "displayapp/screens/BatteryInfo.h" #include "displayapp/screens/Steps.h" +#include "displayapp/screens/ScreenLockConfirmation.h" #include "displayapp/screens/PassKey.h" #include "displayapp/screens/Error.h" #include "displayapp/screens/Weather.h" @@ -337,6 +338,11 @@ void DisplayApp::Refresh() { } break; case Messages::ButtonLongerPressed: + if (touchHandler.GetScreenLockStatus()) { + touchHandler.SetScreenLockStatus(false); + motorController.RunForDuration(50); + break; + } // Create reboot app and open it instead LoadNewScreen(Apps::SysInfo, DisplayApp::FullRefreshDirections::Up); break; @@ -403,8 +409,12 @@ void DisplayApp::LoadScreen(Apps app, DisplayApp::FullRefreshDirections directio switch (app) { case Apps::Launcher: - currentScreen = - std::make_unique(this, settingsController, batteryController, bleController, dateTimeController); + currentScreen = std::make_unique(this, + settingsController, + batteryController, + bleController, + dateTimeController, + touchHandler); break; case Apps::Motion: // currentScreen = std::make_unique(motionController); @@ -419,7 +429,8 @@ void DisplayApp::LoadScreen(Apps app, DisplayApp::FullRefreshDirections directio heartRateController, motionController, systemTask->nimble().weather(), - filesystem); + filesystem, + touchHandler); break; case Apps::Error: @@ -468,7 +479,8 @@ void DisplayApp::LoadScreen(Apps app, DisplayApp::FullRefreshDirections directio brightnessController, motorController, settingsController, - bleController); + bleController, + touchHandler); break; case Apps::Settings: currentScreen = std::make_unique(this, settingsController); @@ -548,6 +560,9 @@ void DisplayApp::LoadScreen(Apps app, DisplayApp::FullRefreshDirections directio case Apps::Steps: currentScreen = std::make_unique(motionController, settingsController); break; + case Apps::ScreenLockConfirmation: + currentScreen = std::make_unique(this, touchHandler); + break; } currentApp = app; } diff --git a/src/displayapp/fonts/fonts.json b/src/displayapp/fonts/fonts.json index e65f6dd44a..ad4cbefff5 100644 --- a/src/displayapp/fonts/fonts.json +++ b/src/displayapp/fonts/fonts.json @@ -8,6 +8,10 @@ { "file": "FontAwesome5-Solid+Brands+Regular.woff", "range": "0xf294, 0xf242, 0xf54b, 0xf21e, 0xf1e6, 0xf017, 0xf129, 0xf03a, 0xf185, 0xf560, 0xf001, 0xf3fd, 0xf1fc, 0xf45d, 0xf59f, 0xf5a0, 0xf027, 0xf028, 0xf6a9, 0xf04b, 0xf04c, 0xf048, 0xf051, 0xf095, 0xf3dd, 0xf04d, 0xf2f2, 0xf024, 0xf252, 0xf569, 0xf06e, 0xf015, 0xf00c" + }, + { + "file": "material-design-icons/MaterialIcons-Regular.ttf", + "range": "0xf00b, 0xe897" } ], "bpp": 1, @@ -58,7 +62,7 @@ "sources": [ { "file": "material-design-icons/MaterialIcons-Regular.ttf", - "range": "0xf00b, 0xe3aa-0xe3ac, 0xe7f6-0xe7f7, 0xe8b8, 0xef44, 0xe40a" + "range": "0xf00b, 0xe3aa-0xe3ac, 0xe7f6-0xe7f7, 0xe8b8, 0xef44, 0xe40a, 0xe897" } ], "bpp": 1, diff --git a/src/displayapp/screens/ApplicationList.cpp b/src/displayapp/screens/ApplicationList.cpp index 0a65a5d472..b6ca9c6aaa 100644 --- a/src/displayapp/screens/ApplicationList.cpp +++ b/src/displayapp/screens/ApplicationList.cpp @@ -22,12 +22,14 @@ ApplicationList::ApplicationList(Pinetime::Applications::DisplayApp* app, Pinetime::Controllers::Settings& settingsController, const Pinetime::Controllers::Battery& batteryController, const Pinetime::Controllers::Ble& bleController, - Controllers::DateTime& dateTimeController) + Controllers::DateTime& dateTimeController, + const Controllers::TouchHandler& touchHandler) : app {app}, settingsController {settingsController}, batteryController {batteryController}, bleController {bleController}, dateTimeController {dateTimeController}, + touchHandler {touchHandler}, screens {app, settingsController.GetAppMenu(), CreateScreenList(), Screens::ScreenListModes::UpDown} { } @@ -52,5 +54,6 @@ std::unique_ptr ApplicationList::CreateScreen(unsigned int screenNum) co batteryController, bleController, dateTimeController, + touchHandler, apps); } diff --git a/src/displayapp/screens/ApplicationList.h b/src/displayapp/screens/ApplicationList.h index 7bdd115408..259e353fe9 100644 --- a/src/displayapp/screens/ApplicationList.h +++ b/src/displayapp/screens/ApplicationList.h @@ -10,6 +10,7 @@ #include "components/battery/BatteryController.h" #include "displayapp/screens/Symbols.h" #include "displayapp/screens/Tile.h" +#include "touchhandler/TouchHandler.h" namespace Pinetime { namespace Applications { @@ -20,7 +21,8 @@ namespace Pinetime { Pinetime::Controllers::Settings& settingsController, const Pinetime::Controllers::Battery& batteryController, const Pinetime::Controllers::Ble& bleController, - Controllers::DateTime& dateTimeController); + Controllers::DateTime& dateTimeController, + const Controllers::TouchHandler& touchHandler); ~ApplicationList() override; bool OnTouchEvent(TouchEvents event) override; @@ -33,6 +35,7 @@ namespace Pinetime { const Pinetime::Controllers::Battery& batteryController; const Pinetime::Controllers::Ble& bleController; Controllers::DateTime& dateTimeController; + const Controllers::TouchHandler& touchHandler; static constexpr int appsPerScreen = 6; @@ -52,7 +55,7 @@ namespace Pinetime { {"2", Apps::Twos}, {Symbols::drum, Apps::Metronome}, {Symbols::map, Apps::Navigation}, - {Symbols::none, Apps::None}, + {Symbols::flashlight, Apps::FlashLight}, // {"M", Apps::Motion}, }}; diff --git a/src/displayapp/screens/Clock.cpp b/src/displayapp/screens/Clock.cpp index 4219b090db..148bafb2ac 100644 --- a/src/displayapp/screens/Clock.cpp +++ b/src/displayapp/screens/Clock.cpp @@ -25,7 +25,8 @@ Clock::Clock(Controllers::DateTime& dateTimeController, Controllers::HeartRateController& heartRateController, Controllers::MotionController& motionController, Controllers::WeatherService& weatherService, - Controllers::FS& filesystem) + Controllers::FS& filesystem, + const Controllers::TouchHandler& touchHandler) : dateTimeController {dateTimeController}, batteryController {batteryController}, bleController {bleController}, @@ -35,6 +36,7 @@ Clock::Clock(Controllers::DateTime& dateTimeController, motionController {motionController}, weatherService {weatherService}, filesystem {filesystem}, + touchHandler {touchHandler}, screen {[this, &settingsController]() { switch (settingsController.GetWatchFace()) { case WatchFace::Digital: @@ -80,7 +82,8 @@ std::unique_ptr Clock::WatchFaceDigitalScreen() { notificationManager, settingsController, heartRateController, - motionController); + motionController, + touchHandler); } std::unique_ptr Clock::WatchFaceAnalogScreen() { diff --git a/src/displayapp/screens/Clock.h b/src/displayapp/screens/Clock.h index f3591f43c6..0faa023496 100644 --- a/src/displayapp/screens/Clock.h +++ b/src/displayapp/screens/Clock.h @@ -8,6 +8,7 @@ #include "displayapp/screens/Screen.h" #include "components/datetime/DateTimeController.h" #include "components/ble/weather/WeatherService.h" +#include "touchhandler/TouchHandler.h" namespace Pinetime { namespace Controllers { @@ -30,7 +31,8 @@ namespace Pinetime { Controllers::HeartRateController& heartRateController, Controllers::MotionController& motionController, Controllers::WeatherService& weatherService, - Controllers::FS& filesystem); + Controllers::FS& filesystem, + const Controllers::TouchHandler& touchHandler); ~Clock() override; bool OnTouchEvent(TouchEvents event) override; @@ -46,6 +48,7 @@ namespace Pinetime { Controllers::MotionController& motionController; Controllers::WeatherService& weatherService; Controllers::FS& filesystem; + const Controllers::TouchHandler& touchHandler; std::unique_ptr screen; std::unique_ptr WatchFaceDigitalScreen(); diff --git a/src/displayapp/screens/ScreenLockConfirmation.cpp b/src/displayapp/screens/ScreenLockConfirmation.cpp new file mode 100644 index 0000000000..43dcf11261 --- /dev/null +++ b/src/displayapp/screens/ScreenLockConfirmation.cpp @@ -0,0 +1,41 @@ +#include "displayapp/screens/ScreenLockConfirmation.h" + +#include "displayapp/DisplayApp.h" + +using namespace Pinetime::Applications::Screens; + +namespace { + void ButtonEventHandler(lv_obj_t* obj, lv_event_t event) { + if (event == LV_EVENT_CLICKED) { + static_cast(obj->user_data)->OnButtonEvent(obj); + } + } +} + +ScreenLockConfirmation::ScreenLockConfirmation(DisplayApp* app, Controllers::TouchHandler& touchHandler) + : app {app}, touchHandler {touchHandler} { + label = lv_label_create(lv_scr_act(), nullptr); + lv_label_set_recolor(label, true); + lv_label_set_text_static(label, "\n#FFFF00 Disable touch?#\n\n\n#808080 Press and hold#\n#808080 button to enable.#"); + lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); + lv_obj_align(label, lv_scr_act(), LV_ALIGN_IN_TOP_MID, 0, 0); + + btnEnable = lv_btn_create(lv_scr_act(), nullptr); + btnEnable->user_data = this; + lv_obj_set_event_cb(btnEnable, ButtonEventHandler); + lv_obj_set_size(btnEnable, 115, 50); + lv_obj_align(btnEnable, lv_scr_act(), LV_ALIGN_IN_BOTTOM_MID, 0, 0); + txtEnable = lv_label_create(btnEnable, nullptr); + lv_label_set_text_static(txtEnable, "Disable"); +} + +ScreenLockConfirmation::~ScreenLockConfirmation() { + lv_obj_clean(lv_scr_act()); +} + +void ScreenLockConfirmation::OnButtonEvent(lv_obj_t* obj) { + if (obj == btnEnable) { + touchHandler.SetScreenLockStatus(true); + app->StartApp(Apps::Clock, DisplayApp::FullRefreshDirections::LeftAnim); + } +} diff --git a/src/displayapp/screens/ScreenLockConfirmation.h b/src/displayapp/screens/ScreenLockConfirmation.h new file mode 100644 index 0000000000..f657181708 --- /dev/null +++ b/src/displayapp/screens/ScreenLockConfirmation.h @@ -0,0 +1,27 @@ +#pragma once + +#include "displayapp/screens/Screen.h" +#include +#include "touchhandler/TouchHandler.h" + +namespace Pinetime { + namespace Applications { + namespace Screens { + class ScreenLockConfirmation : public Screen { + public: + ScreenLockConfirmation(DisplayApp* app, Controllers::TouchHandler& touchHandler); + ~ScreenLockConfirmation() override; + + void OnButtonEvent(lv_obj_t* obj); + + private: + DisplayApp* app; + lv_obj_t* label; + lv_obj_t* btnEnable; + lv_obj_t* txtEnable; + + Controllers::TouchHandler& touchHandler; + }; + } + } +} diff --git a/src/displayapp/screens/Symbols.h b/src/displayapp/screens/Symbols.h index 7154ff44c1..08950025e4 100644 --- a/src/displayapp/screens/Symbols.h +++ b/src/displayapp/screens/Symbols.h @@ -57,6 +57,8 @@ namespace Pinetime { static constexpr const char* notificationsOff = "\xEE\x9F\xB6"; static constexpr const char* notificationsOn = "\xEE\x9F\xB7"; + static constexpr const char* lock = "\xEE\xA2\x97"; + static constexpr const char* flashlight = "\xEF\x80\x8B"; static constexpr const char* paintbrushLg = "\xEE\x90\x8A"; } diff --git a/src/displayapp/screens/Tile.cpp b/src/displayapp/screens/Tile.cpp index 1266f379f8..f45162330d 100644 --- a/src/displayapp/screens/Tile.cpp +++ b/src/displayapp/screens/Tile.cpp @@ -18,7 +18,7 @@ namespace { } Tile* screen = static_cast(obj->user_data); - auto* eventDataPtr = (uint32_t*) lv_event_get_data(); + auto* eventDataPtr = static_cast(lv_event_get_data()); uint32_t eventData = *eventDataPtr; screen->OnValueChangedEvent(obj, eventData); } @@ -31,8 +31,12 @@ Tile::Tile(uint8_t screenID, const Controllers::Battery& batteryController, const Controllers::Ble& bleController, Controllers::DateTime& dateTimeController, + const Controllers::TouchHandler& touchHandler, std::array& applications) - : app {app}, dateTimeController {dateTimeController}, pageIndicator(screenID, numScreens), statusIcons(batteryController, bleController) { + : app {app}, + dateTimeController {dateTimeController}, + pageIndicator(screenID, numScreens), + statusIcons(batteryController, bleController, touchHandler) { settingsController.SetAppMenu(screenID); diff --git a/src/displayapp/screens/Tile.h b/src/displayapp/screens/Tile.h index 91acb26c7b..dc9a73e38e 100644 --- a/src/displayapp/screens/Tile.h +++ b/src/displayapp/screens/Tile.h @@ -10,6 +10,7 @@ #include "components/battery/BatteryController.h" #include "displayapp/widgets/PageIndicator.h" #include "displayapp/widgets/StatusIcons.h" +#include "touchhandler/TouchHandler.h" namespace Pinetime { namespace Applications { @@ -28,6 +29,7 @@ namespace Pinetime { const Controllers::Battery& batteryController, const Controllers::Ble& bleController, Controllers::DateTime& dateTimeController, + const Controllers::TouchHandler& touchHandler, std::array& applications); ~Tile() override; diff --git a/src/displayapp/screens/WatchFaceDigital.cpp b/src/displayapp/screens/WatchFaceDigital.cpp index ca53691b12..7352205b86 100644 --- a/src/displayapp/screens/WatchFaceDigital.cpp +++ b/src/displayapp/screens/WatchFaceDigital.cpp @@ -19,14 +19,15 @@ WatchFaceDigital::WatchFaceDigital(Controllers::DateTime& dateTimeController, Controllers::NotificationManager& notificationManager, Controllers::Settings& settingsController, Controllers::HeartRateController& heartRateController, - Controllers::MotionController& motionController) + Controllers::MotionController& motionController, + const Controllers::TouchHandler& touchHandler) : currentDateTime {{}}, dateTimeController {dateTimeController}, notificationManager {notificationManager}, settingsController {settingsController}, heartRateController {heartRateController}, motionController {motionController}, - statusIcons(batteryController, bleController) { + statusIcons(batteryController, bleController, touchHandler) { statusIcons.Create(); diff --git a/src/displayapp/screens/WatchFaceDigital.h b/src/displayapp/screens/WatchFaceDigital.h index f2409880e9..32f4b8cf8d 100644 --- a/src/displayapp/screens/WatchFaceDigital.h +++ b/src/displayapp/screens/WatchFaceDigital.h @@ -8,6 +8,7 @@ #include "components/datetime/DateTimeController.h" #include "components/ble/BleController.h" #include "displayapp/widgets/StatusIcons.h" +#include "touchhandler/TouchHandler.h" #include "utility/DirtyValue.h" namespace Pinetime { @@ -31,7 +32,8 @@ namespace Pinetime { Controllers::NotificationManager& notificationManager, Controllers::Settings& settingsController, Controllers::HeartRateController& heartRateController, - Controllers::MotionController& motionController); + Controllers::MotionController& motionController, + const Controllers::TouchHandler& touchHandler); ~WatchFaceDigital() override; void Refresh() override; diff --git a/src/displayapp/screens/settings/QuickSettings.cpp b/src/displayapp/screens/settings/QuickSettings.cpp index 0548488855..d7e242c8fe 100644 --- a/src/displayapp/screens/settings/QuickSettings.cpp +++ b/src/displayapp/screens/settings/QuickSettings.cpp @@ -33,13 +33,14 @@ QuickSettings::QuickSettings(Pinetime::Applications::DisplayApp* app, Controllers::BrightnessController& brightness, Controllers::MotorController& motorController, Pinetime::Controllers::Settings& settingsController, - const Controllers::Ble& bleController) + const Controllers::Ble& bleController, + const Controllers::TouchHandler& touchHandler) : app {app}, dateTimeController {dateTimeController}, brightness {brightness}, motorController {motorController}, settingsController {settingsController}, - statusIcons(batteryController, bleController) { + statusIcons(batteryController, bleController, touchHandler) { statusIcons.Create(); @@ -82,7 +83,7 @@ QuickSettings::QuickSettings(Pinetime::Applications::DisplayApp* app, lv_obj_t* lbl_btn; lbl_btn = lv_label_create(btn2, nullptr); lv_obj_set_style_local_text_font(lbl_btn, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &lv_font_sys_48); - lv_label_set_text_static(lbl_btn, Symbols::flashlight); + lv_label_set_text_static(lbl_btn, Symbols::lock); btn3 = lv_btn_create(lv_scr_act(), nullptr); btn3->user_data = this; @@ -137,7 +138,7 @@ void QuickSettings::UpdateScreen() { void QuickSettings::OnButtonEvent(lv_obj_t* object) { if (object == btn2) { - app->StartApp(Apps::FlashLight, DisplayApp::FullRefreshDirections::Up); + app->StartApp(Apps::ScreenLockConfirmation, DisplayApp::FullRefreshDirections::Up); } else if (object == btn1) { brightness.Step(); diff --git a/src/displayapp/screens/settings/QuickSettings.h b/src/displayapp/screens/settings/QuickSettings.h index 55da617629..663bbd3568 100644 --- a/src/displayapp/screens/settings/QuickSettings.h +++ b/src/displayapp/screens/settings/QuickSettings.h @@ -9,6 +9,7 @@ #include "components/settings/Settings.h" #include "components/battery/BatteryController.h" #include "displayapp/widgets/StatusIcons.h" +#include "touchhandler/TouchHandler.h" namespace Pinetime { @@ -23,7 +24,8 @@ namespace Pinetime { Controllers::BrightnessController& brightness, Controllers::MotorController& motorController, Pinetime::Controllers::Settings& settingsController, - const Controllers::Ble& bleController); + const Controllers::Ble& bleController, + const Controllers::TouchHandler& touchHandler); ~QuickSettings() override; diff --git a/src/displayapp/widgets/StatusIcons.cpp b/src/displayapp/widgets/StatusIcons.cpp index 423b53d97a..10d05365ff 100644 --- a/src/displayapp/widgets/StatusIcons.cpp +++ b/src/displayapp/widgets/StatusIcons.cpp @@ -3,8 +3,10 @@ using namespace Pinetime::Applications::Widgets; -StatusIcons::StatusIcons(const Controllers::Battery& batteryController, const Controllers::Ble& bleController) - : batteryIcon(true), batteryController {batteryController}, bleController {bleController} { +StatusIcons::StatusIcons(const Controllers::Battery& batteryController, + const Controllers::Ble& bleController, + const Controllers::TouchHandler& touchHandler) + : batteryIcon(true), batteryController {batteryController}, bleController {bleController}, touchHandler {touchHandler} { } void StatusIcons::Create() { @@ -14,6 +16,9 @@ void StatusIcons::Create() { lv_obj_set_style_local_pad_inner(container, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, 5); lv_obj_set_style_local_bg_opa(container, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_TRANSP); + screenLockIcon = lv_label_create(container, nullptr); + lv_label_set_text_static(screenLockIcon, Screens::Symbols::lock); + bleIcon = lv_label_create(container, nullptr); lv_label_set_text_static(bleIcon, Screens::Symbols::bluetooth); @@ -26,6 +31,8 @@ void StatusIcons::Create() { } void StatusIcons::Update() { + lv_obj_set_hidden(screenLockIcon, !touchHandler.GetScreenLockStatus()); + powerPresent = batteryController.IsPowerPresent(); if (powerPresent.IsUpdated()) { lv_obj_set_hidden(batteryPlug, !powerPresent.Get()); diff --git a/src/displayapp/widgets/StatusIcons.h b/src/displayapp/widgets/StatusIcons.h index 9e21d3add0..915c96052f 100644 --- a/src/displayapp/widgets/StatusIcons.h +++ b/src/displayapp/widgets/StatusIcons.h @@ -5,7 +5,9 @@ #include "displayapp/screens/Screen.h" #include "components/battery/BatteryController.h" #include "components/ble/BleController.h" +#include "components/settings/Settings.h" #include "displayapp/screens/BatteryIcon.h" +#include "touchhandler/TouchHandler.h" #include "utility/DirtyValue.h" namespace Pinetime { @@ -13,7 +15,9 @@ namespace Pinetime { namespace Widgets { class StatusIcons { public: - StatusIcons(const Controllers::Battery& batteryController, const Controllers::Ble& bleController); + StatusIcons(const Controllers::Battery& batteryController, + const Controllers::Ble& bleController, + const Controllers::TouchHandler& touchHandler); void Align(); void Create(); @@ -27,12 +31,14 @@ namespace Pinetime { Screens::BatteryIcon batteryIcon; const Pinetime::Controllers::Battery& batteryController; const Controllers::Ble& bleController; + const Controllers::TouchHandler& touchHandler; Utility::DirtyValue batteryPercentRemaining {}; Utility::DirtyValue powerPresent {}; Utility::DirtyValue bleState {}; Utility::DirtyValue bleRadioEnabled {}; + lv_obj_t* screenLockIcon; lv_obj_t* bleIcon; lv_obj_t* batteryPlug; lv_obj_t* container; diff --git a/src/touchhandler/TouchHandler.cpp b/src/touchhandler/TouchHandler.cpp index b29f951fcb..c1d3ec9f04 100644 --- a/src/touchhandler/TouchHandler.cpp +++ b/src/touchhandler/TouchHandler.cpp @@ -34,7 +34,7 @@ Pinetime::Applications::TouchEvents TouchHandler::GestureGet() { } bool TouchHandler::ProcessTouchInfo(Drivers::Cst816S::TouchInfos info) { - if (!info.isValid) { + if (!info.isValid || screenLock) { return false; } diff --git a/src/touchhandler/TouchHandler.h b/src/touchhandler/TouchHandler.h index a44822552d..79135c73b0 100644 --- a/src/touchhandler/TouchHandler.h +++ b/src/touchhandler/TouchHandler.h @@ -26,12 +26,20 @@ namespace Pinetime { return currentTouchPoint.y; } + bool GetScreenLockStatus() const { + return screenLock; + } + + void SetScreenLockStatus(bool screenLock) { + this->screenLock = screenLock; + } Pinetime::Applications::TouchEvents GestureGet(); private: Pinetime::Applications::TouchEvents gesture; TouchPoint currentTouchPoint = {}; bool gestureReleased = true; + bool screenLock = false; }; } }