From 0c2d198d0d382ef4d3c57bcca7436ffb82ba025c Mon Sep 17 00:00:00 2001 From: romibi Date: Fri, 16 Feb 2018 19:28:13 +0100 Subject: [PATCH] Add Option to use "brightness inverted" tray icon --- .../settingspages/appearancesettingspage.ui | 18 +++++++++ src/qtui/statusnotifieritem.cpp | 40 ++++++++++++++----- src/qtui/statusnotifieritem.h | 1 + src/qtui/systemtray.cpp | 14 +++++-- 4 files changed, 61 insertions(+), 12 deletions(-) diff --git a/src/qtui/settingspages/appearancesettingspage.ui b/src/qtui/settingspages/appearancesettingspage.ui index 5d8fa77cbd..cbe6011e59 100644 --- a/src/qtui/settingspages/appearancesettingspage.ui +++ b/src/qtui/settingspages/appearancesettingspage.ui @@ -86,6 +86,22 @@ + + + + Use tray icon with brightness inverted + + + If available. May need restart... + + + /UiStyle/IconThemeTrayInvert + + + false + + + @@ -413,6 +429,8 @@ styleComboBox languageComboBox + iconthemeComboBox + iconthemeTrayInvertBox useCustomStyleSheet customStyleSheetPath chooseStyleSheet diff --git a/src/qtui/statusnotifieritem.cpp b/src/qtui/statusnotifieritem.cpp index 9723e08036..05481b5f41 100644 --- a/src/qtui/statusnotifieritem.cpp +++ b/src/qtui/statusnotifieritem.cpp @@ -31,6 +31,7 @@ #include "quassel.h" #include "statusnotifieritem.h" #include "statusnotifieritemdbus.h" +#include "uisettings.h" const int StatusNotifierItem::_protocolVersion = 0; const QString StatusNotifierItem::_statusNotifierWatcherServiceName("org.kde.StatusNotifierWatcher"); @@ -67,6 +68,8 @@ StatusNotifierItem::StatusNotifierItem(QWidget *parent) _notificationsClientSupportsMarkup(true), _lastNotificationsDBusId(0) { + UiStyleSettings s; + _trayIconInverted = s.value("IconThemeTrayInvert").toBool(); } @@ -241,25 +244,44 @@ QString StatusNotifierItem::title() const QString StatusNotifierItem::iconName() const { - if (state() == Passive) - return QString("inactive-quassel-tray"); - else - return QString("active-quassel-tray"); + if (_trayIconInverted) { + if (state() == Passive) + return QString("inactive-quassel-tray-inverted"); + else + return QString("active-quassel-tray-inverted"); + } + else { + if (state() == Passive) + return QString("inactive-quassel-tray"); + else + return QString("active-quassel-tray"); + } } QString StatusNotifierItem::attentionIconName() const { - if (animationEnabled()) - return QString("message-quassel-tray"); - else - return QString("active-quassel-tray"); + if (_trayIconInverted) { + if (animationEnabled()) + return QString("message-quassel-tray-inverted"); + else + return QString("active-quassel-tray-inverted"); + } + else { + if (animationEnabled()) + return QString("message-quassel-tray"); + else + return QString("active-quassel-tray"); + } } QString StatusNotifierItem::toolTipIconName() const { - return QString("active-quassel-tray"); + if (_trayIconInverted) + return QString("active-quassel-tray-inverted"); + else + return QString("active-quassel-tray"); } diff --git a/src/qtui/statusnotifieritem.h b/src/qtui/statusnotifieritem.h index 14fd7325bc..502ec5864b 100644 --- a/src/qtui/statusnotifieritem.h +++ b/src/qtui/statusnotifieritem.h @@ -93,6 +93,7 @@ private slots: QString _iconThemePath; QString _menuObjectPath; + bool _trayIconInverted; friend class StatusNotifierItemDBus; }; diff --git a/src/qtui/systemtray.cpp b/src/qtui/systemtray.cpp index 8a2ea9b16a..75634feea6 100644 --- a/src/qtui/systemtray.cpp +++ b/src/qtui/systemtray.cpp @@ -39,12 +39,20 @@ SystemTray::SystemTray(QWidget *parent) _mode(Invalid), _state(Passive), _shouldBeVisible(true), - _passiveIcon(QIcon::fromTheme("inactive-quassel-tray", QIcon(":/icons/inactive-quassel-tray.png"))), - _activeIcon(QIcon::fromTheme("active-quassel-tray", QIcon(":/icons/active-quassel-tray.png"))), - _needsAttentionIcon(QIcon::fromTheme("message-quassel-tray", QIcon(":/icons/message-quassel-tray.png"))), _trayMenu(0), _associatedWidget(parent) { + UiStyleSettings s; + if (s.value("IconThemeTrayInvert").toBool()) { + _passiveIcon = QIcon::fromTheme("inactive-quassel-tray-inverted", QIcon(":/icons/inactive-quassel-tray-inverted.png")); + _activeIcon = QIcon::fromTheme("active-quassel-tray-inverted", QIcon(":/icons/active-quassel-tray-inverted.png")); + _needsAttentionIcon = QIcon::fromTheme("message-quassel-tray-inverted", QIcon(":/icons/message-quassel-tray-inverted.png")); + } + else { + _passiveIcon = QIcon::fromTheme("inactive-quassel-tray", QIcon(":/icons/inactive-quassel-tray.png")); + _activeIcon = QIcon::fromTheme("active-quassel-tray", QIcon(":/icons/active-quassel-tray.png")); + _needsAttentionIcon = QIcon::fromTheme("message-quassel-tray", QIcon(":/icons/message-quassel-tray.png")); + } Q_ASSERT(parent); }