Complete and pimp DesktopNotificationBackend.
[quassel.git] / src / qtui / desktopnotificationbackend.h
index 0c06b70..4427afe 100644 (file)
 #ifndef DESKTOPNOTIFICATIONBACKEND_H_
 #define DESKTOPNOTIFICATIONBACKEND_H_
 
+#include <QHash>
+
 #include "abstractnotificationbackend.h"
 
 #include "settingspage.h"
 
 #include "desktopnotificationinterface.h"
+#include "ui_desktopnotificationconfigwidget.h"
 
 //! Implements the freedesktop.org notifications specification (via D-Bus)
 /**
@@ -49,15 +52,49 @@ private slots:
   void desktopNotificationInvoked(uint id, const QString &action);
 
   void enabledChanged(const QVariant &);
+  void useHintsChanged(const QVariant &);
   void xHintChanged(const QVariant &);
   void yHintChanged(const QVariant &);
+  void queueNotificationsChanged(const QVariant &);
+  void timeoutChanged(const QVariant &);
+  void useTimeoutChanged(const QVariant &);
 
 private:
+  class ConfigWidget;
+  SettingsPage *_configWidget;
+
   org::freedesktop::Notifications *_dbusInterface;
-  quint32 _dbusNotificationId;
+  bool _daemonSupportsMarkup;
+  quint32 _lastDbusId;
+  QHash<uint, uint> _idMap; ///< Maps our own notification Id to the D-Bus one
 
-  bool _enabled;
+  bool _enabled, _queueNotifications, _useHints;
   int _xHint, _yHint;
+  int _timeout;
+  bool _useTimeout;
+
+};
+
+class DesktopNotificationBackend::ConfigWidget : public SettingsPage {
+  Q_OBJECT
+
+  public:
+    ConfigWidget(QWidget *parent = 0);
+    void save();
+    void load();
+    bool hasDefaults() const;
+    void defaults();
+
+  private slots:
+    void widgetChanged();
+
+  private:
+    Ui::DesktopNotificationConfigWidget ui;
+    int xHint, yHint;
+    bool useHints, queueNotifications;
+    int timeout;
+    bool useTimeout;
+    bool enabled;
 };
 
 #endif