// This file is part of RSS Guard. // // Copyright (C) 2011-2016 by Martin Rotter // // RSS Guard is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // RSS Guard is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with RSS Guard. If not, see . #ifndef NOTIFICATION_H #define NOTIFICATION_H #include #include #if defined(Q_OS_LINUX) class QDBusInterface; #endif // Wraps D-Bus notifications. class Notification : public QObject { Q_OBJECT public: // Constructors. explicit Notification(QObject *parent = 0); virtual ~Notification(); #if defined(Q_OS_LINUX) static bool areDBusNotificationsEnabled(); #endif static bool areNotificationsEnabled(); public slots: // Main methods for using the netofication. void notify(const QString &text, const QString &title, const QIcon &icon, QObject *invokation_target = NULL, const char *invokation_slot = NULL); void notify(const QString &text, const QString &title, QSystemTrayIcon::MessageIcon icon = QSystemTrayIcon::Information, QObject *invokation_target = NULL, const char *invokation_slot = NULL); // Cancels display of the notification. void cancel(); #if defined(Q_OS_LINUX) public slots: void notificationClosed(uint id, uint reason); #endif protected: void timerEvent(QTimerEvent *event); private: QString m_title; QString m_text; QPixmap m_icon; int m_timerId; QObject *m_clickTarget; const char *m_clickSlot; #if defined(Q_OS_LINUX) QDBusInterface *m_dBusInterface; uint m_dBusActiveNotification; #endif }; #endif // NOTIFICATION_H