diff --git a/src/Config.h b/src/Config.h index 9bc38d65..78af76e1 100644 --- a/src/Config.h +++ b/src/Config.h @@ -35,7 +35,7 @@ #define VER_LAMEXP_MINOR_LO 1 #define VER_LAMEXP_TYPE RC #define VER_LAMEXP_PATCH 3 -#define VER_LAMEXP_BUILD 1688 +#define VER_LAMEXP_BUILD 1689 #define VER_LAMEXP_CONFG 1558 /////////////////////////////////////////////////////////////////////////////// diff --git a/src/Decoder_Wave.cpp b/src/Decoder_Wave.cpp index e9e8f4e6..1a61c716 100644 --- a/src/Decoder_Wave.cpp +++ b/src/Decoder_Wave.cpp @@ -30,6 +30,14 @@ //Qt #include +//Type +typedef struct _ProgressData +{ + WaveDecoder *const instance; + volatile bool *const abrtFlag; +} +ProgressData; + WaveDecoder::WaveDecoder(void) { } @@ -41,9 +49,11 @@ WaveDecoder::~WaveDecoder(void) bool WaveDecoder::decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag) { emit messageLogged(QString("Copy file \"%1\" to \"%2\"").arg(QDir::toNativeSeparators(sourceFile), QDir::toNativeSeparators(outputFile))); - emit statusUpdated(0); - const bool okay = MUtils::OS::copy_file(sourceFile, outputFile); + + ProgressData progressData = { this, abortFlag }; + const bool okay = MUtils::OS::copy_file(sourceFile, outputFile, true, progressHandler, &progressData); + emit statusUpdated(100); if(okay) @@ -75,3 +85,19 @@ QStringList WaveDecoder::supportedTypes(void) { return QStringList() << "Waveform Audio File (*.wav)"; } + +bool WaveDecoder::progressHandler(const double &progress, void *const data) +{ + if(data) + { + //qWarning("Copy progress: %.2f", progress); + reinterpret_cast(data)->instance->updateProgress(progress); + return (!(*reinterpret_cast(data)->abrtFlag)); + } + return true; +} + +void WaveDecoder::updateProgress(const double &progress) +{ + emit statusUpdated(qBound(0, qRound(progress * 100.0), 100)); +} diff --git a/src/Decoder_Wave.h b/src/Decoder_Wave.h index d283e06b..cb0105c8 100644 --- a/src/Decoder_Wave.h +++ b/src/Decoder_Wave.h @@ -31,6 +31,10 @@ public: ~WaveDecoder(void); virtual bool decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag); + static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion); static QStringList supportedTypes(void); + + static bool progressHandler(const double &progress, void *const data); + void updateProgress(const double &progress); };