mirror of
https://gitlab.com/comunic/comunicwatcher
synced 2024-10-22 22:53:24 +00:00
61 lines
1.3 KiB
C++
61 lines
1.3 KiB
C++
#include <QApplication>
|
|
#include <QMenu>
|
|
|
|
#include "trayicon.h"
|
|
|
|
TrayIcon::TrayIcon(QObject *parent) : QObject(parent)
|
|
{
|
|
mMenu = new QMenu;
|
|
|
|
QAction *closeAction = mMenu->addAction(tr("Quit"));
|
|
connect(closeAction, &QAction::triggered, this, &TrayIcon::onQuit);
|
|
|
|
mTrayIcon.setIcon(QIcon(":/logo_large.png"));
|
|
mTrayIcon.setContextMenu(mMenu);
|
|
mTrayIcon.show();
|
|
}
|
|
|
|
TrayIcon::~TrayIcon()
|
|
{
|
|
mMenu->deleteLater();
|
|
}
|
|
|
|
void TrayIcon::onNewNumber(const NotificationsNumber &number)
|
|
{
|
|
if(number.sum() > mOldNumber) {
|
|
showNotification(number);
|
|
}
|
|
|
|
mOldNumber = number.sum();
|
|
}
|
|
|
|
void TrayIcon::onQuit()
|
|
{
|
|
QApplication::exit();
|
|
}
|
|
|
|
void TrayIcon::showNotification(const NotificationsNumber &n)
|
|
{
|
|
QString msg;
|
|
|
|
if(n.newNotifs() == 1)
|
|
msg += tr("1 new notification");
|
|
else if(n.newNotifs() > 1)
|
|
msg += tr("%1 new notifications").arg(n.newNotifs());
|
|
|
|
|
|
if(n.unreadConversations() > 0) {
|
|
if(!msg.isEmpty())
|
|
msg += tr(" and ");
|
|
|
|
if(n.unreadConversations() == 1)
|
|
msg += tr("1 unread conversation");
|
|
else if(n.unreadConversations() > 1)
|
|
msg += tr("%1 unread conversations").arg(n.unreadConversations());
|
|
}
|
|
|
|
msg = tr("You have %1.").arg(msg);
|
|
|
|
mTrayIcon.showMessage(tr("Comunic"), msg, QIcon(":/logo_large.png"));
|
|
}
|