File indexing completed on 2024-05-05 17:45:18

0001 /*
0002     SPDX-FileCopyrightText: 2009 Marco Martin <notmart@gmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include <kdedmodule.h>
0010 
0011 #include <QDBusContext>
0012 #include <QObject>
0013 #include <QSet>
0014 #include <QStringList>
0015 
0016 class QDBusServiceWatcher;
0017 
0018 class StatusNotifierWatcher : public KDEDModule, protected QDBusContext
0019 {
0020     Q_OBJECT
0021     Q_PROPERTY(QStringList RegisteredStatusNotifierItems READ RegisteredStatusNotifierItems)
0022     Q_PROPERTY(bool IsStatusNotifierHostRegistered READ IsStatusNotifierHostRegistered)
0023     Q_PROPERTY(int ProtocolVersion READ ProtocolVersion)
0024 
0025 public:
0026     StatusNotifierWatcher(QObject *parent, const QList<QVariant> &);
0027     ~StatusNotifierWatcher() override;
0028 
0029     QStringList RegisteredStatusNotifierItems() const;
0030 
0031     bool IsStatusNotifierHostRegistered() const;
0032 
0033     int ProtocolVersion() const;
0034 
0035 public Q_SLOTS:
0036     void RegisterStatusNotifierItem(const QString &service);
0037 
0038     void RegisterStatusNotifierHost(const QString &service);
0039 
0040 protected Q_SLOTS:
0041     void serviceUnregistered(const QString &name);
0042 
0043 Q_SIGNALS:
0044     void StatusNotifierItemRegistered(const QString &service);
0045     // TODO: decide if this makes sense, the systray itself could notice the vanishing of items, but looks complete putting it here
0046     void StatusNotifierItemUnregistered(const QString &service);
0047     void StatusNotifierHostRegistered();
0048     void StatusNotifierHostUnregistered();
0049 
0050 private:
0051     QDBusServiceWatcher *m_serviceWatcher = nullptr;
0052     QStringList m_registeredServices;
0053 };