/***************************************************************************
- * Copyright (C) 2005-2013 by the Quassel Project *
+ * Copyright (C) 2005-2018 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This contains code from KStatusNotifierItem, part of the KDE libs *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
-#ifndef STATUSNOTIFIERITEM_H_
-#define STATUSNOTIFIERITEM_H_
+#pragma once
#ifdef HAVE_DBUS
+#include <QDBusError>
+#include <QHash>
+#include <QString>
+
+#if QT_VERSION >= 0x050000
+# include <QTemporaryDir>
+#endif
+
#include "notificationsclient.h"
#include "systemtray.h"
#include "statusnotifierwatcher.h"
public:
explicit StatusNotifierItem(QWidget *parent);
- virtual ~StatusNotifierItem();
- virtual bool isSystemTrayAvailable() const;
- virtual bool isVisible() const;
+ bool isSystemTrayAvailable() const override;
public slots:
- virtual void setState(State state);
- virtual void setVisible(bool visible);
- virtual void showMessage(const QString &title, const QString &message, MessageIcon icon = Information, int msTimeout = 10000, uint notificationId = 0);
- virtual void closeMessage(uint notificationId);
+ void showMessage(const QString &title, const QString &message, MessageIcon icon = Information, int msTimeout = 10000, uint notificationId = 0) override;
+ void closeMessage(uint notificationId) override;
protected:
- virtual void init();
- virtual void setMode(Mode mode);
-
QString title() const;
QString iconName() const;
QString attentionIconName() const;
QString iconThemePath() const;
QString menuObjectPath() const;
- virtual bool eventFilter(QObject *watched, QEvent *event);
+ bool eventFilter(QObject *watched, QEvent *event) override;
private slots:
void activated(const QPoint &pos);
void serviceChange(const QString &name, const QString &oldOwner, const QString &newOwner);
void checkForRegisteredHosts();
+ void onDBusError(const QDBusError &error);
void notificationClosed(uint id, uint reason);
void notificationInvoked(uint id, const QString &action);
-private:
- void registerToDaemon();
+ void refreshIcons();
- static const int _protocolVersion;
- static const QString _statusNotifierWatcherServiceName;
- StatusNotifierItemDBus *_statusNotifierItemDBus;
+ void onModeChanged(Mode mode);
+ void onStateChanged(State state);
+ void onVisibilityChanged(bool isVisible);
- org::kde::StatusNotifierWatcher *_statusNotifierWatcher;
- org::freedesktop::Notifications *_notificationsClient;
- bool _notificationsClientSupportsMarkup;
- bool _notificationsClientSupportsActions;
- quint32 _lastNotificationsDBusId;
+private:
+ void registerToWatcher();
+
+ StatusNotifierItemDBus *_statusNotifierItemDBus{nullptr};
+ org::kde::StatusNotifierWatcher *_statusNotifierWatcher{nullptr};
+ org::freedesktop::Notifications *_notificationsClient{nullptr};
+ bool _notificationsClientSupportsMarkup{false};
+ bool _notificationsClientSupportsActions{false};
+ quint32 _lastNotificationsDBusId{0};
QHash<uint, uint> _notificationsIdMap; ///< Maps our own notification ID to the D-Bus one
QString _iconThemePath;
QString _menuObjectPath;
+#if QT_VERSION >= 0x050000
+ QTemporaryDir _iconThemeDir;
+#endif
+
friend class StatusNotifierItemDBus;
};
-
#endif /* HAVE_DBUS */
-#endif /* STATUSNOTIFIERITEM_H_ */