diff --git a/doc/Changelog.html b/doc/Changelog.html
index 3439dc35..a2927c88 100644
--- a/doc/Changelog.html
+++ b/doc/Changelog.html
@@ -17,6 +17,10 @@ a:visited { color: #0000EE; }
LameXP - Version History
+Changes between v4.06 and v4.07 [unreleased]:
+- Added option to select the "overwrite mode" to advanced options
+
+
Changes between v4.05 and v4.06 [2012-11-04]:
- Updated Opus encoder/decoder libraries to v1.0.1 and Opus-Tools to v0.1.5 (2012-09-22)
- Updated mpg123 decoder to v1.14.4+ (2012-09-24), compiled with GCC 4.7.1
diff --git a/etc/Translation/Blank.ts b/etc/Translation/Blank.ts
index 13317c39..d6fa36d6 100644
--- a/etc/Translation/Blank.ts
+++ b/etc/Translation/Blank.ts
@@ -2877,121 +2877,146 @@
ProcessThread
-
+
-
+
+
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
ProcessingDialog
@@ -3069,111 +3094,111 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
-
+
+
-
-
+
+
-
+
@@ -3181,12 +3206,12 @@
ProgressModel
-
+
-
+
diff --git a/etc/Translation/LameXP_DE.ts b/etc/Translation/LameXP_DE.ts
index 2b6a4fc1..e3f4829c 100644
--- a/etc/Translation/LameXP_DE.ts
+++ b/etc/Translation/LameXP_DE.ts
@@ -2315,6 +2315,26 @@
WARNUNG: Dekodierte Dateigröße übersteigt 4 GB, Probleme sind vorprogrammiert!
+
+
+ Übersprungen.
+
+
+
+ Zieldatei existiert bereits, die Datei wird übersprungen:
+
+
+
+ Wenn existierende Dateien nicht übersprungen werden sollen, ändern Sie bitte den Überschreiben-Modus!
+
+
+
+ Zieldatei existiert bereits, die Datei wird gelöscht und überschrieben:
+
+
+
+ Die existierende Datei konnte nicht gelöscht werden, ein anderer Dateiname wird gewählt!
+
ProcessingDialog
diff --git a/etc/Translation/LameXP_ES.ts b/etc/Translation/LameXP_ES.ts
index 466c15fb..13951fd6 100644
--- a/etc/Translation/LameXP_ES.ts
+++ b/etc/Translation/LameXP_ES.ts
@@ -2314,6 +2314,26 @@
ADVERTENCIA: ¡El tamaño del archivo decodificado supera los 4 GB, pueden producirse problemas!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
ProcessingDialog
diff --git a/etc/Translation/LameXP_FR.ts b/etc/Translation/LameXP_FR.ts
index ecbc432f..56e05602 100644
--- a/etc/Translation/LameXP_FR.ts
+++ b/etc/Translation/LameXP_FR.ts
@@ -2324,6 +2324,26 @@ Ouvrir le dossier récursivement...
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
ProcessingDialog
diff --git a/etc/Translation/LameXP_IT.ts b/etc/Translation/LameXP_IT.ts
index 65fe8465..63c4ce98 100644
--- a/etc/Translation/LameXP_IT.ts
+++ b/etc/Translation/LameXP_IT.ts
@@ -2315,6 +2315,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
ProcessingDialog
diff --git a/etc/Translation/LameXP_KR.ts b/etc/Translation/LameXP_KR.ts
index b29cbd07..45e7528d 100644
--- a/etc/Translation/LameXP_KR.ts
+++ b/etc/Translation/LameXP_KR.ts
@@ -2314,6 +2314,26 @@
알림: 디코드 파일 크기가 4GB 초과, 문제가 발생할 수 있습니다!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
ProcessingDialog
diff --git a/etc/Translation/LameXP_PL.ts b/etc/Translation/LameXP_PL.ts
index 10404c17..7cb2d3ff 100644
--- a/etc/Translation/LameXP_PL.ts
+++ b/etc/Translation/LameXP_PL.ts
@@ -2878,121 +2878,146 @@
ProcessThread
-
+
Rozpoczynanie...
-
+
+
+
+
+
+
Nie znaleziono!
-
+
UWAGA: Plik po zdekodowaniu przekracza 4 GB, mogą wystąpić problemy!
-
+
Format tego pliku NIE jest obsługiwany:
-
+
Format kontenera:
-
+
Format dźwięku:
-
+
Nieobsługiwany!
-
+
Zrobione.
-
+
Przerwane!
-
+
Niepowodzenie!
-
+
Kompresowanie
-
+
Analizowanie
-
+
Filtrowanie
-
+
Dekodowanie
-
+
Źródłowy plik dźwiękowy nie został odnaleziony:
-
+
Źródłowy plik dźwiękowy nie mógł zostać otworzony:
-
+
Lokalizacja docelowa nie istnieje lu NIE mogła zostać utworzona:
-
+
Nie można zapisać do lokalizacji docelowej:
-
+
Nieznana nazwa pliku
-
+
Nieznany Tytuł
-
+
Nieznany Artysta
-
+
Nieznany Album
-
+
Nieznany Komentarz
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
ProcessingDialog
@@ -3070,111 +3095,111 @@
Wielowątkowosć włączona: Równolegle wykonywanych jest %1 kodowań!
-
+
Przerwano! Czekanie na wyłączenie procesu...
-
+
Kompresja: Prosze czekać, jak dotąd wykonano %1 z %2 plików...
-
+
Tworzenie pliku playlisty, prosze czekać...
-
+
Proces został przerwany przez użytkownika po wykonaniu %1 plików!
-
+
Proces został przedwcześnie zakończony przez użytkownika!
-
+
LameXP - Przerwano
-
+
Proces został przerwany przez użytkownika.
-
+
Proces został zakończony po %1.
-
+
Błąd: %1 z %2 plików nie zostało skompresowanych. Kliknij dwukrotnie na plik aby zobaczyć szczegóły!
-
+
LameXP - Błąd
-
+
Przynajmniej jeden plik nie został skompresowany!
-
+
Kompresja wszystkich plików zakończona powodzeniem.
-
+
LameXP - Zrobione
-
+
Tworzenie playlisty zakończone niepowodzeniem
-
+
Playlista nie mogła zostać utworzona:
-
+
Ostrzeżenie: Komputer zostanie zamknięty za %1 sekund/y...
-
-
+
+
Anuluj wyłączenie komputera
-
+
godzinie/ach
-
-
+
+
minutach
-
-
+
+
sekundach
-
+
milisekundach
@@ -3182,12 +3207,12 @@
ProgressModel
-
+
Zadanie
-
+
Status
diff --git a/etc/Translation/LameXP_RU.ts b/etc/Translation/LameXP_RU.ts
index 58a00691..6cc8c194 100644
--- a/etc/Translation/LameXP_RU.ts
+++ b/etc/Translation/LameXP_RU.ts
@@ -2321,6 +2321,26 @@
ВНИМАНИЕ: декодированный файл больше 4 ГБ, возможны проблемы!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
ProcessingDialog
diff --git a/etc/Translation/LameXP_SV.ts b/etc/Translation/LameXP_SV.ts
index 69e02713..e9562bde 100644
--- a/etc/Translation/LameXP_SV.ts
+++ b/etc/Translation/LameXP_SV.ts
@@ -2878,122 +2878,147 @@
ProcessThread
-
+
Startar...
-
+
+
+
+
+
+
Hittas ej!
-
+
VARNING! Omkodad filstorlek överstiger 4 GB. Problem kan uppstå!
-
+
Det här filformatet saknar stöd i LameXP:
-
+
Behållarformat:
-
+
Ljudformat:
-
+
Stöd saknas!
-
+
Avbruten!
-
+
Klar.
-
+
Misslyckades!
-
+
Kodar
-
+
Analyserar
-
+
Filtrerar
-
+
Avkodar
-
+
Källfilen kan inte hittas:
-
+
Källfilen kan inte öppnas för läsning:
-
+
Målmappen finns inte och kan inte skapas:
-
+
Målmappen är INTE skrivbar:
-
+
Okänt filnamn
-
+
Okänd titel
-
+
Okänd artist
-
+
Okänt album
-
+
Okänd kommentar
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
ProcessingDialog
@@ -3071,111 +3096,111 @@
Flertrådskörning aktiverad: Kör %1 parallella instanser!
-
+
Avbrutet! Väntar på att aktiva processer skall avslutas...
-
+
Omkodning: %1 fil(er) av %2 bearbetade hittills, vänta...
-
+
Skapar spelningslista, vänta...
-
+
Åtgärden avbröts av användaren efter %1 fil(er)!
-
+
Åtgärden avbröts i förtid av användaren!
-
+
LameXP - Avbrutet
-
+
Åtgärden avbröts av användaren.
-
+
Åtgärden slutförd efter %1.
-
+
Fel: %1 av %2 filer misslyckades. Dubbelklicka på det misslyckade objektet för detaljerad information!
-
+
LameXP - Fel
-
+
Minst en fil har misslyckats!
-
+
Alla filer korrekt omkodade.
-
+
LameXP - Klar
-
+
Kunde inte skapa spelningslista
-
+
Spelningslistan kunde inte skapas:
-
+
Varning! Datorn kommer att stängas av om %1 sekunder...
-
-
+
+
Avbryt avstängning
-
+
timma(r)
-
-
+
+
minut(er)
-
-
+
+
sekund(er)
-
+
millisekund(er)
@@ -3183,12 +3208,12 @@
ProgressModel
-
+
Åtgärd
-
+
Status
diff --git a/etc/Translation/LameXP_TW.ts b/etc/Translation/LameXP_TW.ts
index 5cb59a0a..7863e938 100644
--- a/etc/Translation/LameXP_TW.ts
+++ b/etc/Translation/LameXP_TW.ts
@@ -2314,6 +2314,26 @@
警告: 解碼文件大小超過4GB, 可能會出現問題!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
ProcessingDialog
diff --git a/etc/Translation/LameXP_UK.ts b/etc/Translation/LameXP_UK.ts
index f2775896..17a50d35 100644
--- a/etc/Translation/LameXP_UK.ts
+++ b/etc/Translation/LameXP_UK.ts
@@ -2315,6 +2315,26 @@
ПОПЕРЕДЖЕННЯ: Розмір декодованного файла перевищує 4 ГБ, можуть виникнути проблеми!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
ProcessingDialog
diff --git a/etc/Translation/LameXP_ZH.ts b/etc/Translation/LameXP_ZH.ts
index cea90287..f1a6a981 100644
--- a/etc/Translation/LameXP_ZH.ts
+++ b/etc/Translation/LameXP_ZH.ts
@@ -2314,6 +2314,26 @@
警告: 解码文件大小超过4GB, 可能会出现问题!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
ProcessingDialog
diff --git a/res/Icons.qrc b/res/Icons.qrc
index d97090a5..e8c51e19 100644
--- a/res/Icons.qrc
+++ b/res/Icons.qrc
@@ -101,6 +101,7 @@
icons/shield_exclamation.png
icons/shield_green.png
icons/sound.png
+ icons/step_over.png
icons/star.png
icons/table_edit.png
icons/table_save.png
diff --git a/res/icons/step_over.png b/res/icons/step_over.png
new file mode 100644
index 00000000..ddf04dee
Binary files /dev/null and b/res/icons/step_over.png differ
diff --git a/res/localization/LameXP_DE.qm b/res/localization/LameXP_DE.qm
index c97d9d5d..24bce9ea 100644
Binary files a/res/localization/LameXP_DE.qm and b/res/localization/LameXP_DE.qm differ
diff --git a/src/Config.h b/src/Config.h
index 1a89e0f9..6e4d4cfd 100644
--- a/src/Config.h
+++ b/src/Config.h
@@ -30,7 +30,7 @@
#define VER_LAMEXP_MINOR_LO 7
#define VER_LAMEXP_TYPE Alpha
#define VER_LAMEXP_PATCH 1
-#define VER_LAMEXP_BUILD 1172
+#define VER_LAMEXP_BUILD 1174
///////////////////////////////////////////////////////////////////////////////
// Tool versions (minimum expected versions!)
diff --git a/src/Dialog_Processing.cpp b/src/Dialog_Processing.cpp
index 2cb0ea5f..746cfbcf 100644
--- a/src/Dialog_Processing.cpp
+++ b/src/Dialog_Processing.cpp
@@ -433,6 +433,7 @@ void ProcessingDialog::initEncoding(void)
for(unsigned int i = 0; i < maximumInstances; i++)
{
startNextJob();
+ qApp->processEvents();
}
LARGE_INTEGER counter;
@@ -733,6 +734,10 @@ void ProcessingDialog::startNextJob(void)
{
thread->setRenamePattern(m_settings->renameOutputFilesPattern());
}
+ if(m_settings->overwriteMode() != SettingsModel::Overwrite_KeepBoth)
+ {
+ thread->setOverwriteMode((m_settings->overwriteMode() == SettingsModel::Overwrite_SkipFile), (m_settings->overwriteMode() == SettingsModel::Overwrite_Replaces));
+ }
m_threadList.append(thread);
m_allJobs.append(thread->getId());
@@ -747,6 +752,12 @@ void ProcessingDialog::startNextJob(void)
//Give it a go!
m_runningThreads++;
thread->start();
+
+ //Give thread some advance
+ for(unsigned int i = 0; i < MAX_INSTANCES; i++)
+ {
+ QThread::yieldCurrentThread();
+ }
}
AbstractEncoder *ProcessingDialog::makeEncoder(bool *nativeResampling)
diff --git a/src/Model_Progress.cpp b/src/Model_Progress.cpp
index bb235410..fcc03eae 100644
--- a/src/Model_Progress.cpp
+++ b/src/Model_Progress.cpp
@@ -33,7 +33,8 @@ ProgressModel::ProgressModel(void)
m_iconFailed(":/icons/exclamation.png"),
m_iconSystem(":/icons/computer.png"),
m_iconWarning(":/icons/error.png"),
- m_iconPerformance(":/icons/clock.png")
+ m_iconPerformance(":/icons/clock.png"),
+ m_iconSkipped(":/icons/step_over.png")
{
}
@@ -92,6 +93,9 @@ QVariant ProgressModel::data(const QModelIndex &index, int role) const
case JobPerformance:
return m_iconPerformance;
break;
+ case JobSkipped:
+ return m_iconSkipped;
+ break;
default:
return m_iconFailed;
break;
diff --git a/src/Model_Progress.h b/src/Model_Progress.h
index 759c8c8d..0ffc3b7e 100644
--- a/src/Model_Progress.h
+++ b/src/Model_Progress.h
@@ -48,7 +48,8 @@ public:
JobFailed = 3,
JobSystem = 4,
JobWarning = 5,
- JobPerformance = 6
+ JobPerformance = 6,
+ JobSkipped = 7
};
enum SysMsgType
{
@@ -91,4 +92,5 @@ private:
const QIcon m_iconSystem;
const QIcon m_iconWarning;
const QIcon m_iconPerformance;
+ const QIcon m_iconSkipped;
};
diff --git a/src/Thread_Process.cpp b/src/Thread_Process.cpp
index 5d5a31f7..ce994a7c 100644
--- a/src/Thread_Process.cpp
+++ b/src/Thread_Process.cpp
@@ -63,6 +63,8 @@ ProcessThread::ProcessThread(const AudioFileModel &audioFile, const QString &out
m_jobId(QUuid::createUuid()),
m_prependRelativeSourcePath(prependRelativeSourcePath),
m_renamePattern(""),
+ m_overwriteSkipExistingFile(false),
+ m_overwriteReplacesExisting(false),
m_aborted(false),
m_propDetect(new WaveProperties())
{
@@ -127,9 +129,19 @@ void ProcessThread::processFile()
handleMessage("\n-------------------------------\n");
//Generate output file name
- QString outFileName = generateOutFileName();
- if(outFileName.isEmpty())
+ QString outFileName;
+ switch(generateOutFileName(outFileName))
{
+ case 1:
+ //File name generated successfully :-)
+ break;
+ case -1:
+ //File name already exists -> skipping!
+ emit processStateChanged(m_jobId, tr("Skipped."), ProgressModel::JobSkipped);
+ emit processStateFinished(m_jobId, outFileName, true);
+ return;
+ default:
+ //File name could not be generated
emit processStateChanged(m_jobId, tr("Not found!"), ProgressModel::JobFailed);
emit processStateFinished(m_jobId, outFileName, false);
return;
@@ -247,7 +259,7 @@ void ProcessThread::processFile()
bSuccess = fileInfo.exists() && fileInfo.isFile() && (fileInfo.size() > 0);
}
- QThread::msleep(500);
+ QThread::msleep(125);
//Report result
emit processStateChanged(m_jobId, (m_aborted ? tr("Aborted!") : (bSuccess ? tr("Done.") : tr("Failed!"))), ((bSuccess && !m_aborted) ? ProgressModel::JobComplete : ProgressModel::JobFailed));
@@ -290,24 +302,26 @@ void ProcessThread::handleMessage(const QString &line)
// PRIVAE FUNCTIONS
////////////////////////////////////////////////////////////
-QString ProcessThread::generateOutFileName(void)
+int ProcessThread::generateOutFileName(QString &outFileName)
{
- QMutexLocker lock(m_mutex_genFileName);
-
- int n = 1;
+ outFileName.clear();
+ QMutexLocker lock(m_mutex_genFileName);
+
+ //Make sure the source file exists
QFileInfo sourceFile(m_audioFile.filePath());
if(!sourceFile.exists() || !sourceFile.isFile())
{
handleMessage(QString("%1\n%2").arg(tr("The source audio file could not be found:"), sourceFile.absoluteFilePath()));
- return QString();
+ return 0;
}
+ //Make sure the source file readable
QFile readTest(sourceFile.canonicalFilePath());
if(!readTest.open(QIODevice::ReadOnly))
{
- handleMessage(QString("%1\n%2").arg(tr("The source audio file could not be opened for reading:"), readTest.fileName()));
- return QString();
+ handleMessage(QString("%1\n%2").arg(tr("The source audio file could not be opened for reading:"), QDir::toNativeSeparators(readTest.fileName())));
+ return 0;
}
else
{
@@ -317,6 +331,7 @@ QString ProcessThread::generateOutFileName(void)
QString baseName = sourceFile.completeBaseName();
QDir targetDir(m_outputDirectory.isEmpty() ? sourceFile.canonicalPath() : m_outputDirectory);
+ //Prepend relative source file path?
if(m_prependRelativeSourcePath && !m_outputDirectory.isEmpty())
{
QDir rootDir = sourceFile.dir();
@@ -327,21 +342,23 @@ QString ProcessThread::generateOutFileName(void)
targetDir.setPath(QString("%1/%2").arg(targetDir.absolutePath(), QFileInfo(rootDir.relativeFilePath(sourceFile.canonicalFilePath())).path()));
}
+ //Make sure output directory does exist
if(!targetDir.exists())
{
targetDir.mkpath(".");
if(!targetDir.exists())
{
- handleMessage(QString("%1\n%2").arg(tr("The target output directory doesn't exist and could NOT be created:"), targetDir.absolutePath()));
- return QString();
+ handleMessage(QString("%1\n%2").arg(tr("The target output directory doesn't exist and could NOT be created:"), QDir::toNativeSeparators(targetDir.absolutePath())));
+ return 0;
}
}
+ //Make sure that the output dir is writable
QFile writeTest(QString("%1/.%2").arg(targetDir.canonicalPath(), lamexp_rand_str()));
if(!writeTest.open(QIODevice::ReadWrite))
{
- handleMessage(QString("%1\n%2").arg(tr("The target output directory is NOT writable:"), targetDir.absolutePath()));
- return QString();
+ handleMessage(QString("%1\n%2").arg(tr("The target output directory is NOT writable:"), QDir::toNativeSeparators(targetDir.absolutePath())));
+ return 0;
}
else
{
@@ -349,6 +366,7 @@ QString ProcessThread::generateOutFileName(void)
writeTest.remove();
}
+ //Apply rename pattern
QString fileName = m_renamePattern;
fileName.replace("", STRDEF(baseName, tr("Unknown File Name")), Qt::CaseInsensitive);
fileName.replace("", QString().sprintf("%02d", m_audioFile.filePosition()), Qt::CaseInsensitive);
@@ -359,19 +377,50 @@ QString ProcessThread::generateOutFileName(void)
fileName.replace("", STRDEF(m_audioFile.fileComment(), tr("Unknown Comment")), Qt::CaseInsensitive);
fileName = lamexp_clean_filename(fileName).simplified();
- QString outFileName = QString("%1/%2.%3").arg(targetDir.canonicalPath(), fileName, m_encoder->extension());
+ //Generate full output path
+ outFileName = QString("%1/%2.%3").arg(targetDir.canonicalPath(), fileName, m_encoder->extension());
+
+ //Skip file, if target file exists (optional!)
+ if(m_overwriteSkipExistingFile && QFileInfo(outFileName).exists())
+ {
+ handleMessage(QString("%1\n%2\n").arg(tr("Target output file already exists, going to skip this file:"), QDir::toNativeSeparators(outFileName)));
+ handleMessage(tr("If you don't want existing files to be skipped, please change the overwrite mode!"));
+ return -1;
+ }
+
+ //Delete file, if target file exists (optional!)
+ if(m_overwriteReplacesExisting && QFileInfo(outFileName).exists())
+ {
+ handleMessage(QString("%1\n%2\n").arg(tr("Target output file already exists, going to delete existing file:"), QDir::toNativeSeparators(outFileName)));
+ bool bOkay = false;
+ for(int i = 0; i < 16; i++)
+ {
+ bOkay = QFile::remove(outFileName);
+ if(bOkay) break;
+ QThread::msleep(125);
+ }
+ if(QFileInfo(outFileName).exists() || (!bOkay))
+ {
+ handleMessage(QString("%1\n").arg(tr("Failed to delete existing target file, will save to another file name!")));
+ }
+ }
+
+ int n = 1;
+
+ //Generate final name
while(QFileInfo(outFileName).exists())
{
outFileName = QString("%1/%2 (%3).%4").arg(targetDir.canonicalPath(), fileName, QString::number(++n), m_encoder->extension());
}
+ //Create placeholder
QFile placeholder(outFileName);
if(placeholder.open(QIODevice::WriteOnly))
{
placeholder.close();
}
- return outFileName;
+ return 1;
}
QString ProcessThread::generateTempFileName(void)
@@ -541,6 +590,19 @@ void ProcessThread::setRenamePattern(const QString &pattern)
if(!newPattern.isEmpty()) m_renamePattern = newPattern;
}
+void ProcessThread::setOverwriteMode(const bool bSkipExistingFile, const bool bReplacesExisting)
+{
+ if(bSkipExistingFile && bReplacesExisting)
+ {
+ qWarning("Inconsistent overwrite flags, reverting to default!");
+ m_overwriteSkipExistingFile = false;
+ m_overwriteReplacesExisting = false;
+ }
+
+ m_overwriteSkipExistingFile = bSkipExistingFile;
+ m_overwriteReplacesExisting = bReplacesExisting;
+}
+
////////////////////////////////////////////////////////////
// EVENTS
////////////////////////////////////////////////////////////
diff --git a/src/Thread_Process.h b/src/Thread_Process.h
index ec60b18d..d0bdfc7c 100644
--- a/src/Thread_Process.h
+++ b/src/Thread_Process.h
@@ -45,6 +45,7 @@ public:
void abort() { m_aborted = true; }
QUuid getId() { return m_jobId; }
void setRenamePattern(const QString &pattern);
+ void setOverwriteMode(const bool bSkipExistingFile, const bool ReplacesExisting = false);
void addFilter(AbstractFilter *filter);
private slots:
@@ -68,7 +69,7 @@ private:
};
void processFile();
- QString generateOutFileName(void);
+ int generateOutFileName(QString &outFileName);
QString generateTempFileName(void);
void insertDownsampleFilter(void);
void insertDownmixFilter(void);
@@ -84,6 +85,8 @@ private:
const bool m_prependRelativeSourcePath;
QList m_filters;
QString m_renamePattern;
+ bool m_overwriteSkipExistingFile;
+ bool m_overwriteReplacesExisting;
WaveProperties *m_propDetect;
static QMutex *m_mutex_genFileName;