X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fqtui%2Fstatusnotifieritem.cpp;h=48c747e10745b7ae113afae1d723cdcbc6fcce07;hb=5941a9d24333401874e051c349b391e2bcac0e0d;hp=f3b462bca820b8cf80bedd3ef2a50cafbaf1eead;hpb=39dffd095bb5dbca49199d2173438c7f90c4e6fa;p=quassel.git diff --git a/src/qtui/statusnotifieritem.cpp b/src/qtui/statusnotifieritem.cpp index f3b462bc..48c747e1 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,13 +103,14 @@ 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, @@ -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(); }