touchhandler: Remove LVGL dependency
Move LVGL specific code to the LittleVgl class
This commit is contained in:
		
							parent
							
								
									6542f255cd
								
							
						
					
					
						commit
						7066ff5aba
					
				| @ -222,6 +222,7 @@ void DisplayApp::Refresh() { | ||||
|         if (state != States::Running) { | ||||
|           break; | ||||
|         } | ||||
|         lvgl.SetNewTouchPoint(touchHandler.GetX(), touchHandler.GetY(), touchHandler.IsTouching()); | ||||
|         auto gesture = touchHandler.GestureGet(); | ||||
|         if (gesture == TouchEvents::None) { | ||||
|           break; | ||||
| @ -261,7 +262,7 @@ void DisplayApp::Refresh() { | ||||
|             LoadPreviousScreen(); | ||||
|           } | ||||
|         } else { | ||||
|           touchHandler.CancelTap(); | ||||
|           lvgl.CancelTap(); | ||||
|         } | ||||
|       } break; | ||||
|       case Messages::ButtonPushed: | ||||
| @ -339,7 +340,7 @@ void DisplayApp::LoadNewScreen(Apps app, DisplayApp::FullRefreshDirections direc | ||||
| } | ||||
| 
 | ||||
| void DisplayApp::LoadScreen(Apps app, DisplayApp::FullRefreshDirections direction) { | ||||
|   touchHandler.CancelTap(); | ||||
|   lvgl.CancelTap(); | ||||
|   ApplyBrightness(); | ||||
| 
 | ||||
|   currentScreen.reset(nullptr); | ||||
|  | ||||
| @ -179,15 +179,34 @@ void LittleVgl::FlushDisplay(const lv_area_t* area, lv_color_t* color_p) { | ||||
|   lv_disp_flush_ready(&disp_drv); | ||||
| } | ||||
| 
 | ||||
| void LittleVgl::SetNewTouchPoint(uint16_t x, uint16_t y, bool contact) { | ||||
|   tap_x = x; | ||||
|   tap_y = y; | ||||
|   tapped = contact; | ||||
| void LittleVgl::SetNewTouchPoint(int16_t x, int16_t y, bool contact) { | ||||
|   if (contact) { | ||||
|     if (!isCancelled) { | ||||
|       touchPoint = {x, y}; | ||||
|       tapped = true; | ||||
|     } | ||||
|   } else { | ||||
|     if (isCancelled) { | ||||
|       touchPoint = {-1, -1}; | ||||
|       tapped = false; | ||||
|       isCancelled = false; | ||||
|     } else { | ||||
|       touchPoint = {x, y}; | ||||
|       tapped = false; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| void LittleVgl::CancelTap() { | ||||
|   if (tapped) { | ||||
|     isCancelled = true; | ||||
|     touchPoint = {-1, -1}; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| bool LittleVgl::GetTouchPadInfo(lv_indev_data_t* ptr) { | ||||
|   ptr->point.x = tap_x; | ||||
|   ptr->point.y = tap_y; | ||||
|   ptr->point.x = touchPoint.x; | ||||
|   ptr->point.y = touchPoint.y; | ||||
|   if (tapped) { | ||||
|     ptr->state = LV_INDEV_STATE_PR; | ||||
|   } else { | ||||
|  | ||||
| @ -23,7 +23,8 @@ namespace Pinetime { | ||||
|       void FlushDisplay(const lv_area_t* area, lv_color_t* color_p); | ||||
|       bool GetTouchPadInfo(lv_indev_data_t* ptr); | ||||
|       void SetFullRefresh(FullRefreshDirections direction); | ||||
|       void SetNewTouchPoint(uint16_t x, uint16_t y, bool contact); | ||||
|       void SetNewTouchPoint(int16_t x, int16_t y, bool contact); | ||||
|       void CancelTap(); | ||||
| 
 | ||||
|       bool GetFullRefresh() { | ||||
|         bool returnValue = fullRefresh; | ||||
| @ -58,9 +59,9 @@ namespace Pinetime { | ||||
|       uint16_t writeOffset = 0; | ||||
|       uint16_t scrollOffset = 0; | ||||
| 
 | ||||
|       uint16_t tap_x = 0; | ||||
|       uint16_t tap_y = 0; | ||||
|       lv_point_t touchPoint = {0}; | ||||
|       bool tapped = false; | ||||
|       bool isCancelled = false; | ||||
|     }; | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -111,7 +111,7 @@ Pinetime::Controllers::NotificationManager notificationManager; | ||||
| Pinetime::Controllers::MotionController motionController; | ||||
| Pinetime::Controllers::TimerController timerController; | ||||
| Pinetime::Controllers::AlarmController alarmController {dateTimeController}; | ||||
| Pinetime::Controllers::TouchHandler touchHandler(touchPanel, lvgl); | ||||
| Pinetime::Controllers::TouchHandler touchHandler(touchPanel); | ||||
| Pinetime::Controllers::ButtonHandler buttonHandler; | ||||
| Pinetime::Controllers::BrightnessController brightnessController {}; | ||||
| 
 | ||||
|  | ||||
| @ -343,10 +343,9 @@ void SystemTask::Work() { | ||||
|           break; | ||||
|         case Messages::OnTouchEvent: | ||||
|           if (touchHandler.GetNewTouchInfo()) { | ||||
|             touchHandler.UpdateLvglTouchPoint(); | ||||
|           } | ||||
|             ReloadIdleTimer(); | ||||
|             displayApp.PushMessage(Pinetime::Applications::Display::Messages::TouchEvent); | ||||
|           } | ||||
|           break; | ||||
|         case Messages::HandleButtonEvent: { | ||||
|           Controllers::ButtonActions action = Controllers::ButtonActions::None; | ||||
|  | ||||
| @ -1,9 +1,4 @@ | ||||
| #include "touchhandler/TouchHandler.h" | ||||
| #ifdef PINETIME_IS_RECOVERY | ||||
|   #include "displayapp/DummyLittleVgl.h" | ||||
| #else | ||||
|   #include "displayapp/LittleVgl.h" | ||||
| #endif | ||||
| 
 | ||||
| using namespace Pinetime::Controllers; | ||||
| using namespace Pinetime::Applications; | ||||
| @ -32,14 +27,7 @@ namespace { | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| TouchHandler::TouchHandler(Drivers::Cst816S& touchPanel, Components::LittleVgl& lvgl) : touchPanel {touchPanel}, lvgl {lvgl} { | ||||
| } | ||||
| 
 | ||||
| void TouchHandler::CancelTap() { | ||||
|   if (info.touching) { | ||||
|     isCancelled = true; | ||||
|     lvgl.SetNewTouchPoint(-1, -1, true); | ||||
|   } | ||||
| TouchHandler::TouchHandler(Drivers::Cst816S& touchPanel) : touchPanel {touchPanel} { | ||||
| } | ||||
| 
 | ||||
| Pinetime::Applications::TouchEvents TouchHandler::GestureGet() { | ||||
| @ -55,6 +43,7 @@ bool TouchHandler::GetNewTouchInfo() { | ||||
|     return false; | ||||
|   } | ||||
| 
 | ||||
|   // Only a single gesture per touch
 | ||||
|   if (info.gesture != Pinetime::Drivers::Cst816S::Gestures::None) { | ||||
|     if (gestureReleased) { | ||||
|       if (info.gesture == Pinetime::Drivers::Cst816S::Gestures::SlideDown || | ||||
| @ -78,18 +67,3 @@ bool TouchHandler::GetNewTouchInfo() { | ||||
| 
 | ||||
|   return true; | ||||
| } | ||||
| 
 | ||||
| void TouchHandler::UpdateLvglTouchPoint() { | ||||
|   if (info.touching) { | ||||
|     if (!isCancelled) { | ||||
|       lvgl.SetNewTouchPoint(info.x, info.y, true); | ||||
|     } | ||||
|   } else { | ||||
|     if (isCancelled) { | ||||
|       lvgl.SetNewTouchPoint(-1, -1, false); | ||||
|       isCancelled = false; | ||||
|     } else { | ||||
|       lvgl.SetNewTouchPoint(info.x, info.y, false); | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -3,10 +3,6 @@ | ||||
| #include "displayapp/TouchEvents.h" | ||||
| 
 | ||||
| namespace Pinetime { | ||||
|   namespace Components { | ||||
|     class LittleVgl; | ||||
|   } | ||||
| 
 | ||||
|   namespace Drivers { | ||||
|     class Cst816S; | ||||
|   } | ||||
| @ -14,10 +10,9 @@ namespace Pinetime { | ||||
|   namespace Controllers { | ||||
|     class TouchHandler { | ||||
|     public: | ||||
|       explicit TouchHandler(Drivers::Cst816S&, Components::LittleVgl&); | ||||
|       void CancelTap(); | ||||
|       explicit TouchHandler(Drivers::Cst816S&); | ||||
| 
 | ||||
|       bool GetNewTouchInfo(); | ||||
|       void UpdateLvglTouchPoint(); | ||||
| 
 | ||||
|       bool IsTouching() const { | ||||
|         return info.touching; | ||||
| @ -36,7 +31,6 @@ namespace Pinetime { | ||||
|     private: | ||||
|       Pinetime::Drivers::Cst816S::TouchInfos info; | ||||
|       Pinetime::Drivers::Cst816S& touchPanel; | ||||
|       Pinetime::Components::LittleVgl& lvgl; | ||||
|       Pinetime::Applications::TouchEvents gesture; | ||||
|       bool isCancelled = false; | ||||
|       bool gestureReleased = true; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Riku Isokoski
						Riku Isokoski