File indexing completed on 2024-05-12 04:01:51
0001 /* 0002 SPDX-FileCopyrightText: 2005-2007 Kevin Ottens <ervin@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0005 */ 0006 0007 #ifndef SOLID_DEVICEMANAGER_P_H 0008 #define SOLID_DEVICEMANAGER_P_H 0009 0010 #include "managerbase_p.h" 0011 0012 #include "devicenotifier.h" 0013 0014 #include <QHash> 0015 #include <QPointer> 0016 #include <QSharedData> 0017 #include <QThreadStorage> 0018 0019 namespace Solid 0020 { 0021 namespace Ifaces 0022 { 0023 class Device; 0024 } 0025 class DevicePrivate; 0026 0027 class DeviceManagerPrivate : public DeviceNotifier, public ManagerBasePrivate 0028 { 0029 Q_OBJECT 0030 public: 0031 DeviceManagerPrivate(); 0032 ~DeviceManagerPrivate() override; 0033 0034 DevicePrivate *findRegisteredDevice(const QString &udi); 0035 0036 private Q_SLOTS: 0037 void _k_deviceAdded(const QString &udi); 0038 void _k_deviceRemoved(const QString &udi); 0039 void _k_destroyed(QObject *object); 0040 0041 private: 0042 Ifaces::Device *createBackendObject(const QString &udi); 0043 0044 QExplicitlySharedDataPointer<DevicePrivate> m_nullDevice; 0045 QHash<QString, QPointer<DevicePrivate>> m_devicesMap; 0046 QHash<QObject *, QString> m_reverseMap; 0047 }; 0048 0049 class DeviceManagerStorage 0050 { 0051 public: 0052 DeviceManagerStorage(); 0053 0054 QList<QObject *> managerBackends(); 0055 DeviceNotifier *notifier(); 0056 0057 private: 0058 void ensureManagerCreated(); 0059 0060 QThreadStorage<DeviceManagerPrivate *> m_storage; 0061 }; 0062 } 0063 0064 #endif