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

QObject wrapper for compression operations with progress signals. More...

#include <QGCCompressionJob.h>

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

Public Types

enum class  Operation {
  None , ExtractArchive , ExtractArchiveAtomic , DecompressFile ,
  ExtractFile , ExtractFiles
}
 Current progress (0.0 to 1.0) More...
 

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.
 

Public Member Functions

 QGCCompressionJob (QObject *parent=nullptr)
 
 ~QGCCompressionJob () override
 
qreal progress () const
 
bool isRunning () const
 
QString errorString () const
 
QString sourcePath () const
 
QString outputPath () const
 
Operation currentOperation () const
 Get current operation type.
 
QFuture< bool > future () const
 

Static Public Member Functions

static QFuture< bool > extractArchiveAsync (const QString &archivePath, const QString &outputDirectoryPath, qint64 maxBytes=0)
 
static QFuture< bool > decompressFileAsync (const QString &inputPath, const QString &outputPath=QString(), qint64 maxBytes=0)
 

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");
QObject wrapper for compression operations with progress signals.
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)
}
QString errorString() const
qreal progress() const
void cancel()
Cancel current operation.

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);
static QFuture< bool > extractArchiveAsync(const QString &archivePath, const QString &outputDirectoryPath, qint64 maxBytes=0)
QFuture< bool > future() const

Definition at line 59 of file QGCCompressionJob.h.

Member Enumeration Documentation

◆ Operation

enum class QGCCompressionJob::Operation
strong

Current progress (0.0 to 1.0)

Whether an operation is currently running Error string from last failed operation (empty if last operation succeeded) Source path for current/last operation Output path for current/last operation Operation type

Enumerator
None 
ExtractArchive 
ExtractArchiveAtomic 
DecompressFile 
ExtractFile 
ExtractFiles 

Definition at line 81 of file QGCCompressionJob.h.

Constructor & Destructor Documentation

◆ QGCCompressionJob()

QGCCompressionJob::QGCCompressionJob ( QObject *  parent = nullptr)
explicit

Definition at line 14 of file QGCCompressionJob.cc.

◆ ~QGCCompressionJob()

QGCCompressionJob::~QGCCompressionJob ( )
override

Definition at line 24 of file QGCCompressionJob.cc.

References cancel().

Member Function Documentation

◆ cancel

◆ currentOperation()

Operation QGCCompressionJob::currentOperation ( ) const
inline

Get current operation type.

Definition at line 102 of file QGCCompressionJob.h.

◆ 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, QGCCompression::decompressFile(), DecompressFile, outputPath(), and progress().

◆ decompressFileAsync()

QFuture< bool > QGCCompressionJob::decompressFileAsync ( const QString &  inputPath,
const QString &  outputPath = QString(),
qint64  maxBytes = 0 
)
static

Decompress file asynchronously, returns QFuture with progress support

Parameters
inputPathPath to compressed file
outputPathPath for decompressed output (empty = auto-detect)
maxBytesMaximum decompressed size (0 = unlimited)
Returns
QFuture<bool> with progress reporting (0-100)

Definition at line 50 of file QGCCompressionJob.cc.

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

◆ errorString()

QString QGCCompressionJob::errorString ( ) const
inline

Definition at line 97 of file QGCCompressionJob.h.

◆ 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, QGCCompression::extractArchive(), ExtractArchive, and progress().

Referenced by FTPController::extractArchive(), QGCMapEngineManager::importArchive(), and PlanMasterController::loadFromArchive().

◆ extractArchiveAsync()

QFuture< bool > QGCCompressionJob::extractArchiveAsync ( const QString &  archivePath,
const QString &  outputDirectoryPath,
qint64  maxBytes = 0 
)
static

Extract archive asynchronously, returns QFuture with progress support

Parameters
archivePathPath to archive file
outputDirectoryPathDirectory to extract to
maxBytesMaximum decompressed size (0 = unlimited)
Returns
QFuture<bool> with progress reporting (0-100)

Definition at line 36 of file QGCCompressionJob.cc.

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

◆ 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, QGCCompression::extractArchiveAtomic(), ExtractArchiveAtomic, and progress().

◆ 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(), ExtractFile, and outputPath().

◆ 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(), and ExtractFiles.

◆ finished

void QGCCompressionJob::finished ( bool  success)
signal

Emitted when operation completes

Parameters
successtrue if operation succeeded

Referenced by FTPController::extractArchive(), QGCMapEngineManager::importArchive(), and PlanMasterController::loadFromArchive().

◆ future()

QFuture< bool > QGCCompressionJob::future ( ) const
inline

Get the QFuture for the current operation (for advanced use) Returns invalid future if no operation is running

Definition at line 106 of file QGCCompressionJob.h.

◆ isRunning()

bool QGCCompressionJob::isRunning ( ) const
inline

◆ outputPath()

QString QGCCompressionJob::outputPath ( ) const
inline

Definition at line 99 of file QGCCompressionJob.h.

Referenced by decompressFile(), decompressFileAsync(), and extractFile().

◆ outputPathChanged

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

Emitted when output path changes.

◆ progress()

qreal QGCCompressionJob::progress ( ) const
inline

◆ progressChanged

void QGCCompressionJob::progressChanged ( qreal  progress)
signal

Emitted when progress changes (0.0 to 1.0)

Referenced by FTPController::extractArchive(), and QGCMapEngineManager::importArchive().

◆ runningChanged

void QGCCompressionJob::runningChanged ( bool  running)
signal

Emitted when running state changes.

◆ sourcePath()

QString QGCCompressionJob::sourcePath ( ) const
inline

Definition at line 98 of file QGCCompressionJob.h.

◆ sourcePathChanged

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

Emitted when source path changes.


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