@@ -53,29 +53,26 @@ namespace {
5353 return (SCB->ICSR & SCB_ICSR_VECTACTIVE_Msk) != 0 ;
5454 }
5555
56- TouchEvents Convert (Pinetime::Drivers::Cst816S::TouchInfos info) {
57- if (info.isTouch ) {
58- switch (info.gesture ) {
59- case Pinetime::Drivers::Cst816S::Gestures::SingleTap:
60- return TouchEvents::Tap;
61- case Pinetime::Drivers::Cst816S::Gestures::LongPress:
62- return TouchEvents::LongTap;
63- case Pinetime::Drivers::Cst816S::Gestures::DoubleTap:
64- return TouchEvents::DoubleTap;
65- case Pinetime::Drivers::Cst816S::Gestures::SlideRight:
66- return TouchEvents::SwipeRight;
67- case Pinetime::Drivers::Cst816S::Gestures::SlideLeft:
68- return TouchEvents::SwipeLeft;
69- case Pinetime::Drivers::Cst816S::Gestures::SlideDown:
70- return TouchEvents::SwipeDown;
71- case Pinetime::Drivers::Cst816S::Gestures::SlideUp:
72- return TouchEvents::SwipeUp;
73- case Pinetime::Drivers::Cst816S::Gestures::None:
74- default :
75- return TouchEvents::None;
76- }
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;
7775 }
78- return TouchEvents::None;
7976 }
8077}
8178
@@ -91,7 +88,8 @@ DisplayApp::DisplayApp(Drivers::St7789& lcd,
9188 Controllers::Settings& settingsController,
9289 Pinetime::Controllers::MotorController& motorController,
9390 Pinetime::Controllers::MotionController& motionController,
94- Pinetime::Controllers::TimerController& timerController)
91+ Pinetime::Controllers::TimerController& timerController,
92+ Pinetime::Controllers::TouchHandler& touchHandler)
9593 : lcd {lcd},
9694 lvgl {lvgl},
9795 touchPanel {touchPanel},
@@ -104,7 +102,8 @@ DisplayApp::DisplayApp(Drivers::St7789& lcd,
104102 settingsController {settingsController},
105103 motorController {motorController},
106104 motionController {motionController},
107- timerController {timerController} {
105+ timerController {timerController},
106+ touchHandler {touchHandler} {
108107}
109108
110109void DisplayApp::Start () {
@@ -209,8 +208,7 @@ void DisplayApp::Refresh() {
209208 if (state != States::Running) {
210209 break ;
211210 }
212- auto info = touchPanel.GetTouchInfo ();
213- auto gesture = Convert (info);
211+ auto gesture = ConvertGesture (touchHandler.GestureGet ());
214212 if (gesture == TouchEvents::None) {
215213 break ;
216214 }
@@ -236,11 +234,9 @@ void DisplayApp::Refresh() {
236234 LoadApp (returnToApp, returnDirection);
237235 brightnessController.Set (settingsController.GetBrightness ());
238236 brightnessController.Backup ();
239- } else if (touchMode == TouchModes::Gestures) {
240- if (gesture == TouchEvents::Tap) {
241- lvgl.SetNewTapEvent (info.x , info.y );
242- }
243237 }
238+ } else {
239+ touchHandler.CancelTap ();
244240 }
245241 } break ;
246242 case Messages::ButtonPushed:
@@ -270,13 +266,8 @@ void DisplayApp::Refresh() {
270266 nextApp = Apps::None;
271267 }
272268
273- if (state != States::Idle && touchMode == TouchModes::Polling) {
274- auto info = touchPanel.GetTouchInfo ();
275- if (info.action == 2 ) { // 2 = contact
276- if (!currentScreen->OnTouchEvent (info.x , info.y )) {
277- lvgl.SetNewTapEvent (info.x , info.y );
278- }
279- }
269+ if (touchHandler.IsTouching ()) {
270+ currentScreen->OnTouchEvent (touchHandler.GetX (), touchHandler.GetY ());
280271 }
281272}
282273
@@ -299,6 +290,7 @@ void DisplayApp::ReturnApp(Apps app, DisplayApp::FullRefreshDirections direction
299290}
300291
301292void DisplayApp::LoadApp (Apps app, DisplayApp::FullRefreshDirections direction) {
293+ touchHandler.CancelTap ();
302294 currentScreen.reset (nullptr );
303295 SetFullRefresh (direction);
304296
@@ -464,10 +456,6 @@ void DisplayApp::SetFullRefresh(DisplayApp::FullRefreshDirections direction) {
464456 }
465457}
466458
467- void DisplayApp::SetTouchMode (DisplayApp::TouchModes mode) {
468- touchMode = mode;
469- }
470-
471459void DisplayApp::PushMessageToSystemTask (Pinetime::System::Messages message) {
472460 if (systemTask != nullptr )
473461 systemTask->PushMessage (message);
0 commit comments