22 #include "util/display.h"
28 size_t getNumMessages(
32 auto numMessages = std::accumulate(friendNotifications.begin(), friendNotifications.end(), 0);
33 numMessages = std::accumulate(groupNotifications.begin(), groupNotifications.end(), numMessages);
42 return friendNotifications.size() + groupNotifications.size();
45 QString generateMultiChatTitle(
size_t numChats,
size_t numMessages)
48 return QObject::tr(
"%1 message(s) from %2 chats")
54 QString generateSingleChatTitle(
58 if (numNotifications[contact] > 1)
61 return QObject::tr(
"%1 message(s) from %2")
62 .arg(numNotifications[contact])
63 .arg(
contact->getDisplayedName());
67 return contact->getDisplayedName();
71 QString generateTitle(
76 auto numChats = getNumChats(friendNotifications, groupNotifications);
79 return generateMultiChatTitle(numChats, getNumMessages(friendNotifications, groupNotifications));
83 return generateSingleChatTitle(friendNotifications, f);
87 QString generateTitle(
92 auto numChats = getNumChats(friendNotifications, groupNotifications);
95 return generateMultiChatTitle(numChats, getNumMessages(friendNotifications, groupNotifications));
99 return generateSingleChatTitle(groupNotifications, g);
103 QString generateContent(
109 assert(friendNotifications.size() > 0 || groupNotifications.size() > 0);
111 auto numChats = getNumChats(friendNotifications, groupNotifications);
115 std::vector<QString> displayNames;
116 displayNames.reserve(numChats);
118 for (
auto it = friendNotifications.begin(); it != friendNotifications.end(); ++it) {
119 displayNames.push_back(it.key()->getDisplayedName());
122 for (
auto it = groupNotifications.begin(); it != groupNotifications.end(); ++it) {
123 displayNames.push_back(it.key()->getDisplayedName());
126 assert(displayNames.size() > 0);
130 std::sort(displayNames.begin(), displayNames.end(), [&] (
const QString& a,
const QString& b) {
131 return collator.compare(a, b) < 1;
134 auto it = displayNames.begin();
138 while (++it != displayNames.end()) {
145 if (groupNotifications.size() == 1) {
146 return groupNotifications.begin().key()->getPeerList()[sender] +
": " + lastMessage;
153 QPixmap getSenderAvatar(
Profile* profile,
const ToxPk& sender)
155 return profile ? profile->
loadAvatar(sender) : QPixmap();
162 : notificationSettings(notificationSettings)
175 ret.
title = tr(
"New message");
193 ret.
title = tr(
"New group message");
211 ret.
title = tr(
"Incoming file transfer");
218 if (numChats > 1 || numMessages > 1)
227 ret.
message = filename +
" (" + getHumanReadableSize(fileSize) +
")";
240 ret.
title = tr(
"Group invite received");
256 ret.
title = tr(
"Friend request received");
260 ret.
title = tr(
"Friend request received from %1").arg(sender.
toString());