git / moonbite-core / src/qt/notificator.h · raw

// Copyright (c) 2011-2018 The Bitcoin Core developers// Distributed under the MIT software license, see the accompanying// file COPYING or http://www.opensource.org/licenses/mit-license.php.#ifndef BITCOIN_QT_NOTIFICATOR_H#define BITCOIN_QT_NOTIFICATOR_H#if defined(HAVE_CONFIG_H)#include <config/bitcoin-config.h>#endif#include <QIcon>#include <QObject>QT_BEGIN_NAMESPACEclass QSystemTrayIcon;#ifdef USE_DBUSclass QDBusInterface;#endifQT_END_NAMESPACE/** Cross-platform desktop notification client. */class Notificator: public QObject{    Q_OBJECTpublic:    /** Create a new notificator.       @note Ownership of trayIcon is not transferred to this object.    */    Notificator(const QString &programName, QSystemTrayIcon *trayIcon, QWidget *parent);    ~Notificator();    // Message class    enum Class    {        Information,    /**< Informational message */        Warning,        /**< Notify user of potential problem */        Critical        /**< An error occurred */    };public Q_SLOTS:    /** Show notification message.       @param[in] cls    general message class       @param[in] title  title shown with message       @param[in] text   message content       @param[in] icon   optional icon to show with message       @param[in] millisTimeout notification timeout in milliseconds (defaults to 10 seconds)       @note Platform implementations are free to ignore any of the provided fields except for \a text.     */    void notify(Class cls, const QString &title, const QString &text,                const QIcon &icon = QIcon(), int millisTimeout = 10000);private:    QWidget *parent;    enum Mode {        None,                       /**< Ignore informational notifications, and show a modal pop-up dialog for Critical notifications. */        Freedesktop,                /**< Use DBus org.freedesktop.Notifications */        QSystemTray,                /**< Use QSystemTrayIcon::showMessage() */        UserNotificationCenter      /**< Use the 10.8+ User Notification Center (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, int millisTimeout);#ifdef Q_OS_MAC    void notifyMacUserNotificationCenter(const QString &title, const QString &text);#endif};#endif // BITCOIN_QT_NOTIFICATOR_H