QssParser: Interpret "oblique" as italic
[quassel.git] / src / qtui / systrayanimationnotificationbackend.cpp
index 2cb0550..b565180 100644 (file)
  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
  ***************************************************************************/
 
-#include <QApplication>
-#include <QCheckBox>
-#include <QGroupBox>
-#include <QIcon>
-#include <QHBoxLayout>
-
 #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,24 +39,83 @@ 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();
 }
 
 
 SettingsPage *SystrayAnimationNotificationBackend::createConfigWidget() const
 {
-    return nullptr;
-}
\ No newline at end of file
+    return new ConfigWidget();
+}
+
+
+/***************************************************************************/
+
+SystrayAnimationNotificationBackend::ConfigWidget::ConfigWidget(QWidget *parent) : SettingsPage("Internal", "SystrayAnimation", parent)
+{
+    ui.setupUi(this);
+    ui.enableAlert->setIcon(icon::get("dialog-information"));
+
+    ui.attentionBehavior->setEnabled(ui.enableAlert->isChecked());
+
+    initAutoWidgets();
+}
+
+
+QString SystrayAnimationNotificationBackend::ConfigWidget::settingsKey() const
+{
+    return "Notification";
+}
+
+
+QVariant SystrayAnimationNotificationBackend::ConfigWidget::loadAutoWidgetValue(const QString &widgetName)
+{
+    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::saveAutoWidgetValue(const QString &widgetName, const QVariant &value)
+{
+    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);
+}