From: Manuel Nickschas Date: Tue, 23 Feb 2010 00:19:43 +0000 (+0100) Subject: Add a tooltip to the tray icon X-Git-Tag: 0.6-rc1~44 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=42d2c195b272f42fdcad7f44b9db4ae4f708bdf6;ds=sidebyside Add a tooltip to the tray icon --- diff --git a/src/qtui/knotificationbackend.cpp b/src/qtui/knotificationbackend.cpp index e261eacf..7a8b2b0a 100644 --- a/src/qtui/knotificationbackend.cpp +++ b/src/qtui/knotificationbackend.cpp @@ -36,6 +36,8 @@ KNotificationBackend::KNotificationBackend(QObject *parent) { connect(QtUi::mainWindow()->systemTray(), SIGNAL(activated(SystemTray::ActivationReason)), SLOT(notificationActivated(SystemTray::ActivationReason))); + + updateToolTip(); } void KNotificationBackend::notify(const Notification &n) { @@ -62,6 +64,7 @@ void KNotificationBackend::notify(const Notification &n) { _notifications.append(qMakePair(n.notificationId, QPointer(notification))); + updateToolTip(); QtUi::mainWindow()->systemTray()->setAlert(true); } @@ -75,6 +78,7 @@ void KNotificationBackend::removeNotificationById(uint notificationId) { } else ++i; } + updateToolTip(); } void KNotificationBackend::close(uint notificationId) { @@ -105,6 +109,11 @@ void KNotificationBackend::notificationActivated(uint notificationId) { emit activated(notificationId); } +void KNotificationBackend::updateToolTip() { + QtUi::mainWindow()->systemTray()->setToolTip("Quassel IRC", + _notifications.count()? tr("%n pending highlights", "", _notifications.count()) : QString()); +} + SettingsPage *KNotificationBackend::createConfigWidget() const { return new ConfigWidget(); } diff --git a/src/qtui/knotificationbackend.h b/src/qtui/knotificationbackend.h index 925f4479..9a870f8f 100644 --- a/src/qtui/knotificationbackend.h +++ b/src/qtui/knotificationbackend.h @@ -47,6 +47,7 @@ private: class ConfigWidget; void removeNotificationById(uint id); + void updateToolTip(); QList > > _notifications; }; diff --git a/src/qtui/legacysystemtray.cpp b/src/qtui/legacysystemtray.cpp index 99698000..3368b299 100644 --- a/src/qtui/legacysystemtray.cpp +++ b/src/qtui/legacysystemtray.cpp @@ -46,6 +46,8 @@ LegacySystemTray::LegacySystemTray(QWidget *parent) _blinkTimer.setInterval(500); _blinkTimer.setSingleShot(false); connect(&_blinkTimer, SIGNAL(timeout()), SLOT(on_blinkTimeout())); + + connect(this, SIGNAL(toolTipChanged(QString,QString)), SLOT(syncLegacyIcon())); } void LegacySystemTray::init() { @@ -59,7 +61,11 @@ void LegacySystemTray::init() { void LegacySystemTray::syncLegacyIcon() { _trayIcon->setIcon(stateIcon()); - _trayIcon->setToolTip(toolTipTitle()); + + QString tooltip = QString("%1").arg(toolTipTitle()); + if(!toolTipSubTitle().isEmpty()) + tooltip += QString("
%1").arg(toolTipSubTitle()); + _trayIcon->setToolTip(tooltip); } void LegacySystemTray::setVisible(bool visible) { diff --git a/src/qtui/legacysystemtray.h b/src/qtui/legacysystemtray.h index 47c5f11e..07c1b1d9 100644 --- a/src/qtui/legacysystemtray.h +++ b/src/qtui/legacysystemtray.h @@ -59,9 +59,9 @@ private slots: void on_blinkTimeout(); void on_activated(QSystemTrayIcon::ActivationReason); -private: void syncLegacyIcon(); +private: QTimer _blinkTimer; bool _blinkState; bool _isVisible; diff --git a/src/qtui/statusnotifieritem.cpp b/src/qtui/statusnotifieritem.cpp index 4df13dc5..690ed9e4 100644 --- a/src/qtui/statusnotifieritem.cpp +++ b/src/qtui/statusnotifieritem.cpp @@ -50,6 +50,7 @@ void StatusNotifierItem::init() { qDBusRegisterMetaType(); _statusNotifierItemDBus = new StatusNotifierItemDBus(this); + connect(this, SIGNAL(toolTipChanged(QString,QString)), _statusNotifierItemDBus, SIGNAL(NewToolTip())); connect(QDBusConnection::sessionBus().interface(), SIGNAL(serviceOwnerChanged(QString,QString,QString)), SLOT(serviceChange(QString,QString,QString))); diff --git a/src/qtui/systraynotificationbackend.cpp b/src/qtui/systraynotificationbackend.cpp index fa7b2457..721ee075 100644 --- a/src/qtui/systraynotificationbackend.cpp +++ b/src/qtui/systraynotificationbackend.cpp @@ -46,6 +46,8 @@ SystrayNotificationBackend::SystrayNotificationBackend(QObject *parent) SLOT(notificationActivated(SystemTray::ActivationReason))); QApplication::instance()->installEventFilter(this); + + updateToolTip(); } void SystrayNotificationBackend::notify(const Notification ¬ification) { @@ -58,6 +60,8 @@ void SystrayNotificationBackend::notify(const Notification ¬ification) { if(_animate) QtUi::mainWindow()->systemTray()->setAlert(true); + + updateToolTip(); } void SystrayNotificationBackend::close(uint notificationId) { @@ -73,6 +77,8 @@ void SystrayNotificationBackend::close(uint notificationId) { if(!_notifications.count()) QtUi::mainWindow()->systemTray()->setAlert(false); + + updateToolTip(); } void SystrayNotificationBackend::showBubble() { @@ -126,6 +132,11 @@ void SystrayNotificationBackend::animateChanged(const QVariant &v) { _animate = v.toBool(); } +void SystrayNotificationBackend::updateToolTip() { + QtUi::mainWindow()->systemTray()->setToolTip("Quassel IRC", + _notifications.count()? tr("%n pending highlights", "", _notifications.count()) : QString()); +} + SettingsPage *SystrayNotificationBackend::createConfigWidget() const { return new ConfigWidget(); } diff --git a/src/qtui/systraynotificationbackend.h b/src/qtui/systraynotificationbackend.h index 46591b38..4c8ff79b 100644 --- a/src/qtui/systraynotificationbackend.h +++ b/src/qtui/systraynotificationbackend.h @@ -48,6 +48,7 @@ private slots: void animateChanged(const QVariant &); void showBubbleChanged(const QVariant &); + void updateToolTip(); private: class ConfigWidget;