Skip to content

Commit

Permalink
Merge pull request #99 from matthewvogt/mer-1113
Browse files Browse the repository at this point in the history
[commhistory-daemon] Use separate notifications for previews. Contributes to MER#1113
  • Loading branch information
matthewvogt committed Jun 17, 2015
2 parents 500724b + 26d6dbc commit 01374ff
Show file tree
Hide file tree
Showing 21 changed files with 115 additions and 41 deletions.
3 changes: 0 additions & 3 deletions data/notifications/x-nemo.call.missed.conf
@@ -1,7 +1,4 @@
appIcon=icon-lock-missed-call
x-nemo-icon=icon-lock-missed-call
x-nemo-preview-icon=icon-lock-missed-call
x-nemo-feedback=call
x-nemo-priority=120
x-nemo-led-disabled-without-body-and-summary=false
x-nemo-max-content-lines=1
1 change: 0 additions & 1 deletion data/notifications/x-nemo.call.missed.group.conf
@@ -1,5 +1,4 @@
appIcon=icon-lock-missed-call
x-nemo-icon=icon-lock-missed-call
x-nemo-priority=120
x-nemo-led-disabled-without-body-and-summary=false
x-nemo-max-content-lines=1
6 changes: 6 additions & 0 deletions data/notifications/x-nemo.call.missed.group.preview.conf
@@ -0,0 +1,6 @@
appIcon=icon-lock-missed-call
transient=true
x-nemo-preview-icon=icon-lock-missed-call
x-nemo-feedback=call
x-nemo-priority=120
x-nemo-led-disabled-without-body-and-summary=false
6 changes: 6 additions & 0 deletions data/notifications/x-nemo.call.missed.preview.conf
@@ -0,0 +1,6 @@
appIcon=icon-lock-missed-call
transient=true
x-nemo-preview-icon=icon-lock-missed-call
x-nemo-feedback=call
x-nemo-priority=120
x-nemo-led-disabled-without-body-and-summary=false
1 change: 0 additions & 1 deletion data/notifications/x-nemo.messaging.group.conf
@@ -1,4 +1,3 @@
appIcon=icon-lock-sms
x-nemo-icon=icon-lock-sms
x-nemo-priority=120
x-nemo-led-disabled-without-body-and-summary=false
7 changes: 7 additions & 0 deletions data/notifications/x-nemo.messaging.group.preview.conf
@@ -0,0 +1,7 @@
appIcon=icon-lock-sms
transient=true
x-nemo-preview-icon=icon-lock-sms
x-nemo-feedback=sms
x-nemo-priority=120
x-nemo-led-disabled-without-body-and-summary=false
x-nemo-display-on=true
4 changes: 0 additions & 4 deletions data/notifications/x-nemo.messaging.im.conf
@@ -1,8 +1,4 @@
appIcon=icon-lock-sms
x-nemo-icon=icon-lock-sms
x-nemo-preview-icon=icon-lock-sms
x-nemo-feedback=chat
x-nemo-priority=120
x-nemo-led-disabled-without-body-and-summary=false
x-nemo-display-on=true
x-nemo-max-content-lines=6
7 changes: 7 additions & 0 deletions data/notifications/x-nemo.messaging.im.preview.conf
@@ -0,0 +1,7 @@
appIcon=icon-lock-sms
transient=true
x-nemo-preview-icon=icon-lock-sms
x-nemo-feedback=chat
x-nemo-priority=120
x-nemo-led-disabled-without-body-and-summary=false
x-nemo-display-on=true
4 changes: 0 additions & 4 deletions data/notifications/x-nemo.messaging.mms.conf
@@ -1,8 +1,4 @@
appIcon=icon-lock-sms
x-nemo-icon=icon-lock-sms
x-nemo-preview-icon=icon-lock-sms
x-nemo-feedback=sms
x-nemo-priority=120
x-nemo-led-disabled-without-body-and-summary=false
x-nemo-display-on=true
x-nemo-max-content-lines=6
7 changes: 7 additions & 0 deletions data/notifications/x-nemo.messaging.mms.preview.conf
@@ -0,0 +1,7 @@
appIcon=icon-lock-sms
transient=true
x-nemo-preview-icon=icon-lock-sms
x-nemo-feedback=sms
x-nemo-priority=120
x-nemo-led-disabled-without-body-and-summary=false
x-nemo-display-on=true
4 changes: 0 additions & 4 deletions data/notifications/x-nemo.messaging.sms.conf
@@ -1,8 +1,4 @@
appIcon=icon-lock-sms
x-nemo-icon=icon-lock-sms
x-nemo-preview-icon=icon-lock-sms
x-nemo-feedback=sms
x-nemo-priority=120
x-nemo-led-disabled-without-body-and-summary=false
x-nemo-display-on=true
x-nemo-max-content-lines=6
7 changes: 7 additions & 0 deletions data/notifications/x-nemo.messaging.sms.preview.conf
@@ -0,0 +1,7 @@
appIcon=icon-lock-sms
transient=true
x-nemo-preview-icon=icon-lock-sms
x-nemo-feedback=sms
x-nemo-priority=120
x-nemo-led-disabled-without-body-and-summary=false
x-nemo-display-on=true
4 changes: 0 additions & 4 deletions data/notifications/x-nemo.messaging.voicemail-SMS.conf
@@ -1,7 +1,3 @@
appIcon=icon-lock-sms
x-nemo-icon=icon-lock-sms
x-nemo-preview-icon=icon-lock-sms
x-nemo-priority=120
x-nemo-feedback=sms
x-nemo-led-disabled-without-body-and-summary=false
x-nemo-display-on=true
@@ -0,0 +1,7 @@
appIcon=icon-lock-sms
transient=true
x-nemo-preview-icon=icon-lock-sms
x-nemo-priority=120
x-nemo-feedback=sms
x-nemo-led-disabled-without-body-and-summary=false
x-nemo-display-on=true
4 changes: 0 additions & 4 deletions data/notifications/x-nemo.messaging.voicemail.conf
@@ -1,9 +1,5 @@
appIcon=icon-lock-voicemail
x-nemo-icon=icon-lock-voicemail
x-nemo-preview-icon=icon-lock-voicemail
x-nemo-user-removable=false
x-nemo-feedback=sms
x-nemo-priority=120
x-nemo-led-disabled-without-body-and-summary=false
x-nemo-display-on=true
x-nemo-max-content-lines=1
1 change: 0 additions & 1 deletion data/notifications/x-nemo.messaging.voicemail.group.conf
Expand Up @@ -2,5 +2,4 @@ appIcon=icon-lock-voicemail
x-nemo-icon=icon-lock-voicemail
x-nemo-priority=120
x-nemo-user-removable=false
x-nemo-led-disabled-without-body-and-summary=false
x-nemo-max-content-lines=1
@@ -0,0 +1,6 @@
appIcon=icon-lock-voicemail
x-nemo-preview-icon=icon-lock-voicemail
x-nemo-feedback=sms
x-nemo-priority=120
x-nemo-led-disabled-without-body-and-summary=false
x-nemo-display-on=true
6 changes: 6 additions & 0 deletions data/notifications/x-nemo.messaging.voicemail.preview.conf
@@ -0,0 +1,6 @@
appIcon=icon-lock-voicemail
x-nemo-preview-icon=icon-lock-voicemail
x-nemo-feedback=sms
x-nemo-priority=120
x-nemo-led-disabled-without-body-and-summary=false
x-nemo-display-on=true
32 changes: 28 additions & 4 deletions src/notificationgroup.cpp
Expand Up @@ -152,16 +152,22 @@ void NotificationGroup::updateGroup()
mGroup->setItemCount(mNotifications.size());

// This group is only visible if the members are hidden
mGroup->setHintValue("x-nemo-hidden", !mNotifications[0]->hidden());
const bool membersHidden(mNotifications[0]->hidden());
mGroup->setHintValue("x-nemo-hidden", !membersHidden);

NotificationManager::instance()->setNotificationProperties(mGroup, mNotifications[0],
countConversations() > 1);
const bool grouped(countConversations() > 1);
NotificationManager::instance()->setNotificationProperties(mGroup, mNotifications[0], grouped);

// Find the most recent timestamp from grouped notifications
QDateTime groupTimestamp;
bool allRestored = true;

foreach (PersonalNotification *pn, mNotifications) {
// Are all members restored from storage?
allRestored &= pn->restored();

if (pn->hasPendingEvents()) {
// Publish this notification to ensure it has a timestamp
pn->publishNotification();
}

Expand All @@ -170,9 +176,27 @@ void NotificationGroup::updateGroup()
groupTimestamp = timestamp;
}
}

mGroup->setTimestamp(groupTimestamp);

if (membersHidden && !allRestored) {
// Show a preview banner for this group update (unless we've just restored from storage)
Notification preview;

preview.setAppName(mGroup->appName());
preview.setCategory(mGroup->category() + QStringLiteral(".preview"));
preview.setPreviewSummary(mGroup->summary());
preview.setPreviewBody(mGroup->body());

NotificationManager::instance()->setNotificationProperties(&preview, mNotifications[0], grouped);

preview.publish();

DEBUG() << preview.replacesId() << preview.category() << preview.previewSummary() << preview.previewBody();
}

mGroup->publish();

DEBUG() << mGroup->replacesId() << mGroup->category() << mGroup->summary() << mGroup->body() << mGroup->hintValue("x-nemo-hidden");
}

void NotificationGroup::updateGroupLater()
Expand Down
37 changes: 26 additions & 11 deletions src/personalnotification.cpp
Expand Up @@ -39,6 +39,7 @@ PersonalNotification::PersonalNotification(QObject* parent) : QObject(parent),
m_contactId(0),
m_hasPendingEvents(false),
m_hidden(false),
m_restored(false),
m_notification(0)
{
}
Expand All @@ -56,6 +57,7 @@ PersonalNotification::PersonalNotification(const QString& remoteUid,
m_contactId(contactId), m_notificationText(lastNotification),
m_hasPendingEvents(true),
m_hidden(false),
m_restored(false),
m_notification(0)
{
}
Expand Down Expand Up @@ -87,6 +89,7 @@ bool PersonalNotification::restore(Notification *n)
return false;

m_notification = n;
m_restored = true;
connect(m_notification, SIGNAL(closed(uint)), SLOT(onClosed(uint)));
return true;
}
Expand Down Expand Up @@ -121,26 +124,33 @@ void PersonalNotification::publishNotification()
m_notification->setCategory(NotificationGroup::groupType(m_eventType));
m_notification->setHintValue("x-commhistoryd-data", serialized().toBase64());
m_notification->setHintValue("x-nemo-hidden", m_hidden);
m_notification->setSummary(name);
m_notification->setBody(notificationText());

NotificationManager::instance()->setNotificationProperties(m_notification, this, false);

// No preview banner for existing notifications
if (m_notification->replacesId()) {
m_notification->setPreviewSummary(QString());
m_notification->setPreviewBody(QString());
} else {
m_notification->setPreviewSummary(name);
m_notification->setPreviewBody(notificationText());
}
if (!m_hidden && m_notification->replacesId() == 0) {
// Show preview banner for notifications not previously reported
Notification preview;

m_notification->setSummary(name);
m_notification->setBody(notificationText());
preview.setAppName(m_notification->appName());
preview.setCategory(m_notification->category() + QStringLiteral(".preview"));
preview.setPreviewSummary(m_notification->summary());
preview.setPreviewBody(m_notification->body());

NotificationManager::instance()->setNotificationProperties(&preview, this, false);

preview.publish();

DEBUG() << preview.replacesId() << preview.category() << preview.previewSummary() << preview.previewBody();
}

m_notification->publish();

setHasPendingEvents(false);
m_restored = false;

DEBUG() << m_notification->category() << name << m_notification->previewBody();
DEBUG() << m_notification->replacesId() << m_notification->category() << m_notification->summary() << m_notification->body() << m_notification->hintValue("x-nemo-hidden");
}

void PersonalNotification::removeNotification()
Expand Down Expand Up @@ -258,6 +268,11 @@ bool PersonalNotification::hidden() const
return m_hidden;
}

bool PersonalNotification::restored() const
{
return m_restored;
}

void PersonalNotification::setRemoteUid(const QString& remoteUid)
{
if (m_remoteUid != remoteUid) {
Expand Down
2 changes: 2 additions & 0 deletions src/personalnotification.h
Expand Up @@ -111,6 +111,7 @@ class PersonalNotification : public QObject, public Serialisable
QString smsReplaceNumber() const;
QDateTime timestamp() const;
bool hidden() const;
bool restored() const;

void setRemoteUid(const QString& remoteUid);
void setAccount(const QString& account);
Expand Down Expand Up @@ -147,6 +148,7 @@ private slots:
QString m_eventToken;
QString m_smsReplaceNumber;
bool m_hidden;
bool m_restored;

Notification *m_notification;

Expand Down

0 comments on commit 01374ff

Please sign in to comment.