<body>
<h3>LameXP - Version History</h3><br>
+<a name="4.07"></a>Changes between v4.06 and v4.07 [<font color="darkred">unreleased</font>]:<br><ul>
+<li>Added option to select the "overwrite mode" to advanced options
+</ul><br>
+
<a name="4.06"></a>Changes between v4.05 and v4.06 [2012-11-04]:<br><ul>
<li>Updated Opus encoder/decoder libraries to v1.0.1 and Opus-Tools to v0.1.5 (2012-09-22)
<li>Updated mpg123 decoder to v1.14.4+ (2012-09-24), compiled with GCC 4.7.1
<context>
<name>ProcessThread</name>
<message>
- <location filename="../../src/Thread_Process.cpp" line="125"/>
+ <location filename="../../src/Thread_Process.cpp" line="127"/>
<source>Starting...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="133"/>
+ <location filename="../../src/Thread_Process.cpp" line="140"/>
+ <source>Skipped.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../src/Thread_Process.cpp" line="145"/>
<source>Not found!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="166"/>
+ <location filename="../../src/Thread_Process.cpp" line="178"/>
<source>WARNING: Decoded file size exceeds 4 GB, problems might occur!
</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="174"/>
+ <location filename="../../src/Thread_Process.cpp" line="186"/>
<source>The format of this file is NOT supported:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="174"/>
+ <location filename="../../src/Thread_Process.cpp" line="186"/>
<source>Container Format:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="174"/>
+ <location filename="../../src/Thread_Process.cpp" line="186"/>
<source>Audio Format:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="175"/>
+ <location filename="../../src/Thread_Process.cpp" line="187"/>
<source>Unsupported!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="253"/>
+ <location filename="../../src/Thread_Process.cpp" line="265"/>
<source>Aborted!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="253"/>
+ <location filename="../../src/Thread_Process.cpp" line="265"/>
<source>Done.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="253"/>
+ <location filename="../../src/Thread_Process.cpp" line="265"/>
<source>Failed!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="270"/>
+ <location filename="../../src/Thread_Process.cpp" line="282"/>
<source>Encoding</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="273"/>
+ <location filename="../../src/Thread_Process.cpp" line="285"/>
<source>Analyzing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="276"/>
+ <location filename="../../src/Thread_Process.cpp" line="288"/>
<source>Filtering</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="279"/>
+ <location filename="../../src/Thread_Process.cpp" line="291"/>
<source>Decoding</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="302"/>
+ <location filename="../../src/Thread_Process.cpp" line="315"/>
<source>The source audio file could not be found:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="309"/>
+ <location filename="../../src/Thread_Process.cpp" line="323"/>
<source>The source audio file could not be opened for reading:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="335"/>
+ <location filename="../../src/Thread_Process.cpp" line="351"/>
<source>The target output directory doesn't exist and could NOT be created:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="343"/>
+ <location filename="../../src/Thread_Process.cpp" line="360"/>
<source>The target output directory is NOT writable:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="353"/>
+ <location filename="../../src/Thread_Process.cpp" line="371"/>
<source>Unknown File Name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="355"/>
+ <location filename="../../src/Thread_Process.cpp" line="373"/>
<source>Unknown Title</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="356"/>
+ <location filename="../../src/Thread_Process.cpp" line="374"/>
<source>Unknown Artist</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="357"/>
+ <location filename="../../src/Thread_Process.cpp" line="375"/>
<source>Unknown Album</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="359"/>
+ <location filename="../../src/Thread_Process.cpp" line="377"/>
<source>Unknown Comment</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../src/Thread_Process.cpp" line="386"/>
+ <source>Target output file already exists, going to skip this file:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../src/Thread_Process.cpp" line="387"/>
+ <source>If you don't want existing files to be skipped, please change the overwrite mode!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../src/Thread_Process.cpp" line="394"/>
+ <source>Target output file already exists, going to delete existing file:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../src/Thread_Process.cpp" line="404"/>
+ <source>Failed to delete existing target file, will save to another file name!</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>ProcessingDialog</name>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="450"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="451"/>
<source>Aborted! Waiting for running jobs to terminate...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="465"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="466"/>
<source>Encoding: %1 files of %2 completed so far, please wait...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="493"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="494"/>
<source>Creating the playlist file, please wait...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="503"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="504"/>
<source>Process was aborted by the user after %1 file(s)!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="503"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="504"/>
<source>Process was aborted prematurely by the user!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="504"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="505"/>
<source>LameXP - Aborted</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="504"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="505"/>
<source>Process was aborted by the user.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="520"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="521"/>
<source>Process finished after %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="529"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="530"/>
<source>Error: %1 of %2 files failed. Double-click failed items for detailed information!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="530"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="531"/>
<source>LameXP - Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="530"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="531"/>
<source>At least one file has failed!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="540"/>
<location filename="../../src/Dialog_Processing.cpp" line="541"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="542"/>
<source>All files completed successfully.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="541"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="542"/>
<source>LameXP - Done</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="967"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="978"/>
<source>Playlist creation failed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="967"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="978"/>
<source>The playlist file could not be created:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="1037"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="1048"/>
<source>Warning: Computer will shutdown in %1 seconds...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="1041"/>
- <location filename="../../src/Dialog_Processing.cpp" line="1042"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="1052"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="1053"/>
<source>Cancel Shutdown</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="1097"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="1108"/>
<source>hour(s)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="1098"/>
- <location filename="../../src/Dialog_Processing.cpp" line="1102"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="1109"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="1113"/>
<source>minute(s)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="1103"/>
- <location filename="../../src/Dialog_Processing.cpp" line="1107"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="1114"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="1118"/>
<source>second(s)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="1108"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="1119"/>
<source>millisecond(s)</source>
<translation type="unfinished"></translation>
</message>
<context>
<name>ProgressModel</name>
<message>
- <location filename="../../src/Model_Progress.cpp" line="118"/>
+ <location filename="../../src/Model_Progress.cpp" line="122"/>
<source>Job</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Model_Progress.cpp" line="121"/>
+ <location filename="../../src/Model_Progress.cpp" line="125"/>
<source>Status</source>
<translation type="unfinished"></translation>
</message>
</source>
<translation>WARNUNG: Dekodierte Dateigröße übersteigt 4 GB, Probleme sind vorprogrammiert!</translation>
</message>
+ <message>
+ <source>Skipped.</source>
+ <translation>Übersprungen.</translation>
+ </message>
+ <message>
+ <source>Target output file already exists, going to skip this file:</source>
+ <translation>Zieldatei existiert bereits, die Datei wird übersprungen:</translation>
+ </message>
+ <message>
+ <source>If you don't want existing files to be skipped, please change the overwrite mode!</source>
+ <translation>Wenn existierende Dateien nicht übersprungen werden sollen, ändern Sie bitte den Überschreiben-Modus!</translation>
+ </message>
+ <message>
+ <source>Target output file already exists, going to delete existing file:</source>
+ <translation>Zieldatei existiert bereits, die Datei wird gelöscht und überschrieben:</translation>
+ </message>
+ <message>
+ <source>Failed to delete existing target file, will save to another file name!</source>
+ <translation>Die existierende Datei konnte nicht gelöscht werden, ein anderer Dateiname wird gewählt!</translation>
+ </message>
</context>
<context>
<name>ProcessingDialog</name>
</source>
<translation>ADVERTENCIA: ¡El tamaño del archivo decodificado supera los 4 GB, pueden producirse problemas!</translation>
</message>
+ <message>
+ <source>Skipped.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Target output file already exists, going to skip this file:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>If you don't want existing files to be skipped, please change the overwrite mode!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Target output file already exists, going to delete existing file:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Failed to delete existing target file, will save to another file name!</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>ProcessingDialog</name>
</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Skipped.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Target output file already exists, going to skip this file:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>If you don't want existing files to be skipped, please change the overwrite mode!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Target output file already exists, going to delete existing file:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Failed to delete existing target file, will save to another file name!</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>ProcessingDialog</name>
</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Skipped.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Target output file already exists, going to skip this file:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>If you don't want existing files to be skipped, please change the overwrite mode!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Target output file already exists, going to delete existing file:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Failed to delete existing target file, will save to another file name!</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>ProcessingDialog</name>
</source>
<translation type="unfinished">알림: 디코드 파일 크기가 4GB 초과, 문제가 발생할 수 있습니다!</translation>
</message>
+ <message>
+ <source>Skipped.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Target output file already exists, going to skip this file:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>If you don't want existing files to be skipped, please change the overwrite mode!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Target output file already exists, going to delete existing file:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Failed to delete existing target file, will save to another file name!</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>ProcessingDialog</name>
<context>
<name>ProcessThread</name>
<message>
- <location filename="../../src/Thread_Process.cpp" line="125"/>
+ <location filename="../../src/Thread_Process.cpp" line="127"/>
<source>Starting...</source>
<translation type="unfinished">Rozpoczynanie...</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="133"/>
+ <location filename="../../src/Thread_Process.cpp" line="140"/>
+ <source>Skipped.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../src/Thread_Process.cpp" line="145"/>
<source>Not found!</source>
<translation type="unfinished">Nie znaleziono!</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="166"/>
+ <location filename="../../src/Thread_Process.cpp" line="178"/>
<source>WARNING: Decoded file size exceeds 4 GB, problems might occur!
</source>
<translation type="unfinished">UWAGA: Plik po zdekodowaniu przekracza 4 GB, mogą wystąpić problemy!</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="174"/>
+ <location filename="../../src/Thread_Process.cpp" line="186"/>
<source>The format of this file is NOT supported:</source>
<translation type="unfinished">Format tego pliku NIE jest obsługiwany:</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="174"/>
+ <location filename="../../src/Thread_Process.cpp" line="186"/>
<source>Container Format:</source>
<translation type="unfinished">Format kontenera:</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="174"/>
+ <location filename="../../src/Thread_Process.cpp" line="186"/>
<source>Audio Format:</source>
<translation type="unfinished">Format dźwięku:</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="175"/>
+ <location filename="../../src/Thread_Process.cpp" line="187"/>
<source>Unsupported!</source>
<translation type="unfinished">Nieobsługiwany!</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="253"/>
+ <location filename="../../src/Thread_Process.cpp" line="265"/>
<source>Done.</source>
<translation type="unfinished">Zrobione.</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="253"/>
+ <location filename="../../src/Thread_Process.cpp" line="265"/>
<source>Aborted!</source>
<translation type="unfinished">Przerwane!</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="253"/>
+ <location filename="../../src/Thread_Process.cpp" line="265"/>
<source>Failed!</source>
<translation type="unfinished">Niepowodzenie!</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="270"/>
+ <location filename="../../src/Thread_Process.cpp" line="282"/>
<source>Encoding</source>
<translation type="unfinished">Kompresowanie</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="273"/>
+ <location filename="../../src/Thread_Process.cpp" line="285"/>
<source>Analyzing</source>
<translation type="unfinished">Analizowanie</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="276"/>
+ <location filename="../../src/Thread_Process.cpp" line="288"/>
<source>Filtering</source>
<translation type="unfinished">Filtrowanie</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="279"/>
+ <location filename="../../src/Thread_Process.cpp" line="291"/>
<source>Decoding</source>
<translation type="unfinished">Dekodowanie</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="302"/>
+ <location filename="../../src/Thread_Process.cpp" line="315"/>
<source>The source audio file could not be found:</source>
<translation type="unfinished">Źródłowy plik dźwiękowy nie został odnaleziony:</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="309"/>
+ <location filename="../../src/Thread_Process.cpp" line="323"/>
<source>The source audio file could not be opened for reading:</source>
<translation type="unfinished">Źródłowy plik dźwiękowy nie mógł zostać otworzony:</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="335"/>
+ <location filename="../../src/Thread_Process.cpp" line="351"/>
<source>The target output directory doesn't exist and could NOT be created:</source>
<translation type="unfinished">Lokalizacja docelowa nie istnieje lu NIE mogła zostać utworzona:</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="343"/>
+ <location filename="../../src/Thread_Process.cpp" line="360"/>
<source>The target output directory is NOT writable:</source>
<translation type="unfinished">Nie można zapisać do lokalizacji docelowej:</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="353"/>
+ <location filename="../../src/Thread_Process.cpp" line="371"/>
<source>Unknown File Name</source>
<translation type="unfinished">Nieznana nazwa pliku</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="355"/>
+ <location filename="../../src/Thread_Process.cpp" line="373"/>
<source>Unknown Title</source>
<translation type="unfinished">Nieznany Tytuł</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="356"/>
+ <location filename="../../src/Thread_Process.cpp" line="374"/>
<source>Unknown Artist</source>
<translation type="unfinished">Nieznany Artysta</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="357"/>
+ <location filename="../../src/Thread_Process.cpp" line="375"/>
<source>Unknown Album</source>
<translation type="unfinished">Nieznany Album</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="359"/>
+ <location filename="../../src/Thread_Process.cpp" line="377"/>
<source>Unknown Comment</source>
<translation type="unfinished">Nieznany Komentarz</translation>
</message>
+ <message>
+ <location filename="../../src/Thread_Process.cpp" line="386"/>
+ <source>Target output file already exists, going to skip this file:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../src/Thread_Process.cpp" line="387"/>
+ <source>If you don't want existing files to be skipped, please change the overwrite mode!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../src/Thread_Process.cpp" line="394"/>
+ <source>Target output file already exists, going to delete existing file:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../src/Thread_Process.cpp" line="404"/>
+ <source>Failed to delete existing target file, will save to another file name!</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>ProcessingDialog</name>
<translation type="unfinished">Wielowątkowosć włączona: Równolegle wykonywanych jest %1 kodowań!</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="450"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="451"/>
<source>Aborted! Waiting for running jobs to terminate...</source>
<translation type="unfinished">Przerwano! Czekanie na wyłączenie procesu...</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="465"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="466"/>
<source>Encoding: %1 files of %2 completed so far, please wait...</source>
<translation type="unfinished">Kompresja: Prosze czekać, jak dotąd wykonano %1 z %2 plików...</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="493"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="494"/>
<source>Creating the playlist file, please wait...</source>
<translation type="unfinished">Tworzenie pliku playlisty, prosze czekać...</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="503"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="504"/>
<source>Process was aborted by the user after %1 file(s)!</source>
<translation type="unfinished">Proces został przerwany przez użytkownika po wykonaniu %1 plików!</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="503"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="504"/>
<source>Process was aborted prematurely by the user!</source>
<translation type="unfinished">Proces został przedwcześnie zakończony przez użytkownika!</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="504"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="505"/>
<source>LameXP - Aborted</source>
<translation type="unfinished">LameXP - Przerwano</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="504"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="505"/>
<source>Process was aborted by the user.</source>
<translation type="unfinished">Proces został przerwany przez użytkownika.</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="520"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="521"/>
<source>Process finished after %1.</source>
<translation type="unfinished">Proces został zakończony po %1.</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="529"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="530"/>
<source>Error: %1 of %2 files failed. Double-click failed items for detailed information!</source>
<translation type="unfinished">Błąd: %1 z %2 plików nie zostało skompresowanych. Kliknij dwukrotnie na plik aby zobaczyć szczegóły!</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="530"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="531"/>
<source>LameXP - Error</source>
<translation type="unfinished">LameXP - Błąd</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="530"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="531"/>
<source>At least one file has failed!</source>
<translation type="unfinished">Przynajmniej jeden plik nie został skompresowany!</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="540"/>
<location filename="../../src/Dialog_Processing.cpp" line="541"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="542"/>
<source>All files completed successfully.</source>
<translation type="unfinished">Kompresja wszystkich plików zakończona powodzeniem.</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="541"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="542"/>
<source>LameXP - Done</source>
<translation type="unfinished">LameXP - Zrobione</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="967"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="978"/>
<source>Playlist creation failed</source>
<translation type="unfinished">Tworzenie playlisty zakończone niepowodzeniem</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="967"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="978"/>
<source>The playlist file could not be created:</source>
<translation type="unfinished">Playlista nie mogła zostać utworzona:</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="1037"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="1048"/>
<source>Warning: Computer will shutdown in %1 seconds...</source>
<translation type="unfinished">Ostrzeżenie: Komputer zostanie zamknięty za %1 sekund/y...</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="1041"/>
- <location filename="../../src/Dialog_Processing.cpp" line="1042"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="1052"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="1053"/>
<source>Cancel Shutdown</source>
<translation type="unfinished">Anuluj wyłączenie komputera</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="1097"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="1108"/>
<source>hour(s)</source>
<translation type="unfinished">godzinie/ach</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="1098"/>
- <location filename="../../src/Dialog_Processing.cpp" line="1102"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="1109"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="1113"/>
<source>minute(s)</source>
<translation type="unfinished">minutach</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="1103"/>
- <location filename="../../src/Dialog_Processing.cpp" line="1107"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="1114"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="1118"/>
<source>second(s)</source>
<translation type="unfinished">sekundach</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="1108"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="1119"/>
<source>millisecond(s)</source>
<translation type="unfinished">milisekundach</translation>
</message>
<context>
<name>ProgressModel</name>
<message>
- <location filename="../../src/Model_Progress.cpp" line="118"/>
+ <location filename="../../src/Model_Progress.cpp" line="122"/>
<source>Job</source>
<translation type="unfinished">Zadanie</translation>
</message>
<message>
- <location filename="../../src/Model_Progress.cpp" line="121"/>
+ <location filename="../../src/Model_Progress.cpp" line="125"/>
<source>Status</source>
<translation type="unfinished">Status</translation>
</message>
</source>
<translation type="unfinished">ВНИМАНИЕ: декодированный файл больше 4 ГБ, возможны проблемы!</translation>
</message>
+ <message>
+ <source>Skipped.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Target output file already exists, going to skip this file:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>If you don't want existing files to be skipped, please change the overwrite mode!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Target output file already exists, going to delete existing file:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Failed to delete existing target file, will save to another file name!</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>ProcessingDialog</name>
<context>
<name>ProcessThread</name>
<message>
- <location filename="../../src/Thread_Process.cpp" line="125"/>
+ <location filename="../../src/Thread_Process.cpp" line="127"/>
<source>Starting...</source>
<translation>Startar...</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="133"/>
+ <location filename="../../src/Thread_Process.cpp" line="140"/>
+ <source>Skipped.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../src/Thread_Process.cpp" line="145"/>
<source>Not found!</source>
<translation>Hittas ej!</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="166"/>
+ <location filename="../../src/Thread_Process.cpp" line="178"/>
<source>WARNING: Decoded file size exceeds 4 GB, problems might occur!
</source>
<translation>VARNING! Omkodad filstorlek överstiger 4 GB. Problem kan uppstå!
</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="174"/>
+ <location filename="../../src/Thread_Process.cpp" line="186"/>
<source>The format of this file is NOT supported:</source>
<translation>Det här filformatet saknar stöd i LameXP:</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="174"/>
+ <location filename="../../src/Thread_Process.cpp" line="186"/>
<source>Container Format:</source>
<translation>Behållarformat:</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="174"/>
+ <location filename="../../src/Thread_Process.cpp" line="186"/>
<source>Audio Format:</source>
<translation>Ljudformat:</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="175"/>
+ <location filename="../../src/Thread_Process.cpp" line="187"/>
<source>Unsupported!</source>
<translation>Stöd saknas!</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="253"/>
+ <location filename="../../src/Thread_Process.cpp" line="265"/>
<source>Aborted!</source>
<translation>Avbruten!</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="253"/>
+ <location filename="../../src/Thread_Process.cpp" line="265"/>
<source>Done.</source>
<translation>Klar.</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="253"/>
+ <location filename="../../src/Thread_Process.cpp" line="265"/>
<source>Failed!</source>
<translation>Misslyckades!</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="270"/>
+ <location filename="../../src/Thread_Process.cpp" line="282"/>
<source>Encoding</source>
<translation>Kodar</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="273"/>
+ <location filename="../../src/Thread_Process.cpp" line="285"/>
<source>Analyzing</source>
<translation>Analyserar</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="276"/>
+ <location filename="../../src/Thread_Process.cpp" line="288"/>
<source>Filtering</source>
<translation>Filtrerar</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="279"/>
+ <location filename="../../src/Thread_Process.cpp" line="291"/>
<source>Decoding</source>
<translation>Avkodar</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="302"/>
+ <location filename="../../src/Thread_Process.cpp" line="315"/>
<source>The source audio file could not be found:</source>
<translation>Källfilen kan inte hittas:</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="309"/>
+ <location filename="../../src/Thread_Process.cpp" line="323"/>
<source>The source audio file could not be opened for reading:</source>
<translation>Källfilen kan inte öppnas för läsning:</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="335"/>
+ <location filename="../../src/Thread_Process.cpp" line="351"/>
<source>The target output directory doesn't exist and could NOT be created:</source>
<translation>Målmappen finns inte och kan inte skapas:</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="343"/>
+ <location filename="../../src/Thread_Process.cpp" line="360"/>
<source>The target output directory is NOT writable:</source>
<translation>Målmappen är INTE skrivbar:</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="353"/>
+ <location filename="../../src/Thread_Process.cpp" line="371"/>
<source>Unknown File Name</source>
<translation>Okänt filnamn</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="355"/>
+ <location filename="../../src/Thread_Process.cpp" line="373"/>
<source>Unknown Title</source>
<translation>Okänd titel</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="356"/>
+ <location filename="../../src/Thread_Process.cpp" line="374"/>
<source>Unknown Artist</source>
<translation>Okänd artist</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="357"/>
+ <location filename="../../src/Thread_Process.cpp" line="375"/>
<source>Unknown Album</source>
<translation>Okänt album</translation>
</message>
<message>
- <location filename="../../src/Thread_Process.cpp" line="359"/>
+ <location filename="../../src/Thread_Process.cpp" line="377"/>
<source>Unknown Comment</source>
<translation>Okänd kommentar</translation>
</message>
+ <message>
+ <location filename="../../src/Thread_Process.cpp" line="386"/>
+ <source>Target output file already exists, going to skip this file:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../src/Thread_Process.cpp" line="387"/>
+ <source>If you don't want existing files to be skipped, please change the overwrite mode!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../src/Thread_Process.cpp" line="394"/>
+ <source>Target output file already exists, going to delete existing file:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../src/Thread_Process.cpp" line="404"/>
+ <source>Failed to delete existing target file, will save to another file name!</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>ProcessingDialog</name>
<translation>Flertrådskörning aktiverad: Kör %1 parallella instanser!</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="450"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="451"/>
<source>Aborted! Waiting for running jobs to terminate...</source>
<translation>Avbrutet! Väntar på att aktiva processer skall avslutas...</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="465"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="466"/>
<source>Encoding: %1 files of %2 completed so far, please wait...</source>
<translation>Omkodning: %1 fil(er) av %2 bearbetade hittills, vänta...</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="493"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="494"/>
<source>Creating the playlist file, please wait...</source>
<translation>Skapar spelningslista, vänta...</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="503"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="504"/>
<source>Process was aborted by the user after %1 file(s)!</source>
<translation>Åtgärden avbröts av användaren efter %1 fil(er)!</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="503"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="504"/>
<source>Process was aborted prematurely by the user!</source>
<translation>Åtgärden avbröts i förtid av användaren!</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="504"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="505"/>
<source>LameXP - Aborted</source>
<translation>LameXP - Avbrutet</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="504"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="505"/>
<source>Process was aborted by the user.</source>
<translation>Åtgärden avbröts av användaren.</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="520"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="521"/>
<source>Process finished after %1.</source>
<translation>Åtgärden slutförd efter %1.</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="529"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="530"/>
<source>Error: %1 of %2 files failed. Double-click failed items for detailed information!</source>
<translation>Fel: %1 av %2 filer misslyckades. Dubbelklicka på det misslyckade objektet för detaljerad information!</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="530"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="531"/>
<source>LameXP - Error</source>
<translation>LameXP - Fel</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="530"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="531"/>
<source>At least one file has failed!</source>
<translation>Minst en fil har misslyckats!</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="540"/>
<location filename="../../src/Dialog_Processing.cpp" line="541"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="542"/>
<source>All files completed successfully.</source>
<translation>Alla filer korrekt omkodade.</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="541"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="542"/>
<source>LameXP - Done</source>
<translation>LameXP - Klar</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="967"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="978"/>
<source>Playlist creation failed</source>
<translation>Kunde inte skapa spelningslista</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="967"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="978"/>
<source>The playlist file could not be created:</source>
<translation>Spelningslistan kunde inte skapas:</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="1037"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="1048"/>
<source>Warning: Computer will shutdown in %1 seconds...</source>
<translation>Varning! Datorn kommer att stängas av om %1 sekunder...</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="1041"/>
- <location filename="../../src/Dialog_Processing.cpp" line="1042"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="1052"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="1053"/>
<source>Cancel Shutdown</source>
<translation>Avbryt avstängning</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="1097"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="1108"/>
<source>hour(s)</source>
<translation>timma(r)</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="1098"/>
- <location filename="../../src/Dialog_Processing.cpp" line="1102"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="1109"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="1113"/>
<source>minute(s)</source>
<translation>minut(er)</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="1103"/>
- <location filename="../../src/Dialog_Processing.cpp" line="1107"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="1114"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="1118"/>
<source>second(s)</source>
<translation>sekund(er)</translation>
</message>
<message>
- <location filename="../../src/Dialog_Processing.cpp" line="1108"/>
+ <location filename="../../src/Dialog_Processing.cpp" line="1119"/>
<source>millisecond(s)</source>
<translation>millisekund(er)</translation>
</message>
<context>
<name>ProgressModel</name>
<message>
- <location filename="../../src/Model_Progress.cpp" line="118"/>
+ <location filename="../../src/Model_Progress.cpp" line="122"/>
<source>Job</source>
<translation>Åtgärd</translation>
</message>
<message>
- <location filename="../../src/Model_Progress.cpp" line="121"/>
+ <location filename="../../src/Model_Progress.cpp" line="125"/>
<source>Status</source>
<translation>Status</translation>
</message>
</source>
<translation>警告: 解碼文件大小超過4GB, 可能會出現問題!</translation>
</message>
+ <message>
+ <source>Skipped.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Target output file already exists, going to skip this file:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>If you don't want existing files to be skipped, please change the overwrite mode!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Target output file already exists, going to delete existing file:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Failed to delete existing target file, will save to another file name!</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>ProcessingDialog</name>
</source>
<translation>ПОПЕРЕДЖЕННЯ: Розмір декодованного файла перевищує 4 ГБ, можуть виникнути проблеми!</translation>
</message>
+ <message>
+ <source>Skipped.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Target output file already exists, going to skip this file:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>If you don't want existing files to be skipped, please change the overwrite mode!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Target output file already exists, going to delete existing file:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Failed to delete existing target file, will save to another file name!</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>ProcessingDialog</name>
</source>
<translation>警告: 解码文件大小超过4GB, 可能会出现问题!</translation>
</message>
+ <message>
+ <source>Skipped.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Target output file already exists, going to skip this file:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>If you don't want existing files to be skipped, please change the overwrite mode!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Target output file already exists, going to delete existing file:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Failed to delete existing target file, will save to another file name!</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>ProcessingDialog</name>
<file>icons/shield_exclamation.png</file>
<file>icons/shield_green.png</file>
<file>icons/sound.png</file>
+ <file>icons/step_over.png</file>
<file>icons/star.png</file>
<file>icons/table_edit.png</file>
<file>icons/table_save.png</file>
#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!)
for(unsigned int i = 0; i < maximumInstances; i++)
{
startNextJob();
+ qApp->processEvents();
}
LARGE_INTEGER counter;
{
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());
//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)
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")
{
}
case JobPerformance:
return m_iconPerformance;
break;
+ case JobSkipped:
+ return m_iconSkipped;
+ break;
default:
return m_iconFailed;
break;
JobFailed = 3,
JobSystem = 4,
JobWarning = 5,
- JobPerformance = 6
+ JobPerformance = 6,
+ JobSkipped = 7
};
enum SysMsgType
{
const QIcon m_iconSystem;
const QIcon m_iconWarning;
const QIcon m_iconPerformance;
+ const QIcon m_iconSkipped;
};
m_jobId(QUuid::createUuid()),
m_prependRelativeSourcePath(prependRelativeSourcePath),
m_renamePattern("<BaseName>"),
+ m_overwriteSkipExistingFile(false),
+ m_overwriteReplacesExisting(false),
m_aborted(false),
m_propDetect(new WaveProperties())
{
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;
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));
// PRIVAE FUNCTIONS
////////////////////////////////////////////////////////////
-QString ProcessThread::generateOutFileName(void)
+int ProcessThread::generateOutFileName(QString &outFileName)
{
+ outFileName.clear();
+
QMutexLocker lock(m_mutex_genFileName);
-
- int n = 1;
+ //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
{
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();
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
{
writeTest.remove();
}
+ //Apply rename pattern
QString fileName = m_renamePattern;
fileName.replace("<BaseName>", STRDEF(baseName, tr("Unknown File Name")), Qt::CaseInsensitive);
fileName.replace("<TrackNo>", QString().sprintf("%02d", m_audioFile.filePosition()), Qt::CaseInsensitive);
fileName.replace("<Comment>", 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)
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
////////////////////////////////////////////////////////////
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:
};
void processFile();
- QString generateOutFileName(void);
+ int generateOutFileName(QString &outFileName);
QString generateTempFileName(void);
void insertDownsampleFilter(void);
void insertDownmixFilter(void);
const bool m_prependRelativeSourcePath;
QList<AbstractFilter*> m_filters;
QString m_renamePattern;
+ bool m_overwriteSkipExistingFile;
+ bool m_overwriteReplacesExisting;
WaveProperties *m_propDetect;
static QMutex *m_mutex_genFileName;