aboutsummaryrefslogtreecommitdiff
path: root/src/qt/notificator.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/qt/notificator.h')
-rw-r--r--src/qt/notificator.h67
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