summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJF <jf@codingfield.com>2020-10-21 20:15:02 (GMT)
committerJF <jf@codingfield.com>2020-10-21 20:15:02 (GMT)
commitcabf1168d429db84b0985e25881ead86d80dde3c (patch)
tree42f5187cd7de9e947cfe839761cf17662be8210e
parent440ae412b9ce9c868aa8b98e6da537bd0ec62de7 (diff)
Notifications : Fix display of notification index/number.
-rw-r--r--src/components/ble/NotificationManager.cpp5
-rw-r--r--src/components/ble/NotificationManager.h2
-rw-r--r--src/displayapp/screens/Notifications.cpp8
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: