Skip to content

Commit 0c9610f

Browse files
author
Joel Hill
committed
feat: enhance app navigation with swipe direction handling and previous app tracking
1 parent d99f12f commit 0c9610f

2 files changed

Lines changed: 28 additions & 2 deletions

File tree

src/displayapp/DisplayApp.cpp

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,12 @@ void DisplayApp::Refresh() {
210210
case FullRefreshDirections::RightAnim:
211211
returnDirection = FullRefreshDirections::LeftAnim;
212212
break;
213+
case FullRefreshDirections::Left:
214+
returnDirection = FullRefreshDirections::Right;
215+
break;
216+
case FullRefreshDirections::Right:
217+
returnDirection = FullRefreshDirections::Left;
218+
break;
213219
default:
214220
returnDirection = FullRefreshDirections::None;
215221
break;
@@ -406,6 +412,10 @@ void DisplayApp::Refresh() {
406412
return TouchEvents::SwipeRight;
407413
case DisplayApp::FullRefreshDirections::RightAnim:
408414
return TouchEvents::SwipeLeft;
415+
case DisplayApp::FullRefreshDirections::Left:
416+
return TouchEvents::SwipeRight;
417+
case DisplayApp::FullRefreshDirections::Right:
418+
return TouchEvents::SwipeLeft;
409419
}
410420
};
411421
if (!currentScreen->OnTouchEvent(gesture)) {
@@ -420,6 +430,11 @@ void DisplayApp::Refresh() {
420430
case TouchEvents::SwipeRight:
421431
LoadNewScreen(Apps::QuickSettings, DisplayApp::FullRefreshDirections::RightAnim);
422432
break;
433+
case TouchEvents::SwipeLeft:
434+
if (previousApp != Apps::None) {
435+
LoadNewScreen(previousApp, DisplayApp::FullRefreshDirections::LeftAnim);
436+
}
437+
break;
423438
case TouchEvents::DoubleTap:
424439
PushMessageToSystemTask(System::Messages::GoToSleep);
425440
break;
@@ -428,6 +443,10 @@ void DisplayApp::Refresh() {
428443
}
429444
} else if (gesture == LoadDirToReturnSwipe(appStackDirections.Top())) {
430445
LoadPreviousScreen();
446+
} else if (gesture == TouchEvents::SwipeRight) {
447+
LoadNewScreen(Apps::Clock, DisplayApp::FullRefreshDirections::RightAnim);
448+
appStackDirections.Reset();
449+
returnAppStack.Reset();
431450
}
432451
} else {
433452
lvgl.CancelTap();
@@ -448,6 +467,8 @@ void DisplayApp::Refresh() {
448467
LoadNewScreen(Apps::Clock, DisplayApp::FullRefreshDirections::Up);
449468
} else if (currentApp == Apps::QuickSettings) {
450469
LoadNewScreen(Apps::Clock, DisplayApp::FullRefreshDirections::LeftAnim);
470+
} else if (currentApp == previousApp) {
471+
LoadNewScreen(Apps::Clock, DisplayApp::FullRefreshDirections::RightAnim);
451472
} else {
452473
LoadNewScreen(Apps::Clock, DisplayApp::FullRefreshDirections::Down);
453474
}
@@ -491,7 +512,10 @@ void DisplayApp::Refresh() {
491512
}
492513
}
493514

494-
void DisplayApp::StartApp(Apps app, DisplayApp::FullRefreshDirections direction) {
515+
void DisplayApp::StartApp(Apps app, DisplayApp::FullRefreshDirections direction, bool setPrevious) {
516+
if (setPrevious) {
517+
previousApp = app;
518+
}
495519
nextApp = app;
496520
nextDirection = direction;
497521
}

src/displayapp/DisplayApp.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ namespace Pinetime {
7171
void Start(System::BootErrors error);
7272
void PushMessage(Display::Messages msg);
7373

74-
void StartApp(Apps app, DisplayApp::FullRefreshDirections direction);
74+
void StartApp(Apps app, DisplayApp::FullRefreshDirections direction, bool setPrevious = false);
7575

7676
void SetFullRefresh(FullRefreshDirections direction);
7777

@@ -115,7 +115,9 @@ namespace Pinetime {
115115
std::unique_ptr<Screens::Screen> currentScreen;
116116

117117
Apps currentApp = Apps::None;
118+
Apps previousApp = Apps::None;
118119
Apps returnToApp = Apps::None;
120+
119121
FullRefreshDirections returnDirection = FullRefreshDirections::None;
120122
TouchEvents returnTouchEvent = TouchEvents::None;
121123

0 commit comments

Comments
 (0)