qtui: Switch to tray-specific icons
[quassel.git] / src / qtui / systemtray.cpp
index 36b7047..679a4b1 100644 (file)
 
 SystemTray::SystemTray(QWidget *parent)
     : QObject(parent),
-    _passiveIcon(QIcon::fromTheme("inactive-quassel", QIcon(":/icons/inactive-quassel.png"))),
-    _activeIcon(QIcon::fromTheme("quassel", QIcon(":/icons/quassel.png"))),
-    _needsAttentionIcon(QIcon::fromTheme("message-quassel", QIcon(":/icons/message-quassel.png"))),
     _associatedWidget(parent)
 {
     Q_ASSERT(parent);
+
+    NotificationSettings{}.initAndNotify("Systray/Animate", this, SLOT(enableAnimationChanged(QVariant)), true);
+    UiStyleSettings{}.initAndNotify("Icons/InvertTray", this, SLOT(invertTrayIconChanged(QVariant)), false);
 }
 
 
@@ -78,9 +78,6 @@ void SystemTray::init()
     _trayMenu->addAction(coll->action("Quit"));
 
     connect(_trayMenu, SIGNAL(aboutToShow()), SLOT(trayMenuAboutToShow()));
-
-    NotificationSettings notificationSettings;
-    notificationSettings.initAndNotify("Systray/Animate", this, SLOT(enableAnimationChanged(QVariant)), true);
 }
 
 
@@ -152,23 +149,26 @@ void SystemTray::setState(State state)
 }
 
 
-QIcon SystemTray::stateIcon() const
-{
-    return stateIcon(state());
-}
-
-
-QIcon SystemTray::stateIcon(State state) const
+QString SystemTray::iconName(State state) const
 {
+    QString name;
     switch (state) {
-    case Passive:
-        return _passiveIcon;
-    case Active:
-        return _activeIcon;
-    case NeedsAttention:
-        return _needsAttentionIcon;
+    case State::Passive:
+        name = "inactive-quassel-tray";
+        break;
+    case State::Active:
+        name = "active-quassel-tray";
+        break;
+    case State::NeedsAttention:
+        name = "message-quassel-tray";
+        break;
     }
-    return QIcon();
+
+    if (_trayIconInverted) {
+        name += "-inverted";
+    }
+
+    return name;
 }
 
 
@@ -215,6 +215,12 @@ void SystemTray::enableAnimationChanged(const QVariant &v)
 }
 
 
+void SystemTray::invertTrayIconChanged(const QVariant &v)
+{
+    _trayIconInverted = v.toBool();
+}
+
+
 QString SystemTray::toolTipTitle() const
 {
     return _toolTipTitle;