File indexing completed on 2024-05-12 17:08:50
0001 /* 0002 SPDX-FileCopyrightText: 2009 Marco Martin <notmart@gmail.com> 0003 SPDX-FileCopyrightText: 2009 Matthieu Gallien <matthieu_gallien@yahoo.fr> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #pragma once 0009 0010 #include "statusnotifierwatcher_interface.h" 0011 #include <QDBusConnection> 0012 0013 class StatusNotifierItemSource; 0014 0015 // Define our plasma Runner 0016 class StatusNotifierItemHost : public QObject 0017 { 0018 Q_OBJECT 0019 0020 public: 0021 StatusNotifierItemHost(); 0022 virtual ~StatusNotifierItemHost(); 0023 0024 static StatusNotifierItemHost *self(); 0025 0026 const QList<QString> services() const; 0027 StatusNotifierItemSource *itemForService(const QString service); 0028 0029 Q_SIGNALS: 0030 void itemAdded(const QString &service); 0031 void itemRemoved(const QString &service); 0032 0033 private Q_SLOTS: 0034 void serviceChange(const QString &name, const QString &oldOwner, const QString &newOwner); 0035 void registerWatcher(const QString &service); 0036 void unregisterWatcher(const QString &service); 0037 void serviceRegistered(const QString &service); 0038 void serviceUnregistered(const QString &service); 0039 0040 private: 0041 void init(); 0042 void removeAllSNIServices(); 0043 void addSNIService(const QString &service); 0044 void removeSNIService(const QString &service); 0045 int indexOfItem(const QString &service) const; 0046 0047 org::kde::StatusNotifierWatcher *m_statusNotifierWatcher; 0048 QString m_serviceName; 0049 static const int s_protocolVersion = 0; 0050 QHash<QString, StatusNotifierItemSource *> m_sniServices; 0051 };