From: Manuel Nickschas Date: Wed, 3 Mar 2010 00:37:48 +0000 (+0100) Subject: Make disabling the tray icon animation work again X-Git-Tag: 0.6-rc1~23 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=a9cc264bc4ee3e51ede21b79276704d4043e3656;ds=sidebyside Make disabling the tray icon animation work again The setting also moved to the Interface settings page. --- diff --git a/src/qtui/legacysystemtray.cpp b/src/qtui/legacysystemtray.cpp index 0c6a1e36..552324c6 100644 --- a/src/qtui/legacysystemtray.cpp +++ b/src/qtui/legacysystemtray.cpp @@ -106,7 +106,7 @@ void LegacySystemTray::setState(State state_) { State oldstate = state(); SystemTray::setState(state_); if(oldstate != state()) { - if(state() == NeedsAttention && mode() == Legacy) + if(state() == NeedsAttention && mode() == Legacy && animationEnabled()) _blinkTimer.start(); else { _blinkTimer.stop(); diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index fe050fb3..79f20aa8 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -189,13 +189,14 @@ void MainWin::init() { setupHotList(); #ifndef HAVE_KDE - QtUi::registerNotificationBackend(new TaskbarNotificationBackend(this)); -# ifndef QT_NO_SYSTEMTRAYICON - QtUi::registerNotificationBackend(new SystrayNotificationBackend(this)); -# endif # ifdef HAVE_PHONON QtUi::registerNotificationBackend(new PhononNotificationBackend(this)); # endif +# ifndef QT_NO_SYSTEMTRAYICON + QtUi::registerNotificationBackend(new SystrayNotificationBackend(this)); +# endif + + QtUi::registerNotificationBackend(new TaskbarNotificationBackend(this)); #else /* HAVE_KDE */ QtUi::registerNotificationBackend(new KNotificationBackend(this)); diff --git a/src/qtui/settingspages/appearancesettingspage.ui b/src/qtui/settingspages/appearancesettingspage.ui index 4b071acd..c2a643b9 100644 --- a/src/qtui/settingspages/appearancesettingspage.ui +++ b/src/qtui/settingspages/appearancesettingspage.ui @@ -161,8 +161,8 @@ - - + + Qt::Horizontal @@ -178,7 +178,7 @@ - + Hide to tray on close button @@ -191,6 +191,38 @@ + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 20 + 20 + + + + + + + + + + + Enable animations + + + /Notification/Systray/Animate + + + true + + + diff --git a/src/qtui/statusnotifieritem.cpp b/src/qtui/statusnotifieritem.cpp index 9d61fa75..dc2e65c7 100644 --- a/src/qtui/statusnotifieritem.cpp +++ b/src/qtui/statusnotifieritem.cpp @@ -55,6 +55,7 @@ void StatusNotifierItem::init() { _statusNotifierItemDBus = new StatusNotifierItemDBus(this); connect(this, SIGNAL(toolTipChanged(QString,QString)), _statusNotifierItemDBus, SIGNAL(NewToolTip())); + connect(this, SIGNAL(animationEnabledChanged(bool)), _statusNotifierItemDBus, SIGNAL(NewAttentionIcon())); connect(QDBusConnection::sessionBus().interface(), SIGNAL(serviceOwnerChanged(QString,QString,QString)), SLOT(serviceChange(QString,QString,QString))); @@ -160,7 +161,10 @@ QString StatusNotifierItem::iconName() const { } QString StatusNotifierItem::attentionIconName() const { - return QString("quassel_message"); + if(animationEnabled()) + return QString("quassel_message"); + else + return QString("quassel"); } QString StatusNotifierItem::toolTipIconName() const { diff --git a/src/qtui/systemtray.cpp b/src/qtui/systemtray.cpp index afa7964f..7fb36ce2 100644 --- a/src/qtui/systemtray.cpp +++ b/src/qtui/systemtray.cpp @@ -81,6 +81,9 @@ 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); } void SystemTray::trayMenuAboutToShow() { @@ -159,3 +162,8 @@ void SystemTray::activate(SystemTray::ActivationReason reason) { void SystemTray::minimizeRestore() { GraphicalUi::toggleMainWidget(); } + +void SystemTray::enableAnimationChanged(const QVariant &v) { + _animationEnabled = v.toBool(); + emit animationEnabledChanged(v.toBool()); +} diff --git a/src/qtui/systemtray.h b/src/qtui/systemtray.h index 35a9c173..ad7a9ff1 100644 --- a/src/qtui/systemtray.h +++ b/src/qtui/systemtray.h @@ -83,6 +83,7 @@ public slots: signals: void activated(SystemTray::ActivationReason); void iconChanged(const Icon &); + void animationEnabledChanged(bool); void toolTipChanged(const QString &title, const QString &subtitle); void messageClicked(uint notificationId); void messageClosed(uint notificationId); @@ -100,10 +101,12 @@ protected: inline QString toolTipSubTitle() const; inline QMenu *trayMenu() const; + inline bool animationEnabled() const; private slots: void minimizeRestore(); void trayMenuAboutToShow(); + void enableAnimationChanged(const QVariant &); private: Mode _mode; @@ -111,6 +114,7 @@ private: QString _toolTipTitle, _toolTipSubTitle; Icon _passiveIcon, _activeIcon, _needsAttentionIcon; + bool _animationEnabled; QMenu *_trayMenu; QWidget *_associatedWidget; @@ -126,6 +130,6 @@ SystemTray::State SystemTray::state() const { return _state; } QMenu *SystemTray::trayMenu() const { return _trayMenu; } QString SystemTray::toolTipTitle() const { return _toolTipTitle; } QString SystemTray::toolTipSubTitle() const { return _toolTipSubTitle; } - +bool SystemTray::animationEnabled() const { return _animationEnabled; } #endif diff --git a/src/qtui/systraynotificationbackend.cpp b/src/qtui/systraynotificationbackend.cpp index f3bd5a06..82d9f96d 100644 --- a/src/qtui/systraynotificationbackend.cpp +++ b/src/qtui/systraynotificationbackend.cpp @@ -38,11 +38,8 @@ SystrayNotificationBackend::SystrayNotificationBackend(QObject *parent) _blockActivation(false) { NotificationSettings notificationSettings; - _showBubble = notificationSettings.value("Systray/ShowBubble", true).toBool(); - _animate = notificationSettings.value("Systray/Animate", true).toBool(); - - notificationSettings.notify("Systray/ShowBubble", this, SLOT(showBubbleChanged(const QVariant &))); - notificationSettings.notify("Systray/Animate", this, SLOT(animateChanged(const QVariant &))); + notificationSettings.initAndNotify("Systray/ShowBubble", this, SLOT(showBubbleChanged(QVariant)), true); + notificationSettings.initAndNotify("Systray/Animate", this, SLOT(animateChanged(QVariant)), true); connect(QtUi::mainWindow()->systemTray(), SIGNAL(messageClicked(uint)), SLOT(notificationActivated(uint))); connect(QtUi::mainWindow()->systemTray(), SIGNAL(activated(SystemTray::ActivationReason)),