diff options
| author | JF <jf@codingfield.com> | 2020-10-21 20:15:02 (GMT) |
|---|---|---|
| committer | JF <jf@codingfield.com> | 2020-10-21 20:15:02 (GMT) |
| commit | cabf1168d429db84b0985e25881ead86d80dde3c (patch) | |
| tree | 42f5187cd7de9e947cfe839761cf17662be8210e | |
| parent | 440ae412b9ce9c868aa8b98e6da537bd0ec62de7 (diff) | |
Notifications : Fix display of notification index/number.
| -rw-r--r-- | src/components/ble/NotificationManager.cpp | 5 | ||||
| -rw-r--r-- | src/components/ble/NotificationManager.h | 2 | ||||
| -rw-r--r-- | src/displayapp/screens/Notifications.cpp | 8 |
3 files changed, 10 insertions, 5 deletions
diff --git a/src/components/ble/NotificationManager.cpp b/src/components/ble/NotificationManager.cpp index 6ed3f83..11555be 100644 --- a/src/components/ble/NotificationManager.cpp +++ b/src/components/ble/NotificationManager.cpp @@ -28,6 +28,7 @@ void NotificationManager::Push(Pinetime::Controllers::NotificationManager::Categ NotificationManager::Notification NotificationManager::GetLastNotification() { NotificationManager::Notification notification = notifications[readIndex]; + notification.index = 1; return notification; } @@ -81,3 +82,7 @@ bool NotificationManager::ClearNewNotificationFlag() { return newNotification.exchange(false); } +size_t NotificationManager::NbNotifications() const { + return std::count_if(notifications.begin(), notifications.end(), [](const Notification& n){ return n.valid;}); +} + diff --git a/src/components/ble/NotificationManager.h b/src/components/ble/NotificationManager.h index e4e2b4d..64c6df6 100644 --- a/src/components/ble/NotificationManager.h +++ b/src/components/ble/NotificationManager.h @@ -15,7 +15,6 @@ namespace Pinetime { Id id; bool valid = false; uint8_t index; - uint8_t number = TotalNbNotifications; std::array<char, MessageSize+1> message; Categories category = Categories::Unknown; }; @@ -29,6 +28,7 @@ namespace Pinetime { bool AreNewNotificationsAvailable(); static constexpr uint8_t MaximumMessageSize() { return MessageSize; }; + size_t NbNotifications() const; private: Notification::Id GetNextId(); diff --git a/src/displayapp/screens/Notifications.cpp b/src/displayapp/screens/Notifications.cpp index 09365f2..38a28e1 100644 --- a/src/displayapp/screens/Notifications.cpp +++ b/src/displayapp/screens/Notifications.cpp @@ -11,10 +11,10 @@ Notifications::Notifications(DisplayApp *app, Pinetime::Controllers::Notificatio auto notification = notificationManager.GetLastNotification(); if(notification.valid) { currentId = notification.id; - currentItem.reset(new NotificationItem("Notification", notification.message.data(), notification.index, notification.number, mode)); + currentItem.reset(new NotificationItem("Notification", notification.message.data(), notification.index, notificationManager.NbNotifications(), mode)); validDisplay = true; } else { - currentItem.reset(new NotificationItem("Notification", "No notification to display", 0, 0, mode)); + currentItem.reset(new NotificationItem("Notification", "No notification to display", 0, notificationManager.NbNotifications(), Modes::Preview)); } if(mode == Modes::Preview) { @@ -71,7 +71,7 @@ bool Notifications::OnTouchEvent(Pinetime::Applications::TouchEvents event) { currentId = previousNotification.id; currentItem.reset(nullptr); app->SetFullRefresh(DisplayApp::FullRefreshDirections::Up); - currentItem.reset(new NotificationItem("Notification", previousNotification.message.data(), previousNotification.index, previousNotification.number, mode)); + currentItem.reset(new NotificationItem("Notification", previousNotification.message.data(), previousNotification.index, notificationManager.NbNotifications(), mode)); } return true; case Pinetime::Applications::TouchEvents::SwipeDown: { @@ -87,7 +87,7 @@ bool Notifications::OnTouchEvent(Pinetime::Applications::TouchEvents event) { currentId = nextNotification.id; currentItem.reset(nullptr); app->SetFullRefresh(DisplayApp::FullRefreshDirections::Down); - currentItem.reset(new NotificationItem("Notification", nextNotification.message.data(), nextNotification.index, nextNotification.number, mode)); + currentItem.reset(new NotificationItem("Notification", nextNotification.message.data(), nextNotification.index, notificationManager.NbNotifications(), mode)); } return true; default: |
