diff options
Diffstat (limited to 'src/qt/notificator.h')
-rw-r--r-- | src/qt/notificator.h | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/qt/notificator.h b/src/qt/notificator.h new file mode 100644 index 0000000000..ed69ae5c61 --- /dev/null +++ b/src/qt/notificator.h @@ -0,0 +1,67 @@ +#ifndef NOTIFICATOR_H +#define NOTIFICATOR_H + +#include <QObject> +#include <QIcon> + +QT_BEGIN_NAMESPACE +class QSystemTrayIcon; +#ifdef USE_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 + Growl // Use the Growl notification system (Mac only) + }; + QString programName; + Mode mode; + QSystemTrayIcon *trayIcon; +#ifdef USE_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); +#ifdef Q_WS_MAC + void notifyGrowl(Class cls, const QString &title, const QString &text, const QIcon &icon); +#endif +}; + +#endif // NOTIFICATOR_H |