Added UTF-16 (LE and BE) support to Playlist and Cue Sheet import.
This commit is contained in:
parent
c5a28190c4
commit
388f98e90a
@ -366,7 +366,7 @@
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="110"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="110"/>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="199"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="207"/>
|
||||||
<source>Failed to load the Cue Sheet file:</source>
|
<source>Failed to load the Cue Sheet file:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
@ -377,156 +377,156 @@
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="111"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="111"/>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="200"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="208"/>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="385"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="393"/>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="389"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="397"/>
|
||||||
<source>Cue Sheet Error</source>
|
<source>Cue Sheet Error</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="131"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="139"/>
|
||||||
<source>(System Default)</source>
|
<source>(System Default)</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="138"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="146"/>
|
||||||
<source>Select ANSI Codepage for Cue Sheet file:</source>
|
<source>Select ANSI Codepage for Cue Sheet file:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="139"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="147"/>
|
||||||
<source>OK</source>
|
<source>OK</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="140"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="148"/>
|
||||||
<source>Cancel</source>
|
<source>Cancel</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="181"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="189"/>
|
||||||
<source>An unknown error has occured!</source>
|
<source>An unknown error has occured!</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="186"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="194"/>
|
||||||
<source>The file could not be opened for reading. Make sure you have the required rights!</source>
|
<source>The file could not be opened for reading. Make sure you have the required rights!</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="189"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="197"/>
|
||||||
<source>The provided file does not look like a valid Cue Sheet disc image file!</source>
|
<source>The provided file does not look like a valid Cue Sheet disc image file!</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="192"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="200"/>
|
||||||
<source>Could not find any supported audio track in the Cue Sheet image!</source>
|
<source>Could not find any supported audio track in the Cue Sheet image!</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="192"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="200"/>
|
||||||
<source>Note that LameXP can not handle "binary" Cue Sheet images.</source>
|
<source>Note that LameXP can not handle "binary" Cue Sheet images.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="195"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="203"/>
|
||||||
<source>The selected Cue Sheet file contains inconsistent information. Take care!</source>
|
<source>The selected Cue Sheet file contains inconsistent information. Take care!</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="215"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="223"/>
|
||||||
<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="216"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="224"/>
|
||||||
<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="231"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="239"/>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="235"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="243"/>
|
||||||
<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="261"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="269"/>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="268"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="276"/>
|
||||||
<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="261"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="269"/>
|
||||||
<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="268"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="276"/>
|
||||||
<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="282"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="290"/>
|
||||||
<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="282"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="290"/>
|
||||||
<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="282"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="290"/>
|
||||||
<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="352"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="360"/>
|
||||||
<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="357"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="365"/>
|
||||||
<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="357"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="365"/>
|
||||||
<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="357"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="365"/>
|
||||||
<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="357"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="365"/>
|
||||||
<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="380"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="388"/>
|
||||||
<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>
|
<message>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="385"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="393"/>
|
||||||
<source>Process was aborted by the user after %1 track(s)!</source>
|
<source>Process was aborted by the user after %1 track(s)!</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="389"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="397"/>
|
||||||
<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>
|
<message>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="393"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="401"/>
|
||||||
<source>Imported %1 track(s) from the Cue Sheet and skipped %2 track(s).</source>
|
<source>Imported %1 track(s) from the Cue Sheet and skipped %2 track(s).</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="394"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="402"/>
|
||||||
<source>Cue Sheet Completed</source>
|
<source>Cue Sheet Completed</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
@ -583,44 +583,44 @@
|
|||||||
<context>
|
<context>
|
||||||
<name>CueSheetModel</name>
|
<name>CueSheetModel</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/Model_CueSheet.cpp" line="209"/>
|
<location filename="../../src/Model_CueSheet.cpp" line="210"/>
|
||||||
<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="212"/>
|
<location filename="../../src/Model_CueSheet.cpp" line="213"/>
|
||||||
<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="215"/>
|
<location filename="../../src/Model_CueSheet.cpp" line="216"/>
|
||||||
<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="218"/>
|
<location filename="../../src/Model_CueSheet.cpp" line="219"/>
|
||||||
<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="244"/>
|
<location filename="../../src/Model_CueSheet.cpp" line="245"/>
|
||||||
<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="259"/>
|
<location filename="../../src/Model_CueSheet.cpp" line="260"/>
|
||||||
<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="268"/>
|
<location filename="../../src/Model_CueSheet.cpp" line="269"/>
|
||||||
<location filename="../../src/Model_CueSheet.cpp" line="276"/>
|
<location filename="../../src/Model_CueSheet.cpp" line="277"/>
|
||||||
<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="272"/>
|
<location filename="../../src/Model_CueSheet.cpp" line="273"/>
|
||||||
<location filename="../../src/Model_CueSheet.cpp" line="276"/>
|
<location filename="../../src/Model_CueSheet.cpp" line="277"/>
|
||||||
<source>Unknown Title</source>
|
<source>Unknown Title</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -366,7 +366,7 @@
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="110"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="110"/>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="199"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="207"/>
|
||||||
<source>Failed to load the Cue Sheet file:</source>
|
<source>Failed to load the Cue Sheet file:</source>
|
||||||
<translation type="unfinished">Ładowanie pliku Cue Sheet zakończone niepowodzeniem:</translation>
|
<translation type="unfinished">Ładowanie pliku Cue Sheet zakończone niepowodzeniem:</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -377,156 +377,156 @@
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="111"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="111"/>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="200"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="208"/>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="385"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="393"/>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="389"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="397"/>
|
||||||
<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>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="131"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="139"/>
|
||||||
<source>(System Default)</source>
|
<source>(System Default)</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="138"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="146"/>
|
||||||
<source>Select ANSI Codepage for Cue Sheet file:</source>
|
<source>Select ANSI Codepage for Cue Sheet file:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="139"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="147"/>
|
||||||
<source>OK</source>
|
<source>OK</source>
|
||||||
<translation type="unfinished">OK</translation>
|
<translation type="unfinished">OK</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="140"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="148"/>
|
||||||
<source>Cancel</source>
|
<source>Cancel</source>
|
||||||
<translation type="unfinished">Anuluj</translation>
|
<translation type="unfinished">Anuluj</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="181"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="189"/>
|
||||||
<source>An unknown error has occured!</source>
|
<source>An unknown error has occured!</source>
|
||||||
<translation type="unfinished">Wystąpił nieokreśłony błąd!</translation>
|
<translation type="unfinished">Wystąpił nieokreśłony błąd!</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="186"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="194"/>
|
||||||
<source>The file could not be opened for reading. Make sure you have the required rights!</source>
|
<source>The file could not be opened for reading. Make sure you have the required rights!</source>
|
||||||
<translation type="unfinished">Plik nie mógł zostać odczytany. Upewnij się że masz prawo odczytu!</translation>
|
<translation type="unfinished">Plik nie mógł zostać odczytany. Upewnij się że masz prawo odczytu!</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="189"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="197"/>
|
||||||
<source>The provided file does not look like a valid Cue Sheet disc image file!</source>
|
<source>The provided file does not look like a valid Cue Sheet disc image file!</source>
|
||||||
<translation type="unfinished">Dany plik nie wydaje się prawidłowym plikiem obrazu Cue Sheet!</translation>
|
<translation type="unfinished">Dany plik nie wydaje się prawidłowym plikiem obrazu Cue Sheet!</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="192"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="200"/>
|
||||||
<source>Could not find any supported audio track in the Cue Sheet image!</source>
|
<source>Could not find any supported audio track in the Cue Sheet image!</source>
|
||||||
<translation type="unfinished">Nie znaleziono wspieranego formatu dźwięku w żadnej ze ścieżek obrazu Cue Sheet!</translation>
|
<translation type="unfinished">Nie znaleziono wspieranego formatu dźwięku w żadnej ze ścieżek obrazu Cue Sheet!</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="192"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="200"/>
|
||||||
<source>Note that LameXP can not handle "binary" Cue Sheet images.</source>
|
<source>Note that LameXP can not handle "binary" Cue Sheet images.</source>
|
||||||
<translation type="unfinished">LameXP nie radzi sobie z formatem "binarnym" obrazu Cue Sheet.</translation>
|
<translation type="unfinished">LameXP nie radzi sobie z formatem "binarnym" obrazu Cue Sheet.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="195"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="203"/>
|
||||||
<source>The selected Cue Sheet file contains inconsistent information. Take care!</source>
|
<source>The selected Cue Sheet file contains inconsistent information. Take care!</source>
|
||||||
<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="215"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="223"/>
|
||||||
<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="216"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="224"/>
|
||||||
<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="231"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="239"/>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="235"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="243"/>
|
||||||
<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="261"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="269"/>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="268"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="276"/>
|
||||||
<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="261"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="269"/>
|
||||||
<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="268"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="276"/>
|
||||||
<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="282"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="290"/>
|
||||||
<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="282"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="290"/>
|
||||||
<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="282"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="290"/>
|
||||||
<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="352"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="360"/>
|
||||||
<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="357"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="365"/>
|
||||||
<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="357"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="365"/>
|
||||||
<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="357"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="365"/>
|
||||||
<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="357"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="365"/>
|
||||||
<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="380"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="388"/>
|
||||||
<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>
|
<message>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="385"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="393"/>
|
||||||
<source>Process was aborted by the user after %1 track(s)!</source>
|
<source>Process was aborted by the user after %1 track(s)!</source>
|
||||||
<translation type="unfinished">Proces został przerwany przez użytkownika po imporcie %1 ścieżek!</translation>
|
<translation type="unfinished">Proces został przerwany przez użytkownika po imporcie %1 ścieżek!</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="389"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="397"/>
|
||||||
<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>
|
<message>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="393"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="401"/>
|
||||||
<source>Imported %1 track(s) from the Cue Sheet and skipped %2 track(s).</source>
|
<source>Imported %1 track(s) from the Cue Sheet and skipped %2 track(s).</source>
|
||||||
<translation type="unfinished">Zaimportowano %1 ścieżek i opuszczono %2 ścieżek z pliku Cue Sheet.</translation>
|
<translation type="unfinished">Zaimportowano %1 ścieżek i opuszczono %2 ścieżek z pliku Cue Sheet.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/Dialog_CueImport.cpp" line="394"/>
|
<location filename="../../src/Dialog_CueImport.cpp" line="402"/>
|
||||||
<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>
|
||||||
@ -583,44 +583,44 @@
|
|||||||
<context>
|
<context>
|
||||||
<name>CueSheetModel</name>
|
<name>CueSheetModel</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/Model_CueSheet.cpp" line="209"/>
|
<location filename="../../src/Model_CueSheet.cpp" line="210"/>
|
||||||
<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="212"/>
|
<location filename="../../src/Model_CueSheet.cpp" line="213"/>
|
||||||
<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="215"/>
|
<location filename="../../src/Model_CueSheet.cpp" line="216"/>
|
||||||
<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="218"/>
|
<location filename="../../src/Model_CueSheet.cpp" line="219"/>
|
||||||
<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="244"/>
|
<location filename="../../src/Model_CueSheet.cpp" line="245"/>
|
||||||
<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="259"/>
|
<location filename="../../src/Model_CueSheet.cpp" line="260"/>
|
||||||
<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="268"/>
|
<location filename="../../src/Model_CueSheet.cpp" line="269"/>
|
||||||
<location filename="../../src/Model_CueSheet.cpp" line="276"/>
|
<location filename="../../src/Model_CueSheet.cpp" line="277"/>
|
||||||
<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="272"/>
|
<location filename="../../src/Model_CueSheet.cpp" line="273"/>
|
||||||
<location filename="../../src/Model_CueSheet.cpp" line="276"/>
|
<location filename="../../src/Model_CueSheet.cpp" line="277"/>
|
||||||
<source>Unknown Title</source>
|
<source>Unknown Title</source>
|
||||||
<translation type="unfinished">Nieznany Tytuł</translation>
|
<translation type="unfinished">Nieznany Tytuł</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -29,8 +29,8 @@
|
|||||||
#define VER_LAMEXP_MINOR_HI 0
|
#define VER_LAMEXP_MINOR_HI 0
|
||||||
#define VER_LAMEXP_MINOR_LO 4
|
#define VER_LAMEXP_MINOR_LO 4
|
||||||
#define VER_LAMEXP_TYPE Alpha
|
#define VER_LAMEXP_TYPE Alpha
|
||||||
#define VER_LAMEXP_PATCH 8
|
#define VER_LAMEXP_PATCH 9
|
||||||
#define VER_LAMEXP_BUILD 807
|
#define VER_LAMEXP_BUILD 810
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
// Tool versions (minimum expected versions!)
|
// Tool versions (minimum expected versions!)
|
||||||
|
@ -120,12 +120,20 @@ int CueImportDialog::exec(void)
|
|||||||
|
|
||||||
QFile cueFile(cueFileInfo.canonicalFilePath());
|
QFile cueFile(cueFileInfo.canonicalFilePath());
|
||||||
cueFile.open(QIODevice::ReadOnly);
|
cueFile.open(QIODevice::ReadOnly);
|
||||||
QByteArray bomCheck = cueFile.isOpen() ? cueFile.peek(128) : QByteArray();
|
QByteArray bomCheck = cueFile.isOpen() ? cueFile.peek(16) : QByteArray();
|
||||||
|
|
||||||
if((!bomCheck.isEmpty()) && bomCheck.contains("\xef\xbb\xbf"))
|
if((!bomCheck.isEmpty()) && bomCheck.startsWith("\xef\xbb\xbf"))
|
||||||
{
|
{
|
||||||
codec = QTextCodec::codecForName("UTF-8");
|
codec = QTextCodec::codecForName("UTF-8");
|
||||||
}
|
}
|
||||||
|
else if((!bomCheck.isEmpty()) && bomCheck.startsWith("\xff\xfe"))
|
||||||
|
{
|
||||||
|
codec = QTextCodec::codecForName("UTF-16LE");
|
||||||
|
}
|
||||||
|
else if((!bomCheck.isEmpty()) && bomCheck.startsWith("\xfe\xff"))
|
||||||
|
{
|
||||||
|
codec = QTextCodec::codecForName("UTF-16BE");
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
const QString systemDefault = tr("(System Default)");
|
const QString systemDefault = tr("(System Default)");
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
#include <QFont>
|
#include <QFont>
|
||||||
#include <QTime>
|
#include <QTime>
|
||||||
#include <QTextCodec>
|
#include <QTextCodec>
|
||||||
|
#include <QTextStream>
|
||||||
|
|
||||||
#include <float.h>
|
#include <float.h>
|
||||||
#include <limits>
|
#include <limits>
|
||||||
@ -549,7 +550,7 @@ int CueSheetModel::loadCueSheet(const QString &cueFileName, QCoreApplication *ap
|
|||||||
|
|
||||||
int CueSheetModel::parseCueFile(QFile &cueFile, const QDir &baseDir, QCoreApplication *application, const QTextCodec *codec)
|
int CueSheetModel::parseCueFile(QFile &cueFile, const QDir &baseDir, QCoreApplication *application, const QTextCodec *codec)
|
||||||
{
|
{
|
||||||
cueFile.seek(0);
|
cueFile.reset();
|
||||||
qDebug("\n[Cue Sheet Import]");
|
qDebug("\n[Cue Sheet Import]");
|
||||||
bool bForceLatin1 = false;
|
bool bForceLatin1 = false;
|
||||||
|
|
||||||
@ -566,11 +567,17 @@ int CueSheetModel::parseCueFile(QFile &cueFile, const QDir &baseDir, QCoreApplic
|
|||||||
QByteArray testData = cueFile.peek(1048576);
|
QByteArray testData = cueFile.peek(1048576);
|
||||||
if((!testData.isEmpty()) && codec->toUnicode(testData.constData(), testData.size()).contains(replacementSymbol))
|
if((!testData.isEmpty()) && codec->toUnicode(testData.constData(), testData.size()).contains(replacementSymbol))
|
||||||
{
|
{
|
||||||
qWarning("Decoding error using local codepage. Enforcing Latin-1.");
|
qWarning("Decoding error using selected codepage (%s). Enforcing Latin-1.", codec->name().constData());
|
||||||
bForceLatin1 = true;
|
bForceLatin1 = true;
|
||||||
}
|
}
|
||||||
testData.clear();
|
testData.clear();
|
||||||
|
|
||||||
|
//Init text stream
|
||||||
|
QTextStream cueStream(&cueFile);
|
||||||
|
cueStream.setAutoDetectUnicode(false);
|
||||||
|
cueStream.setCodec(bForceLatin1 ? "latin1" : codec->name());
|
||||||
|
cueStream.seek(0i64);
|
||||||
|
|
||||||
//Create regular expressions
|
//Create regular expressions
|
||||||
QRegExp rxFile("^FILE\\s+(\"[^\"]+\"|\\S+)\\s+(\\w+)$", Qt::CaseInsensitive);
|
QRegExp rxFile("^FILE\\s+(\"[^\"]+\"|\\S+)\\s+(\\w+)$", Qt::CaseInsensitive);
|
||||||
QRegExp rxTrack("^TRACK\\s+(\\d+)\\s(\\w+)$", Qt::CaseInsensitive);
|
QRegExp rxTrack("^TRACK\\s+(\\d+)\\s(\\w+)$", Qt::CaseInsensitive);
|
||||||
@ -600,14 +607,13 @@ int CueSheetModel::parseCueFile(QFile &cueFile, const QDir &baseDir, QCoreApplic
|
|||||||
if(lines < 128) Sleep(10);
|
if(lines < 128) Sleep(10);
|
||||||
}
|
}
|
||||||
|
|
||||||
QByteArray lineData = cueFile.readLine();
|
if(cueStream.atEnd())
|
||||||
if(lineData.size() <= 0)
|
|
||||||
{
|
{
|
||||||
qDebug("End of Cue Sheet file.");
|
qDebug("End of Cue Sheet file.");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString line = (bForceLatin1 ? QString::fromLatin1(lineData.constData(), lineData.size()) : codec->toUnicode(lineData.constData(), lineData.size())).trimmed();
|
QString line = cueStream.readLine().trimmed();
|
||||||
|
|
||||||
/* --- FILE --- */
|
/* --- FILE --- */
|
||||||
if(rxFile.indexIn(line) >= 0)
|
if(rxFile.indexIn(line) >= 0)
|
||||||
|
@ -86,6 +86,13 @@ bool PlaylistImporter::importPlaylist(QStringList &fileList, const QString &play
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Skip very large files (parsing could take very long)
|
||||||
|
if(data.size() >= 10485760i64)
|
||||||
|
{
|
||||||
|
qWarning("File is very big. Probably not a Playlist. Rejecting...");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
//Parse playlist depending on type
|
//Parse playlist depending on type
|
||||||
switch(playlistType)
|
switch(playlistType)
|
||||||
{
|
{
|
||||||
@ -132,14 +139,16 @@ PlaylistImporter::playlist_t PlaylistImporter::isPlaylist(const QString &fileNam
|
|||||||
|
|
||||||
bool PlaylistImporter::parsePlaylist_m3u(QFile &data, QStringList &fileList, const QDir &baseDir, const QDir &rootDir)
|
bool PlaylistImporter::parsePlaylist_m3u(QFile &data, QStringList &fileList, const QDir &baseDir, const QDir &rootDir)
|
||||||
{
|
{
|
||||||
QByteArray line = data.readLine();
|
|
||||||
const bool preferUTF8 = data.fileName().endsWith(".m3u8", Qt::CaseInsensitive);
|
|
||||||
const QTextCodec *codec = QTextCodec::codecForName("System");
|
const QTextCodec *codec = QTextCodec::codecForName("System");
|
||||||
|
const bool preferUTF8 = data.fileName().endsWith(".m3u8", Qt::CaseInsensitive);
|
||||||
|
bool foundAtLeastOneFile = false;
|
||||||
|
|
||||||
|
data.reset();
|
||||||
|
|
||||||
while(line.size() > 0)
|
while(!data.atEnd())
|
||||||
{
|
{
|
||||||
QString filePath[3];
|
QString filePath[3];
|
||||||
|
QByteArray line = data.readLine();
|
||||||
|
|
||||||
if(preferUTF8)
|
if(preferUTF8)
|
||||||
{
|
{
|
||||||
@ -156,24 +165,61 @@ bool PlaylistImporter::parsePlaylist_m3u(QFile &data, QStringList &fileList, con
|
|||||||
|
|
||||||
for(size_t i = 0; i < 3; i++)
|
for(size_t i = 0; i < 3; i++)
|
||||||
{
|
{
|
||||||
if(!(filePath[i].startsWith("#") || filePath[i].contains(QChar(QChar::ReplacementCharacter))))
|
if(!(filePath[i].isEmpty() || filePath[i].startsWith("#") || filePath[i].contains(QChar(QChar::ReplacementCharacter))))
|
||||||
{
|
{
|
||||||
QFileInfo filename(filePath[i]);
|
QFileInfo filename(filePath[i]);
|
||||||
filename.setCaching(false);
|
filename.setCaching(false);
|
||||||
fixFilePath(filename, baseDir, rootDir);
|
fixFilePath(filename, baseDir, rootDir);
|
||||||
|
|
||||||
if(filename.exists())
|
if(filename.exists() && filename.isFile())
|
||||||
|
{
|
||||||
|
qDebug("Found: \"%s\"", filePath[i].toUtf8().constData());
|
||||||
|
if(isPlaylist(filename.canonicalFilePath()) == notPlaylist)
|
||||||
|
{
|
||||||
|
fileList << filename.canonicalFilePath();
|
||||||
|
}
|
||||||
|
foundAtLeastOneFile = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//If we did not find any files yet, try UTF-16 now
|
||||||
|
if(!foundAtLeastOneFile)
|
||||||
|
{
|
||||||
|
const char* codecs[2] = {"UTF-16LE", "UTF-16BE"};
|
||||||
|
|
||||||
|
for(size_t i = 0; i < 2; i++)
|
||||||
|
{
|
||||||
|
QTextStream stream(&data);
|
||||||
|
stream.setAutoDetectUnicode(false);
|
||||||
|
stream.setCodec(codecs[i]);
|
||||||
|
stream.seek(0i64);
|
||||||
|
|
||||||
|
while(!stream.atEnd())
|
||||||
|
{
|
||||||
|
QString filePath = stream.readLine().trimmed();
|
||||||
|
|
||||||
|
if(!(filePath.isEmpty() || filePath.startsWith("#") || filePath.contains(QChar(QChar::ReplacementCharacter))))
|
||||||
|
{
|
||||||
|
QFileInfo filename(filePath);
|
||||||
|
filename.setCaching(false);
|
||||||
|
fixFilePath(filename, baseDir, rootDir);
|
||||||
|
|
||||||
|
if(filename.exists() && filename.isFile())
|
||||||
{
|
{
|
||||||
if(isPlaylist(filename.canonicalFilePath()) == notPlaylist)
|
if(isPlaylist(filename.canonicalFilePath()) == notPlaylist)
|
||||||
{
|
{
|
||||||
fileList << filename.canonicalFilePath();
|
fileList << filename.canonicalFilePath();
|
||||||
}
|
}
|
||||||
break;
|
foundAtLeastOneFile = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
line = data.readLine();
|
if(foundAtLeastOneFile) break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -183,11 +229,14 @@ bool PlaylistImporter::parsePlaylist_pls(QFile &data, QStringList &fileList, con
|
|||||||
{
|
{
|
||||||
QRegExp plsEntry("File(\\d+)=(.+)", Qt::CaseInsensitive);
|
QRegExp plsEntry("File(\\d+)=(.+)", Qt::CaseInsensitive);
|
||||||
const QTextCodec *codec = QTextCodec::codecForName("System");
|
const QTextCodec *codec = QTextCodec::codecForName("System");
|
||||||
QByteArray line = data.readLine();
|
bool foundAtLeastOneFile = false;
|
||||||
|
|
||||||
while(line.size() > 0)
|
data.reset();
|
||||||
|
|
||||||
|
while(!data.atEnd())
|
||||||
{
|
{
|
||||||
QString filePath[3];
|
QString filePath[3];
|
||||||
|
QByteArray line = data.readLine();
|
||||||
|
|
||||||
filePath[0] = QString(QDir::fromNativeSeparators(codec->toUnicode(line.constData(), line.size()).trimmed()));
|
filePath[0] = QString(QDir::fromNativeSeparators(codec->toUnicode(line.constData(), line.size()).trimmed()));
|
||||||
filePath[1] = QString(QDir::fromNativeSeparators(QString::fromLatin1(line.constData(), line.size()).trimmed()));
|
filePath[1] = QString(QDir::fromNativeSeparators(QString::fromLatin1(line.constData(), line.size()).trimmed()));
|
||||||
@ -203,19 +252,58 @@ bool PlaylistImporter::parsePlaylist_pls(QFile &data, QStringList &fileList, con
|
|||||||
filename.setCaching(false);
|
filename.setCaching(false);
|
||||||
fixFilePath(filename, baseDir, rootDir);
|
fixFilePath(filename, baseDir, rootDir);
|
||||||
|
|
||||||
if(filename.exists())
|
if(filename.exists() && filename.isFile())
|
||||||
{
|
{
|
||||||
if(isPlaylist(filename.canonicalFilePath()) == notPlaylist)
|
if(isPlaylist(filename.canonicalFilePath()) == notPlaylist)
|
||||||
{
|
{
|
||||||
fileList << filename.canonicalFilePath();
|
fileList << filename.canonicalFilePath();
|
||||||
}
|
}
|
||||||
|
foundAtLeastOneFile = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
line = data.readLine();
|
//If we did not find any files yet, try UTF-16 now
|
||||||
|
if(!foundAtLeastOneFile)
|
||||||
|
{
|
||||||
|
const char* codecs[2] = {"UTF-16LE", "UTF-16BE"};
|
||||||
|
|
||||||
|
for(size_t i = 0; i < 2; i++)
|
||||||
|
{
|
||||||
|
QTextStream stream(&data);
|
||||||
|
stream.setAutoDetectUnicode(false);
|
||||||
|
stream.setCodec(codecs[i]);
|
||||||
|
stream.seek(0i64);
|
||||||
|
|
||||||
|
while(!stream.atEnd())
|
||||||
|
{
|
||||||
|
QString filePath = stream.readLine().trimmed();
|
||||||
|
|
||||||
|
if(!filePath.contains(QChar(QChar::ReplacementCharacter)))
|
||||||
|
{
|
||||||
|
if(plsEntry.indexIn(filePath) >= 0)
|
||||||
|
{
|
||||||
|
QFileInfo filename(QDir::fromNativeSeparators(plsEntry.cap(2)).trimmed());
|
||||||
|
filename.setCaching(false);
|
||||||
|
fixFilePath(filename, baseDir, rootDir);
|
||||||
|
|
||||||
|
if(filename.exists() && filename.isFile())
|
||||||
|
{
|
||||||
|
if(isPlaylist(filename.canonicalFilePath()) == notPlaylist)
|
||||||
|
{
|
||||||
|
fileList << filename.canonicalFilePath();
|
||||||
|
}
|
||||||
|
foundAtLeastOneFile = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(foundAtLeastOneFile) break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -247,7 +335,7 @@ bool PlaylistImporter::parsePlaylist_wpl(QFile &data, QStringList &fileList, con
|
|||||||
filename.setCaching(false);
|
filename.setCaching(false);
|
||||||
fixFilePath(filename, baseDir, rootDir);
|
fixFilePath(filename, baseDir, rootDir);
|
||||||
|
|
||||||
if(filename.exists())
|
if(filename.exists() && filename.isFile())
|
||||||
{
|
{
|
||||||
if(isPlaylist(filename.canonicalFilePath()) == notPlaylist)
|
if(isPlaylist(filename.canonicalFilePath()) == notPlaylist)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user