diff options
Diffstat (limited to 'src/displayapp/DisplayApp.cpp')
-rw-r--r-- | src/displayapp/DisplayApp.cpp | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/src/displayapp/DisplayApp.cpp b/src/displayapp/DisplayApp.cpp index 411497e6..29684466 100644 --- a/src/displayapp/DisplayApp.cpp +++ b/src/displayapp/DisplayApp.cpp @@ -129,6 +129,10 @@ void DisplayApp::InitHw() { } void DisplayApp::Refresh() { + auto LoadPreviousScreen = [this]() { + LoadApp(returnToApp, returnDirection); + }; + TickType_t queueTimeout; switch (state) { case States::Idle: @@ -136,7 +140,7 @@ void DisplayApp::Refresh() { break; case States::Running: if (!currentScreen->IsRunning()) { - LoadApp(returnToApp, returnDirection); + LoadPreviousScreen(); } queueTimeout = lv_task_handler(); break; @@ -149,12 +153,10 @@ void DisplayApp::Refresh() { if (xQueueReceive(msgQueue, &msg, queueTimeout)) { switch (msg) { case Messages::DimScreen: - // Backup brightness is the brightness to return to after dimming or sleeping - brightnessController.Backup(); brightnessController.Set(Controllers::BrightnessController::Levels::Low); break; case Messages::RestoreBrightness: - brightnessController.Restore(); + brightnessController.Set(settingsController.GetBrightness()); break; case Messages::GoToSleep: while (brightnessController.Level() != Controllers::BrightnessController::Levels::Off) { @@ -165,7 +167,7 @@ void DisplayApp::Refresh() { state = States::Idle; break; case Messages::GoToRunning: - brightnessController.Restore(); + brightnessController.Set(settingsController.GetBrightness()); state = States::Running; break; case Messages::UpdateTimeOut: @@ -181,7 +183,7 @@ void DisplayApp::Refresh() { case Messages::TimerDone: if (currentApp == Apps::Timer) { auto* timer = static_cast<Screens::Timer*>(currentScreen.get()); - timer->SetDone(); + timer->Reset(); } else { LoadApp(Apps::Timer, DisplayApp::FullRefreshDirections::Down); } @@ -224,9 +226,7 @@ void DisplayApp::Refresh() { break; } } else if (returnTouchEvent == gesture) { - LoadApp(returnToApp, returnDirection); - brightnessController.Set(settingsController.GetBrightness()); - brightnessController.Backup(); + LoadPreviousScreen(); } } else { touchHandler.CancelTap(); @@ -237,9 +237,7 @@ void DisplayApp::Refresh() { if (currentApp == Apps::Clock) { PushMessageToSystemTask(System::Messages::GoToSleep); } else { - LoadApp(returnToApp, returnDirection); - brightnessController.Set(settingsController.GetBrightness()); - brightnessController.Backup(); + LoadPreviousScreen(); } } break; @@ -303,6 +301,8 @@ void DisplayApp::ReturnApp(Apps app, DisplayApp::FullRefreshDirections direction void DisplayApp::LoadApp(Apps app, DisplayApp::FullRefreshDirections direction) { touchHandler.CancelTap(); + brightnessController.Set(settingsController.GetBrightness()); + currentScreen.reset(nullptr); SetFullRefresh(direction); @@ -311,7 +311,8 @@ void DisplayApp::LoadApp(Apps app, DisplayApp::FullRefreshDirections direction) switch (app) { case Apps::Launcher: - currentScreen = std::make_unique<Screens::ApplicationList>(this, settingsController, batteryController, dateTimeController); + currentScreen = + std::make_unique<Screens::ApplicationList>(this, settingsController, batteryController, bleController, dateTimeController); ReturnApp(Apps::Clock, FullRefreshDirections::Down, TouchEvents::SwipeDown); break; case Apps::None: @@ -367,7 +368,7 @@ void DisplayApp::LoadApp(Apps app, DisplayApp::FullRefreshDirections direction) currentScreen = std::make_unique<Screens::Timer>(this, timerController); break; case Apps::Alarm: - currentScreen = std::make_unique<Screens::Alarm>(this, alarmController, settingsController, *systemTask); + currentScreen = std::make_unique<Screens::Alarm>(this, alarmController, settingsController.GetClockType(), *systemTask); break; // Settings @@ -377,7 +378,8 @@ void DisplayApp::LoadApp(Apps app, DisplayApp::FullRefreshDirections direction) dateTimeController, brightnessController, motorController, - settingsController); + settingsController, + bleController); ReturnApp(Apps::Clock, FullRefreshDirections::LeftAnim, TouchEvents::SwipeLeft); break; case Apps::Settings: |