@@ -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 () {
@@ -212,8 +211,7 @@ void DisplayApp::Refresh() {
212211 if (state != States::Running) {
213212 break ;
214213 }
215- auto info = touchPanel.GetTouchInfo ();
216- auto gesture = Convert (info);
214+ auto gesture = ConvertGesture (touchHandler.GestureGet ());
217215 if (gesture == TouchEvents::None) {
218216 break ;
219217 }
@@ -239,11 +237,9 @@ void DisplayApp::Refresh() {
239237 LoadApp (returnToApp, returnDirection);
240238 brightnessController.Set (settingsController.GetBrightness ());
241239 brightnessController.Backup ();
242- } else if (touchMode == TouchModes::Gestures) {
243- if (gesture == TouchEvents::Tap) {
244- lvgl.SetNewTapEvent (info.x , info.y );
245- }
246240 }
241+ } else {
242+ touchHandler.CancelTap ();
247243 }
248244 } break ;
249245 case Messages::ButtonPushed:
@@ -273,13 +269,8 @@ void DisplayApp::Refresh() {
273269 nextApp = Apps::None;
274270 }
275271
276- if (state != States::Idle && touchMode == TouchModes::Polling) {
277- auto info = touchPanel.GetTouchInfo ();
278- if (info.action == 2 ) { // 2 = contact
279- if (!currentScreen->OnTouchEvent (info.x , info.y )) {
280- lvgl.SetNewTapEvent (info.x , info.y );
281- }
282- }
272+ if (touchHandler.IsTouching ()) {
273+ currentScreen->OnTouchEvent (touchHandler.GetX (), touchHandler.GetY ());
283274 }
284275}
285276
@@ -302,6 +293,7 @@ void DisplayApp::ReturnApp(Apps app, DisplayApp::FullRefreshDirections direction
302293}
303294
304295void DisplayApp::LoadApp (Apps app, DisplayApp::FullRefreshDirections direction) {
296+ touchHandler.CancelTap ();
305297 currentScreen.reset (nullptr );
306298 SetFullRefresh (direction);
307299
@@ -467,10 +459,6 @@ void DisplayApp::SetFullRefresh(DisplayApp::FullRefreshDirections direction) {
467459 }
468460}
469461
470- void DisplayApp::SetTouchMode (DisplayApp::TouchModes mode) {
471- touchMode = mode;
472- }
473-
474462void DisplayApp::PushMessageToSystemTask (Pinetime::System::Messages message) {
475463 if (systemTask != nullptr )
476464 systemTask->PushMessage (message);
0 commit comments