1111bool isMainScreen = false ; // Flag to indicate main screen is selected
1212bool isScrolled = true ; // Flag to indicate when tileview was scrolled
1313bool isReady = false ; // Flag to indicate when tileview scroll was finished
14+ bool isScrollingMap = false ; // Flag to indicate if map is scrolling
15+ bool canScrollMap = false ; // Flag to indicate whet can scroll map
1416uint8_t activeTile = 0 ; // Current active tile
1517uint8_t gpxAction = WPT_NONE; // Current Waypoint Action
1618int heading = 0 ; // Heading value (Compass or GPS)
19+ extern uint32_t DOUBLE_TOUCH_EVENT;
1720
1821extern Compass compass;
1922extern Gps gps;
@@ -197,20 +200,32 @@ void updateMainScreen(lv_timer_t *t)
197200 */
198201void gestureEvent (lv_event_t *event)
199202{
200- lv_dir_t dir = lv_indev_get_gesture_dir (lv_indev_get_act ());
201- if (activeTile == MAP && isMainScreen)
203+ lv_dir_t dir = lv_indev_get_gesture_dir (lv_indev_active ());
204+
205+ if (showMapToolBar)
202206 {
203- switch (dir)
204- {
205- case LV_DIR_LEFT:
206- break ;
207- case LV_DIR_RIGHT:
208- break ;
209- case LV_DIR_TOP:
210- break ;
211- case LV_DIR_BOTTOM:
212- break ;
213- }
207+ // if (activeTile == MAP && isMainScreen)
208+ // {
209+ // switch (dir)
210+ // {
211+ // case LV_DIR_LEFT:
212+ // // mapView.panMap(1,0);
213+ // mapView.scrollMap(30,0);
214+ // break;
215+ // case LV_DIR_RIGHT:
216+ // // mapView.panMap(-1,0);
217+ // mapView.scrollMap(-30,0);
218+ // break;
219+ // case LV_DIR_TOP:
220+ // //mapView.panMap(0,1);
221+ // mapView.scrollMap(0,30);
222+ // break;
223+ // case LV_DIR_BOTTOM:
224+ // // mapView.panMap(0,-1);
225+ // mapView.scrollMap(0,-30);
226+ // break;
227+ // }
228+ // }
214229 }
215230}
216231
@@ -252,13 +267,16 @@ void updateSatTrack(lv_event_t *event)
252267}
253268
254269/* *
255- * @brief Tool Bar Event
270+ * @brief Map Tool Bar Event
256271 *
257272 * @param event
258273 */
259- void toolBarEvent (lv_event_t *event)
274+ void mapToolBarEvent (lv_event_t *event)
260275{
261- showToolBar = !showToolBar;
276+ lv_event_code_t code = lv_event_get_code (event);
277+
278+ showMapToolBar = !showMapToolBar;
279+ canScrollMap = !canScrollMap;
262280
263281 if (!mapSet.mapFullScreen )
264282 {
@@ -273,20 +291,79 @@ void toolBarEvent(lv_event_t *event)
273291 lv_obj_set_pos (btnZoomIn, 10 , mapView.mapScrFull - (toolBarOffset + (2 * toolBarSpace) + 24 ));
274292 }
275293
276- if (!showToolBar )
294+ if (!showMapToolBar )
277295 {
278296 lv_obj_clear_flag (btnFullScreen, LV_OBJ_FLAG_CLICKABLE);
279297 lv_obj_clear_flag (btnZoomOut, LV_OBJ_FLAG_CLICKABLE);
280298 lv_obj_clear_flag (btnZoomIn, LV_OBJ_FLAG_CLICKABLE);
299+ lv_obj_add_flag (tilesScreen, LV_OBJ_FLAG_SCROLLABLE);
300+ mapView.centerOnGps (gps.gpsData .latitude , gps.gpsData .longitude );
281301 }
282302 else
283303 {
284304 lv_obj_add_flag (btnFullScreen, LV_OBJ_FLAG_CLICKABLE);
285305 lv_obj_add_flag (btnZoomOut, LV_OBJ_FLAG_CLICKABLE);
286306 lv_obj_add_flag (btnZoomIn, LV_OBJ_FLAG_CLICKABLE);
307+ lv_obj_clear_flag (tilesScreen, LV_OBJ_FLAG_SCROLLABLE);
287308 }
288309}
289310
311+ /* *
312+ * @brief Scrool Map Event
313+ *
314+ * @param event
315+ */
316+ void scrollMapEvent (lv_event_t *event)
317+ {
318+ if (canScrollMap)
319+ {
320+ lv_event_code_t code = lv_event_get_code (event);
321+ lv_indev_t * indev = lv_event_get_indev (event);
322+ static int last_x = 0 , last_y = 0 ;
323+ static int dx = 0 , dy = 0 ;
324+ lv_point_t p;
325+
326+
327+ switch (code)
328+ {
329+ case LV_EVENT_PRESSED:
330+ {
331+ lv_indev_get_point (indev, &p);
332+ last_x = p.x ;
333+ last_y = p.y ;
334+ isScrollingMap = true ;
335+ break ;
336+ }
337+
338+ case LV_EVENT_PRESSING:
339+ {
340+ lv_indev_get_point (indev, &p);
341+
342+ int dx = p.x - last_x;
343+ int dy = p.y - last_y;
344+
345+ const int SCROLL_THRESHOLD = 5 ;
346+
347+ if (abs (dx) > SCROLL_THRESHOLD || abs (dy) > SCROLL_THRESHOLD)
348+ {
349+ mapView.scrollMap (-dx, -dy);
350+ last_x = p.x ;
351+ last_y = p.y ;
352+ }
353+ break ;
354+ }
355+
356+ case LV_EVENT_PRESS_LOST:
357+ {
358+ isScrollingMap = false ;
359+ break ;
360+ }
361+ }
362+ }
363+ }
364+
365+
366+
290367/* *
291368 * @brief Full Screen Event Toolbar
292369 *
@@ -486,7 +563,7 @@ void createMainScr()
486563 lv_obj_set_pos (btnZoomIn, 10 , mapView.mapScrFull - (toolBarOffset + (2 * toolBarSpace) + 24 ));
487564 }
488565
489- if (!showToolBar )
566+ if (!showMapToolBar )
490567 {
491568 lv_obj_clear_flag (btnFullScreen, LV_OBJ_FLAG_CLICKABLE);
492569 lv_obj_clear_flag (btnZoomOut, LV_OBJ_FLAG_CLICKABLE);
@@ -501,8 +578,10 @@ void createMainScr()
501578
502579 // Map Tile Events
503580 lv_obj_add_event_cb (mapTile, updateMap, LV_EVENT_VALUE_CHANGED, NULL );
504- lv_obj_add_event_cb (mapTile, gestureEvent, LV_EVENT_GESTURE, NULL );
505- lv_obj_add_event_cb (mapTile, toolBarEvent, LV_EVENT_LONG_PRESSED, NULL );
581+ lv_obj_add_event_cb (mainScreen, gestureEvent, LV_EVENT_GESTURE, NULL );
582+ DOUBLE_TOUCH_EVENT = lv_event_register_id ();
583+ lv_obj_add_event_cb (mapTile, mapToolBarEvent, (lv_event_code_t )DOUBLE_TOUCH_EVENT, NULL );
584+ lv_obj_add_event_cb (mapTile, scrollMapEvent, LV_EVENT_ALL, NULL );
506585
507586 // Navigation Tile
508587 navigationScr (navTile);
0 commit comments