comunicwatcher/trayicon.cpp

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"));
}