f3967bcc50
bitcoin-config.h moved, but the old file is likely to still exist when reconfiguring or switching branches. This would've caused files to not rebuild correctly, and other strange problems. Make the path explicit so that the old one cannot be found. Core libs use config/bitcoin-config.h. Libs (like crypto) which don't want access to bitcoin's headers continue to use -Iconfig and #include bitcoin-config.h.
81 lines
2.8 KiB
C++
81 lines
2.8 KiB
C++
// Copyright (c) 2011-2013 The Bitcoin developers
|
|
// Distributed under the MIT/X11 software license, see the accompanying
|
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
#ifndef NOTIFICATOR_H
|
|
#define NOTIFICATOR_H
|
|
|
|
#if defined(HAVE_CONFIG_H)
|
|
#include "config/bitcoin-config.h"
|
|
#endif
|
|
|
|
#include <QIcon>
|
|
#include <QObject>
|
|
|
|
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.
|
|
@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 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 QSystemTray::showMessage */
|
|
Growl12, /**< Use the Growl 1.2 notification system (Mac only) */
|
|
Growl13, /**< Use the Growl 1.3 notification system (Mac only) */
|
|
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, const QIcon &icon, int millisTimeout);
|
|
#ifdef Q_OS_MAC
|
|
void notifyGrowl(Class cls, const QString &title, const QString &text, const QIcon &icon);
|
|
void notifyMacUserNotificationCenter(Class cls, const QString &title, const QString &text, const QIcon &icon);
|
|
#endif
|
|
};
|
|
|
|
#endif // NOTIFICATOR_H
|