X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fdesktopnotificationbackend.h;h=74c25cae393f81c34c2ead5ea19323a44c4f3aab;hp=0c06b70d641087845f939ccb7900a5a494cd3d35;hb=731ec69d4608ba95e3ae4f154b8ca1852e1db2e5;hpb=2c93873e740b12b4bc9d9aa97ad906aaf0e0c8ee diff --git a/src/qtui/desktopnotificationbackend.h b/src/qtui/desktopnotificationbackend.h index 0c06b70d..74c25cae 100644 --- a/src/qtui/desktopnotificationbackend.h +++ b/src/qtui/desktopnotificationbackend.h @@ -21,11 +21,14 @@ #ifndef DESKTOPNOTIFICATIONBACKEND_H_ #define DESKTOPNOTIFICATIONBACKEND_H_ +#include + #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 _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