File indexing completed on 2024-05-12 04:01:50

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_DEVICE_P_H
0008 #define SOLID_DEVICE_P_H
0009 
0010 #include <QMap>
0011 #include <QObject>
0012 #include <QPointer>
0013 #include <QSharedData>
0014 
0015 #include <ifaces/device.h>
0016 
0017 #if defined(Q_OS_WIN32)
0018 #undef interface
0019 #endif
0020 
0021 namespace Solid
0022 {
0023 class DevicePrivate : public QObject, public QSharedData
0024 {
0025     Q_OBJECT
0026 public:
0027     explicit DevicePrivate(const QString &udi);
0028     ~DevicePrivate() override;
0029 
0030     QString udi() const
0031     {
0032         return m_udi;
0033     }
0034 
0035     Ifaces::Device *backendObject() const
0036     {
0037         return m_backendObject.data();
0038     }
0039     void setBackendObject(Ifaces::Device *object);
0040 
0041     DeviceInterface *interface(const DeviceInterface::Type &type) const;
0042     void setInterface(const DeviceInterface::Type &type, DeviceInterface *interface);
0043 
0044 public Q_SLOTS:
0045     void _k_destroyed(QObject *object);
0046 
0047 private:
0048     QString m_udi;
0049     QPointer<Ifaces::Device> m_backendObject;
0050     QMap<DeviceInterface::Type, QPointer<DeviceInterface>> m_ifaces;
0051 };
0052 }
0053 
0054 #endif