File indexing completed on 2024-04-21 04:57:26

0001 /*
0002  * SPDX-FileCopyrightText: 2022 Kai Uwe Broulik <kde@broulik.de>
0003  * SPDX-License-Identifier: GPL-2.0-or-later
0004  */
0005 
0006 #pragma once
0007 
0008 #include <libimobiledevice/afc.h>
0009 #include <libimobiledevice/house_arrest.h>
0010 
0011 #include <QSharedPointer>
0012 
0013 #include <KIO/Global>
0014 #include <KIO/Job>
0015 #include <KIO/UDSEntry>
0016 #include <KIO/WorkerBase>
0017 
0018 class AfcDevice;
0019 
0020 class AfcClient
0021 {
0022 public:
0023     explicit AfcClient(AfcDevice *devce);
0024     ~AfcClient();
0025 
0026     using Ptr = QSharedPointer<AfcClient>;
0027 
0028     KIO::WorkerResult init(lockdownd_client_t lockdowndClient, const QString &appId);
0029 
0030     AfcDevice *device() const;
0031     afc_client_t internalClient() const;
0032 
0033     QString appId() const;
0034 
0035     KIO::WorkerResult entry(const QString &path, KIO::UDSEntry &entry);
0036     KIO::WorkerResult entryList(const QString &path, QStringList &entryList);
0037 
0038     KIO::WorkerResult del(const QString &path);
0039     KIO::WorkerResult delRecursively(const QString &path);
0040     KIO::WorkerResult rename(const QString &src, const QString &dest, KIO::JobFlags flags);
0041     KIO::WorkerResult symlink(const QString &target, const QString &dest, KIO::JobFlags flags);
0042     KIO::WorkerResult mkdir(const QString &path);
0043     KIO::WorkerResult setModificationTime(const QString &path, const QDateTime &mtime);
0044 
0045 private:
0046     AfcDevice *m_device = nullptr;
0047     QString m_appId;
0048 
0049     afc_client_t m_client = nullptr;
0050     house_arrest_client_t m_houseArrestClient = nullptr;
0051 
0052     Q_DISABLE_COPY(AfcClient)
0053 };