<context>
<name>AudioFileModel</name>
<message>
- <location filename="../../src/Model_AudioFile.cpp" line="227"/>
- <location filename="../../src/Model_AudioFile.cpp" line="283"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="260"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="316"/>
<source>Profile</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Model_AudioFile.cpp" line="244"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="277"/>
<source>Channels</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Model_AudioFile.cpp" line="249"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="282"/>
<source>Samplerate</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Model_AudioFile.cpp" line="256"/>
- <location filename="../../src/Model_AudioFile.cpp" line="260"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="289"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="293"/>
<source>Bitdepth</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Model_AudioFile.cpp" line="278"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="311"/>
<source>Type</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Model_AudioFile.cpp" line="287"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="320"/>
<source>Version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Model_AudioFile.cpp" line="294"/>
- <location filename="../../src/Model_AudioFile.cpp" line="297"/>
- <location filename="../../src/Model_AudioFile.cpp" line="300"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="327"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="330"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="333"/>
<source>Bitrate</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Model_AudioFile.cpp" line="294"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="327"/>
<source>Constant</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Model_AudioFile.cpp" line="297"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="330"/>
<source>Variable</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Model_AudioFile.cpp" line="306"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="339"/>
<source>Encoder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../src/Dialog_CueImport.cpp" line="120"/>
<location filename="../../src/Dialog_CueImport.cpp" line="221"/>
- <location filename="../../src/Dialog_CueImport.cpp" line="410"/>
- <location filename="../../src/Dialog_CueImport.cpp" line="414"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="413"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="417"/>
<source>Cue Sheet Error</source>
<translation type="unfinished"></translation>
</message>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="236"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="238"/>
<source>Unknown Artist</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="237"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="239"/>
<source>Unknown Album</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="252"/>
- <location filename="../../src/Dialog_CueImport.cpp" line="256"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="255"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="259"/>
<source>Choose Output Directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="282"/>
- <location filename="../../src/Dialog_CueImport.cpp" line="289"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="285"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="292"/>
<source>LameXP</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="282"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="285"/>
<source>Error: The selected output directory could not be created!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="289"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="292"/>
<source>Error: The selected output directory is not writable!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="303"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="306"/>
<source>Low Diskspace Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="303"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="306"/>
<source>There are less than %1 GB of free diskspace available in the selected output directory.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="303"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="306"/>
<source>It is highly recommend to free up more diskspace before proceeding with the import!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="373"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="376"/>
<source>Analyzing file(s), please wait...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="378"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="381"/>
<source>Analysis Failed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="378"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="381"/>
<source>Warning: The format of some of the input files could not be determined!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="378"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="381"/>
<source>Continue Anyway</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="378"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="381"/>
<source>Abort</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="405"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="408"/>
<source>Splitting file(s), please wait...</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
- <location filename="../../src/Dialog_CueImport.cpp" line="410"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="413"/>
<source>Process was aborted by the user after %n track(s)!</source>
<translation type="unfinished">
<numerusform></numerusform>
</translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="414"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="417"/>
<source>An unexpected error has occured while splitting the Cue Sheet!</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
- <location filename="../../src/Dialog_CueImport.cpp" line="418"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="421"/>
<source>Imported %n track(s) from the Cue Sheet.</source>
<translation type="unfinished">
<numerusform></numerusform>
</translation>
</message>
<message numerus="yes">
- <location filename="../../src/Dialog_CueImport.cpp" line="418"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="421"/>
<source>Skipped %n track(s).</source>
<translation type="unfinished">
<numerusform></numerusform>
</translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="419"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="422"/>
<source>Cue Sheet Completed</source>
<translation type="unfinished"></translation>
</message>
<context>
<name>CueSheetModel</name>
<message>
- <location filename="../../src/Model_CueSheet.cpp" line="211"/>
+ <location filename="../../src/Model_CueSheet.cpp" line="199"/>
<source>No.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Model_CueSheet.cpp" line="214"/>
+ <location filename="../../src/Model_CueSheet.cpp" line="202"/>
<source>File / Track</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Model_CueSheet.cpp" line="217"/>
+ <location filename="../../src/Model_CueSheet.cpp" line="205"/>
<source>Index</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Model_CueSheet.cpp" line="220"/>
+ <location filename="../../src/Model_CueSheet.cpp" line="208"/>
<source>Duration</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Model_CueSheet.cpp" line="246"/>
+ <location filename="../../src/Model_CueSheet.cpp" line="234"/>
<source>File %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Model_CueSheet.cpp" line="261"/>
+ <location filename="../../src/Model_CueSheet.cpp" line="250"/>
<source>Track %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Model_CueSheet.cpp" line="270"/>
- <location filename="../../src/Model_CueSheet.cpp" line="278"/>
+ <location filename="../../src/Model_CueSheet.cpp" line="259"/>
+ <location filename="../../src/Model_CueSheet.cpp" line="267"/>
<source>Unknown Artist</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Model_CueSheet.cpp" line="274"/>
- <location filename="../../src/Model_CueSheet.cpp" line="278"/>
+ <location filename="../../src/Model_CueSheet.cpp" line="263"/>
+ <location filename="../../src/Model_CueSheet.cpp" line="267"/>
<source>Unknown Title</source>
<translation type="unfinished"></translation>
</message>
<context>
<name>QApplication</name>
<message>
- <location filename="../../src/Global.cpp" line="900"/>
+ <location filename="../../src/Global.cpp" line="933"/>
<source>Executable '%1' doesn't support Windows compatibility mode.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Global.cpp" line="1154"/>
+ <location filename="../../src/Global.cpp" line="1187"/>
<source>Executable '%1' requires Qt v%2, but found Qt v%3.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Global.cpp" line="1159"/>
+ <location filename="../../src/Global.cpp" line="1192"/>
<source>Executable '%1' was built for Qt '%2', but found Qt '%3'.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../src/Global.cpp" line="1172"/>
- <location filename="../../src/Global.cpp" line="1199"/>
+ <location filename="../../src/Global.cpp" line="1205"/>
+ <location filename="../../src/Global.cpp" line="1232"/>
<source>Executable '%1' requires Windows 2000 or later.</source>
<translation type="unfinished"></translation>
</message>
<context>
<name>CueImportDialog</name>
<message numerus="yes">
- <location filename="../../src/Dialog_CueImport.cpp" line="410"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="413"/>
<source>Process was aborted by the user after %n track(s)!</source>
<translation>
<numerusform>Process was aborted by the user after %n track!</numerusform>
</translation>
</message>
<message numerus="yes">
- <location filename="../../src/Dialog_CueImport.cpp" line="418"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="421"/>
<source>Imported %n track(s) from the Cue Sheet.</source>
<translation>
<numerusform>Imported %n track from the Cue Sheet.</numerusform>
</translation>
</message>
<message numerus="yes">
- <location filename="../../src/Dialog_CueImport.cpp" line="418"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="421"/>
<source>Skipped %n track(s).</source>
<translation>
<numerusform>Skipped %n track.</numerusform>
<context>
<name>AudioFileModel</name>
<message>
- <location filename="../../src/Model_AudioFile.cpp" line="227"/>
- <location filename="../../src/Model_AudioFile.cpp" line="283"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="260"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="316"/>
<source>Profile</source>
<translation type="unfinished">Profil</translation>
</message>
<message>
- <location filename="../../src/Model_AudioFile.cpp" line="244"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="277"/>
<source>Channels</source>
<translation type="unfinished">Kanały</translation>
</message>
<message>
- <location filename="../../src/Model_AudioFile.cpp" line="249"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="282"/>
<source>Samplerate</source>
<translation type="unfinished">Częstotliwość</translation>
</message>
<message>
- <location filename="../../src/Model_AudioFile.cpp" line="256"/>
- <location filename="../../src/Model_AudioFile.cpp" line="260"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="289"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="293"/>
<source>Bitdepth</source>
<translation type="unfinished">Głębia bitów</translation>
</message>
<message>
- <location filename="../../src/Model_AudioFile.cpp" line="278"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="311"/>
<source>Type</source>
<translation type="unfinished">Typ</translation>
</message>
<message>
- <location filename="../../src/Model_AudioFile.cpp" line="287"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="320"/>
<source>Version</source>
<translation type="unfinished">Wersja</translation>
</message>
<message>
- <location filename="../../src/Model_AudioFile.cpp" line="294"/>
- <location filename="../../src/Model_AudioFile.cpp" line="297"/>
- <location filename="../../src/Model_AudioFile.cpp" line="300"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="327"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="330"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="333"/>
<source>Bitrate</source>
<translation type="unfinished">Przepływność bitów</translation>
</message>
<message>
- <location filename="../../src/Model_AudioFile.cpp" line="294"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="327"/>
<source>Constant</source>
<translation type="unfinished">Stały</translation>
</message>
<message>
- <location filename="../../src/Model_AudioFile.cpp" line="297"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="330"/>
<source>Variable</source>
<translation type="unfinished">Zmienny</translation>
</message>
<message>
- <location filename="../../src/Model_AudioFile.cpp" line="306"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="339"/>
<source>Encoder</source>
<translation type="unfinished">Enkoder</translation>
</message>
<message>
<location filename="../../src/Dialog_CueImport.cpp" line="120"/>
<location filename="../../src/Dialog_CueImport.cpp" line="221"/>
- <location filename="../../src/Dialog_CueImport.cpp" line="410"/>
- <location filename="../../src/Dialog_CueImport.cpp" line="414"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="413"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="417"/>
<source>Cue Sheet Error</source>
<translation type="unfinished">BÅ‚Ä…d pliku Cue Sheet</translation>
</message>
<translation type="unfinished">Wybrany plik Cue Sheet zawiera niespójne informacje. Prosze zachować ostrożność!</translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="236"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="238"/>
<source>Unknown Artist</source>
<translation type="unfinished">Nieznany Artysta</translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="237"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="239"/>
<source>Unknown Album</source>
<translation type="unfinished">Nieznany Album</translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="252"/>
- <location filename="../../src/Dialog_CueImport.cpp" line="256"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="255"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="259"/>
<source>Choose Output Directory</source>
<translation type="unfinished">Wybierz folder wyjściowy</translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="282"/>
- <location filename="../../src/Dialog_CueImport.cpp" line="289"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="285"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="292"/>
<source>LameXP</source>
<translation type="unfinished">LameXP</translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="282"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="285"/>
<source>Error: The selected output directory could not be created!</source>
<translation type="unfinished">Błąd: Wybrana lokalizacja wyjściowa nie może zostać utworzona!</translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="289"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="292"/>
<source>Error: The selected output directory is not writable!</source>
<translation type="unfinished">Błąd: Nie można zapisać w wybranej lokalizacji wyjściowej!</translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="303"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="306"/>
<source>Low Diskspace Warning</source>
<translation type="unfinished">Ostrzeżenie o małej ilości miejsca na dysku</translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="303"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="306"/>
<source>There are less than %1 GB of free diskspace available in the selected output directory.</source>
<translation type="unfinished">Jest mniej niż %1 GB wolnego miejsca w wybranej lokalizacji wyjściowej.</translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="303"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="306"/>
<source>It is highly recommend to free up more diskspace before proceeding with the import!</source>
<translation type="unfinished">Jest wysoce zalecane zwolnić miejsce na dysku zanim zaczniesz importować!</translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="373"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="376"/>
<source>Analyzing file(s), please wait...</source>
<translation type="unfinished">Analizowanie pliku/ów, prosze czekać...</translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="378"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="381"/>
<source>Analysis Failed</source>
<translation type="unfinished">Analiza zakończona niepowodzeniem</translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="378"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="381"/>
<source>Warning: The format of some of the input files could not be determined!</source>
<translation type="unfinished">Ostrzeżenie: Nie można rozpoznać formatu kilku plików wejściowych!</translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="378"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="381"/>
<source>Continue Anyway</source>
<translation type="unfinished">Kontynuuj pomimo to</translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="378"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="381"/>
<source>Abort</source>
<translation type="unfinished">Przerwij</translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="405"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="408"/>
<source>Splitting file(s), please wait...</source>
<translation type="unfinished">Dzielenie pliku/ów, prosze czekać...</translation>
</message>
<message numerus="yes">
- <location filename="../../src/Dialog_CueImport.cpp" line="410"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="413"/>
<source>Process was aborted by the user after %n track(s)!</source>
<translation type="unfinished">
<numerusform>Proces został przerwany przez użytkownika po zakończeniu %n ścieżki!</numerusform>
</translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="414"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="417"/>
<source>An unexpected error has occured while splitting the Cue Sheet!</source>
<translation type="unfinished">Wystąpił nieoczekiwany błąd podczas podziału pliku Cue Sheet!</translation>
</message>
<message numerus="yes">
- <location filename="../../src/Dialog_CueImport.cpp" line="418"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="421"/>
<source>Imported %n track(s) from the Cue Sheet.</source>
<translation type="unfinished">
<numerusform>Zaimportowano %n ścieżkę z pliku Cue Sheet.</numerusform>
</translation>
</message>
<message numerus="yes">
- <location filename="../../src/Dialog_CueImport.cpp" line="418"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="421"/>
<source>Skipped %n track(s).</source>
<translation type="unfinished">
<numerusform>Pominięto %n ścieżkę.</numerusform>
</translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="419"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="422"/>
<source>Cue Sheet Completed</source>
<translation type="unfinished">Stworzono plik Cue Sheet</translation>
</message>
<context>
<name>CueSheetModel</name>
<message>
- <location filename="../../src/Model_CueSheet.cpp" line="211"/>
+ <location filename="../../src/Model_CueSheet.cpp" line="199"/>
<source>No.</source>
<translation type="unfinished">Numer.</translation>
</message>
<message>
- <location filename="../../src/Model_CueSheet.cpp" line="214"/>
+ <location filename="../../src/Model_CueSheet.cpp" line="202"/>
<source>File / Track</source>
<translation type="unfinished">Plik/ŚcieżKa</translation>
</message>
<message>
- <location filename="../../src/Model_CueSheet.cpp" line="217"/>
+ <location filename="../../src/Model_CueSheet.cpp" line="205"/>
<source>Index</source>
<translation type="unfinished">Indeks</translation>
</message>
<message>
- <location filename="../../src/Model_CueSheet.cpp" line="220"/>
+ <location filename="../../src/Model_CueSheet.cpp" line="208"/>
<source>Duration</source>
<translation type="unfinished">Czas trwania</translation>
</message>
<message>
- <location filename="../../src/Model_CueSheet.cpp" line="246"/>
+ <location filename="../../src/Model_CueSheet.cpp" line="234"/>
<source>File %1</source>
<translation type="unfinished">Plik %1</translation>
</message>
<message>
- <location filename="../../src/Model_CueSheet.cpp" line="261"/>
+ <location filename="../../src/Model_CueSheet.cpp" line="250"/>
<source>Track %1</source>
<translation type="unfinished">Ścieżka %1</translation>
</message>
<message>
- <location filename="../../src/Model_CueSheet.cpp" line="270"/>
- <location filename="../../src/Model_CueSheet.cpp" line="278"/>
+ <location filename="../../src/Model_CueSheet.cpp" line="259"/>
+ <location filename="../../src/Model_CueSheet.cpp" line="267"/>
<source>Unknown Artist</source>
<translation type="unfinished">Nieznany Artysta</translation>
</message>
<message>
- <location filename="../../src/Model_CueSheet.cpp" line="274"/>
- <location filename="../../src/Model_CueSheet.cpp" line="278"/>
+ <location filename="../../src/Model_CueSheet.cpp" line="263"/>
+ <location filename="../../src/Model_CueSheet.cpp" line="267"/>
<source>Unknown Title</source>
<translation type="unfinished">Nieznany Tytuł</translation>
</message>
<context>
<name>QApplication</name>
<message>
- <location filename="../../src/Global.cpp" line="900"/>
+ <location filename="../../src/Global.cpp" line="933"/>
<source>Executable '%1' doesn't support Windows compatibility mode.</source>
<translation type="unfinished">Plik wykonywalny '%1' nie działa w trybie kompatybilności z Windows.</translation>
</message>
<message>
- <location filename="../../src/Global.cpp" line="1154"/>
+ <location filename="../../src/Global.cpp" line="1187"/>
<source>Executable '%1' requires Qt v%2, but found Qt v%3.</source>
<translation type="unfinished">Plik wykonywalny '%1' wymaga Qt v%2, znaleziono jednak Qt v%3.</translation>
</message>
<message>
- <location filename="../../src/Global.cpp" line="1159"/>
+ <location filename="../../src/Global.cpp" line="1192"/>
<source>Executable '%1' was built for Qt '%2', but found Qt '%3'.</source>
<translation type="unfinished">Plik wykonywalny "%1" został skompilowany dla Qt "%2", znaleziono "%3".</translation>
</message>
<message>
- <location filename="../../src/Global.cpp" line="1172"/>
- <location filename="../../src/Global.cpp" line="1199"/>
+ <location filename="../../src/Global.cpp" line="1205"/>
+ <location filename="../../src/Global.cpp" line="1232"/>
<source>Executable '%1' requires Windows 2000 or later.</source>
<translation type="unfinished">Plik wykonywalny '%1' wymaga do uruchomienia Windows 2000 lub nowszego.</translation>
</message>
<context>
<name>AudioFileModel</name>
<message>
- <location filename="../../src/Model_AudioFile.cpp" line="227"/>
- <location filename="../../src/Model_AudioFile.cpp" line="283"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="260"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="316"/>
<source>Profile</source>
<translation>Profil</translation>
</message>
<message>
- <location filename="../../src/Model_AudioFile.cpp" line="244"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="277"/>
<source>Channels</source>
<translation>Kanaler</translation>
</message>
<message>
- <location filename="../../src/Model_AudioFile.cpp" line="249"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="282"/>
<source>Samplerate</source>
<translation>Samplingsfrekvens</translation>
</message>
<message>
- <location filename="../../src/Model_AudioFile.cpp" line="256"/>
- <location filename="../../src/Model_AudioFile.cpp" line="260"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="289"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="293"/>
<source>Bitdepth</source>
<translation>Bitdjup</translation>
</message>
<message>
- <location filename="../../src/Model_AudioFile.cpp" line="278"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="311"/>
<source>Type</source>
<translation>Typ</translation>
</message>
<message>
- <location filename="../../src/Model_AudioFile.cpp" line="287"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="320"/>
<source>Version</source>
<translation>Version</translation>
</message>
<message>
- <location filename="../../src/Model_AudioFile.cpp" line="294"/>
- <location filename="../../src/Model_AudioFile.cpp" line="297"/>
- <location filename="../../src/Model_AudioFile.cpp" line="300"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="327"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="330"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="333"/>
<source>Bitrate</source>
<translation>Bithastighet</translation>
</message>
<message>
- <location filename="../../src/Model_AudioFile.cpp" line="294"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="327"/>
<source>Constant</source>
<translation>Konstant</translation>
</message>
<message>
- <location filename="../../src/Model_AudioFile.cpp" line="297"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="330"/>
<source>Variable</source>
<translation>Variabel</translation>
</message>
<message>
- <location filename="../../src/Model_AudioFile.cpp" line="306"/>
+ <location filename="../../src/Model_AudioFile.cpp" line="339"/>
<source>Encoder</source>
<translatorcomment>Kodare</translatorcomment>
<translation></translation>
<message>
<location filename="../../src/Dialog_CueImport.cpp" line="120"/>
<location filename="../../src/Dialog_CueImport.cpp" line="221"/>
- <location filename="../../src/Dialog_CueImport.cpp" line="410"/>
- <location filename="../../src/Dialog_CueImport.cpp" line="414"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="413"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="417"/>
<source>Cue Sheet Error</source>
<translation>Cue-fel</translation>
</message>
<translation>Den specificerade cue-filen innehåller inkonsekvent information. Undersök det!</translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="236"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="238"/>
<source>Unknown Artist</source>
<translation>Okänd artist</translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="237"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="239"/>
<source>Unknown Album</source>
<translation>Okänt album</translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="252"/>
- <location filename="../../src/Dialog_CueImport.cpp" line="256"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="255"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="259"/>
<source>Choose Output Directory</source>
<translation>Välj målmapp för utdata</translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="282"/>
- <location filename="../../src/Dialog_CueImport.cpp" line="289"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="285"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="292"/>
<source>LameXP</source>
<translation>LameXP</translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="282"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="285"/>
<source>Error: The selected output directory could not be created!</source>
<translation>Fel: Den specificerade målmappen kunde inte skapas!</translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="289"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="292"/>
<source>Error: The selected output directory is not writable!</source>
<translation>Fel: Den specificerade målmappen är skrivskyddad!</translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="303"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="306"/>
<source>Low Diskspace Warning</source>
<translation>Varning för lågt diskutrymme</translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="303"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="306"/>
<source>There are less than %1 GB of free diskspace available in the selected output directory.</source>
<translation>Det finns mindre än %1 GB ledigt diskutrymme på den specificerade måladressen.</translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="303"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="306"/>
<source>It is highly recommend to free up more diskspace before proceeding with the import!</source>
<translation>Du bör frigöra mer diskutrymme innan du fortsätter med importen!</translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="373"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="376"/>
<source>Analyzing file(s), please wait...</source>
<translation>Analyserar fil(er), vänta...</translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="378"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="381"/>
<source>Analysis Failed</source>
<translation>Analys misslyckades</translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="378"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="381"/>
<source>Warning: The format of some of the input files could not be determined!</source>
<translation>Varning! Formatet på vissa filer kunde inte avgöras!</translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="378"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="381"/>
<source>Continue Anyway</source>
<translation>Fortsätt ändå</translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="378"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="381"/>
<source>Abort</source>
<translation>Avbryt</translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="405"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="408"/>
<source>Splitting file(s), please wait...</source>
<translation>Delar fil(er), vänta...</translation>
</message>
<message numerus="yes">
- <location filename="../../src/Dialog_CueImport.cpp" line="410"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="413"/>
<source>Process was aborted by the user after %n track(s)!</source>
<translation>
<numerusform>Åtgärden avbröts av användaren efter %n spår!</numerusform>
</translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="414"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="417"/>
<source>An unexpected error has occured while splitting the Cue Sheet!</source>
<translation>Ett oväntat fel uppstod vid delningen av cue-filen!</translation>
</message>
<message numerus="yes">
- <location filename="../../src/Dialog_CueImport.cpp" line="418"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="421"/>
<source>Imported %n track(s) from the Cue Sheet.</source>
<translation>
<numerusform>Importerade %n spår från cue-filen.</numerusform>
</translation>
</message>
<message numerus="yes">
- <location filename="../../src/Dialog_CueImport.cpp" line="418"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="421"/>
<source>Skipped %n track(s).</source>
<translation>
<numerusform>Hoppade över %n spår.</numerusform>
</translation>
</message>
<message>
- <location filename="../../src/Dialog_CueImport.cpp" line="419"/>
+ <location filename="../../src/Dialog_CueImport.cpp" line="422"/>
<source>Cue Sheet Completed</source>
<translation>cue-fil färdigbearbetad</translation>
</message>
<context>
<name>CueSheetModel</name>
<message>
- <location filename="../../src/Model_CueSheet.cpp" line="211"/>
+ <location filename="../../src/Model_CueSheet.cpp" line="199"/>
<source>No.</source>
<translation>Nr.</translation>
</message>
<message>
- <location filename="../../src/Model_CueSheet.cpp" line="214"/>
+ <location filename="../../src/Model_CueSheet.cpp" line="202"/>
<source>File / Track</source>
<translation>Fil / Spår</translation>
</message>
<message>
- <location filename="../../src/Model_CueSheet.cpp" line="217"/>
+ <location filename="../../src/Model_CueSheet.cpp" line="205"/>
<source>Index</source>
<translation>Index</translation>
</message>
<message>
- <location filename="../../src/Model_CueSheet.cpp" line="220"/>
+ <location filename="../../src/Model_CueSheet.cpp" line="208"/>
<source>Duration</source>
<translation>Varaktighet</translation>
</message>
<message>
- <location filename="../../src/Model_CueSheet.cpp" line="246"/>
+ <location filename="../../src/Model_CueSheet.cpp" line="234"/>
<source>File %1</source>
<translation>Fil %1</translation>
</message>
<message>
- <location filename="../../src/Model_CueSheet.cpp" line="261"/>
+ <location filename="../../src/Model_CueSheet.cpp" line="250"/>
<source>Track %1</source>
<translation>Spår %1</translation>
</message>
<message>
- <location filename="../../src/Model_CueSheet.cpp" line="270"/>
- <location filename="../../src/Model_CueSheet.cpp" line="278"/>
+ <location filename="../../src/Model_CueSheet.cpp" line="259"/>
+ <location filename="../../src/Model_CueSheet.cpp" line="267"/>
<source>Unknown Artist</source>
<translation>Okänd artist</translation>
</message>
<message>
- <location filename="../../src/Model_CueSheet.cpp" line="274"/>
- <location filename="../../src/Model_CueSheet.cpp" line="278"/>
+ <location filename="../../src/Model_CueSheet.cpp" line="263"/>
+ <location filename="../../src/Model_CueSheet.cpp" line="267"/>
<source>Unknown Title</source>
<translation>Okänd titel</translation>
</message>
<context>
<name>QApplication</name>
<message>
- <location filename="../../src/Global.cpp" line="900"/>
+ <location filename="../../src/Global.cpp" line="933"/>
<source>Executable '%1' doesn't support Windows compatibility mode.</source>
<translation>EXE-filen '%1' stöder inte Windows kompatibilitetsläge.</translation>
</message>
<message>
- <location filename="../../src/Global.cpp" line="1154"/>
+ <location filename="../../src/Global.cpp" line="1187"/>
<source>Executable '%1' requires Qt v%2, but found Qt v%3.</source>
<translation>EXE-filen '%1' kräver Qt v%2, du har Qt v%3.</translation>
</message>
<message>
- <location filename="../../src/Global.cpp" line="1159"/>
+ <location filename="../../src/Global.cpp" line="1192"/>
<source>Executable '%1' was built for Qt '%2', but found Qt '%3'.</source>
<translation>EXE-filen '%1' är byggd för Qt '%2', du har Qt '%3'.</translation>
</message>
<message>
- <location filename="../../src/Global.cpp" line="1172"/>
- <location filename="../../src/Global.cpp" line="1199"/>
+ <location filename="../../src/Global.cpp" line="1205"/>
+ <location filename="../../src/Global.cpp" line="1232"/>
<source>Executable '%1' requires Windows 2000 or later.</source>
<translation>EXE-filen '%1' kräver Windows 2000 eller senare.</translation>
</message>
#define VER_LAMEXP_MINOR_LO 9
#define VER_LAMEXP_TYPE Alpha
#define VER_LAMEXP_PATCH 2
-#define VER_LAMEXP_BUILD 1382
+#define VER_LAMEXP_BUILD 1385
#define VER_LAMEXP_CONFG 1348
///////////////////////////////////////////////////////////////////////////////
{
ui->treeView->expandAll();
ui->editOutputDir->setText(QDir::toNativeSeparators(m_outputDir));
- ui->labelArtist->setText(m_model->getAlbumPerformer().isEmpty() ? tr("Unknown Artist") : m_model->getAlbumPerformer());
- ui->labelAlbum->setText(m_model->getAlbumTitle().isEmpty() ? tr("Unknown Album") : m_model->getAlbumTitle());
+ if(const AudioFileModel_MetaInfo *albumInfo = m_model->getAlbumInfo())
+ {
+ ui->labelArtist->setText(albumInfo->artist().isEmpty() ? tr("Unknown Artist") : albumInfo->artist());
+ ui->labelAlbum->setText(albumInfo->album().isEmpty() ? tr("Unknown Album") : albumInfo->album());
+ }
}
void CueImportDialog::browseButtonClicked(void)
return audioFile;
}
- audioFile.metaInfo().update(*m_metaInfo);
+ audioFile.metaInfo().update(*m_metaInfo, true);
if(audioFile.metaInfo().position() == UINT_MAX)
{
ArtworkModel &ArtworkModel::operator=(const ArtworkModel &model)
{
QMutexLocker lock(m_mutex);
- ArtworkModel_SharedData::detach(&m_data);
- m_data = ArtworkModel_SharedData::attach(model.m_data);
+ if(m_data != model.m_data)
+ {
+ ArtworkModel_SharedData::detach(&m_data);
+ m_data = ArtworkModel_SharedData::attach(model.m_data);
+ }
return (*this);
}
const unsigned int AudioFileModel::BITDEPTH_IEEE_FLOAT32 = UINT_MAX-1;
+#define PRINT_S(VAR) do \
+{ \
+ if((VAR).isEmpty()) qDebug(#VAR " = N/A"); else qDebug(#VAR " = \"%s\"", (VAR).toUtf8().constData()); \
+} \
+while(0)
+
+#define PRINT_U(VAR) do \
+{ \
+ if((VAR) < 1) qDebug(#VAR " = N/A"); else qDebug(#VAR " = %u", (VAR)); \
+} \
+while(0)
+
///////////////////////////////////////////////////////////////////////////////
// Audio File - Meta Info
///////////////////////////////////////////////////////////////////////////////
AudioFileModel_MetaInfo::AudioFileModel_MetaInfo(const AudioFileModel_MetaInfo &model)
{
- m_titel = model.m_titel;
- m_artist = model.m_artist;
- m_album = model.m_album;
- m_genre = model.m_genre;
- m_comment = model.m_comment;
- m_cover = model.m_cover;
- m_year = model.m_year;
+ m_titel = model.m_titel;
+ m_artist = model.m_artist;
+ m_album = model.m_album;
+ m_genre = model.m_genre;
+ m_comment = model.m_comment;
+ m_cover = model.m_cover;
+ m_year = model.m_year;
m_position = model.m_position;
}
AudioFileModel_MetaInfo &AudioFileModel_MetaInfo::operator=(const AudioFileModel_MetaInfo &model)
{
- m_titel = model.m_titel;
- m_artist = model.m_artist;
- m_album = model.m_album;
- m_genre = model.m_genre;
- m_comment = model.m_comment;
- m_cover = model.m_cover;
- m_year = model.m_year;
+ m_titel = model.m_titel;
+ m_artist = model.m_artist;
+ m_album = model.m_album;
+ m_genre = model.m_genre;
+ m_comment = model.m_comment;
+ m_cover = model.m_cover;
+ m_year = model.m_year;
m_position = model.m_position;
return (*this);
}
-void AudioFileModel_MetaInfo::update(const AudioFileModel_MetaInfo &model)
+void AudioFileModel_MetaInfo::update(const AudioFileModel_MetaInfo &model, const bool replace)
{
- if(!model.m_titel.isEmpty()) m_titel = model.m_titel;
- if(!model.m_artist.isEmpty()) m_artist = model.m_artist;
- if(!model.m_album.isEmpty()) m_album = model.m_album;
- if(!model.m_genre.isEmpty()) m_genre = model.m_genre;
- if(!model.m_comment.isEmpty()) m_comment = model.m_comment;
- if(!model.m_cover.isEmpty()) m_cover = model.m_cover;
- if(model.m_year > 0) m_year = model.m_year;
- if(model.m_position > 0) m_position = model.m_position;
+ qDebug("\n-------[AudioFileModel_MetaInfo::update]-------");
+ qDebug("Updating (%p):", this);
+ print();
+ qDebug("\nUpdating with (%p):", &model);
+ model.print();
+
+ if((!model.m_titel.isEmpty()) && (replace || m_titel.isEmpty())) m_titel = model.m_titel;
+ if((!model.m_artist.isEmpty()) && (replace || m_artist.isEmpty())) m_artist = model.m_artist;
+ if((!model.m_album.isEmpty()) && (replace || m_album.isEmpty())) m_album = model.m_album;
+ if((!model.m_genre.isEmpty()) && (replace || m_genre.isEmpty())) m_genre = model.m_genre;
+ if((!model.m_comment.isEmpty()) && (replace || m_comment.isEmpty())) m_comment = model.m_comment;
+ if((!model.m_cover.isEmpty()) && (replace || m_cover.isEmpty())) m_cover = model.m_cover;
+ if((model.m_year > 0) && (replace || (m_year == 0))) m_year = model.m_year;
+ if((model.m_position > 0) && (replace || (m_position == 0))) m_position = model.m_position;
+
+ qDebug("\nResult:");
+ print();
+ qDebug("-----------------------------------------------\n\n");
}
AudioFileModel_MetaInfo::~AudioFileModel_MetaInfo(void)
m_position = 0;
}
+void AudioFileModel_MetaInfo::print(void) const
+{
+ PRINT_S(m_titel);
+ PRINT_S(m_artist);
+ PRINT_S(m_album);
+ PRINT_S(m_genre);
+ PRINT_S(m_comment);
+ PRINT_S(m_cover.filePath());
+ PRINT_U(m_year);
+ PRINT_U(m_position);
+}
+
///////////////////////////////////////////////////////////////////////////////
// Audio File - Technical Info
///////////////////////////////////////////////////////////////////////////////
AudioFileModel_TechInfo::AudioFileModel_TechInfo(const AudioFileModel_TechInfo &model)
{
- m_containerType = model.m_containerType;
+ m_containerType = model.m_containerType;
m_containerProfile = model.m_containerProfile;
- m_audioType = model.m_audioType;
- m_audioProfile = model.m_audioProfile;
- m_audioVersion = model.m_audioVersion;
- m_audioEncodeLib = model.m_audioEncodeLib;
- m_audioSamplerate = model.m_audioSamplerate;
- m_audioChannels = model.m_audioChannels;
- m_audioBitdepth = model.m_audioBitdepth;
- m_audioBitrate = model.m_audioBitrate;
+ m_audioType = model.m_audioType;
+ m_audioProfile = model.m_audioProfile;
+ m_audioVersion = model.m_audioVersion;
+ m_audioEncodeLib = model.m_audioEncodeLib;
+ m_audioSamplerate = model.m_audioSamplerate;
+ m_audioChannels = model.m_audioChannels;
+ m_audioBitdepth = model.m_audioBitdepth;
+ m_audioBitrate = model.m_audioBitrate;
m_audioBitrateMode = model.m_audioBitrateMode;
- m_duration = model.m_duration;
+ m_duration = model.m_duration;
}
AudioFileModel_TechInfo &AudioFileModel_TechInfo::operator=(const AudioFileModel_TechInfo &model)
{
- m_containerType = model.m_containerType;
+ m_containerType = model.m_containerType;
m_containerProfile = model.m_containerProfile;
- m_audioType = model.m_audioType;
- m_audioProfile = model.m_audioProfile;
- m_audioVersion = model.m_audioVersion;
- m_audioEncodeLib = model.m_audioEncodeLib;
- m_audioSamplerate = model.m_audioSamplerate;
- m_audioChannels = model.m_audioChannels;
- m_audioBitdepth = model.m_audioBitdepth;
- m_audioBitrate = model.m_audioBitrate;
+ m_audioType = model.m_audioType;
+ m_audioProfile = model.m_audioProfile;
+ m_audioVersion = model.m_audioVersion;
+ m_audioEncodeLib = model.m_audioEncodeLib;
+ m_audioSamplerate = model.m_audioSamplerate;
+ m_audioChannels = model.m_audioChannels;
+ m_audioBitdepth = model.m_audioBitdepth;
+ m_audioBitrate = model.m_audioBitrate;
m_audioBitrateMode = model.m_audioBitrateMode;
- m_duration = model.m_duration;
-
+ m_duration = model.m_duration;
return (*this);
}
void reset(void);
//Update
- void update(const AudioFileModel_MetaInfo &model);
+ void update(const AudioFileModel_MetaInfo &model, const bool replace);
+
+ //Debug
+ void print(void) const;
private:
QString m_titel;
#include "Global.h"
#include "Model_CueSheet.h"
+#include "Model_AudioFile.h"
#include "Genres.h"
#include <QApplication>
public:
CueSheetTrack(CueSheetFile *parent, int trackNo)
:
- m_parent(parent),
- m_trackNo(trackNo)
+ m_parent(parent)
{
m_startIndex = std::numeric_limits<double>::quiet_NaN();
m_duration = std::numeric_limits<double>::infinity();
- m_year = 0;
+ m_metaInfo.setPosition(trackNo);
}
- int trackNo(void) { return m_trackNo; }
+
+ //Getter
+ CueSheetFile *parent(void) { return m_parent; }
double startIndex(void) { return m_startIndex; }
double duration(void) { return m_duration; }
- QString title(void) { return m_title; }
- QString performer(void) { return m_performer; }
- QString genre(void) { return m_genre; }
- unsigned int year(void) { return m_year; }
- CueSheetFile *parent(void) { return m_parent; }
+ AudioFileModel_MetaInfo &metaInfo(void) { return m_metaInfo; }
+
+ //Setter
void setStartIndex(double startIndex) { m_startIndex = startIndex; }
void setDuration(double duration) { m_duration = duration; }
- void setTitle(const QString &title, bool update = false) { if(!update || (m_title.isEmpty() && !title.isEmpty())) m_title = title; }
- void setPerformer(const QString &performer, bool update = false) { if(!update || (m_performer.isEmpty() && !performer.isEmpty())) m_performer = performer; }
- void setGenre(const QString &genre, bool update = false) { if(!update || (m_genre.isEmpty() && !m_genre.isEmpty())) m_genre = genre; }
- void setYear(const unsigned int year, bool update = false) { if(!update || (year == 0)) m_year = year; }
- virtual bool isValid(void) { return !(_isnan(m_startIndex) || (m_trackNo < 0)); }
+
+ //Misc
+ virtual bool isValid(void) { return !(_isnan(m_startIndex) || (m_metaInfo.position() == 0)); }
virtual const char* type(void) { return "CueSheetTrack"; }
+
private:
- int m_trackNo;
double m_startIndex;
double m_duration;
- QString m_title;
- QString m_performer;
- QString m_genre;
- unsigned int m_year;
- CueSheetFile *m_parent;
+ AudioFileModel_MetaInfo m_metaInfo;
+ CueSheetFile *const m_parent;
};
class CueSheetFile : public CueSheetItem
public:
CueSheetFile(const QString &fileName) : m_fileName(fileName) {}
~CueSheetFile(void) { while(!m_tracks.isEmpty()) delete m_tracks.takeLast(); }
+
+ //Getter
QString fileName(void) { return m_fileName; }
- void addTrack(CueSheetTrack *track) { m_tracks.append(track); }
- void clearTracks(void) { while(!m_tracks.isEmpty()) delete m_tracks.takeLast(); }
CueSheetTrack *track(int index) { return m_tracks.at(index); }
int trackCount(void) { return m_tracks.count(); }
+
+ //Modifier
+ void addTrack(CueSheetTrack *track) { m_tracks.append(track); }
+ void clearTracks(void) { while(!m_tracks.isEmpty()) delete m_tracks.takeLast(); }
+
+ //Misc
virtual bool isValid(void) { return m_tracks.count() > 0; }
virtual const char* type(void) { return "CueSheetFile"; }
+
private:
const QString m_fileName;
QList<CueSheetTrack*> m_tracks;
m_fileIcon(":/icons/music.png"),
m_trackIcon(":/icons/control_play_blue.png")
{
- int trackNo = 0;
- m_albumYear = 0;
-
- for(int i = 0; i < 5; i++)
- {
- CueSheetFile *currentFile = new CueSheetFile(QString().sprintf("File %02d.wav", i+1));
- for(int j = 0; j < 8; j++)
- {
- CueSheetTrack *currentTrack = new CueSheetTrack(currentFile, trackNo++);
- currentTrack->setTitle("ATWA (Air Trees Water Animals)");
- currentTrack->setPerformer("System of a Down");
- currentFile->addTrack(currentTrack);
- }
- m_files.append(currentFile);
- }
+ /*nothing to do*/
}
CueSheetModel::~CueSheetModel(void)
}
else if(CueSheetTrack *trackPtr = dynamic_cast<CueSheetTrack*>(item))
{
+ const AudioFileModel_MetaInfo &trackInfo = trackPtr->metaInfo();
switch(index.column())
{
case 0:
- return tr("Track %1").arg(QString().sprintf("%02d", trackPtr->trackNo())).append(" ");
+ return tr("Track %1").arg(QString().sprintf("%02d", trackInfo.position())).append(" ");
break;
case 1:
- if(!trackPtr->title().isEmpty() && !trackPtr->performer().isEmpty())
+ if(!trackInfo.title().isEmpty() && !trackInfo.artist().isEmpty())
{
- return QString("%1 - %2").arg(trackPtr->performer(), trackPtr->title());
+ return QString("%1 - %2").arg(trackInfo.artist(), trackInfo.title());
}
- else if(!trackPtr->title().isEmpty())
+ else if(!trackInfo.title().isEmpty())
{
- return QString("%1 - %2").arg(tr("Unknown Artist"), trackPtr->title());
+ return QString("%1 - %2").arg(tr("Unknown Artist"), trackInfo.title());
}
- else if(!trackPtr->performer().isEmpty())
+ else if(!trackInfo.artist().isEmpty())
{
- return QString("%1 - %2").arg(trackPtr->performer(), tr("Unknown Title"));
+ return QString("%1 - %2").arg(trackInfo.artist(), tr("Unknown Title"));
}
else
{
return m_files.at(fileIndex)->trackCount();
}
-int CueSheetModel::getTrackNo(int fileIndex, int trackIndex)
+const AudioFileModel_MetaInfo *CueSheetModel::getTrackInfo(int fileIndex, int trackIndex)
{
QMutexLocker lock(&m_mutex);
CueSheetFile *currentFile = m_files.at(fileIndex);
if(trackIndex >= 0 && trackIndex < currentFile->trackCount())
{
- return currentFile->track(trackIndex)->trackNo();
+ return ¤tFile->track(trackIndex)->metaInfo();
}
}
- return -1;
+ return NULL;
}
-void CueSheetModel::getTrackIndex(int fileIndex, int trackIndex, double *startIndex, double *duration)
+bool CueSheetModel::getTrackIndex(int fileIndex, int trackIndex, double *startIndex, double *duration)
{
QMutexLocker lock(&m_mutex);
CueSheetTrack *currentTrack = currentFile->track(trackIndex);
*startIndex = currentTrack->startIndex();
*duration = currentTrack->duration();
+ return true;
}
}
-}
-QString CueSheetModel::getTrackPerformer(int fileIndex, int trackIndex)
-{
- QMutexLocker lock(&m_mutex);
-
- if(fileIndex >= 0 && fileIndex < m_files.count())
- {
- CueSheetFile *currentFile = m_files.at(fileIndex);
- if(trackIndex >= 0 && trackIndex < currentFile->trackCount())
- {
- CueSheetTrack *currentTrack = currentFile->track(trackIndex);
- return currentTrack->performer();
- }
- }
-
- return QString();
+ return false;
}
-QString CueSheetModel::getTrackTitle(int fileIndex, int trackIndex)
+const AudioFileModel_MetaInfo *CueSheetModel::getAlbumInfo(void)
{
QMutexLocker lock(&m_mutex);
-
- if(fileIndex >= 0 && fileIndex < m_files.count())
- {
- CueSheetFile *currentFile = m_files.at(fileIndex);
- if(trackIndex >= 0 && trackIndex < currentFile->trackCount())
- {
- CueSheetTrack *currentTrack = currentFile->track(trackIndex);
- return currentTrack->title();
- }
- }
-
- return QString();
+ return &m_albumInfo;
}
-QString CueSheetModel::getTrackGenre(int fileIndex, int trackIndex)
-{
- QMutexLocker lock(&m_mutex);
-
- if(fileIndex >= 0 && fileIndex < m_files.count())
- {
- CueSheetFile *currentFile = m_files.at(fileIndex);
- if(trackIndex >= 0 && trackIndex < currentFile->trackCount())
- {
- CueSheetTrack *currentTrack = currentFile->track(trackIndex);
- return currentTrack->genre();
- }
- }
-
- return QString();
-}
-
-unsigned int CueSheetModel::getTrackYear(int fileIndex, int trackIndex)
-{
- QMutexLocker lock(&m_mutex);
-
- if(fileIndex >= 0 && fileIndex < m_files.count())
- {
- CueSheetFile *currentFile = m_files.at(fileIndex);
- if(trackIndex >= 0 && trackIndex < currentFile->trackCount())
- {
- CueSheetTrack *currentTrack = currentFile->track(trackIndex);
- return currentTrack->year();
- }
- }
-
- return 0;
-}
-
-QString CueSheetModel::getAlbumPerformer(void)
-{
- QMutexLocker lock(&m_mutex);
- return m_albumPerformer;
-}
-
-QString CueSheetModel::getAlbumTitle(void)
-{
- QMutexLocker lock(&m_mutex);
- return m_albumTitle;
-}
-
-QString CueSheetModel::getAlbumGenre(void)
-{
- QMutexLocker lock(&m_mutex);
- return m_albumGenre;
-}
-
-unsigned int CueSheetModel::getAlbumYear(void)
-{
- QMutexLocker lock(&m_mutex);
- return m_albumYear;
-}
////////////////////////////////////////////////////////////
// Cue Sheet Parser
////////////////////////////////////////////////////////////
CueSheetFile *currentFile = NULL;
CueSheetTrack *currentTrack = NULL;
- m_albumTitle.clear();
- m_albumPerformer.clear();
- m_albumGenre.clear();
- m_albumYear = 0;
+ m_albumInfo.reset();
//Loop over the Cue Sheet until all lines were processed
for(int lines = 0; lines < INT_MAX; lines++)
{
if(bPreamble)
{
- m_albumTitle = UNQUOTE(rxTitle.cap(1)).simplified();
+ m_albumInfo.setAlbum(UNQUOTE(rxTitle.cap(1)).simplified());
}
else if(currentFile && currentTrack)
{
qDebug("%03d Title: <%s>", lines, rxTitle.cap(1).toUtf8().constData());
- currentTrack->setTitle(UNQUOTE(rxTitle.cap(1)).simplified());
+ currentTrack->metaInfo().setTitle(UNQUOTE(rxTitle.cap(1)).simplified());
}
continue;
}
{
if(bPreamble)
{
- m_albumPerformer = UNQUOTE(rxPerformer.cap(1)).simplified();
+ m_albumInfo.setArtist(UNQUOTE(rxPerformer.cap(1)).simplified());
}
else if(currentFile && currentTrack)
{
qDebug("%03d Title: <%s>", lines, rxPerformer.cap(1).toUtf8().constData());
- currentTrack->setPerformer(UNQUOTE(rxPerformer.cap(1)).simplified());
+ currentTrack->metaInfo().setArtist(UNQUOTE(rxPerformer.cap(1)).simplified());
}
continue;
}
{
if(temp.compare(g_lamexp_generes[i], Qt::CaseInsensitive) == 0)
{
- m_albumGenre = QString(g_lamexp_generes[i]);
+ m_albumInfo.setGenre(QString(g_lamexp_generes[i]));
break;
}
}
{
if(temp.compare(g_lamexp_generes[i], Qt::CaseInsensitive) == 0)
{
- currentTrack->setGenre(QString(g_lamexp_generes[i]));
+ currentTrack->metaInfo().setGenre(QString(g_lamexp_generes[i]));
break;
}
}
{
bool ok = false;
unsigned int temp = rxYear.cap(1).toUInt(&ok);
- if(ok) m_albumYear = temp;
+ if(ok) m_albumInfo.setYear(temp);
}
else if(currentFile && currentTrack)
{
qDebug("%03d Year: <%s>", lines, rxPerformer.cap(1).toUtf8().constData());
bool ok = false;
unsigned int temp = rxYear.cap(1).toUInt(&ok);
- if(ok) currentTrack->setYear(temp);
+ if(ok) currentTrack->metaInfo().setYear(temp);
}
continue;
}
{
for(int j = 0; j < nTracks; j++)
{
- int currentTrackNo = currentFile->track(j)->trackNo();
+ int currentTrackNo = currentFile->track(j)->metaInfo().position();
if(currentTrackNo > 99)
{
qWarning("Track #%02d is invalid (maximum is 99), Cue Sheet is inconsistent!", currentTrackNo);
int CueSheetModel::getFileCount(void);
QString getFileName(int fileIndex);
int getTrackCount(int fileIndex);
- int getTrackNo(int fileIndex, int trackIndex);
- void getTrackIndex(int fileIndex, int trackIndex, double *startIndex, double *duration);
- QString getTrackPerformer(int fileIndex, int trackIndex);
- QString getTrackTitle(int fileIndex, int trackIndex);
- QString getTrackGenre(int fileIndex, int trackIndex);
- unsigned int getTrackYear(int fileIndex, int trackIndex);
- QString getAlbumPerformer(void);
- QString getAlbumTitle(void);
- QString getAlbumGenre(void);
- unsigned int getAlbumYear(void);
+ const AudioFileModel_MetaInfo *getTrackInfo(int fileIndex, int trackIndex);
+ const AudioFileModel_MetaInfo *getAlbumInfo(void);
+ bool getTrackIndex(int fileIndex, int trackIndex, double *startIndex, double *duration);
//Cue Sheet functions
int loadCueSheet(const QString &cueFile, QCoreApplication *application = NULL, QTextCodec *forceCodec= NULL);
static QMutex m_mutex;
QList<CueSheetFile*> m_files;
- QString m_albumTitle;
- QString m_albumPerformer;
- QString m_albumGenre;
- unsigned int m_albumYear;
+ AudioFileModel_MetaInfo m_albumInfo;
const QIcon m_fileIcon;
const QIcon m_trackIcon;
void MetaInfoModel::assignInfoFrom(const AudioFileModel &file)
{
beginResetModel();
- m_metaInfo->update(file.metaInfo());
+ m_metaInfo->update(file.metaInfo(), true);
endResetModel();
}
emit progressMaxChanged(nTracksTotal);
emit progressValChanged(0);
- QString albumPerformer = m_model->getAlbumPerformer();
- QString albumTitle = m_model->getAlbumTitle();
- QString albumGenre = m_model->getAlbumGenre();
- unsigned int albumYear = m_model->getAlbumYear();
+ const AudioFileModel_MetaInfo *albumInfo = m_model->getAlbumInfo();
//Now split all files
for(int i = 0; i < nFiles; i++)
//Process all tracks
for(int j = 0; j < nTracks; j++)
{
- emit progressValChanged(++nTracksComplete);
- int trackNo = m_model->getTrackNo(i, j);
+ const AudioFileModel_MetaInfo *trackInfo = m_model->getTrackInfo(i, j);
+ const int trackNo = trackInfo->position();
double trackOffset = std::numeric_limits<double>::quiet_NaN();
double trackLength = std::numeric_limits<double>::quiet_NaN();
m_model->getTrackIndex(i, j, &trackOffset, &trackLength);
}
//Setup meta info
- AudioFileModel_MetaInfo trackMetaInfo; /*QString().sprintf("cue://File%02d/Track%02d", i, j)*/;
- trackMetaInfo.setTitle(m_model->getTrackTitle(i, j));
- trackMetaInfo.setArtist(m_model->getTrackPerformer(i, j));
- trackMetaInfo.setGenre(m_model->getTrackGenre(i, j));
- trackMetaInfo.setYear(m_model->getTrackYear(i, j));
- trackMetaInfo.setPosition(trackNo);
+ AudioFileModel_MetaInfo trackMetaInfo(*trackInfo);
//Apply album meta data on files
if(trackMetaInfo.title().trimmed().isEmpty())
{
trackMetaInfo.setTitle(QString().sprintf("Track %02d", trackNo));
}
- if(!albumTitle.isEmpty())
- {
- trackMetaInfo.setAlbum(albumTitle);
- }
- if(!albumPerformer.isEmpty() && trackMetaInfo.artist().isEmpty())
- {
- trackMetaInfo.setArtist(albumPerformer);
- }
- if(!albumGenre.isEmpty() && trackMetaInfo.genre().isEmpty())
- {
- trackMetaInfo.setGenre(albumGenre);
- }
- if((albumYear > 0) && (trackMetaInfo.year() == 0))
- {
- trackMetaInfo.setYear(albumYear);
- }
- if(_finite(trackLength))
- {
- //FIXME !!!
- //trackMetaInfo.setDuration(static_cast<unsigned int>(abs(trackLength)));
- }
+ trackMetaInfo.update(*albumInfo, false);
//Generate output file name
QString trackTitle = trackMetaInfo.title().isEmpty() ? QString().sprintf("Track %02d", trackNo) : trackMetaInfo.title();
//Call split function
emit fileSelected(shortName(QFileInfo(outputFile).fileName()));
splitFile(outputFile, trackNo, trackFile, trackOffset, trackLength, trackMetaInfo, maxProgress);
+ emit progressValChanged(++nTracksComplete);
if(m_abortFlag)
{
}
}
+ emit progressValChanged(nTracksTotal);
+ lamexp_sleep(333);
+
qDebug("All files were split.\n");
m_bSuccess = true;
}
void CueSplitter::handleUpdate(int progress)
{
- emit fileSelected(QString("%1 [%2%]").arg(m_activeFile, QString::number(progress)));
+ //QString("%1 [%2]").arg(m_activeFile, QString::number(progress)))
}
////////////////////////////////////////////////////////////
qDebug("Length: <%f> <%s>", length, indexToString(length).toLatin1().constData());
qDebug("Artist: <%s>", metaInfo.artist().toUtf8().constData());
qDebug("Title: <%s>", metaInfo.title().toUtf8().constData());
+ qDebug("Album: <%s>", metaInfo.album().toUtf8().constData());
if(!m_decompressedFiles.contains(file))
{
QString decompressedInput = m_decompressedFiles[file];
qDebug("Input: <%s>", decompressedInput.toUtf8().constData());
- emit fileSelected(QString("%1 [%2%]").arg(baseName, QString::number(maxProgress)));
+ //emit fileSelected(QString("%1 [%2%]").arg(baseName, QString::number(maxProgress)));
- AudioFileModel outFileInfo;
+ AudioFileModel outFileInfo(output);
outFileInfo.setMetaInfo(metaInfo);
- outFileInfo.setFilePath(output);
- outFileInfo.techInfo().setContainerType("Wave");
- outFileInfo.techInfo().setAudioType("PCM");
+
+ AudioFileModel_TechInfo &outFileTechInfo = outFileInfo.techInfo();
+ outFileTechInfo.setContainerType("Wave");
+ outFileTechInfo.setAudioType("PCM");
+ outFileTechInfo.setDuration(static_cast<unsigned int>(abs(length)));
QStringList args;
args << "-S" << "-V3";
if(ok)
{
maxProgress = qMax(maxProgress, progress);
- emit fileSelected(QString("%1 [%2%]").arg(baseName, QString::number(maxProgress)));
+ //emit fileSelected(QString("%1 [%2%]").arg(baseName, QString::number(maxProgress)));
}
}
else if(rxChannels.lastIndexIn(text) >= 0)