Show a notification for invited rooms

This commit is contained in:
Tobias Fella
2021-11-17 12:24:25 +00:00
parent c81ca6f8bb
commit 5b893d7736
4 changed files with 48 additions and 0 deletions

View File

@@ -71,3 +71,30 @@ void NotificationsManager::postNotification(NeoChatRoom *room,
m_notifications.insert(room->id(), notification);
}
void NotificationsManager::postInviteNotification(NeoChatRoom *room, const QString &title, const QString &sender, const QImage &icon)
{
if (!NeoChatConfig::self()->showNotifications()) {
return;
}
QPixmap img;
img.convertFromImage(icon);
KNotification *notification = new KNotification("invite");
notification->setText(i18n("%1 invited you to a room", sender));
notification->setTitle(title);
notification->setPixmap(img);
notification->setDefaultAction(i18n("Open this invite in NeoChat"));
connect(notification, &KNotification::defaultActivated, this, [=]() {
RoomManager::instance().enterRoom(room);
Q_EMIT Controller::instance().showWindow();
});
notification->setActions({i18n("Accept Invite"), i18n("Reject Invite")});
connect(notification, &KNotification::action1Activated, this, [room]() {
room->acceptInvitation();
});
connect(notification, &KNotification::action2Activated, this, [room]() {
RoomManager::instance().leaveRoom(room);
});
notification->sendEvent();
m_notifications.insert(room->id(), notification);
}