From d99f12f133018c8291246c6dac85a0b036610c82 Mon Sep 17 00:00:00 2001 From: Joel Hill Date: Thu, 10 Apr 2025 23:31:52 -0600 Subject: [PATCH 1/7] gitignore: add Node and local environment files to ignore list --- .gitignore | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.gitignore b/.gitignore index 81e49ae083..9fbab521fa 100644 --- a/.gitignore +++ b/.gitignore @@ -50,3 +50,11 @@ src/arm-none-eabi # clangd .cache/ + +# Node +node_modules/ +package-lock.json +package.json + +# Local Environment +.env From 0c9610ff04c276896e4add9f40b38b8fa999a32f Mon Sep 17 00:00:00 2001 From: Joel Hill Date: Thu, 10 Apr 2025 23:32:13 -0600 Subject: [PATCH 2/7] feat: enhance app navigation with swipe direction handling and previous app tracking --- src/displayapp/DisplayApp.cpp | 26 +++++++++++++++++++++++++- src/displayapp/DisplayApp.h | 4 +++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/displayapp/DisplayApp.cpp b/src/displayapp/DisplayApp.cpp index 6671ac9e51..9191b5cf23 100644 --- a/src/displayapp/DisplayApp.cpp +++ b/src/displayapp/DisplayApp.cpp @@ -210,6 +210,12 @@ void DisplayApp::Refresh() { case FullRefreshDirections::RightAnim: returnDirection = FullRefreshDirections::LeftAnim; break; + case FullRefreshDirections::Left: + returnDirection = FullRefreshDirections::Right; + break; + case FullRefreshDirections::Right: + returnDirection = FullRefreshDirections::Left; + break; default: returnDirection = FullRefreshDirections::None; break; @@ -406,6 +412,10 @@ void DisplayApp::Refresh() { return TouchEvents::SwipeRight; case DisplayApp::FullRefreshDirections::RightAnim: return TouchEvents::SwipeLeft; + case DisplayApp::FullRefreshDirections::Left: + return TouchEvents::SwipeRight; + case DisplayApp::FullRefreshDirections::Right: + return TouchEvents::SwipeLeft; } }; if (!currentScreen->OnTouchEvent(gesture)) { @@ -420,6 +430,11 @@ void DisplayApp::Refresh() { case TouchEvents::SwipeRight: LoadNewScreen(Apps::QuickSettings, DisplayApp::FullRefreshDirections::RightAnim); break; + case TouchEvents::SwipeLeft: + if (previousApp != Apps::None) { + LoadNewScreen(previousApp, DisplayApp::FullRefreshDirections::LeftAnim); + } + break; case TouchEvents::DoubleTap: PushMessageToSystemTask(System::Messages::GoToSleep); break; @@ -428,6 +443,10 @@ void DisplayApp::Refresh() { } } else if (gesture == LoadDirToReturnSwipe(appStackDirections.Top())) { LoadPreviousScreen(); + } else if (gesture == TouchEvents::SwipeRight) { + LoadNewScreen(Apps::Clock, DisplayApp::FullRefreshDirections::RightAnim); + appStackDirections.Reset(); + returnAppStack.Reset(); } } else { lvgl.CancelTap(); @@ -448,6 +467,8 @@ void DisplayApp::Refresh() { LoadNewScreen(Apps::Clock, DisplayApp::FullRefreshDirections::Up); } else if (currentApp == Apps::QuickSettings) { LoadNewScreen(Apps::Clock, DisplayApp::FullRefreshDirections::LeftAnim); + } else if (currentApp == previousApp) { + LoadNewScreen(Apps::Clock, DisplayApp::FullRefreshDirections::RightAnim); } else { LoadNewScreen(Apps::Clock, DisplayApp::FullRefreshDirections::Down); } @@ -491,7 +512,10 @@ void DisplayApp::Refresh() { } } -void DisplayApp::StartApp(Apps app, DisplayApp::FullRefreshDirections direction) { +void DisplayApp::StartApp(Apps app, DisplayApp::FullRefreshDirections direction, bool setPrevious) { + if (setPrevious) { + previousApp = app; + } nextApp = app; nextDirection = direction; } diff --git a/src/displayapp/DisplayApp.h b/src/displayapp/DisplayApp.h index 2f276eaf9e..0c1fdc13b3 100644 --- a/src/displayapp/DisplayApp.h +++ b/src/displayapp/DisplayApp.h @@ -71,7 +71,7 @@ namespace Pinetime { void Start(System::BootErrors error); void PushMessage(Display::Messages msg); - void StartApp(Apps app, DisplayApp::FullRefreshDirections direction); + void StartApp(Apps app, DisplayApp::FullRefreshDirections direction, bool setPrevious = false); void SetFullRefresh(FullRefreshDirections direction); @@ -115,7 +115,9 @@ namespace Pinetime { std::unique_ptr currentScreen; Apps currentApp = Apps::None; + Apps previousApp = Apps::None; Apps returnToApp = Apps::None; + FullRefreshDirections returnDirection = FullRefreshDirections::None; TouchEvents returnTouchEvent = TouchEvents::None; From 732fb76e7a98389cbb5fa72c8e141e4cd8478912 Mon Sep 17 00:00:00 2001 From: Joel Hill Date: Thu, 10 Apr 2025 23:33:07 -0600 Subject: [PATCH 3/7] feat: Apps started from tile are confiigured to be set as the "previous app" --- src/displayapp/screens/Tile.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/displayapp/screens/Tile.cpp b/src/displayapp/screens/Tile.cpp index 7c585a4b97..4d8192e653 100644 --- a/src/displayapp/screens/Tile.cpp +++ b/src/displayapp/screens/Tile.cpp @@ -107,6 +107,6 @@ void Tile::OnValueChangedEvent(lv_obj_t* obj, uint32_t buttonId) { return; } - app->StartApp(apps[buttonId], DisplayApp::FullRefreshDirections::Up); + app->StartApp(apps[buttonId], DisplayApp::FullRefreshDirections::Up, true); running = false; } From 6fd00c78b9baf579dd4c2cf8750aad55953aeda4 Mon Sep 17 00:00:00 2001 From: Joel Hill Date: Thu, 10 Apr 2025 23:33:15 -0600 Subject: [PATCH 4/7] feat: remove swipe right event handling for music navigation --- src/displayapp/screens/Music.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/displayapp/screens/Music.cpp b/src/displayapp/screens/Music.cpp index 0763da0fe3..4f287a8168 100644 --- a/src/displayapp/screens/Music.cpp +++ b/src/displayapp/screens/Music.cpp @@ -272,10 +272,6 @@ bool Music::OnTouchEvent(Pinetime::Applications::TouchEvents event) { musicService.event(Controllers::MusicService::EVENT_MUSIC_NEXT); return true; } - case TouchEvents::SwipeRight: { - musicService.event(Controllers::MusicService::EVENT_MUSIC_PREV); - return true; - } default: { return false; } From 24ecb849f90ac1307719103daf511e8d42a46289 Mon Sep 17 00:00:00 2001 From: Joel Hill Date: Thu, 10 Apr 2025 23:41:36 -0600 Subject: [PATCH 5/7] feat: prevent swipe left navigation from QuickSettings --- src/displayapp/DisplayApp.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/displayapp/DisplayApp.cpp b/src/displayapp/DisplayApp.cpp index 9191b5cf23..b760b917e5 100644 --- a/src/displayapp/DisplayApp.cpp +++ b/src/displayapp/DisplayApp.cpp @@ -443,7 +443,7 @@ void DisplayApp::Refresh() { } } else if (gesture == LoadDirToReturnSwipe(appStackDirections.Top())) { LoadPreviousScreen(); - } else if (gesture == TouchEvents::SwipeRight) { + } else if (gesture == TouchEvents::SwipeRight && currentApp != Apps::QuickSettings) { LoadNewScreen(Apps::Clock, DisplayApp::FullRefreshDirections::RightAnim); appStackDirections.Reset(); returnAppStack.Reset(); From 2c04eed1853cef19f1ea50ee2b0820155a5ddde3 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Sun, 8 Mar 2026 12:49:05 -0600 Subject: [PATCH 6/7] Fix clang-format violation in app shortcut feature (#3) * Fix trailing whitespace in DisplayApp.h (clang-format violation) Co-authored-by: joelghill <1980543+joelghill@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: joelghill <1980543+joelghill@users.noreply.github.com> --- src/displayapp/DisplayApp.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/displayapp/DisplayApp.h b/src/displayapp/DisplayApp.h index 9cae239981..af9aa297e9 100644 --- a/src/displayapp/DisplayApp.h +++ b/src/displayapp/DisplayApp.h @@ -120,7 +120,7 @@ namespace Pinetime { Apps currentApp = Apps::None; Apps previousApp = Apps::None; Apps returnToApp = Apps::None; - + FullRefreshDirections returnDirection = FullRefreshDirections::None; TouchEvents returnTouchEvent = TouchEvents::None; From 42eeb7f196f5375cfb14f90fec2a728f93730901 Mon Sep 17 00:00:00 2001 From: Joel Hill Date: Sun, 8 Mar 2026 18:31:15 -0600 Subject: [PATCH 7/7] Restoring support for swipe right gesture to play previous track in Music app --- src/displayapp/screens/Music.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/displayapp/screens/Music.cpp b/src/displayapp/screens/Music.cpp index 1ec1196e91..e1441460f7 100644 --- a/src/displayapp/screens/Music.cpp +++ b/src/displayapp/screens/Music.cpp @@ -275,6 +275,10 @@ bool Music::OnTouchEvent(Pinetime::Applications::TouchEvents event) { musicService.event(Controllers::MusicService::EVENT_MUSIC_NEXT); return true; } + case TouchEvents::SwipeRight: { + musicService.event(Controllers::MusicService::EVENT_MUSIC_PREV); + return true; + } default: { return false; }