X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fsystrayanimationnotificationbackend.cpp;h=b565180d9901862f07ca419a7a0ed701d77b2143;hp=65cc38b543182a402fa2066a21362c9082e73f8e;hb=c27d5bfbe80bfeb583a25404f4ccee4b70b010e0;hpb=408250f819b35ecf43271a9bbe4455b891e302c8 diff --git a/src/qtui/systrayanimationnotificationbackend.cpp b/src/qtui/systrayanimationnotificationbackend.cpp index 65cc38b5..b565180d 100644 --- a/src/qtui/systrayanimationnotificationbackend.cpp +++ b/src/qtui/systrayanimationnotificationbackend.cpp @@ -18,18 +18,11 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ -#include -#include -#include -#include -#include - #include "systrayanimationnotificationbackend.h" -#include "client.h" #include "clientsettings.h" +#include "icon.h" #include "mainwin.h" -#include "networkmodel.h" #include "qtui.h" #include "systemtray.h" @@ -37,7 +30,7 @@ SystrayAnimationNotificationBackend::SystrayAnimationNotificationBackend(QObject : AbstractNotificationBackend(parent) { NotificationSettings notificationSettings; - notificationSettings.initAndNotify("Systray/Animate", this, SLOT(animateChanged(QVariant)), true); + notificationSettings.initAndNotify("Systray/Alert", this, SLOT(alertChanged(QVariant)), true); } @@ -46,20 +39,21 @@ void SystrayAnimationNotificationBackend::notify(const Notification &n) if (n.type != Highlight && n.type != PrivMsg) return; - if (_animate) + if (_alert) QtUi::mainWindow()->systemTray()->setAlert(true); } void SystrayAnimationNotificationBackend::close(uint notificationId) { + Q_UNUSED(notificationId) QtUi::mainWindow()->systemTray()->setAlert(false); } -void SystrayAnimationNotificationBackend::animateChanged(const QVariant &v) +void SystrayAnimationNotificationBackend::alertChanged(const QVariant &v) { - _animate = v.toBool(); + _alert = v.toBool(); } @@ -71,49 +65,57 @@ SettingsPage *SystrayAnimationNotificationBackend::createConfigWidget() const /***************************************************************************/ -SystrayAnimationNotificationBackend::ConfigWidget::ConfigWidget(QWidget *parent) : SettingsPage("Internal", "SystrayNotification", parent) +SystrayAnimationNotificationBackend::ConfigWidget::ConfigWidget(QWidget *parent) : SettingsPage("Internal", "SystrayAnimation", parent) { - _animateBox = new QCheckBox(tr("Animate system tray icon")); - _animateBox->setIcon(QIcon::fromTheme("dialog-information")); - connect(_animateBox, SIGNAL(toggled(bool)), this, SLOT(widgetChanged())); - QHBoxLayout *layout = new QHBoxLayout(this); - layout->addWidget(_animateBox); -} + ui.setupUi(this); + ui.enableAlert->setIcon(icon::get("dialog-information")); + ui.attentionBehavior->setEnabled(ui.enableAlert->isChecked()); -void SystrayAnimationNotificationBackend::ConfigWidget::widgetChanged() -{ - bool changed = (_animate != _animateBox->isChecked()); - if (changed != hasChanged()) - setChangedState(changed); + initAutoWidgets(); } -bool SystrayAnimationNotificationBackend::ConfigWidget::hasDefaults() const +QString SystrayAnimationNotificationBackend::ConfigWidget::settingsKey() const { - return true; + return "Notification"; } -void SystrayAnimationNotificationBackend::ConfigWidget::defaults() +QVariant SystrayAnimationNotificationBackend::ConfigWidget::loadAutoWidgetValue(const QString &widgetName) { - _animateBox->setChecked(false); - widgetChanged(); + if (widgetName == "attentionBehavior") { + NotificationSettings s; + if (s.value("Systray/Animate", false).toBool()) { + return 2; + } + if (s.value("Systray/ChangeColor", true).toBool()) { + return 1; + } + return 0; + } + + return SettingsPage::loadAutoWidgetValue(widgetName); } -void SystrayAnimationNotificationBackend::ConfigWidget::load() +void SystrayAnimationNotificationBackend::ConfigWidget::saveAutoWidgetValue(const QString &widgetName, const QVariant &value) { - NotificationSettings s; - _animate = s.value("Systray/Animate", true).toBool(); - _animateBox->setChecked(_animate); - setChangedState(false); + if (widgetName == "attentionBehavior") { + NotificationSettings s; + s.setValue("Systray/ChangeColor", false); + s.setValue("Systray/Animate", false); + switch (value.toInt()) { + case 1: + s.setValue("Systray/ChangeColor", true); + return; + case 2: + s.setValue("Systray/Animate", true); + return; + default: + return; + } + } + + SettingsPage::saveAutoWidgetValue(widgetName, value); } - - -void SystrayAnimationNotificationBackend::ConfigWidget::save() -{ - NotificationSettings s; - s.setValue("Systray/Animate", _animateBox->isChecked()); - load(); -} \ No newline at end of file