X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fstatusnotifieritem.cpp;h=8d7972f453015ceb9cbcbaba0a1b48c47ab91113;hp=dc2e65c764ecf9eb3f8dc7cd74f4ed92a5186661;hb=6e73ba4a19fd92038e1ea749125767661fb34e27;hpb=a9cc264bc4ee3e51ede21b79276704d4043e3656 diff --git a/src/qtui/statusnotifieritem.cpp b/src/qtui/statusnotifieritem.cpp index dc2e65c7..8d7972f4 100644 --- a/src/qtui/statusnotifieritem.cpp +++ b/src/qtui/statusnotifieritem.cpp @@ -54,6 +54,7 @@ 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())); @@ -134,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_); @@ -149,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"); }