Updated CueImportDialog and CueSheetModel as well as the CueSheet helper classes to use AudioFileModel_MetaInfo. Significant code simplification.

This commit is contained in:
LoRd_MuldeR 2013-10-13 20:50:12 +02:00
parent f57f65d709
commit 5e5fbe06f9
14 changed files with 331 additions and 416 deletions

View File

@ -379,56 +379,56 @@
<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>
@ -464,8 +464,8 @@
<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>
@ -525,110 +525,110 @@
<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>
@ -685,44 +685,44 @@
<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>
@ -3290,23 +3290,23 @@
<context>
<name>QApplication</name>
<message>
<location filename="../../src/Global.cpp" line="900"/>
<location filename="../../src/Global.cpp" line="933"/>
<source>Executable &apos;%1&apos; doesn&apos;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 &apos;%1&apos; 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 &apos;%1&apos; was built for Qt &apos;%2&apos;, but found Qt &apos;%3&apos;.</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 &apos;%1&apos; requires Windows 2000 or later.</source>
<translation type="unfinished"></translation>
</message>

View File

@ -4,7 +4,7 @@
<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>
@ -12,7 +12,7 @@
</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>
@ -20,7 +20,7 @@
</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>

View File

@ -379,56 +379,56 @@
<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>
@ -464,8 +464,8 @@
<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>
@ -525,84 +525,84 @@
<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>
@ -611,12 +611,12 @@
</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>
@ -625,7 +625,7 @@
</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>
@ -634,7 +634,7 @@
</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>
@ -691,44 +691,44 @@
<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>
@ -3327,23 +3327,23 @@
<context>
<name>QApplication</name>
<message>
<location filename="../../src/Global.cpp" line="900"/>
<location filename="../../src/Global.cpp" line="933"/>
<source>Executable &apos;%1&apos; doesn&apos;t support Windows compatibility mode.</source>
<translation type="unfinished">Plik wykonywalny &apos;%1&apos; 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 &apos;%1&apos; requires Qt v%2, but found Qt v%3.</source>
<translation type="unfinished">Plik wykonywalny &apos;%1&apos; 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 &apos;%1&apos; was built for Qt &apos;%2&apos;, but found Qt &apos;%3&apos;.</source>
<translation type="unfinished">Plik wykonywalny &quot;%1&quot; został skompilowany dla Qt &quot;%2&quot;, znaleziono &quot;%3&quot;.</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 &apos;%1&apos; requires Windows 2000 or later.</source>
<translation type="unfinished">Plik wykonywalny &apos;%1&apos; wymaga do uruchomienia Windows 2000 lub nowszego.</translation>
</message>

View File

@ -379,56 +379,56 @@
<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>
@ -465,8 +465,8 @@
<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>
@ -526,84 +526,84 @@
<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 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 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>
@ -611,12 +611,12 @@
</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>
@ -624,7 +624,7 @@
</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>
@ -632,7 +632,7 @@
</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>
@ -689,44 +689,44 @@
<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>
@ -3310,23 +3310,23 @@
<context>
<name>QApplication</name>
<message>
<location filename="../../src/Global.cpp" line="900"/>
<location filename="../../src/Global.cpp" line="933"/>
<source>Executable &apos;%1&apos; doesn&apos;t support Windows compatibility mode.</source>
<translation>EXE-filen &apos;%1&apos; 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 &apos;%1&apos; requires Qt v%2, but found Qt v%3.</source>
<translation>EXE-filen &apos;%1&apos; 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 &apos;%1&apos; was built for Qt &apos;%2&apos;, but found Qt &apos;%3&apos;.</source>
<translation>EXE-filen &apos;%1&apos; är byggd för Qt &apos;%2&apos;, du har Qt &apos;%3&apos;.</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 &apos;%1&apos; requires Windows 2000 or later.</source>
<translation>EXE-filen &apos;%1&apos; kräver Windows 2000 eller senare.</translation>
</message>

View File

@ -34,7 +34,7 @@
#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
///////////////////////////////////////////////////////////////////////////////

View File

@ -233,8 +233,11 @@ void CueImportDialog::modelChanged(void)
{
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)

View File

@ -1039,7 +1039,7 @@ AudioFileModel ProcessingDialog::updateMetaInfo(AudioFileModel &audioFile)
return audioFile;
}
audioFile.metaInfo().update(*m_metaInfo);
audioFile.metaInfo().update(*m_metaInfo, true);
if(audioFile.metaInfo().position() == UINT_MAX)
{

View File

@ -132,8 +132,11 @@ ArtworkModel::ArtworkModel(const ArtworkModel &model)
ArtworkModel &ArtworkModel::operator=(const ArtworkModel &model)
{
QMutexLocker lock(m_mutex);
if(m_data != model.m_data)
{
ArtworkModel_SharedData::detach(&m_data);
m_data = ArtworkModel_SharedData::attach(model.m_data);
}
return (*this);
}

View File

@ -32,6 +32,18 @@
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
///////////////////////////////////////////////////////////////////////////////
@ -67,16 +79,26 @@ AudioFileModel_MetaInfo &AudioFileModel_MetaInfo::operator=(const AudioFileModel
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)
@ -96,6 +118,18 @@ void AudioFileModel_MetaInfo::reset(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
///////////////////////////////////////////////////////////////////////////////
@ -136,7 +170,6 @@ AudioFileModel_TechInfo &AudioFileModel_TechInfo::operator=(const AudioFileModel
m_audioBitrateMode = model.m_audioBitrateMode;
m_duration = model.m_duration;
return (*this);
}

View File

@ -65,7 +65,10 @@ public:
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;

View File

@ -21,6 +21,7 @@
#include "Global.h"
#include "Model_CueSheet.h"
#include "Model_AudioFile.h"
#include "Genres.h"
#include <QApplication>
@ -53,38 +54,32 @@ class CueSheetTrack : public CueSheetItem
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
@ -92,13 +87,20 @@ 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;
@ -115,21 +117,7 @@ CueSheetModel::CueSheetModel()
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)
@ -255,23 +243,24 @@ QVariant CueSheetModel::data(const QModelIndex &index, int role) const
}
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
{
@ -399,7 +388,7 @@ int CueSheetModel::getTrackCount(int fileIndex)
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);
@ -408,14 +397,14 @@ int CueSheetModel::getTrackNo(int fileIndex, int trackIndex)
CueSheetFile *currentFile = m_files.at(fileIndex);
if(trackIndex >= 0 && trackIndex < currentFile->trackCount())
{
return currentFile->track(trackIndex)->trackNo();
return &currentFile->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);
@ -430,101 +419,19 @@ void CueSheetModel::getTrackIndex(int fileIndex, int trackIndex, double *startIn
CueSheetTrack *currentTrack = currentFile->track(trackIndex);
*startIndex = currentTrack->startIndex();
*duration = currentTrack->duration();
return true;
}
}
return false;
}
QString CueSheetModel::getTrackPerformer(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->performer();
}
}
return QString();
return &m_albumInfo;
}
QString CueSheetModel::getTrackTitle(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->title();
}
}
return QString();
}
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
////////////////////////////////////////////////////////////
@ -594,10 +501,7 @@ int CueSheetModel::parseCueFile(QFile &cueFile, const QDir &baseDir, QCoreApplic
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++)
@ -720,12 +624,12 @@ int CueSheetModel::parseCueFile(QFile &cueFile, const QDir &baseDir, QCoreApplic
{
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;
}
@ -735,12 +639,12 @@ int CueSheetModel::parseCueFile(QFile &cueFile, const QDir &baseDir, QCoreApplic
{
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;
}
@ -755,7 +659,7 @@ int CueSheetModel::parseCueFile(QFile &cueFile, const QDir &baseDir, QCoreApplic
{
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;
}
}
@ -768,7 +672,7 @@ int CueSheetModel::parseCueFile(QFile &cueFile, const QDir &baseDir, QCoreApplic
{
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;
}
}
@ -783,14 +687,14 @@ int CueSheetModel::parseCueFile(QFile &cueFile, const QDir &baseDir, QCoreApplic
{
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;
}
@ -870,7 +774,7 @@ int CueSheetModel::parseCueFile(QFile &cueFile, const QDir &baseDir, QCoreApplic
{
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);

View File

@ -63,16 +63,9 @@ public:
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);
@ -85,10 +78,7 @@ private:
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;

View File

@ -478,6 +478,6 @@ Qt::ItemFlags MetaInfoModel::flags(const QModelIndex &index) const
void MetaInfoModel::assignInfoFrom(const AudioFileModel &file)
{
beginResetModel();
m_metaInfo->update(file.metaInfo());
m_metaInfo->update(file.metaInfo(), true);
endResetModel();
}

View File

@ -165,10 +165,7 @@ void CueSplitter::run()
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++)
@ -180,8 +177,8 @@ void CueSplitter::run()
//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);
@ -193,39 +190,14 @@ void CueSplitter::run()
}
//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();
@ -238,6 +210,7 @@ void CueSplitter::run()
//Call split function
emit fileSelected(shortName(QFileInfo(outputFile).fileName()));
splitFile(outputFile, trackNo, trackFile, trackOffset, trackLength, trackMetaInfo, maxProgress);
emit progressValChanged(++nTracksComplete);
if(m_abortFlag)
{
@ -248,6 +221,9 @@ void CueSplitter::run()
}
}
emit progressValChanged(nTracksTotal);
lamexp_sleep(333);
qDebug("All files were split.\n");
m_bSuccess = true;
}
@ -258,7 +234,7 @@ void CueSplitter::run()
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)))
}
////////////////////////////////////////////////////////////
@ -273,6 +249,7 @@ void CueSplitter::splitFile(const QString &output, const int trackNo, const QStr
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))
{
@ -285,13 +262,15 @@ void CueSplitter::splitFile(const QString &output, const int trackNo, const QStr
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";
@ -359,7 +338,7 @@ void CueSplitter::splitFile(const QString &output, const int trackNo, const QStr
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)