X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fqtui%2Fstatusnotifieritem.cpp;h=59a129ea8811e190f445ca77bdbb21ecd6f5d99a;hb=c55df5f2d765b100b7a1ead5a72202f969aa9581;hp=f3b462bca820b8cf80bedd3ef2a50cafbaf1eead;hpb=39dffd095bb5dbca49199d2173438c7f90c4e6fa;p=quassel.git diff --git a/src/qtui/statusnotifieritem.cpp b/src/qtui/statusnotifieritem.cpp index f3b462bc..59a129ea 100644 --- a/src/qtui/statusnotifieritem.cpp +++ b/src/qtui/statusnotifieritem.cpp @@ -23,16 +23,19 @@ #ifdef HAVE_DBUS +#include "statusnotifieritem.h" + #include #include #include +#include #include #include #include +#include "icon.h" #include "qtui.h" #include "quassel.h" -#include "statusnotifieritem.h" #include "statusnotifieritemdbus.h" constexpr int kProtocolVersion {0}; @@ -100,20 +103,21 @@ StatusNotifierItem::StatusNotifierItem(QWidget *parent) } #endif - connect(QtUi::instance(), SIGNAL(iconThemeRefreshed()), this, SLOT(refreshIcons())); + connect(this, SIGNAL(iconsChanged()), this, SLOT(refreshIcons())); refreshIcons(); // Our own SNI service _statusNotifierItemDBus = new StatusNotifierItemDBus(this); + connect(this, SIGNAL(currentIconNameChanged()), _statusNotifierItemDBus, SIGNAL(NewIcon())); + connect(this, SIGNAL(currentIconNameChanged()), _statusNotifierItemDBus, SIGNAL(NewAttentionIcon())); connect(this, SIGNAL(toolTipChanged(QString, QString)), _statusNotifierItemDBus, SIGNAL(NewToolTip())); - connect(this, SIGNAL(animationEnabledChanged(bool)), _statusNotifierItemDBus, SIGNAL(NewAttentionIcon())); // Service watcher to keep track of the StatusNotifierWatcher service - QDBusServiceWatcher *watcher = new QDBusServiceWatcher(kSniWatcherService, - QDBusConnection::sessionBus(), - QDBusServiceWatcher::WatchForOwnerChange, - this); - connect(watcher, SIGNAL(serviceOwnerChanged(QString, QString, QString)), SLOT(serviceChange(QString, QString, QString))); + _serviceWatcher = new QDBusServiceWatcher(kSniWatcherService, + QDBusConnection::sessionBus(), + QDBusServiceWatcher::WatchForOwnerChange, + this); + connect(_serviceWatcher, SIGNAL(serviceOwnerChanged(QString, QString, QString)), SLOT(serviceChange(QString, QString, QString))); // Client instance for StatusNotifierWatcher _statusNotifierWatcher = new org::kde::StatusNotifierWatcher(kSniWatcherService, @@ -188,6 +192,7 @@ void StatusNotifierItem::onDBusError(const QDBusError &error) setMode(Mode::Legacy); } + void StatusNotifierItem::refreshIcons() { #if QT_VERSION >= 0x050000 @@ -196,7 +201,7 @@ void StatusNotifierItem::refreshIcons() baseDir.removeRecursively(); for (auto &&trayState : { State::Active, State::Passive, State::NeedsAttention }) { auto iconName = SystemTray::iconName(trayState); - QIcon icon = QIcon::fromTheme(iconName); + QIcon icon = icon::get(iconName); if (!icon.isNull()) { for (auto &&size : icon.availableSizes()) { auto pixDir = QString{"%1/%2x%3/status"}.arg(baseDir.absolutePath()).arg(size.width()).arg(size.height()); @@ -239,11 +244,11 @@ bool StatusNotifierItem::isSystemTrayAvailable() const void StatusNotifierItem::onModeChanged(Mode mode) { if (mode == Mode::StatusNotifier) { - _statusNotifierItemDBus->registerService(); + _statusNotifierItemDBus->registerTrayIcon(); registerToWatcher(); } else { - _statusNotifierItemDBus->unregisterService(); + _statusNotifierItemDBus->unregisterTrayIcon(); } } @@ -251,7 +256,6 @@ void StatusNotifierItem::onModeChanged(Mode mode) void StatusNotifierItem::onStateChanged(State state) { if (mode() == Mode::StatusNotifier) { - emit _statusNotifierItemDBus->NewIcon(); emit _statusNotifierItemDBus->NewStatus(metaObject()->enumerator(metaObject()->indexOfEnumerator("State")).valueToKey(state)); } } @@ -261,11 +265,11 @@ void StatusNotifierItem::onVisibilityChanged(bool isVisible) { if (mode() == Mode::StatusNotifier) { if (isVisible) { - _statusNotifierItemDBus->registerService(); + _statusNotifierItemDBus->registerTrayIcon(); registerToWatcher(); } else { - _statusNotifierItemDBus->unregisterService(); + _statusNotifierItemDBus->unregisterTrayIcon(); } } } @@ -279,23 +283,13 @@ QString StatusNotifierItem::title() const QString StatusNotifierItem::iconName() const { - if (state() == Passive) { - return SystemTray::iconName(State::Passive); - } - else { - return SystemTray::iconName(State::Active); - } + return currentIconName(); } QString StatusNotifierItem::attentionIconName() const { - if (animationEnabled()) { - return SystemTray::iconName(State::NeedsAttention); - } - else { - return SystemTray::iconName(State::NeedsAttention); - } + return currentAttentionIconName(); }