aboutsummaryrefslogtreecommitdiff
path: root/src/qt/notificator.h
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2011-09-03 20:52:54 +0200
committerWladimir J. van der Laan <laanwj@gmail.com>2011-09-03 21:05:12 +0200
commitcf9195c8085bade8076e064c043756024fcafa5a (patch)
tree3c04669d98b77c443ada24369bba735f44ac342d /src/qt/notificator.h
parent69e87633bca0e43f3a58dad921a6fb1bdecd307b (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.h63
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