summaryrefslogtreecommitdiff
path: root/src/displayapp/screens/Notifications.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/displayapp/screens/Notifications.cpp')
-rw-r--r--src/displayapp/screens/Notifications.cpp26
1 files changed, 24 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;
}