OSDN Git Service

"Overwrite Mode" should actually be working now.
authorLoRd_MuldeR <mulder2@gmx.de>
Thu, 8 Nov 2012 20:19:45 +0000 (21:19 +0100)
committerLoRd_MuldeR <mulder2@gmx.de>
Thu, 8 Nov 2012 20:19:45 +0000 (21:19 +0100)
22 files changed:
doc/Changelog.html
etc/Translation/Blank.ts
etc/Translation/LameXP_DE.ts
etc/Translation/LameXP_ES.ts
etc/Translation/LameXP_FR.ts
etc/Translation/LameXP_IT.ts
etc/Translation/LameXP_KR.ts
etc/Translation/LameXP_PL.ts
etc/Translation/LameXP_RU.ts
etc/Translation/LameXP_SV.ts
etc/Translation/LameXP_TW.ts
etc/Translation/LameXP_UK.ts
etc/Translation/LameXP_ZH.ts
res/Icons.qrc
res/icons/step_over.png [new file with mode: 0644]
res/localization/LameXP_DE.qm
src/Config.h
src/Dialog_Processing.cpp
src/Model_Progress.cpp
src/Model_Progress.h
src/Thread_Process.cpp
src/Thread_Process.h

index 3439dc3..a2927c8 100644 (file)
@@ -17,6 +17,10 @@ a:visited { color: #0000EE; }
 <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
index 13317c3..d6fa36d 100644 (file)
 <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&apos;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&apos;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>
index 2b6a4fc..e3f4829 100644 (file)
 </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&apos;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>
index 466c15f..13951fd 100644 (file)
 </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&apos;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>
index ecbc432..56e0560 100644 (file)
@@ -2324,6 +2324,26 @@ Ouvrir le dossier récursivement...</translation>
 </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&apos;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>
index 65fe846..63c4ce9 100644 (file)
 </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&apos;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>
index b29cbd0..45e7528 100644 (file)
 </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&apos;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>
index 10404c1..7cb2d3f 100644 (file)
 <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&apos;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&apos;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>
index 58a0069..6cc8c19 100644 (file)
 </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&apos;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>
index 69e0271..e9562bd 100644 (file)
 <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&apos;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&apos;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>
index 5cb59a0..7863e93 100644 (file)
 </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&apos;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>
index f277589..17a50d3 100644 (file)
 </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&apos;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>
index cea9028..f1a6a98 100644 (file)
 </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&apos;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>
index d97090a..e8c51e1 100644 (file)
                <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>
diff --git a/res/icons/step_over.png b/res/icons/step_over.png
new file mode 100644 (file)
index 0000000..ddf04de
Binary files /dev/null and b/res/icons/step_over.png differ
index c97d9d5..24bce9e 100644 (file)
Binary files a/res/localization/LameXP_DE.qm and b/res/localization/LameXP_DE.qm differ
index 1a89e0f..6e4d4cf 100644 (file)
@@ -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!)
index 2cb0ea5..746cfbc 100644 (file)
@@ -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)
index bb23541..fcc03ea 100644 (file)
@@ -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;
index 759c8c8..0ffc3b7 100644 (file)
@@ -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;
 };
index 5d5a31f..ce994a7 100644 (file)
@@ -63,6 +63,8 @@ ProcessThread::ProcessThread(const AudioFileModel &audioFile, const QString &out
        m_jobId(QUuid::createUuid()),
        m_prependRelativeSourcePath(prependRelativeSourcePath),
        m_renamePattern("<BaseName>"),
+       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)
 {
+       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
        {
@@ -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("<BaseName>", STRDEF(baseName, tr("Unknown File Name")), Qt::CaseInsensitive);
        fileName.replace("<TrackNo>", QString().sprintf("%02d", m_audioFile.filePosition()), Qt::CaseInsensitive);
@@ -359,19 +377,50 @@ QString ProcessThread::generateOutFileName(void)
        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)
@@ -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
 ////////////////////////////////////////////////////////////
index ec60b18..d0bdfc7 100644 (file)
@@ -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<AbstractFilter*> m_filters;
        QString m_renamePattern;
+       bool m_overwriteSkipExistingFile;
+       bool m_overwriteReplacesExisting;
        WaveProperties *m_propDetect;
        
        static QMutex *m_mutex_genFileName;