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> <context>
<name>AudioFileModel</name> <name>AudioFileModel</name>
<message> <message>
<location filename="../../src/Model_AudioFile.cpp" line="227"/> <location filename="../../src/Model_AudioFile.cpp" line="260"/>
<location filename="../../src/Model_AudioFile.cpp" line="283"/> <location filename="../../src/Model_AudioFile.cpp" line="316"/>
<source>Profile</source> <source>Profile</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_AudioFile.cpp" line="244"/> <location filename="../../src/Model_AudioFile.cpp" line="277"/>
<source>Channels</source> <source>Channels</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_AudioFile.cpp" line="249"/> <location filename="../../src/Model_AudioFile.cpp" line="282"/>
<source>Samplerate</source> <source>Samplerate</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_AudioFile.cpp" line="256"/> <location filename="../../src/Model_AudioFile.cpp" line="289"/>
<location filename="../../src/Model_AudioFile.cpp" line="260"/> <location filename="../../src/Model_AudioFile.cpp" line="293"/>
<source>Bitdepth</source> <source>Bitdepth</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_AudioFile.cpp" line="278"/> <location filename="../../src/Model_AudioFile.cpp" line="311"/>
<source>Type</source> <source>Type</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_AudioFile.cpp" line="287"/> <location filename="../../src/Model_AudioFile.cpp" line="320"/>
<source>Version</source> <source>Version</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_AudioFile.cpp" line="294"/> <location filename="../../src/Model_AudioFile.cpp" line="327"/>
<location filename="../../src/Model_AudioFile.cpp" line="297"/> <location filename="../../src/Model_AudioFile.cpp" line="330"/>
<location filename="../../src/Model_AudioFile.cpp" line="300"/> <location filename="../../src/Model_AudioFile.cpp" line="333"/>
<source>Bitrate</source> <source>Bitrate</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_AudioFile.cpp" line="294"/> <location filename="../../src/Model_AudioFile.cpp" line="327"/>
<source>Constant</source> <source>Constant</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_AudioFile.cpp" line="297"/> <location filename="../../src/Model_AudioFile.cpp" line="330"/>
<source>Variable</source> <source>Variable</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_AudioFile.cpp" line="306"/> <location filename="../../src/Model_AudioFile.cpp" line="339"/>
<source>Encoder</source> <source>Encoder</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -464,8 +464,8 @@
<message> <message>
<location filename="../../src/Dialog_CueImport.cpp" line="120"/> <location filename="../../src/Dialog_CueImport.cpp" line="120"/>
<location filename="../../src/Dialog_CueImport.cpp" line="221"/> <location filename="../../src/Dialog_CueImport.cpp" line="221"/>
<location filename="../../src/Dialog_CueImport.cpp" line="410"/> <location filename="../../src/Dialog_CueImport.cpp" line="413"/>
<location filename="../../src/Dialog_CueImport.cpp" line="414"/> <location filename="../../src/Dialog_CueImport.cpp" line="417"/>
<source>Cue Sheet Error</source> <source>Cue Sheet Error</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -525,110 +525,110 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_CueImport.cpp" line="236"/> <location filename="../../src/Dialog_CueImport.cpp" line="238"/>
<source>Unknown Artist</source> <source>Unknown Artist</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_CueImport.cpp" line="237"/> <location filename="../../src/Dialog_CueImport.cpp" line="239"/>
<source>Unknown Album</source> <source>Unknown Album</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_CueImport.cpp" line="252"/> <location filename="../../src/Dialog_CueImport.cpp" line="255"/>
<location filename="../../src/Dialog_CueImport.cpp" line="256"/> <location filename="../../src/Dialog_CueImport.cpp" line="259"/>
<source>Choose Output Directory</source> <source>Choose Output Directory</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_CueImport.cpp" line="282"/> <location filename="../../src/Dialog_CueImport.cpp" line="285"/>
<location filename="../../src/Dialog_CueImport.cpp" line="289"/> <location filename="../../src/Dialog_CueImport.cpp" line="292"/>
<source>LameXP</source> <source>LameXP</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Error: The selected output directory could not be created!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Error: The selected output directory is not writable!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_CueImport.cpp" line="303"/> <location filename="../../src/Dialog_CueImport.cpp" line="306"/>
<source>Low Diskspace Warning</source> <source>Low Diskspace Warning</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>There are less than %1 GB of free diskspace available in the selected output directory.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>It is highly recommend to free up more diskspace before proceeding with the import!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Analyzing file(s), please wait...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_CueImport.cpp" line="378"/> <location filename="../../src/Dialog_CueImport.cpp" line="381"/>
<source>Analysis Failed</source> <source>Analysis Failed</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Warning: The format of some of the input files could not be determined!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_CueImport.cpp" line="378"/> <location filename="../../src/Dialog_CueImport.cpp" line="381"/>
<source>Continue Anyway</source> <source>Continue Anyway</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_CueImport.cpp" line="378"/> <location filename="../../src/Dialog_CueImport.cpp" line="381"/>
<source>Abort</source> <source>Abort</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Splitting file(s), please wait...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message numerus="yes"> <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> <source>Process was aborted by the user after %n track(s)!</source>
<translation type="unfinished"> <translation type="unfinished">
<numerusform></numerusform> <numerusform></numerusform>
</translation> </translation>
</message> </message>
<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> <source>An unexpected error has occured while splitting the Cue Sheet!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message numerus="yes"> <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> <source>Imported %n track(s) from the Cue Sheet.</source>
<translation type="unfinished"> <translation type="unfinished">
<numerusform></numerusform> <numerusform></numerusform>
</translation> </translation>
</message> </message>
<message numerus="yes"> <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> <source>Skipped %n track(s).</source>
<translation type="unfinished"> <translation type="unfinished">
<numerusform></numerusform> <numerusform></numerusform>
</translation> </translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_CueImport.cpp" line="419"/> <location filename="../../src/Dialog_CueImport.cpp" line="422"/>
<source>Cue Sheet Completed</source> <source>Cue Sheet Completed</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -685,44 +685,44 @@
<context> <context>
<name>CueSheetModel</name> <name>CueSheetModel</name>
<message> <message>
<location filename="../../src/Model_CueSheet.cpp" line="211"/> <location filename="../../src/Model_CueSheet.cpp" line="199"/>
<source>No.</source> <source>No.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_CueSheet.cpp" line="214"/> <location filename="../../src/Model_CueSheet.cpp" line="202"/>
<source>File / Track</source> <source>File / Track</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_CueSheet.cpp" line="217"/> <location filename="../../src/Model_CueSheet.cpp" line="205"/>
<source>Index</source> <source>Index</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_CueSheet.cpp" line="220"/> <location filename="../../src/Model_CueSheet.cpp" line="208"/>
<source>Duration</source> <source>Duration</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_CueSheet.cpp" line="246"/> <location filename="../../src/Model_CueSheet.cpp" line="234"/>
<source>File %1</source> <source>File %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_CueSheet.cpp" line="261"/> <location filename="../../src/Model_CueSheet.cpp" line="250"/>
<source>Track %1</source> <source>Track %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_CueSheet.cpp" line="270"/> <location filename="../../src/Model_CueSheet.cpp" line="259"/>
<location filename="../../src/Model_CueSheet.cpp" line="278"/> <location filename="../../src/Model_CueSheet.cpp" line="267"/>
<source>Unknown Artist</source> <source>Unknown Artist</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_CueSheet.cpp" line="274"/> <location filename="../../src/Model_CueSheet.cpp" line="263"/>
<location filename="../../src/Model_CueSheet.cpp" line="278"/> <location filename="../../src/Model_CueSheet.cpp" line="267"/>
<source>Unknown Title</source> <source>Unknown Title</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -3290,23 +3290,23 @@
<context> <context>
<name>QApplication</name> <name>QApplication</name>
<message> <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> <source>Executable &apos;%1&apos; doesn&apos;t support Windows compatibility mode.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Executable &apos;%1&apos; requires Qt v%2, but found Qt v%3.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Executable &apos;%1&apos; was built for Qt &apos;%2&apos;, but found Qt &apos;%3&apos;.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Global.cpp" line="1172"/> <location filename="../../src/Global.cpp" line="1205"/>
<location filename="../../src/Global.cpp" line="1199"/> <location filename="../../src/Global.cpp" line="1232"/>
<source>Executable &apos;%1&apos; requires Windows 2000 or later.</source> <source>Executable &apos;%1&apos; requires Windows 2000 or later.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@ -4,7 +4,7 @@
<context> <context>
<name>CueImportDialog</name> <name>CueImportDialog</name>
<message numerus="yes"> <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> <source>Process was aborted by the user after %n track(s)!</source>
<translation> <translation>
<numerusform>Process was aborted by the user after %n track!</numerusform> <numerusform>Process was aborted by the user after %n track!</numerusform>
@ -12,7 +12,7 @@
</translation> </translation>
</message> </message>
<message numerus="yes"> <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> <source>Imported %n track(s) from the Cue Sheet.</source>
<translation> <translation>
<numerusform>Imported %n track from the Cue Sheet.</numerusform> <numerusform>Imported %n track from the Cue Sheet.</numerusform>
@ -20,7 +20,7 @@
</translation> </translation>
</message> </message>
<message numerus="yes"> <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> <source>Skipped %n track(s).</source>
<translation> <translation>
<numerusform>Skipped %n track.</numerusform> <numerusform>Skipped %n track.</numerusform>

View File

@ -379,56 +379,56 @@
<context> <context>
<name>AudioFileModel</name> <name>AudioFileModel</name>
<message> <message>
<location filename="../../src/Model_AudioFile.cpp" line="227"/> <location filename="../../src/Model_AudioFile.cpp" line="260"/>
<location filename="../../src/Model_AudioFile.cpp" line="283"/> <location filename="../../src/Model_AudioFile.cpp" line="316"/>
<source>Profile</source> <source>Profile</source>
<translation type="unfinished">Profil</translation> <translation type="unfinished">Profil</translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_AudioFile.cpp" line="244"/> <location filename="../../src/Model_AudioFile.cpp" line="277"/>
<source>Channels</source> <source>Channels</source>
<translation type="unfinished">Kanały</translation> <translation type="unfinished">Kanały</translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_AudioFile.cpp" line="249"/> <location filename="../../src/Model_AudioFile.cpp" line="282"/>
<source>Samplerate</source> <source>Samplerate</source>
<translation type="unfinished">Częstotliwość</translation> <translation type="unfinished">Częstotliwość</translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_AudioFile.cpp" line="256"/> <location filename="../../src/Model_AudioFile.cpp" line="289"/>
<location filename="../../src/Model_AudioFile.cpp" line="260"/> <location filename="../../src/Model_AudioFile.cpp" line="293"/>
<source>Bitdepth</source> <source>Bitdepth</source>
<translation type="unfinished">Głębia bitów</translation> <translation type="unfinished">Głębia bitów</translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_AudioFile.cpp" line="278"/> <location filename="../../src/Model_AudioFile.cpp" line="311"/>
<source>Type</source> <source>Type</source>
<translation type="unfinished">Typ</translation> <translation type="unfinished">Typ</translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_AudioFile.cpp" line="287"/> <location filename="../../src/Model_AudioFile.cpp" line="320"/>
<source>Version</source> <source>Version</source>
<translation type="unfinished">Wersja</translation> <translation type="unfinished">Wersja</translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_AudioFile.cpp" line="294"/> <location filename="../../src/Model_AudioFile.cpp" line="327"/>
<location filename="../../src/Model_AudioFile.cpp" line="297"/> <location filename="../../src/Model_AudioFile.cpp" line="330"/>
<location filename="../../src/Model_AudioFile.cpp" line="300"/> <location filename="../../src/Model_AudioFile.cpp" line="333"/>
<source>Bitrate</source> <source>Bitrate</source>
<translation type="unfinished">Przepływność bitów</translation> <translation type="unfinished">Przepływność bitów</translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_AudioFile.cpp" line="294"/> <location filename="../../src/Model_AudioFile.cpp" line="327"/>
<source>Constant</source> <source>Constant</source>
<translation type="unfinished">Stały</translation> <translation type="unfinished">Stały</translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_AudioFile.cpp" line="297"/> <location filename="../../src/Model_AudioFile.cpp" line="330"/>
<source>Variable</source> <source>Variable</source>
<translation type="unfinished">Zmienny</translation> <translation type="unfinished">Zmienny</translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_AudioFile.cpp" line="306"/> <location filename="../../src/Model_AudioFile.cpp" line="339"/>
<source>Encoder</source> <source>Encoder</source>
<translation type="unfinished">Enkoder</translation> <translation type="unfinished">Enkoder</translation>
</message> </message>
@ -464,8 +464,8 @@
<message> <message>
<location filename="../../src/Dialog_CueImport.cpp" line="120"/> <location filename="../../src/Dialog_CueImport.cpp" line="120"/>
<location filename="../../src/Dialog_CueImport.cpp" line="221"/> <location filename="../../src/Dialog_CueImport.cpp" line="221"/>
<location filename="../../src/Dialog_CueImport.cpp" line="410"/> <location filename="../../src/Dialog_CueImport.cpp" line="413"/>
<location filename="../../src/Dialog_CueImport.cpp" line="414"/> <location filename="../../src/Dialog_CueImport.cpp" line="417"/>
<source>Cue Sheet Error</source> <source>Cue Sheet Error</source>
<translation type="unfinished">Błąd pliku Cue Sheet</translation> <translation type="unfinished">Błąd pliku Cue Sheet</translation>
</message> </message>
@ -525,84 +525,84 @@
<translation type="unfinished">Wybrany plik Cue Sheet zawiera niespójne informacje. Prosze zachować ostrożność!</translation> <translation type="unfinished">Wybrany plik Cue Sheet zawiera niespójne informacje. Prosze zachować ostrożność!</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_CueImport.cpp" line="236"/> <location filename="../../src/Dialog_CueImport.cpp" line="238"/>
<source>Unknown Artist</source> <source>Unknown Artist</source>
<translation type="unfinished">Nieznany Artysta</translation> <translation type="unfinished">Nieznany Artysta</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_CueImport.cpp" line="237"/> <location filename="../../src/Dialog_CueImport.cpp" line="239"/>
<source>Unknown Album</source> <source>Unknown Album</source>
<translation type="unfinished">Nieznany Album</translation> <translation type="unfinished">Nieznany Album</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_CueImport.cpp" line="252"/> <location filename="../../src/Dialog_CueImport.cpp" line="255"/>
<location filename="../../src/Dialog_CueImport.cpp" line="256"/> <location filename="../../src/Dialog_CueImport.cpp" line="259"/>
<source>Choose Output Directory</source> <source>Choose Output Directory</source>
<translation type="unfinished">Wybierz folder wyjściowy</translation> <translation type="unfinished">Wybierz folder wyjściowy</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_CueImport.cpp" line="282"/> <location filename="../../src/Dialog_CueImport.cpp" line="285"/>
<location filename="../../src/Dialog_CueImport.cpp" line="289"/> <location filename="../../src/Dialog_CueImport.cpp" line="292"/>
<source>LameXP</source> <source>LameXP</source>
<translation type="unfinished">LameXP</translation> <translation type="unfinished">LameXP</translation>
</message> </message>
<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> <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> <translation type="unfinished">Błąd: Wybrana lokalizacja wyjściowa nie może zostać utworzona!</translation>
</message> </message>
<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> <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> <translation type="unfinished">Błąd: Nie można zapisać w wybranej lokalizacji wyjściowej!</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_CueImport.cpp" line="303"/> <location filename="../../src/Dialog_CueImport.cpp" line="306"/>
<source>Low Diskspace Warning</source> <source>Low Diskspace Warning</source>
<translation type="unfinished">Ostrzeżenie o małej ilości miejsca na dysku</translation> <translation type="unfinished">Ostrzeżenie o małej ilości miejsca na dysku</translation>
</message> </message>
<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> <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> <translation type="unfinished">Jest mniej niż %1 GB wolnego miejsca w wybranej lokalizacji wyjściowej.</translation>
</message> </message>
<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> <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> <translation type="unfinished">Jest wysoce zalecane zwolnić miejsce na dysku zanim zaczniesz importować!</translation>
</message> </message>
<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> <source>Analyzing file(s), please wait...</source>
<translation type="unfinished">Analizowanie pliku/ów, prosze czekać...</translation> <translation type="unfinished">Analizowanie pliku/ów, prosze czekać...</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_CueImport.cpp" line="378"/> <location filename="../../src/Dialog_CueImport.cpp" line="381"/>
<source>Analysis Failed</source> <source>Analysis Failed</source>
<translation type="unfinished">Analiza zakończona niepowodzeniem</translation> <translation type="unfinished">Analiza zakończona niepowodzeniem</translation>
</message> </message>
<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> <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> <translation type="unfinished">Ostrzeżenie: Nie można rozpoznać formatu kilku plików wejściowych!</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_CueImport.cpp" line="378"/> <location filename="../../src/Dialog_CueImport.cpp" line="381"/>
<source>Continue Anyway</source> <source>Continue Anyway</source>
<translation type="unfinished">Kontynuuj pomimo to</translation> <translation type="unfinished">Kontynuuj pomimo to</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_CueImport.cpp" line="378"/> <location filename="../../src/Dialog_CueImport.cpp" line="381"/>
<source>Abort</source> <source>Abort</source>
<translation type="unfinished">Przerwij</translation> <translation type="unfinished">Przerwij</translation>
</message> </message>
<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> <source>Splitting file(s), please wait...</source>
<translation type="unfinished">Dzielenie pliku/ów, prosze czekać...</translation> <translation type="unfinished">Dzielenie pliku/ów, prosze czekać...</translation>
</message> </message>
<message numerus="yes"> <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> <source>Process was aborted by the user after %n track(s)!</source>
<translation type="unfinished"> <translation type="unfinished">
<numerusform>Proces został przerwany przez użytkownika po zakończeniu %n ścieżki!</numerusform> <numerusform>Proces został przerwany przez użytkownika po zakończeniu %n ścieżki!</numerusform>
@ -611,12 +611,12 @@
</translation> </translation>
</message> </message>
<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> <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> <translation type="unfinished">Wystąpił nieoczekiwany błąd podczas podziału pliku Cue Sheet!</translation>
</message> </message>
<message numerus="yes"> <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> <source>Imported %n track(s) from the Cue Sheet.</source>
<translation type="unfinished"> <translation type="unfinished">
<numerusform>Zaimportowano %n ścieżkę z pliku Cue Sheet.</numerusform> <numerusform>Zaimportowano %n ścieżkę z pliku Cue Sheet.</numerusform>
@ -625,7 +625,7 @@
</translation> </translation>
</message> </message>
<message numerus="yes"> <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> <source>Skipped %n track(s).</source>
<translation type="unfinished"> <translation type="unfinished">
<numerusform>Pominięto %n ścieżkę.</numerusform> <numerusform>Pominięto %n ścieżkę.</numerusform>
@ -634,7 +634,7 @@
</translation> </translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_CueImport.cpp" line="419"/> <location filename="../../src/Dialog_CueImport.cpp" line="422"/>
<source>Cue Sheet Completed</source> <source>Cue Sheet Completed</source>
<translation type="unfinished">Stworzono plik Cue Sheet</translation> <translation type="unfinished">Stworzono plik Cue Sheet</translation>
</message> </message>
@ -691,44 +691,44 @@
<context> <context>
<name>CueSheetModel</name> <name>CueSheetModel</name>
<message> <message>
<location filename="../../src/Model_CueSheet.cpp" line="211"/> <location filename="../../src/Model_CueSheet.cpp" line="199"/>
<source>No.</source> <source>No.</source>
<translation type="unfinished">Numer.</translation> <translation type="unfinished">Numer.</translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_CueSheet.cpp" line="214"/> <location filename="../../src/Model_CueSheet.cpp" line="202"/>
<source>File / Track</source> <source>File / Track</source>
<translation type="unfinished">Plik/ŚcieżKa</translation> <translation type="unfinished">Plik/ŚcieżKa</translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_CueSheet.cpp" line="217"/> <location filename="../../src/Model_CueSheet.cpp" line="205"/>
<source>Index</source> <source>Index</source>
<translation type="unfinished">Indeks</translation> <translation type="unfinished">Indeks</translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_CueSheet.cpp" line="220"/> <location filename="../../src/Model_CueSheet.cpp" line="208"/>
<source>Duration</source> <source>Duration</source>
<translation type="unfinished">Czas trwania</translation> <translation type="unfinished">Czas trwania</translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_CueSheet.cpp" line="246"/> <location filename="../../src/Model_CueSheet.cpp" line="234"/>
<source>File %1</source> <source>File %1</source>
<translation type="unfinished">Plik %1</translation> <translation type="unfinished">Plik %1</translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_CueSheet.cpp" line="261"/> <location filename="../../src/Model_CueSheet.cpp" line="250"/>
<source>Track %1</source> <source>Track %1</source>
<translation type="unfinished">Ścieżka %1</translation> <translation type="unfinished">Ścieżka %1</translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_CueSheet.cpp" line="270"/> <location filename="../../src/Model_CueSheet.cpp" line="259"/>
<location filename="../../src/Model_CueSheet.cpp" line="278"/> <location filename="../../src/Model_CueSheet.cpp" line="267"/>
<source>Unknown Artist</source> <source>Unknown Artist</source>
<translation type="unfinished">Nieznany Artysta</translation> <translation type="unfinished">Nieznany Artysta</translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_CueSheet.cpp" line="274"/> <location filename="../../src/Model_CueSheet.cpp" line="263"/>
<location filename="../../src/Model_CueSheet.cpp" line="278"/> <location filename="../../src/Model_CueSheet.cpp" line="267"/>
<source>Unknown Title</source> <source>Unknown Title</source>
<translation type="unfinished">Nieznany Tytuł</translation> <translation type="unfinished">Nieznany Tytuł</translation>
</message> </message>
@ -3327,23 +3327,23 @@
<context> <context>
<name>QApplication</name> <name>QApplication</name>
<message> <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> <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> <translation type="unfinished">Plik wykonywalny &apos;%1&apos; nie działa w trybie kompatybilności z Windows.</translation>
</message> </message>
<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> <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> <translation type="unfinished">Plik wykonywalny &apos;%1&apos; wymaga Qt v%2, znaleziono jednak Qt v%3.</translation>
</message> </message>
<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> <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> <translation type="unfinished">Plik wykonywalny &quot;%1&quot; został skompilowany dla Qt &quot;%2&quot;, znaleziono &quot;%3&quot;.</translation>
</message> </message>
<message> <message>
<location filename="../../src/Global.cpp" line="1172"/> <location filename="../../src/Global.cpp" line="1205"/>
<location filename="../../src/Global.cpp" line="1199"/> <location filename="../../src/Global.cpp" line="1232"/>
<source>Executable &apos;%1&apos; requires Windows 2000 or later.</source> <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> <translation type="unfinished">Plik wykonywalny &apos;%1&apos; wymaga do uruchomienia Windows 2000 lub nowszego.</translation>
</message> </message>

View File

@ -379,56 +379,56 @@
<context> <context>
<name>AudioFileModel</name> <name>AudioFileModel</name>
<message> <message>
<location filename="../../src/Model_AudioFile.cpp" line="227"/> <location filename="../../src/Model_AudioFile.cpp" line="260"/>
<location filename="../../src/Model_AudioFile.cpp" line="283"/> <location filename="../../src/Model_AudioFile.cpp" line="316"/>
<source>Profile</source> <source>Profile</source>
<translation>Profil</translation> <translation>Profil</translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_AudioFile.cpp" line="244"/> <location filename="../../src/Model_AudioFile.cpp" line="277"/>
<source>Channels</source> <source>Channels</source>
<translation>Kanaler</translation> <translation>Kanaler</translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_AudioFile.cpp" line="249"/> <location filename="../../src/Model_AudioFile.cpp" line="282"/>
<source>Samplerate</source> <source>Samplerate</source>
<translation>Samplingsfrekvens</translation> <translation>Samplingsfrekvens</translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_AudioFile.cpp" line="256"/> <location filename="../../src/Model_AudioFile.cpp" line="289"/>
<location filename="../../src/Model_AudioFile.cpp" line="260"/> <location filename="../../src/Model_AudioFile.cpp" line="293"/>
<source>Bitdepth</source> <source>Bitdepth</source>
<translation>Bitdjup</translation> <translation>Bitdjup</translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_AudioFile.cpp" line="278"/> <location filename="../../src/Model_AudioFile.cpp" line="311"/>
<source>Type</source> <source>Type</source>
<translation>Typ</translation> <translation>Typ</translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_AudioFile.cpp" line="287"/> <location filename="../../src/Model_AudioFile.cpp" line="320"/>
<source>Version</source> <source>Version</source>
<translation>Version</translation> <translation>Version</translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_AudioFile.cpp" line="294"/> <location filename="../../src/Model_AudioFile.cpp" line="327"/>
<location filename="../../src/Model_AudioFile.cpp" line="297"/> <location filename="../../src/Model_AudioFile.cpp" line="330"/>
<location filename="../../src/Model_AudioFile.cpp" line="300"/> <location filename="../../src/Model_AudioFile.cpp" line="333"/>
<source>Bitrate</source> <source>Bitrate</source>
<translation>Bithastighet</translation> <translation>Bithastighet</translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_AudioFile.cpp" line="294"/> <location filename="../../src/Model_AudioFile.cpp" line="327"/>
<source>Constant</source> <source>Constant</source>
<translation>Konstant</translation> <translation>Konstant</translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_AudioFile.cpp" line="297"/> <location filename="../../src/Model_AudioFile.cpp" line="330"/>
<source>Variable</source> <source>Variable</source>
<translation>Variabel</translation> <translation>Variabel</translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_AudioFile.cpp" line="306"/> <location filename="../../src/Model_AudioFile.cpp" line="339"/>
<source>Encoder</source> <source>Encoder</source>
<translatorcomment>Kodare</translatorcomment> <translatorcomment>Kodare</translatorcomment>
<translation></translation> <translation></translation>
@ -465,8 +465,8 @@
<message> <message>
<location filename="../../src/Dialog_CueImport.cpp" line="120"/> <location filename="../../src/Dialog_CueImport.cpp" line="120"/>
<location filename="../../src/Dialog_CueImport.cpp" line="221"/> <location filename="../../src/Dialog_CueImport.cpp" line="221"/>
<location filename="../../src/Dialog_CueImport.cpp" line="410"/> <location filename="../../src/Dialog_CueImport.cpp" line="413"/>
<location filename="../../src/Dialog_CueImport.cpp" line="414"/> <location filename="../../src/Dialog_CueImport.cpp" line="417"/>
<source>Cue Sheet Error</source> <source>Cue Sheet Error</source>
<translation>Cue-fel</translation> <translation>Cue-fel</translation>
</message> </message>
@ -526,84 +526,84 @@
<translation>Den specificerade cue-filen innehåller inkonsekvent information. Undersök det!</translation> <translation>Den specificerade cue-filen innehåller inkonsekvent information. Undersök det!</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_CueImport.cpp" line="236"/> <location filename="../../src/Dialog_CueImport.cpp" line="238"/>
<source>Unknown Artist</source> <source>Unknown Artist</source>
<translation>Okänd artist</translation> <translation>Okänd artist</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_CueImport.cpp" line="237"/> <location filename="../../src/Dialog_CueImport.cpp" line="239"/>
<source>Unknown Album</source> <source>Unknown Album</source>
<translation>Okänt album</translation> <translation>Okänt album</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_CueImport.cpp" line="252"/> <location filename="../../src/Dialog_CueImport.cpp" line="255"/>
<location filename="../../src/Dialog_CueImport.cpp" line="256"/> <location filename="../../src/Dialog_CueImport.cpp" line="259"/>
<source>Choose Output Directory</source> <source>Choose Output Directory</source>
<translation>Välj målmapp för utdata</translation> <translation>Välj målmapp för utdata</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_CueImport.cpp" line="282"/> <location filename="../../src/Dialog_CueImport.cpp" line="285"/>
<location filename="../../src/Dialog_CueImport.cpp" line="289"/> <location filename="../../src/Dialog_CueImport.cpp" line="292"/>
<source>LameXP</source> <source>LameXP</source>
<translation>LameXP</translation> <translation>LameXP</translation>
</message> </message>
<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> <source>Error: The selected output directory could not be created!</source>
<translation>Fel: Den specificerade målmappen kunde inte skapas!</translation> <translation>Fel: Den specificerade målmappen kunde inte skapas!</translation>
</message> </message>
<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> <source>Error: The selected output directory is not writable!</source>
<translation>Fel: Den specificerade målmappen är skrivskyddad!</translation> <translation>Fel: Den specificerade målmappen är skrivskyddad!</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_CueImport.cpp" line="303"/> <location filename="../../src/Dialog_CueImport.cpp" line="306"/>
<source>Low Diskspace Warning</source> <source>Low Diskspace Warning</source>
<translation>Varning för lågt diskutrymme</translation> <translation>Varning för lågt diskutrymme</translation>
</message> </message>
<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> <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> <translation>Det finns mindre än %1 GB ledigt diskutrymme den specificerade måladressen.</translation>
</message> </message>
<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> <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> <translation>Du bör frigöra mer diskutrymme innan du fortsätter med importen!</translation>
</message> </message>
<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> <source>Analyzing file(s), please wait...</source>
<translation>Analyserar fil(er), vänta...</translation> <translation>Analyserar fil(er), vänta...</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_CueImport.cpp" line="378"/> <location filename="../../src/Dialog_CueImport.cpp" line="381"/>
<source>Analysis Failed</source> <source>Analysis Failed</source>
<translation>Analys misslyckades</translation> <translation>Analys misslyckades</translation>
</message> </message>
<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> <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> <translation>Varning! Formatet vissa filer kunde inte avgöras!</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_CueImport.cpp" line="378"/> <location filename="../../src/Dialog_CueImport.cpp" line="381"/>
<source>Continue Anyway</source> <source>Continue Anyway</source>
<translation>Fortsätt ändå</translation> <translation>Fortsätt ändå</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_CueImport.cpp" line="378"/> <location filename="../../src/Dialog_CueImport.cpp" line="381"/>
<source>Abort</source> <source>Abort</source>
<translation>Avbryt</translation> <translation>Avbryt</translation>
</message> </message>
<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> <source>Splitting file(s), please wait...</source>
<translation>Delar fil(er), vänta...</translation> <translation>Delar fil(er), vänta...</translation>
</message> </message>
<message numerus="yes"> <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> <source>Process was aborted by the user after %n track(s)!</source>
<translation> <translation>
<numerusform>Åtgärden avbröts av användaren efter %n spår!</numerusform> <numerusform>Åtgärden avbröts av användaren efter %n spår!</numerusform>
@ -611,12 +611,12 @@
</translation> </translation>
</message> </message>
<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> <source>An unexpected error has occured while splitting the Cue Sheet!</source>
<translation>Ett oväntat fel uppstod vid delningen av cue-filen!</translation> <translation>Ett oväntat fel uppstod vid delningen av cue-filen!</translation>
</message> </message>
<message numerus="yes"> <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> <source>Imported %n track(s) from the Cue Sheet.</source>
<translation> <translation>
<numerusform>Importerade %n spår från cue-filen.</numerusform> <numerusform>Importerade %n spår från cue-filen.</numerusform>
@ -624,7 +624,7 @@
</translation> </translation>
</message> </message>
<message numerus="yes"> <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> <source>Skipped %n track(s).</source>
<translation> <translation>
<numerusform>Hoppade över %n spår.</numerusform> <numerusform>Hoppade över %n spår.</numerusform>
@ -632,7 +632,7 @@
</translation> </translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_CueImport.cpp" line="419"/> <location filename="../../src/Dialog_CueImport.cpp" line="422"/>
<source>Cue Sheet Completed</source> <source>Cue Sheet Completed</source>
<translation>cue-fil färdigbearbetad</translation> <translation>cue-fil färdigbearbetad</translation>
</message> </message>
@ -689,44 +689,44 @@
<context> <context>
<name>CueSheetModel</name> <name>CueSheetModel</name>
<message> <message>
<location filename="../../src/Model_CueSheet.cpp" line="211"/> <location filename="../../src/Model_CueSheet.cpp" line="199"/>
<source>No.</source> <source>No.</source>
<translation>Nr.</translation> <translation>Nr.</translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_CueSheet.cpp" line="214"/> <location filename="../../src/Model_CueSheet.cpp" line="202"/>
<source>File / Track</source> <source>File / Track</source>
<translation>Fil / Spår</translation> <translation>Fil / Spår</translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_CueSheet.cpp" line="217"/> <location filename="../../src/Model_CueSheet.cpp" line="205"/>
<source>Index</source> <source>Index</source>
<translation>Index</translation> <translation>Index</translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_CueSheet.cpp" line="220"/> <location filename="../../src/Model_CueSheet.cpp" line="208"/>
<source>Duration</source> <source>Duration</source>
<translation>Varaktighet</translation> <translation>Varaktighet</translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_CueSheet.cpp" line="246"/> <location filename="../../src/Model_CueSheet.cpp" line="234"/>
<source>File %1</source> <source>File %1</source>
<translation>Fil %1</translation> <translation>Fil %1</translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_CueSheet.cpp" line="261"/> <location filename="../../src/Model_CueSheet.cpp" line="250"/>
<source>Track %1</source> <source>Track %1</source>
<translation>Spår %1</translation> <translation>Spår %1</translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_CueSheet.cpp" line="270"/> <location filename="../../src/Model_CueSheet.cpp" line="259"/>
<location filename="../../src/Model_CueSheet.cpp" line="278"/> <location filename="../../src/Model_CueSheet.cpp" line="267"/>
<source>Unknown Artist</source> <source>Unknown Artist</source>
<translation>Okänd artist</translation> <translation>Okänd artist</translation>
</message> </message>
<message> <message>
<location filename="../../src/Model_CueSheet.cpp" line="274"/> <location filename="../../src/Model_CueSheet.cpp" line="263"/>
<location filename="../../src/Model_CueSheet.cpp" line="278"/> <location filename="../../src/Model_CueSheet.cpp" line="267"/>
<source>Unknown Title</source> <source>Unknown Title</source>
<translation>Okänd titel</translation> <translation>Okänd titel</translation>
</message> </message>
@ -3310,23 +3310,23 @@
<context> <context>
<name>QApplication</name> <name>QApplication</name>
<message> <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> <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> <translation>EXE-filen &apos;%1&apos; stöder inte Windows kompatibilitetsläge.</translation>
</message> </message>
<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> <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> <translation>EXE-filen &apos;%1&apos; kräver Qt v%2, du har Qt v%3.</translation>
</message> </message>
<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> <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> <translation>EXE-filen &apos;%1&apos; är byggd för Qt &apos;%2&apos;, du har Qt &apos;%3&apos;.</translation>
</message> </message>
<message> <message>
<location filename="../../src/Global.cpp" line="1172"/> <location filename="../../src/Global.cpp" line="1205"/>
<location filename="../../src/Global.cpp" line="1199"/> <location filename="../../src/Global.cpp" line="1232"/>
<source>Executable &apos;%1&apos; requires Windows 2000 or later.</source> <source>Executable &apos;%1&apos; requires Windows 2000 or later.</source>
<translation>EXE-filen &apos;%1&apos; kräver Windows 2000 eller senare.</translation> <translation>EXE-filen &apos;%1&apos; kräver Windows 2000 eller senare.</translation>
</message> </message>

View File

@ -34,7 +34,7 @@
#define VER_LAMEXP_MINOR_LO 9 #define VER_LAMEXP_MINOR_LO 9
#define VER_LAMEXP_TYPE Alpha #define VER_LAMEXP_TYPE Alpha
#define VER_LAMEXP_PATCH 2 #define VER_LAMEXP_PATCH 2
#define VER_LAMEXP_BUILD 1382 #define VER_LAMEXP_BUILD 1385
#define VER_LAMEXP_CONFG 1348 #define VER_LAMEXP_CONFG 1348
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////

View File

@ -233,8 +233,11 @@ void CueImportDialog::modelChanged(void)
{ {
ui->treeView->expandAll(); ui->treeView->expandAll();
ui->editOutputDir->setText(QDir::toNativeSeparators(m_outputDir)); ui->editOutputDir->setText(QDir::toNativeSeparators(m_outputDir));
ui->labelArtist->setText(m_model->getAlbumPerformer().isEmpty() ? tr("Unknown Artist") : m_model->getAlbumPerformer()); if(const AudioFileModel_MetaInfo *albumInfo = m_model->getAlbumInfo())
ui->labelAlbum->setText(m_model->getAlbumTitle().isEmpty() ? tr("Unknown Album") : m_model->getAlbumTitle()); {
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) void CueImportDialog::browseButtonClicked(void)

View File

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

View File

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

View File

@ -32,6 +32,18 @@
const unsigned int AudioFileModel::BITDEPTH_IEEE_FLOAT32 = UINT_MAX-1; 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 // Audio File - Meta Info
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
@ -43,40 +55,50 @@ AudioFileModel_MetaInfo::AudioFileModel_MetaInfo(void)
AudioFileModel_MetaInfo::AudioFileModel_MetaInfo(const AudioFileModel_MetaInfo &model) AudioFileModel_MetaInfo::AudioFileModel_MetaInfo(const AudioFileModel_MetaInfo &model)
{ {
m_titel = model.m_titel; m_titel = model.m_titel;
m_artist = model.m_artist; m_artist = model.m_artist;
m_album = model.m_album; m_album = model.m_album;
m_genre = model.m_genre; m_genre = model.m_genre;
m_comment = model.m_comment; m_comment = model.m_comment;
m_cover = model.m_cover; m_cover = model.m_cover;
m_year = model.m_year; m_year = model.m_year;
m_position = model.m_position; m_position = model.m_position;
} }
AudioFileModel_MetaInfo &AudioFileModel_MetaInfo::operator=(const AudioFileModel_MetaInfo &model) AudioFileModel_MetaInfo &AudioFileModel_MetaInfo::operator=(const AudioFileModel_MetaInfo &model)
{ {
m_titel = model.m_titel; m_titel = model.m_titel;
m_artist = model.m_artist; m_artist = model.m_artist;
m_album = model.m_album; m_album = model.m_album;
m_genre = model.m_genre; m_genre = model.m_genre;
m_comment = model.m_comment; m_comment = model.m_comment;
m_cover = model.m_cover; m_cover = model.m_cover;
m_year = model.m_year; m_year = model.m_year;
m_position = model.m_position; m_position = model.m_position;
return (*this); 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; qDebug("\n-------[AudioFileModel_MetaInfo::update]-------");
if(!model.m_artist.isEmpty()) m_artist = model.m_artist; qDebug("Updating (%p):", this);
if(!model.m_album.isEmpty()) m_album = model.m_album; print();
if(!model.m_genre.isEmpty()) m_genre = model.m_genre; qDebug("\nUpdating with (%p):", &model);
if(!model.m_comment.isEmpty()) m_comment = model.m_comment; model.print();
if(!model.m_cover.isEmpty()) m_cover = model.m_cover;
if(model.m_year > 0) m_year = model.m_year; if((!model.m_titel.isEmpty()) && (replace || m_titel.isEmpty())) m_titel = model.m_titel;
if(model.m_position > 0) m_position = model.m_position; 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) AudioFileModel_MetaInfo::~AudioFileModel_MetaInfo(void)
@ -96,6 +118,18 @@ void AudioFileModel_MetaInfo::reset(void)
m_position = 0; 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 // Audio File - Technical Info
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
@ -107,35 +141,34 @@ AudioFileModel_TechInfo::AudioFileModel_TechInfo(void)
AudioFileModel_TechInfo::AudioFileModel_TechInfo(const AudioFileModel_TechInfo &model) AudioFileModel_TechInfo::AudioFileModel_TechInfo(const AudioFileModel_TechInfo &model)
{ {
m_containerType = model.m_containerType; m_containerType = model.m_containerType;
m_containerProfile = model.m_containerProfile; m_containerProfile = model.m_containerProfile;
m_audioType = model.m_audioType; m_audioType = model.m_audioType;
m_audioProfile = model.m_audioProfile; m_audioProfile = model.m_audioProfile;
m_audioVersion = model.m_audioVersion; m_audioVersion = model.m_audioVersion;
m_audioEncodeLib = model.m_audioEncodeLib; m_audioEncodeLib = model.m_audioEncodeLib;
m_audioSamplerate = model.m_audioSamplerate; m_audioSamplerate = model.m_audioSamplerate;
m_audioChannels = model.m_audioChannels; m_audioChannels = model.m_audioChannels;
m_audioBitdepth = model.m_audioBitdepth; m_audioBitdepth = model.m_audioBitdepth;
m_audioBitrate = model.m_audioBitrate; m_audioBitrate = model.m_audioBitrate;
m_audioBitrateMode = model.m_audioBitrateMode; m_audioBitrateMode = model.m_audioBitrateMode;
m_duration = model.m_duration; m_duration = model.m_duration;
} }
AudioFileModel_TechInfo &AudioFileModel_TechInfo::operator=(const AudioFileModel_TechInfo &model) 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_containerProfile = model.m_containerProfile;
m_audioType = model.m_audioType; m_audioType = model.m_audioType;
m_audioProfile = model.m_audioProfile; m_audioProfile = model.m_audioProfile;
m_audioVersion = model.m_audioVersion; m_audioVersion = model.m_audioVersion;
m_audioEncodeLib = model.m_audioEncodeLib; m_audioEncodeLib = model.m_audioEncodeLib;
m_audioSamplerate = model.m_audioSamplerate; m_audioSamplerate = model.m_audioSamplerate;
m_audioChannels = model.m_audioChannels; m_audioChannels = model.m_audioChannels;
m_audioBitdepth = model.m_audioBitdepth; m_audioBitdepth = model.m_audioBitdepth;
m_audioBitrate = model.m_audioBitrate; m_audioBitrate = model.m_audioBitrate;
m_audioBitrateMode = model.m_audioBitrateMode; m_audioBitrateMode = model.m_audioBitrateMode;
m_duration = model.m_duration; m_duration = model.m_duration;
return (*this); return (*this);
} }

View File

@ -65,7 +65,10 @@ public:
void reset(void); void reset(void);
//Update //Update
void update(const AudioFileModel_MetaInfo &model); void update(const AudioFileModel_MetaInfo &model, const bool replace);
//Debug
void print(void) const;
private: private:
QString m_titel; QString m_titel;

View File

@ -21,6 +21,7 @@
#include "Global.h" #include "Global.h"
#include "Model_CueSheet.h" #include "Model_CueSheet.h"
#include "Model_AudioFile.h"
#include "Genres.h" #include "Genres.h"
#include <QApplication> #include <QApplication>
@ -53,38 +54,32 @@ class CueSheetTrack : public CueSheetItem
public: public:
CueSheetTrack(CueSheetFile *parent, int trackNo) CueSheetTrack(CueSheetFile *parent, int trackNo)
: :
m_parent(parent), m_parent(parent)
m_trackNo(trackNo)
{ {
m_startIndex = std::numeric_limits<double>::quiet_NaN(); m_startIndex = std::numeric_limits<double>::quiet_NaN();
m_duration = std::numeric_limits<double>::infinity(); 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 startIndex(void) { return m_startIndex; }
double duration(void) { return m_duration; } double duration(void) { return m_duration; }
QString title(void) { return m_title; } AudioFileModel_MetaInfo &metaInfo(void) { return m_metaInfo; }
QString performer(void) { return m_performer; }
QString genre(void) { return m_genre; } //Setter
unsigned int year(void) { return m_year; }
CueSheetFile *parent(void) { return m_parent; }
void setStartIndex(double startIndex) { m_startIndex = startIndex; } void setStartIndex(double startIndex) { m_startIndex = startIndex; }
void setDuration(double duration) { m_duration = duration; } 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; } //Misc
void setGenre(const QString &genre, bool update = false) { if(!update || (m_genre.isEmpty() && !m_genre.isEmpty())) m_genre = genre; } virtual bool isValid(void) { return !(_isnan(m_startIndex) || (m_metaInfo.position() == 0)); }
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)); }
virtual const char* type(void) { return "CueSheetTrack"; } virtual const char* type(void) { return "CueSheetTrack"; }
private: private:
int m_trackNo;
double m_startIndex; double m_startIndex;
double m_duration; double m_duration;
QString m_title; AudioFileModel_MetaInfo m_metaInfo;
QString m_performer; CueSheetFile *const m_parent;
QString m_genre;
unsigned int m_year;
CueSheetFile *m_parent;
}; };
class CueSheetFile : public CueSheetItem class CueSheetFile : public CueSheetItem
@ -92,13 +87,20 @@ class CueSheetFile : public CueSheetItem
public: public:
CueSheetFile(const QString &fileName) : m_fileName(fileName) {} CueSheetFile(const QString &fileName) : m_fileName(fileName) {}
~CueSheetFile(void) { while(!m_tracks.isEmpty()) delete m_tracks.takeLast(); } ~CueSheetFile(void) { while(!m_tracks.isEmpty()) delete m_tracks.takeLast(); }
//Getter
QString fileName(void) { return m_fileName; } 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); } CueSheetTrack *track(int index) { return m_tracks.at(index); }
int trackCount(void) { return m_tracks.count(); } 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 bool isValid(void) { return m_tracks.count() > 0; }
virtual const char* type(void) { return "CueSheetFile"; } virtual const char* type(void) { return "CueSheetFile"; }
private: private:
const QString m_fileName; const QString m_fileName;
QList<CueSheetTrack*> m_tracks; QList<CueSheetTrack*> m_tracks;
@ -115,21 +117,7 @@ CueSheetModel::CueSheetModel()
m_fileIcon(":/icons/music.png"), m_fileIcon(":/icons/music.png"),
m_trackIcon(":/icons/control_play_blue.png") m_trackIcon(":/icons/control_play_blue.png")
{ {
int trackNo = 0; /*nothing to do*/
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);
}
} }
CueSheetModel::~CueSheetModel(void) CueSheetModel::~CueSheetModel(void)
@ -255,23 +243,24 @@ QVariant CueSheetModel::data(const QModelIndex &index, int role) const
} }
else if(CueSheetTrack *trackPtr = dynamic_cast<CueSheetTrack*>(item)) else if(CueSheetTrack *trackPtr = dynamic_cast<CueSheetTrack*>(item))
{ {
const AudioFileModel_MetaInfo &trackInfo = trackPtr->metaInfo();
switch(index.column()) switch(index.column())
{ {
case 0: 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; break;
case 1: 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 else
{ {
@ -399,7 +388,7 @@ int CueSheetModel::getTrackCount(int fileIndex)
return m_files.at(fileIndex)->trackCount(); 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); QMutexLocker lock(&m_mutex);
@ -408,14 +397,14 @@ int CueSheetModel::getTrackNo(int fileIndex, int trackIndex)
CueSheetFile *currentFile = m_files.at(fileIndex); CueSheetFile *currentFile = m_files.at(fileIndex);
if(trackIndex >= 0 && trackIndex < currentFile->trackCount()) 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); QMutexLocker lock(&m_mutex);
@ -430,101 +419,19 @@ void CueSheetModel::getTrackIndex(int fileIndex, int trackIndex, double *startIn
CueSheetTrack *currentTrack = currentFile->track(trackIndex); CueSheetTrack *currentTrack = currentFile->track(trackIndex);
*startIndex = currentTrack->startIndex(); *startIndex = currentTrack->startIndex();
*duration = currentTrack->duration(); *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();
}
QString CueSheetModel::getTrackTitle(int fileIndex, int trackIndex)
{ {
QMutexLocker lock(&m_mutex); QMutexLocker lock(&m_mutex);
return &m_albumInfo;
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 // Cue Sheet Parser
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
@ -594,10 +501,7 @@ int CueSheetModel::parseCueFile(QFile &cueFile, const QDir &baseDir, QCoreApplic
CueSheetFile *currentFile = NULL; CueSheetFile *currentFile = NULL;
CueSheetTrack *currentTrack = NULL; CueSheetTrack *currentTrack = NULL;
m_albumTitle.clear(); m_albumInfo.reset();
m_albumPerformer.clear();
m_albumGenre.clear();
m_albumYear = 0;
//Loop over the Cue Sheet until all lines were processed //Loop over the Cue Sheet until all lines were processed
for(int lines = 0; lines < INT_MAX; lines++) for(int lines = 0; lines < INT_MAX; lines++)
@ -720,12 +624,12 @@ int CueSheetModel::parseCueFile(QFile &cueFile, const QDir &baseDir, QCoreApplic
{ {
if(bPreamble) if(bPreamble)
{ {
m_albumTitle = UNQUOTE(rxTitle.cap(1)).simplified(); m_albumInfo.setAlbum(UNQUOTE(rxTitle.cap(1)).simplified());
} }
else if(currentFile && currentTrack) else if(currentFile && currentTrack)
{ {
qDebug("%03d Title: <%s>", lines, rxTitle.cap(1).toUtf8().constData()); 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; continue;
} }
@ -735,12 +639,12 @@ int CueSheetModel::parseCueFile(QFile &cueFile, const QDir &baseDir, QCoreApplic
{ {
if(bPreamble) if(bPreamble)
{ {
m_albumPerformer = UNQUOTE(rxPerformer.cap(1)).simplified(); m_albumInfo.setArtist(UNQUOTE(rxPerformer.cap(1)).simplified());
} }
else if(currentFile && currentTrack) else if(currentFile && currentTrack)
{ {
qDebug("%03d Title: <%s>", lines, rxPerformer.cap(1).toUtf8().constData()); 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; continue;
} }
@ -755,7 +659,7 @@ int CueSheetModel::parseCueFile(QFile &cueFile, const QDir &baseDir, QCoreApplic
{ {
if(temp.compare(g_lamexp_generes[i], Qt::CaseInsensitive) == 0) 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; break;
} }
} }
@ -768,7 +672,7 @@ int CueSheetModel::parseCueFile(QFile &cueFile, const QDir &baseDir, QCoreApplic
{ {
if(temp.compare(g_lamexp_generes[i], Qt::CaseInsensitive) == 0) 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; break;
} }
} }
@ -783,14 +687,14 @@ int CueSheetModel::parseCueFile(QFile &cueFile, const QDir &baseDir, QCoreApplic
{ {
bool ok = false; bool ok = false;
unsigned int temp = rxYear.cap(1).toUInt(&ok); unsigned int temp = rxYear.cap(1).toUInt(&ok);
if(ok) m_albumYear = temp; if(ok) m_albumInfo.setYear(temp);
} }
else if(currentFile && currentTrack) else if(currentFile && currentTrack)
{ {
qDebug("%03d Year: <%s>", lines, rxPerformer.cap(1).toUtf8().constData()); qDebug("%03d Year: <%s>", lines, rxPerformer.cap(1).toUtf8().constData());
bool ok = false; bool ok = false;
unsigned int temp = rxYear.cap(1).toUInt(&ok); unsigned int temp = rxYear.cap(1).toUInt(&ok);
if(ok) currentTrack->setYear(temp); if(ok) currentTrack->metaInfo().setYear(temp);
} }
continue; continue;
} }
@ -870,7 +774,7 @@ int CueSheetModel::parseCueFile(QFile &cueFile, const QDir &baseDir, QCoreApplic
{ {
for(int j = 0; j < nTracks; j++) for(int j = 0; j < nTracks; j++)
{ {
int currentTrackNo = currentFile->track(j)->trackNo(); int currentTrackNo = currentFile->track(j)->metaInfo().position();
if(currentTrackNo > 99) if(currentTrackNo > 99)
{ {
qWarning("Track #%02d is invalid (maximum is 99), Cue Sheet is inconsistent!", currentTrackNo); qWarning("Track #%02d is invalid (maximum is 99), Cue Sheet is inconsistent!", currentTrackNo);

View File

@ -63,16 +63,9 @@ public:
int CueSheetModel::getFileCount(void); int CueSheetModel::getFileCount(void);
QString getFileName(int fileIndex); QString getFileName(int fileIndex);
int getTrackCount(int fileIndex); int getTrackCount(int fileIndex);
int getTrackNo(int fileIndex, int trackIndex); const AudioFileModel_MetaInfo *getTrackInfo(int fileIndex, int trackIndex);
void getTrackIndex(int fileIndex, int trackIndex, double *startIndex, double *duration); const AudioFileModel_MetaInfo *getAlbumInfo(void);
QString getTrackPerformer(int fileIndex, int trackIndex); bool getTrackIndex(int fileIndex, int trackIndex, double *startIndex, double *duration);
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);
//Cue Sheet functions //Cue Sheet functions
int loadCueSheet(const QString &cueFile, QCoreApplication *application = NULL, QTextCodec *forceCodec= NULL); int loadCueSheet(const QString &cueFile, QCoreApplication *application = NULL, QTextCodec *forceCodec= NULL);
@ -85,10 +78,7 @@ private:
static QMutex m_mutex; static QMutex m_mutex;
QList<CueSheetFile*> m_files; QList<CueSheetFile*> m_files;
QString m_albumTitle; AudioFileModel_MetaInfo m_albumInfo;
QString m_albumPerformer;
QString m_albumGenre;
unsigned int m_albumYear;
const QIcon m_fileIcon; const QIcon m_fileIcon;
const QIcon m_trackIcon; const QIcon m_trackIcon;

View File

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

View File

@ -165,10 +165,7 @@ void CueSplitter::run()
emit progressMaxChanged(nTracksTotal); emit progressMaxChanged(nTracksTotal);
emit progressValChanged(0); emit progressValChanged(0);
QString albumPerformer = m_model->getAlbumPerformer(); const AudioFileModel_MetaInfo *albumInfo = m_model->getAlbumInfo();
QString albumTitle = m_model->getAlbumTitle();
QString albumGenre = m_model->getAlbumGenre();
unsigned int albumYear = m_model->getAlbumYear();
//Now split all files //Now split all files
for(int i = 0; i < nFiles; i++) for(int i = 0; i < nFiles; i++)
@ -180,8 +177,8 @@ void CueSplitter::run()
//Process all tracks //Process all tracks
for(int j = 0; j < nTracks; j++) for(int j = 0; j < nTracks; j++)
{ {
emit progressValChanged(++nTracksComplete); const AudioFileModel_MetaInfo *trackInfo = m_model->getTrackInfo(i, j);
int trackNo = m_model->getTrackNo(i, j); const int trackNo = trackInfo->position();
double trackOffset = std::numeric_limits<double>::quiet_NaN(); double trackOffset = std::numeric_limits<double>::quiet_NaN();
double trackLength = std::numeric_limits<double>::quiet_NaN(); double trackLength = std::numeric_limits<double>::quiet_NaN();
m_model->getTrackIndex(i, j, &trackOffset, &trackLength); m_model->getTrackIndex(i, j, &trackOffset, &trackLength);
@ -193,39 +190,14 @@ void CueSplitter::run()
} }
//Setup meta info //Setup meta info
AudioFileModel_MetaInfo trackMetaInfo; /*QString().sprintf("cue://File%02d/Track%02d", i, j)*/; AudioFileModel_MetaInfo trackMetaInfo(*trackInfo);
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);
//Apply album meta data on files //Apply album meta data on files
if(trackMetaInfo.title().trimmed().isEmpty()) if(trackMetaInfo.title().trimmed().isEmpty())
{ {
trackMetaInfo.setTitle(QString().sprintf("Track %02d", trackNo)); trackMetaInfo.setTitle(QString().sprintf("Track %02d", trackNo));
} }
if(!albumTitle.isEmpty()) trackMetaInfo.update(*albumInfo, false);
{
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)));
}
//Generate output file name //Generate output file name
QString trackTitle = trackMetaInfo.title().isEmpty() ? QString().sprintf("Track %02d", trackNo) : trackMetaInfo.title(); QString trackTitle = trackMetaInfo.title().isEmpty() ? QString().sprintf("Track %02d", trackNo) : trackMetaInfo.title();
@ -238,6 +210,7 @@ void CueSplitter::run()
//Call split function //Call split function
emit fileSelected(shortName(QFileInfo(outputFile).fileName())); emit fileSelected(shortName(QFileInfo(outputFile).fileName()));
splitFile(outputFile, trackNo, trackFile, trackOffset, trackLength, trackMetaInfo, maxProgress); splitFile(outputFile, trackNo, trackFile, trackOffset, trackLength, trackMetaInfo, maxProgress);
emit progressValChanged(++nTracksComplete);
if(m_abortFlag) if(m_abortFlag)
{ {
@ -248,6 +221,9 @@ void CueSplitter::run()
} }
} }
emit progressValChanged(nTracksTotal);
lamexp_sleep(333);
qDebug("All files were split.\n"); qDebug("All files were split.\n");
m_bSuccess = true; m_bSuccess = true;
} }
@ -258,7 +234,7 @@ void CueSplitter::run()
void CueSplitter::handleUpdate(int progress) 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("Length: <%f> <%s>", length, indexToString(length).toLatin1().constData());
qDebug("Artist: <%s>", metaInfo.artist().toUtf8().constData()); qDebug("Artist: <%s>", metaInfo.artist().toUtf8().constData());
qDebug("Title: <%s>", metaInfo.title().toUtf8().constData()); qDebug("Title: <%s>", metaInfo.title().toUtf8().constData());
qDebug("Album: <%s>", metaInfo.album().toUtf8().constData());
if(!m_decompressedFiles.contains(file)) 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]; QString decompressedInput = m_decompressedFiles[file];
qDebug("Input: <%s>", decompressedInput.toUtf8().constData()); 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.setMetaInfo(metaInfo);
outFileInfo.setFilePath(output);
outFileInfo.techInfo().setContainerType("Wave"); AudioFileModel_TechInfo &outFileTechInfo = outFileInfo.techInfo();
outFileInfo.techInfo().setAudioType("PCM"); outFileTechInfo.setContainerType("Wave");
outFileTechInfo.setAudioType("PCM");
outFileTechInfo.setDuration(static_cast<unsigned int>(abs(length)));
QStringList args; QStringList args;
args << "-S" << "-V3"; args << "-S" << "-V3";
@ -359,7 +338,7 @@ void CueSplitter::splitFile(const QString &output, const int trackNo, const QStr
if(ok) if(ok)
{ {
maxProgress = qMax(maxProgress, progress); 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) else if(rxChannels.lastIndexIn(text) >= 0)