X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fstatusnotifieritem.cpp;h=8d7972f453015ceb9cbcbaba0a1b48c47ab91113;hp=9d61fa7539d38a10e2586919de1ed6146e576198;hb=97553ea9232d59dab4a57ece9266c9449b0d0d76;hpb=5ba28fb36a747bd9a2c05a58f0533d1e38c2a0de diff --git a/src/qtui/statusnotifieritem.cpp b/src/qtui/statusnotifieritem.cpp index 9d61fa75..8d7972f4 100644 --- a/src/qtui/statusnotifieritem.cpp +++ b/src/qtui/statusnotifieritem.cpp @@ -54,7 +54,9 @@ void StatusNotifierItem::init() { qDBusRegisterMetaType(); _statusNotifierItemDBus = new StatusNotifierItemDBus(this); + connect(this, SIGNAL(toolTipChanged(QString,QString)), _statusNotifierItemDBus, SIGNAL(NewToolTip())); + connect(this, SIGNAL(animationEnabledChanged(bool)), _statusNotifierItemDBus, SIGNAL(NewAttentionIcon())); connect(QDBusConnection::sessionBus().interface(), SIGNAL(serviceOwnerChanged(QString,QString,QString)), SLOT(serviceChange(QString,QString,QString))); @@ -133,6 +135,20 @@ void StatusNotifierItem::serviceChange(const QString& name, const QString& oldOw } } +bool StatusNotifierItem::isSystemTrayAvailable() const { + if(mode() == StatusNotifier) + return true; // else it should be set to legacy on registration + + return StatusNotifierItemParent::isSystemTrayAvailable(); +} + +bool StatusNotifierItem::isVisible() const { + if(mode() == StatusNotifier) + return shouldBeVisible(); // we don't have a way to check, so we need to trust everything went right + + return StatusNotifierItemParent::isVisible(); +} + void StatusNotifierItem::setMode(Mode mode_) { StatusNotifierItemParent::setMode(mode_); @@ -148,6 +164,21 @@ void StatusNotifierItem::setState(State state_) { emit _statusNotifierItemDBus->NewIcon(); } +void StatusNotifierItem::setVisible(bool visible) { + LegacySystemTray::setVisible(visible); + + if(mode() == StatusNotifier) { + if(shouldBeVisible()) { + _statusNotifierItemDBus->registerService(); + registerToDaemon(); + } else { + _statusNotifierItemDBus->unregisterService(); + _statusNotifierWatcher->deleteLater(); + _statusNotifierWatcher = 0; + } + } +} + QString StatusNotifierItem::title() const { return QString("Quassel IRC"); } @@ -160,7 +191,10 @@ QString StatusNotifierItem::iconName() const { } QString StatusNotifierItem::attentionIconName() const { - return QString("quassel_message"); + if(animationEnabled()) + return QString("quassel_message"); + else + return QString("quassel"); } QString StatusNotifierItem::toolTipIconName() const {