{
connect(QtUi::mainWindow()->systemTray(), SIGNAL(activated(SystemTray::ActivationReason)),
SLOT(notificationActivated(SystemTray::ActivationReason)));
+
+ updateToolTip();
}
void KNotificationBackend::notify(const Notification &n) {
_notifications.append(qMakePair(n.notificationId, QPointer<KNotification>(notification)));
+ updateToolTip();
QtUi::mainWindow()->systemTray()->setAlert(true);
}
} else
++i;
}
+ updateToolTip();
}
void KNotificationBackend::close(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();
}
class ConfigWidget;
void removeNotificationById(uint id);
+ void updateToolTip();
QList<QPair<uint, QPointer<KNotification> > > _notifications;
};
_blinkTimer.setInterval(500);
_blinkTimer.setSingleShot(false);
connect(&_blinkTimer, SIGNAL(timeout()), SLOT(on_blinkTimeout()));
+
+ connect(this, SIGNAL(toolTipChanged(QString,QString)), SLOT(syncLegacyIcon()));
}
void LegacySystemTray::init() {
void LegacySystemTray::syncLegacyIcon() {
_trayIcon->setIcon(stateIcon());
- _trayIcon->setToolTip(toolTipTitle());
+
+ QString tooltip = QString("<b>%1</b>").arg(toolTipTitle());
+ if(!toolTipSubTitle().isEmpty())
+ tooltip += QString("<br>%1").arg(toolTipSubTitle());
+ _trayIcon->setToolTip(tooltip);
}
void LegacySystemTray::setVisible(bool visible) {
void on_blinkTimeout();
void on_activated(QSystemTrayIcon::ActivationReason);
-private:
void syncLegacyIcon();
+private:
QTimer _blinkTimer;
bool _blinkState;
bool _isVisible;
qDBusRegisterMetaType<DBusToolTipStruct>();
_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)));
SLOT(notificationActivated(SystemTray::ActivationReason)));
QApplication::instance()->installEventFilter(this);
+
+ updateToolTip();
}
void SystrayNotificationBackend::notify(const Notification ¬ification) {
if(_animate)
QtUi::mainWindow()->systemTray()->setAlert(true);
+
+ updateToolTip();
}
void SystrayNotificationBackend::close(uint notificationId) {
if(!_notifications.count())
QtUi::mainWindow()->systemTray()->setAlert(false);
+
+ updateToolTip();
}
void SystrayNotificationBackend::showBubble() {
_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();
}
void animateChanged(const QVariant &);
void showBubbleChanged(const QVariant &);
+ void updateToolTip();
private:
class ConfigWidget;