diff options
| author | JF <jf@codingfield.com> | 2020-02-23 12:44:39 (GMT) |
|---|---|---|
| committer | JF <jf@codingfield.com> | 2020-02-23 12:44:39 (GMT) |
| commit | 02772b996fb26146cf38fc6deccff7f43a49dfd6 (patch) | |
| tree | f2ff90c577f68ccb44b6470621bf87e68a49aed8 /src/DisplayApp/DisplayApp.cpp | |
| parent | 2bdff7ed2b490cb8ce5599341e12d707c0ba7fd0 (diff) | |
Do not compile GFX and older fonts anymore.
Refactor SystemTask in its own class.
Refactor Screen to be able to close current screen and open a new one.
Re-enable sleep/wake up and propagate button event to Screens.
Diffstat (limited to 'src/DisplayApp/DisplayApp.cpp')
| -rw-r--r-- | src/DisplayApp/DisplayApp.cpp | 51 |
1 files changed, 24 insertions, 27 deletions
diff --git a/src/DisplayApp/DisplayApp.cpp b/src/DisplayApp/DisplayApp.cpp index 34d81dd..d70726d 100644 --- a/src/DisplayApp/DisplayApp.cpp +++ b/src/DisplayApp/DisplayApp.cpp @@ -13,25 +13,26 @@ #include <string> #include <lvgl/lvgl.h> #include <DisplayApp/Screens/Tile.h> -#include <DisplayApp/Screens/Tab.h> +#include "../SystemTask/SystemTask.h" +//#include <DisplayApp/Screens/Tab.h> using namespace Pinetime::Applications; DisplayApp::DisplayApp(Pinetime::Drivers::St7789& lcd, - Pinetime::Components::Gfx& gfx, Pinetime::Components::LittleVgl& lvgl, Pinetime::Drivers::Cst816S& touchPanel, Controllers::Battery &batteryController, Controllers::Ble &bleController, - Controllers::DateTime &dateTimeController) : + Controllers::DateTime &dateTimeController, + Pinetime::System::SystemTask& systemTask) : lcd{lcd}, - gfx{gfx}, lvgl{lvgl}, touchPanel{touchPanel}, batteryController{batteryController}, bleController{bleController}, dateTimeController{dateTimeController}, - currentScreen{new Screens::Clock(this, gfx, dateTimeController) } { + currentScreen{new Screens::Clock(this, dateTimeController) }, + systemTask{systemTask} { msgQueue = xQueueCreate(queueSize, itemSize); } @@ -48,7 +49,7 @@ void DisplayApp::Process(void *instance) { while (1) { app->Refresh(); - lv_task_handler(); + } } @@ -114,36 +115,28 @@ void DisplayApp::Refresh() { OnTouchEvent(); break; case Messages::ButtonPushed: - currentScreen->OnButtonPushed(); + if(!currentScreen->OnButtonPushed()) { + systemTask.PushMessage(System::SystemTask::Messages::GoToSleep); + } + break; } } } -bool first = true; - void DisplayApp::RunningState() { // clockScreen.SetCurrentDateTime(dateTimeController.CurrentDateTime()); - if(currentScreen != nullptr) { - currentScreen->Refresh(first); - if(currentScreen->GetNextScreen() != Screens::Screen::NextScreen::None) { - switch(currentScreen->GetNextScreen()) { - case Screens::Screen::NextScreen::Clock: - currentScreen.reset(nullptr); - currentScreen.reset(new Screens::Clock(this, gfx, dateTimeController)); - break; - case Screens::Screen::NextScreen::Menu: - currentScreen.reset(nullptr); - currentScreen.reset(new Screens::Tile(this, gfx)); - break; - case Screens::Screen::NextScreen::App: - currentScreen.reset(nullptr); - currentScreen.reset(new Screens::Message(this, gfx)); - break; - } + if(!currentScreen->Refresh(true)) { + currentScreen.reset(nullptr); + switch(nextApp) { + case Apps::None: + case Apps::Launcher: currentScreen.reset(new Screens::Tile(this)); break; + case Apps::Clock: currentScreen.reset(new Screens::Clock(this, dateTimeController)); break; +// case Apps::Test: currentScreen.reset(new Screens::Message(this)); break; } - first = false; + nextApp = Apps::None; } + lv_task_handler(); } void DisplayApp::IdleState() { @@ -169,3 +162,7 @@ void DisplayApp::OnTouchEvent() { // pointColor+=10; // } } + +void DisplayApp::StartApp(DisplayApp::Apps app) { + nextApp = app; +} |
