diff --git a/etc/Translation/Blank.ts b/etc/Translation/Blank.ts index 2557579d..fe291cd7 100644 --- a/etc/Translation/Blank.ts +++ b/etc/Translation/Blank.ts @@ -770,7 +770,7 @@ - + Show Details @@ -1442,9 +1442,9 @@ - - - + + + Check for Updates @@ -1485,13 +1485,13 @@ - + Disable Update Reminder - + Disable Sound Effects @@ -1571,826 +1571,831 @@ - + Adding file(s), please wait... - - + + Access Denied - + %1 file(s) have been rejected, because read access was not granted! - + This usually means the file is locked by another process. - + CDDA Files - + %1 file(s) have been rejected, because they are dummy CDDA files! - + Sorry, LameXP cannot extract audio tracks from an Audio-CD at present. - + We recommend using %1 for that purpose. - + Cue Sheet - + %1 file(s) have been rejected, because they appear to be Cue Sheet images! - + Please use LameXP's Cue Sheet wizard for importing Cue Sheet files. - + Files Rejected - + %1 file(s) have been rejected, because the file format could not be recognized! - + This usually means the file is damaged or the file format is not supported. - + Scanning folder(s) for files, please wait... - + DEMO VERSION - + You can drop in audio files here! - + + Initializing directory outline, please be patient... + + + + Open File in External Application - + Browse File Location - + Browse Selected Folder - + Bookmark Current Output Folder - + Export Meta Tags to CSV File - + Import Meta Tags from CSV File - + License Declined - + You have declined the license. Consequently the application will exit now! - + Goodbye! - + LameXP - Expired - + This demo (pre-release) version of LameXP has expired at %1. - + LameXP is free software and release versions won't expire. - - + + Exit Program - + It seems that a bogus anti-virus software is slowing down the startup of LameXP. - + Please refer to the %1 document for details and solutions! - + Slow Startup - - - - - + + + + + Discard - - + + Don't Show Again - + Urgent Update - + Your version of LameXP is more than a year old. Time for an update! - - + + Ignore - + Skipping update check this time, please be patient... - - - + + + Update Reminder - + Your last update check was more than 14 days ago. Check for updates now? - + Your did not check for LameXP updates yet. Check for updates now? - + Postpone - + LameXP detected that your version of the Nero AAC encoder is outdated! - + The current version available is %1 (or later), but you still have version %2 installed. - + n/a - + You can download the latest version of the Nero AAC encoder from the Nero website at: - + (Hint: Please ignore the name of the downloaded ZIP file and check the included 'changelog.txt' instead!) - + AAC Encoder Outdated - + The Nero AAC encoder could not be found. AAC encoding support will be disabled. - + Please put 'neroAacEnc.exe', 'neroAacDec.exe' and 'neroAacTag.exe' into the LameXP directory! - + Your LameXP directory is located here: - + You can download the Nero AAC encoder for free from the official Nero website at: - + AAC Support Disabled - - - + + + LameXP - + You must add at least one file to the list before proceeding! - + Not Found - + Your currently selected TEMP folder does not exist anymore: - + Restore Default - + Cancel - + There are less than %1 GB of free diskspace available on your system's TEMP folder. - + It is highly recommend to free up more diskspace before proceeding with the encode! - + Your TEMP folder is located at: - + Low Diskspace Warning - + Abort Encoding Process - + Clean Disk Now - + Low Diskspace - + You are proceeding with low diskspace. Problems might occur! - + Sorry, an unsupported encoder has been chosen! - + Cannot write to the selected output directory. - + Please choose a different directory! - + Load Translation - + Translation Files - + Do you really want to disable the update reminder? - - - - - - - + + + + + + + Yes - - - - - - - + + + + + + + No - + The update reminder has been disabled. - + Please remember to check for updates at regular intervals! - + The update reminder has been re-enabled. - + Do you really want to disable all sound effects? - - + + Sound Effects - + All sound effects have been disabled. - + The sound effects have been re-enabled. - - - + + + Nero AAC Notifications - + Do you really want to disable all Nero AAC Encoder notifications? - + All Nero AAC Encoder notifications have been disabled. - + The Nero AAC Encoder notifications have been re-enabled. - - - + + + Slow Startup Notifications - + Do you really want to disable the slow startup notifications? - + The slow startup notifications have been disabled. - + The slow startup notifications have been re-enabled. - - + + Open Cue Sheet - - + + Cue Sheet File - - - + + + Beta Updates - + Do you really want LameXP to check for Beta (pre-release) updates? - + LameXP will check for Beta (pre-release) updates from now on. - + Check Now - + LameXP will <i>not</i> check for Beta (pre-release) updates from now on. - - - + + + Hibernate Computer - + Do you really want the computer to be hibernated on shutdown? - + LameXP will hibernate the computer on shutdown from now on. - + LameXP will <i>not</i> hibernate the computer on shutdown from now on. - - + + Shell Integration - + Do you really want to disable the LameXP shell integration? - + The LameXP shell integration has been disabled. - + The LameXP shell integration has been re-enabled. - - + + Add file(s) - - + + Add Folder - - + + Save CSV file - - - - + + + + CSV File - - - - + + + + CSV Export - + Sorry, there are no meta tags that can be exported! - + Sorry, failed to open CSV file for writing! - + Sorry, failed to write to the CSV file! - + The CSV files was created successfully! - - + + Open CSV file - - - - - + + + + + CSV Import - + Sorry, failed to open CSV file for reading! - + Sorry, failed to read from the CSV file! - + Sorry, the CSV file does not contain any known fields! - + CSV file is incomplete. Not all files were updated! - + The CSV files was imported successfully! - - + + New Folder - + Enter the name of the new folder: - + Failed to create folder - + The new folder could not be created: - + Drive is read-only or insufficient access rights! - + QAAC (Apple) - + FHG AAC (Winamp) - + Nero AAC - + Not available! - + Current AAC Encoder: %1 - - - - + + + + Quality Level %1 - - - + + + Compression %1 - - - + + + Uncompressed - + Best Quality (Very Slow) - + High Quality (Recommended) - + Average Quality (Default) - + Low Quality (Fast) - + Poor Quality (Very Fast) - + File name without extension - + Track number with leading zero - + Track title - + Artist name - + Album name - + Year with (at least) four digits - + Comment - + Characters forbidden in file names: - + Rename Macros - + %1 Instance(s) - + Cannot write to the selected directory. Please choose another directory! - + Already Running - + LameXP is already running, please use the running instance! diff --git a/etc/Translation/LameXP_DE.ts b/etc/Translation/LameXP_DE.ts index c9c0cf6a..df8647bb 100644 --- a/etc/Translation/LameXP_DE.ts +++ b/etc/Translation/LameXP_DE.ts @@ -1842,6 +1842,10 @@ Show Favorites Favoriten anzeigen + + Initializing directory outline, please be patient... + Verzeichnisbaum wird erzeugt, bitte warten... + MetaInfo diff --git a/etc/Translation/LameXP_ES.ts b/etc/Translation/LameXP_ES.ts index 52e8fba0..0d8cd784 100644 --- a/etc/Translation/LameXP_ES.ts +++ b/etc/Translation/LameXP_ES.ts @@ -1841,6 +1841,10 @@ Show Favorites + + Initializing directory outline, please be patient... + + MetaInfo diff --git a/etc/Translation/LameXP_FR.ts b/etc/Translation/LameXP_FR.ts index 6d7616ff..486605a9 100644 --- a/etc/Translation/LameXP_FR.ts +++ b/etc/Translation/LameXP_FR.ts @@ -1851,6 +1851,10 @@ Ouvrir le dossier récursivement... Show Favorites + + Initializing directory outline, please be patient... + + MetaInfo diff --git a/etc/Translation/LameXP_IT.ts b/etc/Translation/LameXP_IT.ts index 6a19171f..51b11ffd 100644 --- a/etc/Translation/LameXP_IT.ts +++ b/etc/Translation/LameXP_IT.ts @@ -1842,6 +1842,10 @@ Show Favorites + + Initializing directory outline, please be patient... + + MetaInfo diff --git a/etc/Translation/LameXP_KR.ts b/etc/Translation/LameXP_KR.ts index 7926fac4..654bfad8 100644 --- a/etc/Translation/LameXP_KR.ts +++ b/etc/Translation/LameXP_KR.ts @@ -1841,6 +1841,10 @@ Show Favorites + + Initializing directory outline, please be patient... + + MetaInfo diff --git a/etc/Translation/LameXP_PL.ts b/etc/Translation/LameXP_PL.ts index af543c32..cb94d0f0 100644 --- a/etc/Translation/LameXP_PL.ts +++ b/etc/Translation/LameXP_PL.ts @@ -770,7 +770,7 @@ - + Show Details Pokaż szczegóły @@ -1442,9 +1442,9 @@ - - - + + + Check for Updates Sprawdź aktualizacje @@ -1485,13 +1485,13 @@ - + Disable Update Reminder WyÅ‚Ä…cz przypominanie o aktualizacji - + Disable Sound Effects WyÅ‚Ä…cz efekty dźwiÄ™kowe @@ -1571,826 +1571,831 @@ Hibernuj zamiast zamykać - + Adding file(s), please wait... Dodawanie plików, prosze czekać... - - + + Access Denied DostÄ™p zablokowany - + %1 file(s) have been rejected, because read access was not granted! %1 plik(ów) zostaÅ‚o odrzuconych z powodu braku dostÄ™pu do pliku! - + This usually means the file is locked by another process. To przeważnie oznacza, że plik jest zablokowany przez inny proces. - + CDDA Files Pliki CDDA - + %1 file(s) have been rejected, because they are dummy CDDA files! %1 plik(ów) zostaÅ‚o odrzuconych ponieważ to nie sÄ… wÅ‚aÅ›ciwe pliki CDDA! - + Sorry, LameXP cannot extract audio tracks from an Audio-CD at present. LameXP nie może teraz wyekstrachować Å›cieżki z pÅ‚yty Audio-CD. - + We recommend using %1 for that purpose. Zaleca siÄ™ użycie w tym celu %1. - + Cue Sheet Cue Sheet - + %1 file(s) have been rejected, because they appear to be Cue Sheet images! %1 plik(ów) zostaÅ‚o odrzuconych, ponieważ to nie sÄ… pliki obrazów Cue Sheet! - + Please use LameXP's Cue Sheet wizard for importing Cue Sheet files. Prosze użyć przewodnika Cue Sheet w LameXP w celu importowania tych plików. - + Files Rejected Pliki odrzucone - + %1 file(s) have been rejected, because the file format could not be recognized! %1 plik(ów) zostaÅ‚o odrzuconych, ponieważ ich format nie zostaÅ‚ rozpoznany! - + This usually means the file is damaged or the file format is not supported. To przeważnie oznacza że plik jest uszkodzony lub format pliku nie jest wspierany. - + Scanning folder(s) for files, please wait... Skanowanie folderu/ów, prosze czekać... - + You can drop in audio files here! Tutaj możesz upuÅ›cić pliki dźwiÄ™kowe! - + Open File in External Application Otwórz plik w zewnÄ™trznym programie - + Browse File Location Otwórz lokalizacjÄ™ pliku - + Browse Selected Folder Otwórz wybrany folder - + Bookmark Current Output Folder ZapamiÄ™taj wybrany folder - + License Declined Licencja odrzucona - + You have declined the license. Consequently the application will exit now! OdrzuciÅ‚eÅ› licencjÄ™. W takim razie program zostanie teraz zamkniÄ™ty! - + Goodbye! Naraska! - + LameXP - Expired LameXP - Termin wygasÅ‚ - + This demo (pre-release) version of LameXP has expired at %1. Ta wersja demo (beta) LameXP wygasÅ‚a %1. - + LameXP is free software and release versions won't expire. LameXP jest darmowym oprogramowaniem i peÅ‚na wersja nie wygasa. - - + + Exit Program Wyjdź z programu - + It seems that a bogus anti-virus software is slowing down the startup of LameXP. Najwyraźniej twoje oprogramowanie antywirusowe spowalnia uruchamianie siÄ™ LameXP. - + Please refer to the %1 document for details and solutions! Prosze sprawdzić dokument %1 w celu dalszych szcegółów i rozwiÄ…zaÅ„! - + Slow Startup Powolny start - - - - - + + + + + Discard Zamknij - - + + Don't Show Again Nie pokazuj ponownie - + Urgent Update Ważna aktualizacja - + Your version of LameXP is more than a year old. Time for an update! Twoja wersja LameXP jest starsza niż rok! Czas na aktualizacjÄ™! - - - + + + Update Reminder Powiadomienie aktualizacji - + Your last update check was more than 14 days ago. Check for updates now? Ostatnie sprawdzenie aktualizacji byÅ‚o ponad 14 dni temu. Sprawdzić teraz aktualizacje? - + Your did not check for LameXP updates yet. Check for updates now? Nie sprawdzaÅ‚eÅ› jeszcze aktualizacji LameXP. Sprawdzić teraz aktualizacje? - + Postpone Przełóż - + LameXP detected that your version of the Nero AAC encoder is outdated! LameXP wykryÅ‚ że Twoja wersja kodera Nero AAC jest nieaktualna! - + The current version available is %1 (or later), but you still have version %2 installed. WersjÄ… dostÄ™pnÄ… obecnie jest %1, Twoja wersja to %2. - + n/a n/d - + You can download the latest version of the Nero AAC encoder from the Nero website at: Możesz pobrać najnowszÄ… wersjÄ™ kodera Nero AAC ze strony Nero: - + AAC Encoder Outdated Koder AAC jest nieaktualny - + The Nero AAC encoder could not be found. AAC encoding support will be disabled. Nie można odnaleźć kodera Nero AAC. Kompresja formatu AAC zostanie wyÅ‚Ä…czona. - + Please put 'neroAacEnc.exe', 'neroAacDec.exe' and 'neroAacTag.exe' into the LameXP directory! Prosze skopiować 'neroAacEnc.exe', 'neroAacDec.exe', oraz 'neroAacTag.exe' do folderu LameXP! - + Your LameXP directory is located here: Folder aplikacji LameXP znajduje siÄ™ tutaj: - + You can download the Nero AAC encoder for free from the official Nero website at: Możesz pobrać koder Nero AAC za darmo z oficjalnej strony Nero: - + AAC Support Disabled Wsparcie dla AAC wyÅ‚Ä…czone - - - + + + LameXP LameXP - + You must add at least one file to the list before proceeding! PowinienieÅ› dodać przynajmniej jeden plik do listy aby zacząć dziaÅ‚ać! - + Not Found Nie znaleziono - + Your currently selected TEMP folder does not exist anymore: Wybrany przez Ciebie folder tymczasowy TEMP już nie istnieje: - + Restore Default Przywróć domyÅ›lne - + Cancel Anuluj - + Low Diskspace Warning Ostrzeżenie o maÅ‚ej iloÅ›ci miejsca na dysku - + There are less than %1 GB of free diskspace available on your system's TEMP folder. Jest mniej niż %1 GB dostÄ™pnego miejsca w systemowym folderze TEMP. - + DEMO VERSION WERSJA DEMO - + (Hint: Please ignore the name of the downloaded ZIP file and check the included 'changelog.txt' instead!) (Podpowiedź: Zignoruj nazwÄ™ pobranego pliku ZIP, w zamian sprawdż zaÅ‚Ä…czony w archiwum plik "changelog.txt"!) - + It is highly recommend to free up more diskspace before proceeding with the encode! Jest wysoce zalecane zwolnić miejsce na dysku zanim zaczniesz kompresjÄ™! - + Your TEMP folder is located at: Twój folder TEMP znajdujÄ™ siÄ™: - + Abort Encoding Process Przerwij proces kompresji - + Clean Disk Now Wykonaj oczyszczanie dysku - - + + Ignore Ignoruj - + + Initializing directory outline, please be patient... + + + + Export Meta Tags to CSV File Eksportuj Tagi do pliku CVS - + Import Meta Tags from CSV File Importuj Tagi do pliku CVS - + Skipping update check this time, please be patient... Pomijanie sprawdzania aktualizacji, prosze czekać... - + Low Diskspace MaÅ‚o miejsca na dysku - + You are proceeding with low diskspace. Problems might occur! Chcesz zacząć dziaÅ‚ać z maÅ‚Ä… iloÅ›ciÄ… miejsca na dysku. MogÄ… wystÄ…pić problemy! - + Sorry, an unsupported encoder has been chosen! ZostaÅ‚ wybrany koder, który nie jest wspierany! - + Cannot write to the selected output directory. Nie można zapisać do wybranej lokalizacji. - + Please choose a different directory! Prosze wybrać innÄ… lokalizacjÄ™! - + Load Translation Zaladuj plik jÄ™zykowy - + Translation Files Pliki jÄ™zykowe - + Do you really want to disable the update reminder? Czy na pewno chcesz wyÅ‚Ä…czyć przypominanie o aktualizacjach? - - - - - - - + + + + + + + Yes Tak - - - - - - - + + + + + + + No Nie - + The update reminder has been disabled. Przypominanie o aktualizacjach wyÅ‚Ä…czone. - + Please remember to check for updates at regular intervals! Prosze pamiÄ™tać o okresowym sprawdzaniu aktualizacji! - + The update reminder has been re-enabled. Przypominanie o aktualizacjach ponownie wÅ‚Ä…czone. - + Do you really want to disable all sound effects? Czy na pewno chcesz wyÅ‚Ä…czyć wszystkie dźwiÄ™kowe? - - + + Sound Effects Efekty dźwiÄ™kowe - + All sound effects have been disabled. Wszystkie efekty dźwiÄ™kowe zostaÅ‚y wyÅ‚Ä…czone. - + The sound effects have been re-enabled. Efekty dźwiÄ™kowe zostaÅ‚y ponownie wÅ‚Ä…czone. - - - + + + Nero AAC Notifications Powiadomienia Nero AAC - + Do you really want to disable all Nero AAC Encoder notifications? Czy na pewno chcesz wyÅ‚Ä…czyć wszystkie powiadomienia Nero AAC? - + All Nero AAC Encoder notifications have been disabled. Wszystkie powiadomienia kodera Nero AAC zostaÅ‚y wyÅ‚Ä…czone. - + The Nero AAC Encoder notifications have been re-enabled. Powiadomienia Nero AAC zostaÅ‚y ponownie wÅ‚Ä…czone. - - - + + + Slow Startup Notifications Powiadomienia o powolnym starcie - + Do you really want to disable the slow startup notifications? Czy na pewno chcesz wyÅ‚Ä…czyć powiadomienia o powolnym starcie? - + The slow startup notifications have been disabled. Powiadomienia o powolnym starcie zostaÅ‚y wyÅ‚Ä…czone. - + The slow startup notifications have been re-enabled. Powiadomienia o powolnym starcie zostaÅ‚y ponownie wÅ‚Ä…czone. - - + + Open Cue Sheet Otwórz plik Cue Sheet - - + + Cue Sheet File Plik Cue Sheet - - - + + + Beta Updates Aktualizacje Beta - + Do you really want LameXP to check for Beta (pre-release) updates? Czy na pewno chcesz aby LameXP sprawdzaÅ‚ aktualizacje Beta? - + LameXP will check for Beta (pre-release) updates from now on. Od teraz LameXP bÄ™dzie sprawdzaÅ‚ aktualizacje Beta. - + Check Now Sprawdź teraz - + LameXP will <i>not</i> check for Beta (pre-release) updates from now on. LameXP od teraz <i>nie bÄ™dzie</i> sprawdzaÅ‚ aktualizacji Beta. - - - + + + Hibernate Computer Hibernuj komputer - + Do you really want the computer to be hibernated on shutdown? Czy na pewno chcesz aby komputer byÅ‚ hibernowany zamiast zamykany? - + LameXP will hibernate the computer on shutdown from now on. Od teraz LameXP bÄ™dzie hibernowaÅ‚ komputer zamiast zamykać. - + LameXP will <i>not</i> hibernate the computer on shutdown from now on. LameXP od teraz <i>nie</i> bÄ™dzie hibernowaÅ‚ komputera tylko zamykaÅ‚. - - + + Shell Integration Integracja z systemem - + Do you really want to disable the LameXP shell integration? Czy na pewno chcesz wyÅ‚Ä…czyć integracjÄ™ LameXP z systemem? - + The LameXP shell integration has been disabled. Integracja LameXP z systemem zostaÅ‚Ä… wyÅ‚Ä…czona. - + The LameXP shell integration has been re-enabled. Integracja LameXP z systemem zostaÅ‚a ponownie wÅ‚Ä…czona. - - + + Add file(s) Dodaj plik(i) - - + + Add Folder Dodaj folder - - + + Save CSV file Zapisz plik CSV - - - - + + + + CSV File Plik CSV - - - - + + + + CSV Export Eksportowanie CSV - + Sorry, there are no meta tags that can be exported! Nie ma żadnych tagów, które można eksportować! - + Sorry, failed to open CSV file for writing! Nie można otworzyć pliku CSV aby go zapisać! - + Sorry, failed to write to the CSV file! Nie można zapisać do pliku CSV! - + The CSV files was created successfully! Pliki CSV utworzone pomyÅ›lnie! - - + + Open CSV file Otwórz plik CSV - + Sorry, failed to open CSV file for reading! Nie można otworzyć pliku CSV aby go wczytać! - - - - - + + + + + CSV Import Importowanie CSV - + Sorry, failed to read from the CSV file! Próba odczytania pliku CSV zakoÅ„czona niepowodzeniem! - + Sorry, the CSV file does not contain any known fields! Plik CSV nie zawiera żadnych znanych pól! - + CSV file is incomplete. Not all files were updated! Plik CSV nie jest kompletny. Nie wszystkie pliki zostaÅ‚y zaktualizowane! - + The CSV files was imported successfully! Pliki CSV zaimportowano pomyÅ›lnie! - - + + New Folder Nowy folder - + Enter the name of the new folder: Wprowadź nazwÄ™ nowego folderu: - + Failed to create folder Utworzenie folderu zakoÅ„czone niepowodzeniem - + The new folder could not be created: Nowy folder nie mógÅ‚ zostać stworzony: - + Drive is read-only or insufficient access rights! Dysk tylko do odczytu lub brak praw dostÄ™pu! - + QAAC (Apple) - + FHG AAC (Winamp) - + Nero AAC - + Not available! - + Current AAC Encoder: %1 - - - - + + + + Quality Level %1 Poziom jakoÅ›ci %1 - - - + + + Compression %1 Kompresja %1 - - - + + + Uncompressed Nieskompresowany - + Best Quality (Very Slow) Najlepsza jakość (Bardzo wolno) - + High Quality (Recommended) Wysoka jakość (Zalecane) - + Average Quality (Default) Åšrednia jakość (DomyÅ›lnie) - + Low Quality (Fast) Niska jakość (Szybko) - + Poor Quality (Very Fast) Najniższa jakość (Bardzo szybko) - + File name without extension Nazwa pliku bez rozszerzenia - + Track number with leading zero Numer Å›cieżki z zerem na poczÄ…tku - + Track title Nazwa Å›cieżki - + Artist name Nazwa Artysty - + Album name Nazwa Albumu - + Year with (at least) four digits Rok z (przynajmniej) czterema cyframi - + Comment Komentarz - + Characters forbidden in file names: Zabronione znaki w nazwach plików: - + Rename Macros ZmieÅ„ nazwy makr - + %1 Instance(s) %1 wÄ…tek/ki - + Cannot write to the selected directory. Please choose another directory! Nie można zapisać do wybranej lokalizacji. Prosze wybierz innÄ… lokalizacjÄ™! - + Already Running Już dziaÅ‚a - + LameXP is already running, please use the running instance! LameXP już dziaÅ‚a, przejdź do dziaÅ‚ajÄ…cego programu! diff --git a/etc/Translation/LameXP_RU.ts b/etc/Translation/LameXP_RU.ts index 79e1945c..a1191086 100644 --- a/etc/Translation/LameXP_RU.ts +++ b/etc/Translation/LameXP_RU.ts @@ -1847,6 +1847,10 @@ Show Favorites + + Initializing directory outline, please be patient... + + MetaInfo diff --git a/etc/Translation/LameXP_TW.ts b/etc/Translation/LameXP_TW.ts index 1502c2fe..c92a0262 100644 --- a/etc/Translation/LameXP_TW.ts +++ b/etc/Translation/LameXP_TW.ts @@ -1841,6 +1841,10 @@ Show Favorites + + Initializing directory outline, please be patient... + + MetaInfo diff --git a/etc/Translation/LameXP_UK.ts b/etc/Translation/LameXP_UK.ts index 3ab8cdb9..b7db8e9a 100644 --- a/etc/Translation/LameXP_UK.ts +++ b/etc/Translation/LameXP_UK.ts @@ -1842,6 +1842,10 @@ Show Favorites + + Initializing directory outline, please be patient... + + MetaInfo diff --git a/etc/Translation/LameXP_ZH.ts b/etc/Translation/LameXP_ZH.ts index 0a6a1656..28523e8d 100644 --- a/etc/Translation/LameXP_ZH.ts +++ b/etc/Translation/LameXP_ZH.ts @@ -1841,6 +1841,10 @@ Show Favorites + + Initializing directory outline, please be patient... + + MetaInfo diff --git a/res/localization/LameXP_DE.qm b/res/localization/LameXP_DE.qm index 1eb8c621..408543d7 100644 Binary files a/res/localization/LameXP_DE.qm and b/res/localization/LameXP_DE.qm differ diff --git a/src/Config.h b/src/Config.h index f5cab1d7..07c15aec 100644 --- a/src/Config.h +++ b/src/Config.h @@ -30,7 +30,7 @@ #define VER_LAMEXP_MINOR_LO 4 #define VER_LAMEXP_TYPE Beta #define VER_LAMEXP_PATCH 10 -#define VER_LAMEXP_BUILD 932 +#define VER_LAMEXP_BUILD 939 /////////////////////////////////////////////////////////////////////////////// // Tool versions (minimum expected versions!) diff --git a/src/Dialog_MainWindow.cpp b/src/Dialog_MainWindow.cpp index 6097fb29..aca58e54 100644 --- a/src/Dialog_MainWindow.cpp +++ b/src/Dialog_MainWindow.cpp @@ -94,7 +94,7 @@ MainWindow::MainWindow(FileListModel *fileListModel, AudioFileModel *metaInfo, S m_qaacEncoderAvailable(lamexp_check_tool("qaac.exe") && lamexp_check_tool("libsoxrate.dll")), m_accepted(false), m_firstTimeShown(true), - m_outputFolderViewInitialized(false), + m_outputFolderViewInitialized(3), m_outputFolderViewCentering(false) { //Init the dialog, from the .ui file @@ -161,6 +161,7 @@ MainWindow::MainWindow(FileListModel *fileListModel, AudioFileModel *metaInfo, S outputFolderView->setAnimated(false); outputFolderView->setMouseTracking(false); outputFolderView->setContextMenuPolicy(Qt::CustomContextMenu); + outputFolderView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); outputFolderView->installEventFilter(this); outputFoldersEditorLabel->installEventFilter(this); outputFoldersFovoritesLabel->installEventFilter(this); @@ -192,6 +193,11 @@ MainWindow::MainWindow(FileListModel *fileListModel, AudioFileModel *metaInfo, S outputFolderLabel->installEventFilter(this); outputFolderView->setCurrentIndex(m_fileSystemModel->index(m_settings->outputDir())); outputFolderViewClicked(outputFolderView->currentIndex()); + m_outputFolderNoteBox = new QLabel(outputFolderView); + m_outputFolderNoteBox->setAutoFillBackground(true); + m_outputFolderNoteBox->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); + m_outputFolderNoteBox->setFrameShape(QFrame::StyledPanel); + SET_FONT_BOLD(m_outputFolderNoteBox, true); refreshFavorites(); //Setup "Meta Data" tab @@ -711,6 +717,7 @@ void MainWindow::changeEvent(QEvent *e) //Manually re-translate widgets that UIC doesn't handle m_dropNoteLabel->setText(QString("» %1 «").arg(tr("You can drop in audio files here!"))); + m_outputFolderNoteBox->setText(tr("Initializing directory outline, please be patient...")); m_showDetailsContextAction->setText(tr("Show Details")); m_previewContextAction->setText(tr("Open File in External Application")); m_findFileContextAction->setText(tr("Browse File Location")); @@ -826,8 +833,13 @@ void MainWindow::closeEvent(QCloseEvent *event) */ void MainWindow::resizeEvent(QResizeEvent *event) { - QMainWindow::resizeEvent(event); + if(event) QMainWindow::resizeEvent(event); m_dropNoteLabel->setGeometry(0, 0, sourceFileView->width(), sourceFileView->height()); + + if(QWidget *port = outputFolderView->viewport()) + { + m_outputFolderNoteBox->setGeometry(16, (port->height() - 64) / 2, port->width() - 32, 64); + } } /* @@ -1390,6 +1402,8 @@ void MainWindow::closeButtonClicked(void) */ void MainWindow::tabPageChanged(int idx) { + resizeEvent(NULL); + QList actions = m_tabActionGroup->actions(); for(int i = 0; i < actions.count(); i++) { @@ -1435,7 +1449,7 @@ void MainWindow::tabPageChanged(int idx) } else if(idx == tabWidget->indexOf(tabOutputDir)) { - if(!m_outputFolderViewInitialized) + if(m_outputFolderViewInitialized > 0) { QTimer::singleShot(125, this, SLOT(initOutputFolderModel())); } @@ -2517,8 +2531,9 @@ void MainWindow::makeFolderButtonClicked(void) QDir createdDir = basePath; if(createdDir.cd(newFolder)) { - outputFolderView->setCurrentIndex(m_fileSystemModel->index(createdDir.canonicalPath())); - outputFolderViewClicked(outputFolderView->currentIndex()); + QModelIndex newIndex = m_fileSystemModel->index(createdDir.canonicalPath()); + outputFolderView->setCurrentIndex(newIndex); + outputFolderViewClicked(newIndex); CENTER_CURRENT_OUTPUT_FOLDER_DELAYED; } } @@ -2661,9 +2676,26 @@ void MainWindow::outputFolderEditFinished(void) */ void MainWindow::initOutputFolderModel(void) { - m_fileSystemModel->setRootPath(""); + if(m_fileSystemModel) m_fileSystemModel->setRootPath(""); CENTER_CURRENT_OUTPUT_FOLDER_DELAYED; - m_outputFolderViewInitialized = true; + QTimer::singleShot(125, this, SLOT(initOutputFolderModel_doAsync())); +} + +/* + * Initialize file system model (do NOT call this one directly!) + */ +void MainWindow::initOutputFolderModel_doAsync(void) +{ + if(m_outputFolderViewInitialized > 0) + { + m_outputFolderViewInitialized--; + QTimer::singleShot(125, this, SLOT(initOutputFolderModel_doAsync())); + } + else + { + QTimer::singleShot(125, m_outputFolderNoteBox, SLOT(hide())); + outputFolderView->setFocus(); + } } /* diff --git a/src/Dialog_MainWindow.h b/src/Dialog_MainWindow.h index da56c8d2..a8a4bcd9 100644 --- a/src/Dialog_MainWindow.h +++ b/src/Dialog_MainWindow.h @@ -94,6 +94,7 @@ private slots: void importCueSheetActionTriggered(bool checked); void importCsvContextActionTriggered(void); void initOutputFolderModel(void); + void initOutputFolderModel_doAsync(void); void languageActionActivated(QAction *action); void languageFromFileActionActivated(bool checked); void makeFolderButtonClicked(void); @@ -165,7 +166,7 @@ private: bool m_accepted; bool m_firstTimeShown; - bool m_outputFolderViewInitialized; + uint m_outputFolderViewInitialized; bool m_outputFolderViewCentering; const bool m_neroEncoderAvailable; @@ -186,6 +187,7 @@ private: SettingsModel *m_settings; QMenu *m_sourceFilesContextMenu; QMenu *m_outputFolderFavoritesMenu; + QLabel *m_outputFolderNoteBox; QAction *m_findFileContextAction; QAction *m_previewContextAction; diff --git a/src/Model_FileSystem.cpp b/src/Model_FileSystem.cpp index 0bbaaac7..91949728 100644 --- a/src/Model_FileSystem.cpp +++ b/src/Model_FileSystem.cpp @@ -26,6 +26,9 @@ #include #include +#define IS_DIR(ATTR) (((ATTR) & FILE_ATTRIBUTE_DIRECTORY) && (!((ATTR) & FILE_ATTRIBUTE_HIDDEN))) +#define NO_DOT_OR_DOTDOT(STR) (wcscmp((STR), L".") && wcscmp((STR), L"..")) + /////////////////////////////////////////////////////////////////////////////// // Dummy QFileIconProvider class /////////////////////////////////////////////////////////////////////////////// @@ -154,8 +157,78 @@ bool QFileSystemModelEx::hasChildren(const QModelIndex &parent) const { if(parent.isValid()) { - return (QDir(QFileSystemModel::filePath(parent)).entryList(QDir::Dirs | QDir::NoDotAndDotDot).count() > 0); + return (QFileSystemModel::rowCount(parent) > 0) || hasSubfoldersCached(filePath(parent)); } return true; } + +int QFileSystemModelEx::rowCount(const QModelIndex &parent) const +{ + if(parent.isValid()) + { + removeFromCache(filePath(parent)); + } + + return QFileSystemModel::rowCount(parent); +} + +void QFileSystemModelEx::fetchMore(const QModelIndex &parent) +{ + if(parent.isValid()) + { + removeFromCache(filePath(parent)); + } + + QFileSystemModel::fetchMore(parent); +} + + +/* ------------------------ */ +/* STATIC FUNCTIONS BELOW */ +/* ------------------------ */ + +QHash QFileSystemModelEx::s_hasFolderCache; +QMutex QFileSystemModelEx::s_hasFolderMutex; + +bool QFileSystemModelEx::hasSubfoldersCached(const QString &path) +{ + QMutexLocker lock(&s_hasFolderMutex); + + if(s_hasFolderCache.contains(path)) + { + return s_hasFolderCache.value(path); + } + + bool bChildren = hasSubfolders(path); + s_hasFolderCache.insert(path, bChildren); + return bChildren; +} + +void QFileSystemModelEx::removeFromCache(const QString &path) +{ + QMutexLocker lock(&s_hasFolderMutex); + s_hasFolderCache.remove(path); +} + +bool QFileSystemModelEx::hasSubfolders(const QString &path) +{ + bool bChildren = false; WIN32_FIND_DATAW findData; + HANDLE h = FindFirstFileW(QWCHAR(QDir::toNativeSeparators(path + "/*")), &findData); + if(h != INVALID_HANDLE_VALUE) + { + if(NO_DOT_OR_DOTDOT(findData.cFileName)) + { + bChildren = IS_DIR(findData.dwFileAttributes); + } + while((!bChildren) && FindNextFile(h, &findData)) + { + if(NO_DOT_OR_DOTDOT(findData.cFileName)) + { + bChildren = IS_DIR(findData.dwFileAttributes); + } + } + FindClose(h); + } + return bChildren; +} diff --git a/src/Model_FileSystem.h b/src/Model_FileSystem.h index cf219abc..674d68a4 100644 --- a/src/Model_FileSystem.h +++ b/src/Model_FileSystem.h @@ -22,6 +22,7 @@ #pragma once #include +#include class QFileIconProviderEx; @@ -32,7 +33,16 @@ public: ~QFileSystemModelEx(); virtual bool hasChildren(const QModelIndex &parent = QModelIndex()) const; + virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; + virtual void fetchMore(const QModelIndex &parent); private: QFileIconProviderEx *m_myIconProvider; + + static QHash s_hasFolderCache; + static QMutex s_hasFolderMutex; + + static bool hasSubfolders(const QString &path); + static bool hasSubfoldersCached(const QString &path); + static void removeFromCache(const QString &path); };