diff --git a/etc/Translation/Blank.ts b/etc/Translation/Blank.ts index fe291cd7..4f5f337b 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,831 +1571,836 @@ - + 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 + Refresh Directory Outline + 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! @@ -3000,22 +3005,22 @@ QApplication - + Executable '%1' doesn't support Windows compatibility mode. - + Executable '%1' requires Qt v%2, but found Qt v%3. - + Executable '%1' was built for Qt '%2', but found Qt '%3'. - + Executable '%1' requires Windows 2000 or later. diff --git a/etc/Translation/LameXP_DE.ts b/etc/Translation/LameXP_DE.ts index df8647bb..88a66fc5 100644 --- a/etc/Translation/LameXP_DE.ts +++ b/etc/Translation/LameXP_DE.ts @@ -1846,6 +1846,10 @@ Initializing directory outline, please be patient... Verzeichnisbaum wird erzeugt, bitte warten... + + Refresh Directory Outline + Verzeichnisbaum aktualisieren + MetaInfo diff --git a/etc/Translation/LameXP_ES.ts b/etc/Translation/LameXP_ES.ts index 0d8cd784..bedb3d38 100644 --- a/etc/Translation/LameXP_ES.ts +++ b/etc/Translation/LameXP_ES.ts @@ -1845,6 +1845,10 @@ Initializing directory outline, please be patient... + + Refresh Directory Outline + + MetaInfo diff --git a/etc/Translation/LameXP_FR.ts b/etc/Translation/LameXP_FR.ts index 486605a9..a21fe830 100644 --- a/etc/Translation/LameXP_FR.ts +++ b/etc/Translation/LameXP_FR.ts @@ -1855,6 +1855,10 @@ Ouvrir le dossier récursivement... Initializing directory outline, please be patient... + + Refresh Directory Outline + + MetaInfo diff --git a/etc/Translation/LameXP_IT.ts b/etc/Translation/LameXP_IT.ts index 51b11ffd..50724384 100644 --- a/etc/Translation/LameXP_IT.ts +++ b/etc/Translation/LameXP_IT.ts @@ -1846,6 +1846,10 @@ Initializing directory outline, please be patient... + + Refresh Directory Outline + + MetaInfo diff --git a/etc/Translation/LameXP_KR.ts b/etc/Translation/LameXP_KR.ts index 654bfad8..ea671839 100644 --- a/etc/Translation/LameXP_KR.ts +++ b/etc/Translation/LameXP_KR.ts @@ -1845,6 +1845,10 @@ Initializing directory outline, please be patient... + + Refresh Directory Outline + + MetaInfo diff --git a/etc/Translation/LameXP_PL.ts b/etc/Translation/LameXP_PL.ts index cb94d0f0..8d0451e1 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,831 +1571,836 @@ 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... + Refresh Directory Outline + + + + 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! @@ -3000,22 +3005,22 @@ QApplication - + Executable '%1' doesn't support Windows compatibility mode. Plik wykonywalny '%1' nie działa w trybie kompatybilności z Windows. - + Executable '%1' requires Qt v%2, but found Qt v%3. Plik wykonywalny '%1' wymaga Qt v%2, znaleziono jednak Qt v%3. - + Executable '%1' was built for Qt '%2', but found Qt '%3'. Plik wykonywalny "%1" został skompilowany dla Qt "%2", znaleziono "%3". - + Executable '%1' requires Windows 2000 or later. Plik wykonywalny '%1' wymaga do uruchomienia Windows 2000 lub nowszego. diff --git a/etc/Translation/LameXP_RU.ts b/etc/Translation/LameXP_RU.ts index 62fd53d2..3426e99a 100644 --- a/etc/Translation/LameXP_RU.ts +++ b/etc/Translation/LameXP_RU.ts @@ -1851,6 +1851,10 @@ Initializing directory outline, please be patient... Чтение структуры каталогов, пожалуйста ждите... + + Refresh Directory Outline + + MetaInfo diff --git a/etc/Translation/LameXP_TW.ts b/etc/Translation/LameXP_TW.ts index c92a0262..9085e99c 100644 --- a/etc/Translation/LameXP_TW.ts +++ b/etc/Translation/LameXP_TW.ts @@ -1845,6 +1845,10 @@ Initializing directory outline, please be patient... + + Refresh Directory Outline + + MetaInfo diff --git a/etc/Translation/LameXP_UK.ts b/etc/Translation/LameXP_UK.ts index b7db8e9a..fe0c413e 100644 --- a/etc/Translation/LameXP_UK.ts +++ b/etc/Translation/LameXP_UK.ts @@ -1846,6 +1846,10 @@ Initializing directory outline, please be patient... + + Refresh Directory Outline + + MetaInfo diff --git a/etc/Translation/LameXP_ZH.ts b/etc/Translation/LameXP_ZH.ts index 28523e8d..a30520a4 100644 --- a/etc/Translation/LameXP_ZH.ts +++ b/etc/Translation/LameXP_ZH.ts @@ -1845,6 +1845,10 @@ Initializing directory outline, please be patient... + + Refresh Directory Outline + + MetaInfo diff --git a/res/localization/LameXP_DE.qm b/res/localization/LameXP_DE.qm index 408543d7..7cec73c0 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 86ff98f7..937b356e 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 12 -#define VER_LAMEXP_BUILD 951 +#define VER_LAMEXP_BUILD 952 /////////////////////////////////////////////////////////////////////////////// // Tool versions (minimum expected versions!) diff --git a/src/Dialog_MainWindow.cpp b/src/Dialog_MainWindow.cpp index d29ab6be..7b65856c 100644 --- a/src/Dialog_MainWindow.cpp +++ b/src/Dialog_MainWindow.cpp @@ -89,13 +89,14 @@ MainWindow::MainWindow(FileListModel *fileListModel, AudioFileModel *metaInfo, S m_fileListModel(fileListModel), m_metaData(metaInfo), m_settings(settingsModel), + m_fileSystemModel(NULL), m_neroEncoderAvailable(lamexp_check_tool("neroAacEnc.exe") && lamexp_check_tool("neroAacDec.exe") && lamexp_check_tool("neroAacTag.exe")), m_fhgEncoderAvailable(lamexp_check_tool("fhgaacenc.exe") && lamexp_check_tool("enc_fhgaac.dll") && lamexp_check_tool("nsutil.dll") && lamexp_check_tool("libmp4v2.dll")), m_qaacEncoderAvailable(lamexp_check_tool("qaac.exe") && lamexp_check_tool("libsoxrate.dll")), m_accepted(false), m_firstTimeShown(true), - m_outputFolderViewInitialized(4), - m_outputFolderViewCentering(false) + m_outputFolderViewCentering(false), + m_outputFolderViewInitCounter(0) { //Init the dialog, from the .ui file setupUi(this); @@ -150,13 +151,6 @@ MainWindow::MainWindow(FileListModel *fileListModel, AudioFileModel *metaInfo, S connect(m_importCsvContextAction, SIGNAL(triggered(bool)), this, SLOT(importCsvContextActionTriggered())); //Setup "Output" tab - m_fileSystemModel = new QFileSystemModelEx(); - m_fileSystemModel->installEventFilter(this); - outputFolderView->setModel(m_fileSystemModel); - outputFolderView->header()->setStretchLastSection(true); - outputFolderView->header()->hideSection(1); - outputFolderView->header()->hideSection(2); - outputFolderView->header()->hideSection(3); outputFolderView->setHeaderHidden(true); outputFolderView->setAnimated(false); outputFolderView->setMouseTracking(false); @@ -179,25 +173,32 @@ MainWindow::MainWindow(FileListModel *fileListModel, AudioFileModel *metaInfo, S connect(saveToSourceFolderCheckBox, SIGNAL(clicked()), this, SLOT(saveToSourceFolderChanged())); connect(prependRelativePathCheckBox, SIGNAL(clicked()), this, SLOT(prependRelativePathChanged())); connect(outputFolderEdit, SIGNAL(editingFinished()), this, SLOT(outputFolderEditFinished())); - connect(m_fileSystemModel, SIGNAL(directoryLoaded(QString)), this, SLOT(outputFolderDirectoryLoaded(QString))); - connect(m_fileSystemModel, SIGNAL(rowsInserted(QModelIndex,int,int)), this, SLOT(outputFolderRowsInserted(QModelIndex,int,int))); - m_outputFolderContextMenu = new QMenu(); - m_showFolderContextAction = m_outputFolderContextMenu->addAction(QIcon(":/icons/zoom.png"), "N/A"); - m_outputFolderFavoritesMenu = new QMenu(); - m_addFavoriteFolderAction = m_outputFolderFavoritesMenu->addAction(QIcon(":/icons/add.png"), "N/A"); - m_outputFolderFavoritesMenu->insertSeparator(m_addFavoriteFolderAction); - connect(outputFolderView, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(outputFolderContextMenu(QPoint))); - connect(m_showFolderContextAction, SIGNAL(triggered(bool)), this, SLOT(showFolderContextActionTriggered())); - connect(m_addFavoriteFolderAction, SIGNAL(triggered(bool)), this, SLOT(addFavoriteFolderActionTriggered())); + if(m_outputFolderContextMenu = new QMenu()) + { + m_showFolderContextAction = m_outputFolderContextMenu->addAction(QIcon(":/icons/zoom.png"), "N/A"); + m_refreshFolderContextAction = m_outputFolderContextMenu->addAction(QIcon(":/icons/arrow_refresh.png"), "N/A"); + m_outputFolderContextMenu->setDefaultAction(m_showFolderContextAction); + connect(outputFolderView, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(outputFolderContextMenu(QPoint))); + connect(m_showFolderContextAction, SIGNAL(triggered(bool)), this, SLOT(showFolderContextActionTriggered())); + connect(m_refreshFolderContextAction, SIGNAL(triggered(bool)), this, SLOT(refreshFolderContextActionTriggered())); + } + if(m_outputFolderFavoritesMenu = new QMenu()) + { + m_addFavoriteFolderAction = m_outputFolderFavoritesMenu->addAction(QIcon(":/icons/add.png"), "N/A"); + m_outputFolderFavoritesMenu->insertSeparator(m_addFavoriteFolderAction); + connect(m_addFavoriteFolderAction, SIGNAL(triggered(bool)), this, SLOT(addFavoriteFolderActionTriggered())); + } outputFolderEdit->setVisible(false); 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); + if(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); + m_outputFolderNoteBox->hide(); + + } refreshFavorites(); //Setup "Meta Data" tab @@ -722,6 +723,7 @@ void MainWindow::changeEvent(QEvent *e) m_previewContextAction->setText(tr("Open File in External Application")); m_findFileContextAction->setText(tr("Browse File Location")); m_showFolderContextAction->setText(tr("Browse Selected Folder")); + m_refreshFolderContextAction->setText(tr("Refresh Directory Outline")); m_addFavoriteFolderAction->setText(tr("Bookmark Current Output Folder")); m_exportCsvContextAction->setText(tr("Export Meta Tags to CSV File")); m_importCsvContextAction->setText(tr("Import Meta Tags from CSV File")); @@ -842,6 +844,23 @@ void MainWindow::resizeEvent(QResizeEvent *event) } } +/* + * Key press event filter + */ +void MainWindow::keyPressEvent(QKeyEvent *e) +{ + if(e->key() == Qt::Key_F5) + { + if(outputFolderView->isVisible()) + { + QTimer::singleShot(0, this, SLOT(refreshFolderContextActionTriggered())); + return; + } + } + + QMainWindow::keyPressEvent(e); +} + /* * Event filter */ @@ -1449,7 +1468,7 @@ void MainWindow::tabPageChanged(int idx) } else if(idx == tabWidget->indexOf(tabOutputDir)) { - if(m_outputFolderViewInitialized > 0) + if(!m_fileSystemModel) { QTimer::singleShot(125, this, SLOT(initOutputFolderModel())); } @@ -2356,10 +2375,14 @@ void MainWindow::outputFolderViewClicked(const QModelIndex &index) { outputFolderView->setCurrentIndex(index); } - QString selectedDir = m_fileSystemModel->filePath(index); - if(selectedDir.length() < 3) selectedDir.append(QDir::separator()); - outputFolderLabel->setText(QDir::toNativeSeparators(selectedDir)); - m_settings->outputDir(selectedDir); + + if(m_fileSystemModel) + { + QString selectedDir = m_fileSystemModel->filePath(index); + if(selectedDir.length() < 3) selectedDir.append(QDir::separator()); + outputFolderLabel->setText(QDir::toNativeSeparators(selectedDir)); + m_settings->outputDir(selectedDir); + } } /* @@ -2378,6 +2401,12 @@ void MainWindow::outputFolderViewMoved(const QModelIndex &index) */ void MainWindow::gotoDesktopButtonClicked(void) { + if(!m_fileSystemModel) + { + qWarning("File system model not initialized yet!"); + return; + } + QString desktopPath = QDesktopServices::storageLocation(QDesktopServices::DesktopLocation); if(!desktopPath.isEmpty() && QDir(desktopPath).exists()) @@ -2397,6 +2426,12 @@ void MainWindow::gotoDesktopButtonClicked(void) */ void MainWindow::gotoHomeFolderButtonClicked(void) { + if(!m_fileSystemModel) + { + qWarning("File system model not initialized yet!"); + return; + } + QString homePath = QDesktopServices::storageLocation(QDesktopServices::HomeLocation); if(!homePath.isEmpty() && QDir(homePath).exists()) @@ -2416,6 +2451,12 @@ void MainWindow::gotoHomeFolderButtonClicked(void) */ void MainWindow::gotoMusicFolderButtonClicked(void) { + if(!m_fileSystemModel) + { + qWarning("File system model not initialized yet!"); + return; + } + QString musicPath = QDesktopServices::storageLocation(QDesktopServices::MusicLocation); if(!musicPath.isEmpty() && QDir(musicPath).exists()) @@ -2435,6 +2476,12 @@ void MainWindow::gotoMusicFolderButtonClicked(void) */ void MainWindow::gotoFavoriteFolder(void) { + if(!m_fileSystemModel) + { + qWarning("File system model not initialized yet!"); + return; + } + QAction *item = dynamic_cast(QObject::sender()); if(item) @@ -2462,6 +2509,12 @@ void MainWindow::makeFolderButtonClicked(void) { ABORT_IF_BUSY; + if(!m_fileSystemModel) + { + qWarning("File system model not initialized yet!"); + return; + } + QDir basePath(m_fileSystemModel->fileInfo(outputFolderView->currentIndex()).absoluteFilePath()); QString suggestedName = tr("New Folder"); @@ -2581,11 +2634,38 @@ void MainWindow::outputFolderContextMenu(const QPoint &pos) */ void MainWindow::showFolderContextActionTriggered(void) { + if(!m_fileSystemModel) + { + qWarning("File system model not initialized yet!"); + return; + } + QString path = QDir::toNativeSeparators(m_fileSystemModel->filePath(outputFolderView->currentIndex())); if(!path.endsWith(QDir::separator())) path.append(QDir::separator()); ShellExecuteW(this->winId(), L"explore", QWCHAR(path), NULL, NULL, SW_SHOW); } +/* + * Refresh the directory outline + */ +void MainWindow::refreshFolderContextActionTriggered(void) +{ + QTimer::singleShot(0, this, SLOT(initOutputFolderModel())); + + /* + const QString path = m_fileSystemModel->filePath(outputFolderView->currentIndex()); + m_fileSystemModel->flushCache(); + outputFolderView->reset(); + QModelIndex index = (!path.isEmpty()) ? m_fileSystemModel->index(path) : QModelIndex(); + + if(index.isValid()) + { + outputFolderView->setCurrentIndex(index); + CENTER_CURRENT_OUTPUT_FOLDER_DELAYED; + } + */ +} + /* * Add current folder to favorites */ @@ -2676,9 +2756,38 @@ void MainWindow::outputFolderEditFinished(void) */ void MainWindow::initOutputFolderModel(void) { - if(m_fileSystemModel) m_fileSystemModel->setRootPath(""); - CENTER_CURRENT_OUTPUT_FOLDER_DELAYED; - QTimer::singleShot(125, this, SLOT(initOutputFolderModel_doAsync())); + if(m_outputFolderNoteBox->isHidden()) + { + m_outputFolderNoteBox->show(); + m_outputFolderViewInitCounter = 4; + + if(m_fileSystemModel) + { + outputFolderView->setModel(NULL); + LAMEXP_DELETE(m_fileSystemModel); + } + + if(m_fileSystemModel = new QFileSystemModelEx()) + { + m_fileSystemModel->installEventFilter(this); + connect(m_fileSystemModel, SIGNAL(directoryLoaded(QString)), this, SLOT(outputFolderDirectoryLoaded(QString))); + connect(m_fileSystemModel, SIGNAL(rowsInserted(QModelIndex,int,int)), this, SLOT(outputFolderRowsInserted(QModelIndex,int,int))); + + outputFolderView->setModel(m_fileSystemModel); + outputFolderView->header()->setStretchLastSection(true); + outputFolderView->header()->hideSection(1); + outputFolderView->header()->hideSection(2); + outputFolderView->header()->hideSection(3); + + m_fileSystemModel->setRootPath(""); + QModelIndex index = m_fileSystemModel->index(m_settings->outputDir()); + if(index.isValid()) outputFolderView->setCurrentIndex(index); + outputFolderViewClicked(outputFolderView->currentIndex()); + } + + CENTER_CURRENT_OUTPUT_FOLDER_DELAYED; + QTimer::singleShot(125, this, SLOT(initOutputFolderModel_doAsync())); + } } /* @@ -2686,9 +2795,9 @@ void MainWindow::initOutputFolderModel(void) */ void MainWindow::initOutputFolderModel_doAsync(void) { - if(m_outputFolderViewInitialized > 0) + if(m_outputFolderViewInitCounter > 0) { - m_outputFolderViewInitialized--; + m_outputFolderViewInitCounter--; QTimer::singleShot(125, this, SLOT(initOutputFolderModel_doAsync())); } else diff --git a/src/Dialog_MainWindow.h b/src/Dialog_MainWindow.h index a8a4bcd9..3e721e85 100644 --- a/src/Dialog_MainWindow.h +++ b/src/Dialog_MainWindow.h @@ -116,6 +116,7 @@ private slots: void playlistEnabledChanged(void); void prependRelativePathChanged(void); void previewContextActionTriggered(void); + void refreshFolderContextActionTriggered(void); void removeFileButtonClicked(void); void renameOutputEnabledChanged(bool checked); void renameOutputPatternChanged(void); @@ -155,6 +156,7 @@ protected: virtual bool eventFilter(QObject *obj, QEvent *event); virtual void resizeEvent(QResizeEvent *event); virtual void showEvent(QShowEvent *event); + virtual void keyPressEvent(QKeyEvent *e); virtual bool event(QEvent *e); virtual bool winEvent(MSG *message, long *result); @@ -166,7 +168,7 @@ private: bool m_accepted; bool m_firstTimeShown; - uint m_outputFolderViewInitialized; + uint m_outputFolderViewInitCounter; bool m_outputFolderViewCentering; const bool m_neroEncoderAvailable; @@ -193,6 +195,7 @@ private: QAction *m_previewContextAction; QAction *m_showDetailsContextAction; QAction *m_showFolderContextAction; + QAction *m_refreshFolderContextAction; QAction *m_addFavoriteFolderAction; QAction *m_exportCsvContextAction; QAction *m_importCsvContextAction; diff --git a/src/Model_FileSystem.cpp b/src/Model_FileSystem.cpp index e5e8a643..507967e5 100644 --- a/src/Model_FileSystem.cpp +++ b/src/Model_FileSystem.cpp @@ -153,6 +153,7 @@ QFileSystemModelEx::QFileSystemModelEx() QFileSystemModelEx::~QFileSystemModelEx() { + removeAllFromCache(); LAMEXP_DELETE(m_myIconProvider); } @@ -205,6 +206,11 @@ QModelIndex QFileSystemModelEx::index(const QString &path, int column) const return QModelIndex(); } +void QFileSystemModelEx::flushCache(void) +{ + removeAllFromCache(); +} + /* ------------------------ */ /* STATIC FUNCTIONS BELOW */ /* ------------------------ */ @@ -236,6 +242,12 @@ void QFileSystemModelEx::removeFromCache(const QString &path) s_hasSubfolderCache.remove(path); } +void QFileSystemModelEx::removeAllFromCache(void) +{ + QMutexLocker lock(&s_hasSubfolderMutex); + s_hasSubfolderCache.clear(); +} + bool QFileSystemModelEx::hasSubfolders(const QString &path) { if(!FindFirstFileExInitialized) diff --git a/src/Model_FileSystem.h b/src/Model_FileSystem.h index bd2fc629..df15e162 100644 --- a/src/Model_FileSystem.h +++ b/src/Model_FileSystem.h @@ -36,6 +36,7 @@ public: //virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual void fetchMore(const QModelIndex &parent); virtual QModelIndex index(const QString &path, int column = 0) const; + virtual void flushCache(void); private: QFileIconProviderEx *m_myIconProvider; @@ -50,4 +51,5 @@ private: static bool hasSubfolders(const QString &path); static bool hasSubfoldersCached(const QString &path); static void removeFromCache(const QString &path); + static void removeAllFromCache(void); };