@@ -52,6 +52,28 @@ namespace {
5252 static inline bool in_isr (void ) {
5353 return (SCB->ICSR & SCB_ICSR_VECTACTIVE_Msk) != 0 ;
5454 }
55+
56+ TouchEvents ConvertGesture (Pinetime::Drivers::Cst816S::Gestures gesture) {
57+ switch (gesture) {
58+ case Pinetime::Drivers::Cst816S::Gestures::SingleTap:
59+ return TouchEvents::Tap;
60+ case Pinetime::Drivers::Cst816S::Gestures::LongPress:
61+ return TouchEvents::LongTap;
62+ case Pinetime::Drivers::Cst816S::Gestures::DoubleTap:
63+ return TouchEvents::DoubleTap;
64+ case Pinetime::Drivers::Cst816S::Gestures::SlideRight:
65+ return TouchEvents::SwipeRight;
66+ case Pinetime::Drivers::Cst816S::Gestures::SlideLeft:
67+ return TouchEvents::SwipeLeft;
68+ case Pinetime::Drivers::Cst816S::Gestures::SlideDown:
69+ return TouchEvents::SwipeDown;
70+ case Pinetime::Drivers::Cst816S::Gestures::SlideUp:
71+ return TouchEvents::SwipeUp;
72+ case Pinetime::Drivers::Cst816S::Gestures::None:
73+ default :
74+ return TouchEvents::None;
75+ }
76+ }
5577}
5678
5779DisplayApp::DisplayApp (Drivers::St7789& lcd,
@@ -185,6 +207,41 @@ void DisplayApp::Refresh() {
185207 LoadApp (Apps::Timer, DisplayApp::FullRefreshDirections::Down);
186208 }
187209 break ;
210+ case Messages::TouchEvent: {
211+ if (state != States::Running) {
212+ break ;
213+ }
214+ auto gesture = ConvertGesture (touchHandler.GestureGet ());
215+ if (gesture == TouchEvents::None) {
216+ break ;
217+ }
218+ if (!currentScreen->OnTouchEvent (gesture)) {
219+ if (currentApp == Apps::Clock) {
220+ switch (gesture) {
221+ case TouchEvents::SwipeUp:
222+ LoadApp (Apps::Launcher, DisplayApp::FullRefreshDirections::Up);
223+ break ;
224+ case TouchEvents::SwipeDown:
225+ LoadApp (Apps::Notifications, DisplayApp::FullRefreshDirections::Down);
226+ break ;
227+ case TouchEvents::SwipeRight:
228+ LoadApp (Apps::QuickSettings, DisplayApp::FullRefreshDirections::RightAnim);
229+ break ;
230+ case TouchEvents::DoubleTap:
231+ PushMessageToSystemTask (System::Messages::GoToSleep);
232+ break ;
233+ default :
234+ break ;
235+ }
236+ } else if (returnTouchEvent == gesture) {
237+ LoadApp (returnToApp, returnDirection);
238+ brightnessController.Set (settingsController.GetBrightness ());
239+ brightnessController.Backup ();
240+ }
241+ } else {
242+ touchHandler.CancelTap ();
243+ }
244+ } break ;
188245 case Messages::ButtonPushed:
189246 if (currentApp == Apps::Clock) {
190247 PushMessageToSystemTask (System::Messages::GoToSleep);
@@ -207,44 +264,14 @@ void DisplayApp::Refresh() {
207264 }
208265 }
209266
210- auto gesture = GetGesture ();
211- if (gesture != TouchEvents::None) {
212- if (!currentScreen->OnTouchEvent (gesture)) {
213- if (currentApp == Apps::Clock) {
214- switch (gesture) {
215- case TouchEvents::SwipeUp:
216- LoadApp (Apps::Launcher, DisplayApp::FullRefreshDirections::Up);
217- break ;
218- case TouchEvents::SwipeDown:
219- LoadApp (Apps::Notifications, DisplayApp::FullRefreshDirections::Down);
220- break ;
221- case TouchEvents::SwipeRight:
222- LoadApp (Apps::QuickSettings, DisplayApp::FullRefreshDirections::RightAnim);
223- break ;
224- case TouchEvents::DoubleTap:
225- PushMessageToSystemTask (System::Messages::GoToSleep);
226- break ;
227- default :
228- break ;
229- }
230- } else if (returnTouchEvent == gesture) {
231- LoadApp (returnToApp, returnDirection);
232- brightnessController.Set (settingsController.GetBrightness ());
233- brightnessController.Backup ();
234- }
235- } else {
236- touchHandler.CancelTap ();
237- }
267+ if (nextApp != Apps::None) {
268+ LoadApp (nextApp, nextDirection);
269+ nextApp = Apps::None;
238270 }
239271
240272 if (touchHandler.IsTouching ()) {
241273 currentScreen->OnTouchEvent (touchHandler.GetX (), touchHandler.GetY ());
242274 }
243-
244- if (nextApp != Apps::None) {
245- LoadApp (nextApp, nextDirection);
246- nextApp = Apps::None;
247- }
248275}
249276
250277void DisplayApp::RunningState () {
@@ -407,30 +434,6 @@ void DisplayApp::PushMessage(Messages msg) {
407434 }
408435}
409436
410- TouchEvents DisplayApp::GetGesture () {
411- auto gesture = touchHandler.GestureGet ();
412- switch (gesture) {
413- case Pinetime::Drivers::Cst816S::Gestures::SingleTap:
414- return TouchEvents::Tap;
415- case Pinetime::Drivers::Cst816S::Gestures::LongPress:
416- return TouchEvents::LongTap;
417- case Pinetime::Drivers::Cst816S::Gestures::DoubleTap:
418- return TouchEvents::DoubleTap;
419- case Pinetime::Drivers::Cst816S::Gestures::SlideRight:
420- return TouchEvents::SwipeRight;
421- case Pinetime::Drivers::Cst816S::Gestures::SlideLeft:
422- return TouchEvents::SwipeLeft;
423- case Pinetime::Drivers::Cst816S::Gestures::SlideDown:
424- return TouchEvents::SwipeDown;
425- case Pinetime::Drivers::Cst816S::Gestures::SlideUp:
426- return TouchEvents::SwipeUp;
427- case Pinetime::Drivers::Cst816S::Gestures::None:
428- default :
429- return TouchEvents::None;
430- }
431- return TouchEvents::None;
432- }
433-
434437void DisplayApp::SetFullRefresh (DisplayApp::FullRefreshDirections direction) {
435438 switch (direction) {
436439 case DisplayApp::FullRefreshDirections::Down:
0 commit comments