#ifndef EXPORTMANAGERTHREAD_H #define EXPORTMANAGERTHREAD_H #include "iDescriptor.h" #include "servicemanager.h" #include #include #include class ExportManager; using namespace IdeviceFFI; class ExportManagerThread : public QObject { Q_OBJECT public: ExportManagerThread(QObject *parent = nullptr) : QObject(parent) {} void executeExportJob(ExportJob *job); ExportResult exportSingleItem(iDescriptorDevice *device, const ExportItem &item, const QString &destinationDir, std::optional altAfc, std::atomic &cancelRequested, const QUuid &statusBalloonProcessId); private: void executeExportJobInternal(ExportJob *job); QString generateUniqueOutputPath(const QString &basePath); signals: void exportProgress(const QUuid &jobId, int currentItem, int totalItems, const QString ¤tFileName); void fileTransferProgress(const QUuid &jobId, int fileIndex, const QString ¤tFile, qint64 bytesTransferred, qint64 totalFileSize); void itemExported(const QUuid &jobId, const ExportResult &result); void exportFinished(const QUuid &jobId, const ExportJobSummary &summary); void exportCancelled(const QUuid &jobId); }; #endif // EXPORTMANAGERTHREAD_H