QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
QGCCompressionJob Class Reference

#include <QGCCompressionJob.h>

+ Inheritance diagram for QGCCompressionJob:
+ Collaboration diagram for QGCCompressionJob:

Public Slots

void extractArchive (const QString &archivePath, const QString &outputDirectoryPath, qint64 maxBytes=0)
 
void extractArchiveAtomic (const QString &archivePath, const QString &outputDirectoryPath, qint64 maxBytes=0)
 
void decompressFile (const QString &inputPath, const QString &outputPath=QString(), qint64 maxBytes=0)
 
void extractFile (const QString &archivePath, const QString &fileName, const QString &outputPath)
 
void extractFiles (const QString &archivePath, const QStringList &fileNames, const QString &outputDirectoryPath)
 
void cancel ()
 Cancel current operation.
 

Signals

void progressChanged (qreal progress)
 Emitted when progress changes (0.0 to 1.0)
 
void runningChanged (bool running)
 Emitted when running state changes.
 
void finished (bool success)
 
void errorStringChanged (const QString &errorString)
 Emitted when error string changes.
 
void sourcePathChanged (const QString &sourcePath)
 Emitted when source path changes.
 
void outputPathChanged (const QString &outputPath)
 Emitted when output path changes.
 

Detailed Description

QObject wrapper for compression operations with progress signals Uses QtConcurrent and QPromise for modern async operations Can be used from C++ or QML

Example C++ usage:

auto *job = new QGCCompressionJob(this);
connect(job, &QGCCompressionJob::finished, this, [](bool success) {
qDebug() << "Extraction" << (success ? "succeeded" : "failed");
});
connect(job, &QGCCompressionJob::progressChanged, this, [](qreal p) {
qDebug() << "Progress:" << (p * 100) << "%";
});
job->extractArchive("archive.zip", "/output/dir");
void progressChanged(qreal progress)
Emitted when progress changes (0.0 to 1.0)
void finished(bool success)

Example QML usage:

id: extractionJob
onProgressChanged: progressBar.value = progress
onFinished: if (!success) console.log("Error:", errorString)
}
Button {
text: extractionJob.running ? "Cancel" : "Extract"
onClicked: extractionJob.running ? extractionJob.cancel()
: extractionJob.extractArchive(path, outputDir)
}

Alternative: Use static async methods that return QFuture directly:

QFuture<bool> future = QGCCompressionJob::extractArchiveAsync("archive.zip", "/output");
QFutureWatcher<bool> *watcher = new QFutureWatcher<bool>(this);
connect(watcher, &QFutureWatcher<bool>::progressValueChanged, this, [](int value) {
qDebug() << "Progress:" << value << "%";
});
connect(watcher, &QFutureWatcher<bool>::finished, this, [watcher]() {
qDebug() << "Done:" << watcher->result();
watcher->deleteLater();
});
watcher->setFuture(future);

Definition at line 60 of file QGCCompressionJob.h.

Member Function Documentation

◆ cancel

void QGCCompressionJob::cancel ( )
slot

Cancel current operation.

Definition at line 129 of file QGCCompressionJob.cc.

Referenced by QGCFileDownload::cancel().

◆ decompressFile

void QGCCompressionJob::decompressFile ( const QString &  inputPath,
const QString &  outputPath = QString(),
qint64  maxBytes = 0 
)
slot

Decompress single compressed file (.gz, .xz, etc.)

Parameters
inputPathPath to compressed file
outputPathPath for decompressed output (empty = auto-detect)
maxBytesMaximum decompressed size (0 = unlimited)

Definition at line 94 of file QGCCompressionJob.cc.

References QGCCompression::Auto, and QGCCompression::decompressFile().

◆ errorStringChanged

void QGCCompressionJob::errorStringChanged ( const QString &  errorString)
signal

Emitted when error string changes.

◆ extractArchive

void QGCCompressionJob::extractArchive ( const QString &  archivePath,
const QString &  outputDirectoryPath,
qint64  maxBytes = 0 
)
slot

Extract archive to directory (non-atomic, faster)

Parameters
archivePathPath to archive file
outputDirectoryPathDirectory to extract to
maxBytesMaximum decompressed size (0 = unlimited)

Definition at line 68 of file QGCCompressionJob.cc.

References QGCCompression::Auto, and QGCCompression::extractArchive().

Referenced by PlanMasterController::loadFromArchive().

◆ extractArchiveAtomic

void QGCCompressionJob::extractArchiveAtomic ( const QString &  archivePath,
const QString &  outputDirectoryPath,
qint64  maxBytes = 0 
)
slot

Extract archive atomically (all-or-nothing, safer)

Parameters
archivePathPath to archive file
outputDirectoryPathDirectory to extract to
maxBytesMaximum decompressed size (0 = unlimited)

Definition at line 81 of file QGCCompressionJob.cc.

References QGCCompression::Auto, and QGCCompression::extractArchiveAtomic().

◆ extractFile

void QGCCompressionJob::extractFile ( const QString &  archivePath,
const QString &  fileName,
const QString &  outputPath 
)
slot

Extract single file from archive

Parameters
archivePathPath to archive file
fileNameName of file inside archive
outputPathOutput file path

Definition at line 107 of file QGCCompressionJob.cc.

References QGCCompression::extractFile().

◆ extractFiles

void QGCCompressionJob::extractFiles ( const QString &  archivePath,
const QStringList &  fileNames,
const QString &  outputDirectoryPath 
)
slot

Extract multiple files from archive

Parameters
archivePathPath to archive file
fileNamesNames of files inside archive
outputDirectoryPathOutput directory

Definition at line 118 of file QGCCompressionJob.cc.

References QGCCompression::extractFiles().

◆ finished

void QGCCompressionJob::finished ( bool  success)
signal

Emitted when operation completes

Parameters
successtrue if operation succeeded

Referenced by PlanMasterController::loadFromArchive().

◆ outputPathChanged

void QGCCompressionJob::outputPathChanged ( const QString &  outputPath)
signal

Emitted when output path changes.

◆ progressChanged

void QGCCompressionJob::progressChanged ( qreal  progress)
signal

Emitted when progress changes (0.0 to 1.0)

◆ runningChanged

void QGCCompressionJob::runningChanged ( bool  running)
signal

Emitted when running state changes.

◆ sourcePathChanged

void QGCCompressionJob::sourcePathChanged ( const QString &  sourcePath)
signal

Emitted when source path changes.


The documentation for this class was generated from the following files: