diff options
author | Tomas Groth <second@tgc.dk> | 2022-09-14 22:10:00 +0200 |
---|---|---|
committer | JF <JF002@users.noreply.github.com> | 2022-12-26 22:18:50 +0100 |
commit | bef65bcd55a4238c6e93a33c097f6dc37b52cf1d (patch) | |
tree | 1c9c73d38f31f64334bf8f8e27ee4546ecba228b /src | |
parent | b071422f91941c6735ffcc647ff622775f1ee459 (diff) |
Make it possible to dismiss new notifications
Diffstat (limited to 'src')
-rw-r--r-- | src/displayapp/screens/Notifications.cpp | 26 | ||||
-rw-r--r-- | src/displayapp/screens/Notifications.h | 1 |
2 files changed, 25 insertions, 2 deletions
diff --git a/src/displayapp/screens/Notifications.cpp b/src/displayapp/screens/Notifications.cpp index 5100ef9b..9d126a16 100644 --- a/src/displayapp/screens/Notifications.cpp +++ b/src/displayapp/screens/Notifications.cpp @@ -79,9 +79,12 @@ void Notifications::Refresh() { timeoutLinePoints[1].x = pos; lv_line_set_points(timeoutLine, timeoutLinePoints, 2); } - } - if (dismissingNotification) { + } else if (mode == Modes::Preview && dismissingNotification) { + running = false; + currentItem = std::make_unique<NotificationItem>(alertNotificationService, motorController); + + } else if (dismissingNotification) { dismissingNotification = false; auto notification = notificationManager.Get(currentId); if (!notification.valid) { @@ -126,12 +129,31 @@ void Notifications::OnPreviewInteraction() { } } +void Notifications::OnPreviewDismiss() { + notificationManager.Dismiss(currentId); + if (timeoutLine != nullptr) { + lv_obj_del(timeoutLine); + timeoutLine = nullptr; + } + currentItem.reset(nullptr); + dismissingNotification = true; + afterDismissNextMessageFromAbove = true; // show next message coming from below + app->SetFullRefresh(DisplayApp::FullRefreshDirections::RightAnim); + // create black transition screen to let the notification dismiss to blackness + lv_obj_t* blackBox = lv_obj_create(lv_scr_act(), nullptr); + lv_obj_set_size(blackBox, LV_HOR_RES, LV_VER_RES); + lv_obj_set_style_local_bg_color(blackBox, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK); +} + bool Notifications::OnTouchEvent(Pinetime::Applications::TouchEvents event) { if (mode != Modes::Normal) { if (!interacted && event == TouchEvents::Tap) { interacted = true; OnPreviewInteraction(); return true; + } else if (event == Pinetime::Applications::TouchEvents::SwipeRight) { + OnPreviewDismiss(); + return true; } return false; } diff --git a/src/displayapp/screens/Notifications.h b/src/displayapp/screens/Notifications.h index 9d843a9b..58644553 100644 --- a/src/displayapp/screens/Notifications.h +++ b/src/displayapp/screens/Notifications.h @@ -30,6 +30,7 @@ namespace Pinetime { void Refresh() override; bool OnTouchEvent(Pinetime::Applications::TouchEvents event) override; void OnPreviewInteraction(); + void OnPreviewDismiss(); class NotificationItem { public: |