/***************************************************************************
-* Copyright (C) 2005-08 by the Quassel Project *
+* Copyright (C) 2005-09 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
#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)
/**
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