Add a property disableDecoration to BufferViewConfig
[quassel.git] / src / qtui / desktopnotificationbackend.h
index 0c06b70..74c25ca 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)
 /**
@@ -38,26 +41,58 @@ class DesktopNotificationBackend : public AbstractNotificationBackend {
 
 public:
   DesktopNotificationBackend(QObject *parent = 0);
-  ~DesktopNotificationBackend();
 
   void notify(const Notification &);
   void close(uint notificationId);
-  SettingsPage *configWidget() const;
+  virtual SettingsPage *createConfigWidget() const;
 
 private slots:
   void desktopNotificationClosed(uint id, uint reason);
   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;
+
   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