add visual notification for unread messages
Change-Id: If9a5f9953711bef705bbe0951b6a6c3a2e59879b
Reviewed-by: Sébastien Blin <sebastien.blin@savoirfairelinux.com>
diff --git a/src/native/pixbufmanipulator.cpp b/src/native/pixbufmanipulator.cpp
index a57d646..04c392e 100644
--- a/src/native/pixbufmanipulator.cpp
+++ b/src/native/pixbufmanipulator.cpp
@@ -122,7 +122,11 @@
}
std::shared_ptr<GdkPixbuf>
-PixbufManipulator::scaleAndFrame(const GdkPixbuf *photo, const QSize& size, bool display_presence, bool is_present)
+PixbufManipulator::scaleAndFrame(const GdkPixbuf *photo,
+ const QSize& size,
+ bool display_presence,
+ bool is_present,
+ uint unreadMessages)
{
/**
* for now, respect the height requested
@@ -158,6 +162,10 @@
if (display_presence)
result.reset(ring_draw_presence(result.get(), is_present), g_object_unref);
+ /* draw visual notification for unread messages */
+ if (unreadMessages)
+ result.reset(ring_draw_unread_messages(result.get(), unreadMessages), g_object_unref);
+
return result;
}
@@ -255,12 +263,12 @@
}
QVariant
-PixbufManipulator::conversationPhoto(const lrc::api::conversation::Info& conversation,
+PixbufManipulator::conversationPhoto(const lrc::api::conversation::Info& conversationInfo,
const lrc::api::account::Info& accountInfo,
const QSize& size,
bool displayPresence)
{
- auto contacts = conversation.participants;
+ auto contacts = conversationInfo.participants;
if (!contacts.empty())
{
// Get first contact photo
@@ -268,16 +276,17 @@
auto contactInfo = accountInfo.contactModel->getContact(contactUri);
auto contactPhoto = contactInfo.profileInfo.avatar;
auto bestName = contactInfo.profileInfo.alias.empty()? contactInfo.registeredName : contactInfo.profileInfo.alias;
+ auto unreadMessages = conversationInfo.unreadMessages;
if (contactInfo.profileInfo.type == lrc::api::profile::Type::TEMPORARY && contactInfo.profileInfo.uri.empty()) {
- return QVariant::fromValue(scaleAndFrame(temporaryItemAvatar().get(), size, false, false));
+ return QVariant::fromValue(scaleAndFrame(temporaryItemAvatar().get(), size, false, false, unreadMessages));
} else if (contactInfo.profileInfo.type == lrc::api::profile::Type::SIP) {
return QVariant::fromValue(scaleAndFrame(generateAvatar(bestName, "").get(), size, displayPresence, contactInfo.isPresent));
} else if (!contactPhoto.empty()) {
QByteArray byteArray(contactPhoto.c_str(), contactPhoto.length());
QVariant photo = personPhoto(byteArray);
- return QVariant::fromValue(scaleAndFrame(photo.value<std::shared_ptr<GdkPixbuf>>().get(), size, displayPresence, contactInfo.isPresent));
+ return QVariant::fromValue(scaleAndFrame(photo.value<std::shared_ptr<GdkPixbuf>>().get(), size, displayPresence, contactInfo.isPresent, unreadMessages));
} else {
- return QVariant::fromValue(scaleAndFrame(generateAvatar(bestName, contactInfo.profileInfo.uri).get(), size, displayPresence, contactInfo.isPresent));
+ return QVariant::fromValue(scaleAndFrame(generateAvatar(bestName, contactInfo.profileInfo.uri).get(), size, displayPresence, contactInfo.isPresent, unreadMessages));
}
}
// should not