X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fsystemtray.cpp;h=4a68dd64114e5e1bffcb2b7915b766e2e36622c3;hp=2bc365417a7383d2cea0cafd3d432c0da6ef3d47;hb=39dffd095bb5dbca49199d2173438c7f90c4e6fa;hpb=1a9450ecc5eeb5f987ceac790be84dcced02f028 diff --git a/src/qtui/systemtray.cpp b/src/qtui/systemtray.cpp index 2bc36541..4a68dd64 100644 --- a/src/qtui/systemtray.cpp +++ b/src/qtui/systemtray.cpp @@ -39,17 +39,10 @@ SystemTray::SystemTray(QWidget *parent) _associatedWidget(parent) { Q_ASSERT(parent); -} - - -SystemTray::~SystemTray() -{ - _trayMenu->deleteLater(); -} + NotificationSettings{}.initAndNotify("Systray/Animate", this, SLOT(enableAnimationChanged(QVariant)), true); + UiStyleSettings{}.initAndNotify("Icons/InvertTray", this, SLOT(invertTrayIconChanged(QVariant)), false); -void SystemTray::init() -{ ActionCollection *coll = QtUi::actionCollection("General"); _minimizeRestoreAction = new Action(tr("&Minimize"), this, this, SLOT(minimizeRestore())); @@ -75,9 +68,12 @@ 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); +SystemTray::~SystemTray() +{ + _trayMenu->deleteLater(); } @@ -95,19 +91,16 @@ bool SystemTray::isSystemTrayAvailable() const bool SystemTray::isVisible() const { - return false; -} - - -bool SystemTray::shouldBeVisible() const -{ - return _shouldBeVisible; + return _isVisible; } void SystemTray::setVisible(bool visible) { - _shouldBeVisible = visible; + if (visible != _isVisible) { + _isVisible = visible; + emit visibilityChanged(visible); + } } @@ -117,13 +110,13 @@ SystemTray::Mode SystemTray::mode() const } -void SystemTray::setMode(Mode mode_) +void SystemTray::setMode(Mode mode) { - if (mode_ != _mode) { - _mode = mode_; + if (mode != _mode) { + _mode = mode; #ifdef HAVE_KDE4 if (_trayMenu) { - if (_mode == Legacy) { + if (mode == Mode::Legacy) { _trayMenu->setWindowFlags(Qt::Popup); } else { @@ -131,6 +124,7 @@ void SystemTray::setMode(Mode mode_) } } #endif + emit modeChanged(mode); } } @@ -145,21 +139,31 @@ void SystemTray::setState(State state) { if (_state != state) { _state = state; + emit stateChanged(state); } } QString SystemTray::iconName(State state) const { + QString name; switch (state) { case State::Passive: - return "inactive-quassel"; + name = "inactive-quassel-tray"; + break; case State::Active: - return "quassel"; + name = "active-quassel-tray"; + break; case State::NeedsAttention: - return "message-quassel"; + name = "message-quassel-tray"; + break; } - return {}; + + if (_trayIconInverted) { + name += "-inverted"; + } + + return name; } @@ -206,6 +210,12 @@ void SystemTray::enableAnimationChanged(const QVariant &v) } +void SystemTray::invertTrayIconChanged(const QVariant &v) +{ + _trayIconInverted = v.toBool(); +} + + QString SystemTray::toolTipTitle() const { return _toolTipTitle;