diff options
author | Wladimir J. van der Laan <laanwj@gmail.com> | 2011-09-03 20:52:54 +0200 |
---|---|---|
committer | Wladimir J. van der Laan <laanwj@gmail.com> | 2011-09-03 21:05:12 +0200 |
commit | cf9195c8085bade8076e064c043756024fcafa5a (patch) | |
tree | 3c04669d98b77c443ada24369bba735f44ac342d /src/qt/notificator.h | |
parent | 69e87633bca0e43f3a58dad921a6fb1bdecd307b (diff) |
(k)ubuntu 10.04+ notification support (based on @zwierzak his code)
Diffstat (limited to 'src/qt/notificator.h')
-rw-r--r-- | src/qt/notificator.h | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/src/qt/notificator.h b/src/qt/notificator.h new file mode 100644 index 0000000000..13f6a908da --- /dev/null +++ b/src/qt/notificator.h @@ -0,0 +1,63 @@ +#ifndef NOTIFICATOR_H +#define NOTIFICATOR_H + +#include <QObject> +#include <QIcon> + +QT_BEGIN_NAMESPACE +class QSystemTrayIcon; +#ifdef QT_DBUS +class QDBusInterface; +#endif +QT_END_NAMESPACE + +// Cross-platform desktop notification client +class Notificator: public QObject +{ + Q_OBJECT +public: + // Create a new notificator + // Ownership of trayIcon is not transferred to this object + Notificator(const QString &programName=QString(), QSystemTrayIcon *trayIcon=0, QWidget *parent=0); + ~Notificator(); + + // Message class + enum Class + { + Information, + Warning, + Critical, + }; + +public slots: + + /* Show notification message. + * + * cls: general message class + * title: title shown with message + * text: message content + * icon: optional icon to show with message + * millisTimeout: notification timeout in milliseconds (default 10 seconds) + */ + void notify(Class cls, const QString &title, const QString &text, + const QIcon &icon = QIcon(), int millisTimeout = 10000); + +private: + QWidget *parent; + enum Mode { + None, + Freedesktop, // Use DBus org.freedesktop.Notifications + QSystemTray, // Use QSystemTray::showMessage + }; + QString programName; + Mode mode; + QSystemTrayIcon *trayIcon; +#ifdef QT_DBUS + QDBusInterface *interface; + + void notifyDBus(Class cls, const QString &title, const QString &text, const QIcon &icon, int millisTimeout); +#endif + void notifySystray(Class cls, const QString &title, const QString &text, const QIcon &icon, int millisTimeout); +}; + +#endif // NOTIFICATOR_H |