#ifdef HAVE_DBUS
-#include <QtGlobal>
-
-#if QT_VERSION >= 0x050000
-# include <QTemporaryDir>
-#endif
+#include <QDBusError>
+#include <QHash>
+#include <QString>
+#include <QTemporaryDir>
#include "notificationsclient.h"
#include "systemtray.h"
# include "legacysystemtray.h"
#endif
+class QDBusServiceWatcher;
+
class StatusNotifierItemDBus;
class StatusNotifierItem : public StatusNotifierItemParent
public:
explicit StatusNotifierItem(QWidget *parent);
- ~StatusNotifierItem() override;
bool isSystemTrayAvailable() const override;
- bool isVisible() const override;
public slots:
- void setState(State state) override;
- void setVisible(bool visible) override;
void showMessage(const QString &title, const QString &message, MessageIcon icon = Information, int msTimeout = 10000, uint notificationId = 0) override;
void closeMessage(uint notificationId) override;
protected:
- void init() override;
- void setMode(Mode mode) override;
-
QString title() const;
QString iconName() const;
QString attentionIconName() const;
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);
void refreshIcons();
+ void onModeChanged(Mode mode);
+ void onStateChanged(State state);
+ void onVisibilityChanged(bool isVisible);
+
private:
- void registerToDaemon();
+ void registerToWatcher();
- static const int _protocolVersion;
- static const QString _statusNotifierWatcherServiceName;
+ QDBusServiceWatcher *_serviceWatcher{nullptr};
StatusNotifierItemDBus *_statusNotifierItemDBus{nullptr};
-
org::kde::StatusNotifierWatcher *_statusNotifierWatcher{nullptr};
org::freedesktop::Notifications *_notificationsClient{nullptr};
bool _notificationsClientSupportsMarkup{false};
QString _iconThemePath;
QString _menuObjectPath;
-#if QT_VERSION >= 0x050000
QTemporaryDir _iconThemeDir;
-#endif
friend class StatusNotifierItemDBus;
};