From 72e8558b5fe371e5b1f133a4037a27f803829ec0 Mon Sep 17 00:00:00 2001 From: lordmulder Date: Sun, 6 May 2012 23:58:18 +0200 Subject: [PATCH] Added progress indicator to CueSheet import thread. --- etc/Translation/Blank.ts | 14 +++++++------- etc/Translation/LameXP_PL.ts | 14 +++++++------- etc/Translation/LameXP_SV.ts | 14 +++++++------- src/Config.h | 2 +- src/Dialog_CueImport.cpp | 2 ++ src/Dialog_MainWindow.cpp | 2 +- src/Dialog_WorkingBanner.cpp | 6 +++--- src/Thread_CueSplitter.cpp | 21 +++++++++++++++++++++ src/Thread_CueSplitter.h | 2 ++ 9 files changed, 51 insertions(+), 26 deletions(-) diff --git a/etc/Translation/Blank.ts b/etc/Translation/Blank.ts index 358971f5..cb1d314b 100644 --- a/etc/Translation/Blank.ts +++ b/etc/Translation/Blank.ts @@ -384,8 +384,8 @@ - - + + Cue Sheet Error @@ -512,27 +512,27 @@ - + Splitting file(s), please wait... - + Process was aborted by the user after %1 track(s)! - + An unexpected error has occured while splitting the Cue Sheet! - + Imported %1 track(s) from the Cue Sheet and skipped %2 track(s). - + Cue Sheet Completed diff --git a/etc/Translation/LameXP_PL.ts b/etc/Translation/LameXP_PL.ts index 8c831457..2c7d61d4 100644 --- a/etc/Translation/LameXP_PL.ts +++ b/etc/Translation/LameXP_PL.ts @@ -384,8 +384,8 @@ - - + + Cue Sheet Error Błąd pliku Cue Sheet @@ -512,27 +512,27 @@ Przerwij - + Splitting file(s), please wait... Dzielenie pliku/ów, prosze czekać... - + Process was aborted by the user after %1 track(s)! Proces został przerwany przez użytkownika po imporcie %1 ścieżek! - + An unexpected error has occured while splitting the Cue Sheet! Wystąpił nieoczekiwany błąd podczas podziału pliku Cue Sheet! - + Imported %1 track(s) from the Cue Sheet and skipped %2 track(s). Zaimportowano %1 ścieżek i opuszczono %2 ścieżek z pliku Cue Sheet. - + Cue Sheet Completed Stworzono plik Cue Sheet diff --git a/etc/Translation/LameXP_SV.ts b/etc/Translation/LameXP_SV.ts index e7e52f61..96cd9bc4 100644 --- a/etc/Translation/LameXP_SV.ts +++ b/etc/Translation/LameXP_SV.ts @@ -384,8 +384,8 @@ - - + + Cue Sheet Error Cue-fel @@ -512,27 +512,27 @@ Avbryt - + Splitting file(s), please wait... Delar fil(er), vänta... - + Process was aborted by the user after %1 track(s)! Åtgärden avbröts av användaren efter %1 spår! - + An unexpected error has occured while splitting the Cue Sheet! Ett oväntat fel uppstod vid delningen av cue-filen! - + Imported %1 track(s) from the Cue Sheet and skipped %2 track(s). Importerade %1 spår från cue-filen och hoppade över %2 spår. - + Cue Sheet Completed cue-fil färdigbearbetad diff --git a/src/Config.h b/src/Config.h index b259a143..11886979 100644 --- a/src/Config.h +++ b/src/Config.h @@ -30,7 +30,7 @@ #define VER_LAMEXP_MINOR_LO 5 #define VER_LAMEXP_TYPE Alpha #define VER_LAMEXP_PATCH 1 -#define VER_LAMEXP_BUILD 1013 +#define VER_LAMEXP_BUILD 1016 /////////////////////////////////////////////////////////////////////////////// // Tool versions (minimum expected versions!) diff --git a/src/Dialog_CueImport.cpp b/src/Dialog_CueImport.cpp index 6d5b67c2..6e8367d7 100644 --- a/src/Dialog_CueImport.cpp +++ b/src/Dialog_CueImport.cpp @@ -383,6 +383,8 @@ void CueImportDialog::splitFiles(void) connect(splitter, SIGNAL(fileSelected(QString)), progress, SLOT(setText(QString)), Qt::QueuedConnection); connect(splitter, SIGNAL(fileSplit(AudioFileModel)), m_fileList, SLOT(addFile(AudioFileModel)), Qt::QueuedConnection); + connect(splitter, SIGNAL(progressValChanged(unsigned int)), progress, SLOT(setProgressVal(unsigned int)), Qt::QueuedConnection); + connect(splitter, SIGNAL(progressMaxChanged(unsigned int)), progress, SLOT(setProgressMax(unsigned int)), Qt::QueuedConnection); connect(progress, SIGNAL(userAbort()), splitter, SLOT(abortProcess()), Qt::DirectConnection); progress->show(tr("Splitting file(s), please wait..."), splitter); diff --git a/src/Dialog_MainWindow.cpp b/src/Dialog_MainWindow.cpp index 93f60e0f..92a93383 100644 --- a/src/Dialog_MainWindow.cpp +++ b/src/Dialog_MainWindow.cpp @@ -56,7 +56,7 @@ #include #include #include -#include //#include +#include #include #include #include diff --git a/src/Dialog_WorkingBanner.cpp b/src/Dialog_WorkingBanner.cpp index 3f360276..441a4779 100644 --- a/src/Dialog_WorkingBanner.cpp +++ b/src/Dialog_WorkingBanner.cpp @@ -63,13 +63,13 @@ WorkingBanner::WorkingBanner(QWidget *parent) //Set font size QFont font = m_progress->font(); - font.setPointSize(5); + font.setPointSize(6); m_progress->setFont(font); //Set font color QPalette color = m_progress->palette(); - color.setColor(QPalette::Text, QColor::fromRgb(0x36, 0x36, 0x36)); - color.setColor(QPalette::WindowText, QColor::fromRgb(0x36, 0x36, 0x36)); + color.setColor(QPalette::Text, QColor::fromRgb(0x33, 0x33, 0x33)); + color.setColor(QPalette::WindowText, QColor::fromRgb(0x33, 0x33, 0x33)); m_progress->setPalette(color); //Set wait cursor diff --git a/src/Thread_CueSplitter.cpp b/src/Thread_CueSplitter.cpp index 34b7b386..31b28008 100644 --- a/src/Thread_CueSplitter.cpp +++ b/src/Thread_CueSplitter.cpp @@ -102,6 +102,9 @@ void CueSplitter::run() QStringList inputFileList = m_inputFilesInfo.keys(); int nInputFiles = inputFileList.count(); + emit progressMaxChanged(nInputFiles); + emit progressValChanged(0); + //Decompress all input files for(int i = 0; i < nInputFiles; i++) { @@ -112,9 +115,13 @@ void CueSplitter::run() if(decoder) { m_activeFile = shortName(QFileInfo(inputFileList.at(i)).fileName()); + emit fileSelected(m_activeFile); + emit progressValChanged(i+1); + QString tempFile = QString("%1/~%2.wav").arg(m_outputDir, lamexp_rand_str()); connect(decoder, SIGNAL(statusUpdated(int)), this, SLOT(handleUpdate(int)), Qt::DirectConnection); + if(decoder->decode(inputFileList.at(i), tempFile, &m_abortFlag)) { m_decompressedFiles.insert(inputFileList.at(i), tempFile); @@ -125,6 +132,7 @@ void CueSplitter::run() qWarning("Failed to decompress file: <%s>", inputFileList.at(i).toLatin1().constData()); lamexp_remove_file(tempFile); } + m_activeFile.clear(); LAMEXP_DELETE(decoder); } @@ -137,6 +145,7 @@ void CueSplitter::run() { m_decompressedFiles.insert(inputFileList.at(i), inputFileList.at(i)); } + if(m_abortFlag) { m_bAborted = true; @@ -146,6 +155,17 @@ void CueSplitter::run() } int nFiles = m_model->getFileCount(); + int nTracksTotal = 0; + int nTracksComplete = 0; + + for(int i = 0; i < nFiles; i++) + { + nTracksTotal += m_model->getTrackCount(i); + } + + emit progressMaxChanged(nTracksTotal); + emit progressValChanged(0); + QString albumPerformer = m_model->getAlbumPerformer(); QString albumTitle = m_model->getAlbumTitle(); QString albumGenre = m_model->getAlbumGenre(); @@ -161,6 +181,7 @@ void CueSplitter::run() //Process all tracks for(int j = 0; j < nTracks; j++) { + emit progressValChanged(++nTracksComplete); int trackNo = m_model->getTrackNo(i, j); double trackOffset = std::numeric_limits::quiet_NaN(); double trackLength = std::numeric_limits::quiet_NaN(); diff --git a/src/Thread_CueSplitter.h b/src/Thread_CueSplitter.h index b7447a03..a5170d8a 100644 --- a/src/Thread_CueSplitter.h +++ b/src/Thread_CueSplitter.h @@ -52,6 +52,8 @@ public: signals: void fileSelected(const QString &fileName); void fileSplit(const AudioFileModel &file); + void progressValChanged(unsigned int); + void progressMaxChanged(unsigned int); private slots: void handleUpdate(int progress); -- 2.11.4.GIT