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

0001 /*
0002     SPDX-FileCopyrightText: 2020 MBition GmbH
0003     SPDX-FileContributor: Kai Uwe Broulik <kai_uwe.broulik@mbition.io>
0004     SPDX-FileCopyrightText: 2023 Harald Sitter <sitter@kde.org>
0005 
0006     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0007 */
0008 
0009 #ifndef SOLID_BACKENDS_IMOBILE_IMOBILEMANAGER_H
0010 #define SOLID_BACKENDS_IMOBILE_IMOBILEMANAGER_H
0011 
0012 #include <solid/devices/ifaces/devicemanager.h>
0013 
0014 #include <libimobiledevice/libimobiledevice.h>
0015 
0016 class QFileSystemWatcher;
0017 
0018 namespace Solid
0019 {
0020 namespace Backends
0021 {
0022 namespace IMobile
0023 {
0024 class Manager : public Solid::Ifaces::DeviceManager
0025 {
0026     Q_OBJECT
0027 
0028 public:
0029     explicit Manager(QObject *parent);
0030     ~Manager() override;
0031 
0032     QObject *createDevice(const QString &udi) override;
0033     QStringList devicesFromQuery(const QString &parentUdi, Solid::DeviceInterface::Type type) override;
0034     QStringList allDevices() override;
0035     QSet<Solid::DeviceInterface::Type> supportedInterfaces() const override;
0036     QString udiPrefix() const override;
0037 
0038     void onDeviceEvent(const idevice_event_t *event);
0039 
0040 private:
0041     void spinUp();
0042     bool m_spunUp = false;
0043     QStringList m_deviceUdis;
0044     std::unique_ptr<QFileSystemWatcher> m_watcher;
0045 };
0046 
0047 } // namespace IMobile
0048 } // namespace Backends
0049 } // namespace Solid
0050 
0051 #endif // SOLID_BACKENDS_IMOBILE_IMOBILEMANAGER_H