Make it possible to dismiss new notifications
This commit is contained in:
parent
b071422f91
commit
bef65bcd55
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -30,6 +30,7 @@ namespace Pinetime {
|
|||
void Refresh() override;
|
||||
bool OnTouchEvent(Pinetime::Applications::TouchEvents event) override;
|
||||
void OnPreviewInteraction();
|
||||
void OnPreviewDismiss();
|
||||
|
||||
class NotificationItem {
|
||||
public:
|
||||
|
|
Loading…
Reference in a new issue