From b3df6357840f75274d73b6089bbe5c7b0aab7d94 Mon Sep 17 00:00:00 2001 From: lordmulder Date: Thu, 5 Apr 2012 15:24:45 +0200 Subject: [PATCH] Changed creation of QFileSystemModel. Object will now be created when the user first visits the "Output Folder" tab. Also added option to "refresh" the directory outline, which will effectively destroy and re-create the QFileSystemModel in order to discard all data that may be cached. --- etc/Translation/Blank.ts | 451 +++++++++++++++++++++--------------------- etc/Translation/LameXP_DE.ts | 4 + etc/Translation/LameXP_ES.ts | 4 + etc/Translation/LameXP_FR.ts | 4 + etc/Translation/LameXP_IT.ts | 4 + etc/Translation/LameXP_KR.ts | 4 + etc/Translation/LameXP_PL.ts | 449 ++++++++++++++++++++--------------------- etc/Translation/LameXP_RU.ts | 4 + etc/Translation/LameXP_TW.ts | 4 + etc/Translation/LameXP_UK.ts | 4 + etc/Translation/LameXP_ZH.ts | 4 + res/localization/LameXP_DE.qm | Bin 78344 -> 78466 bytes src/Config.h | 2 +- src/Dialog_MainWindow.cpp | 181 +++++++++++++---- src/Dialog_MainWindow.h | 5 +- src/Model_FileSystem.cpp | 12 ++ src/Model_FileSystem.h | 2 + 17 files changed, 655 insertions(+), 483 deletions(-) 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 - + + 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 408543d720b142ea1ec298e7bbca1d0d5e00d968..7cec73c045c5b7da525f84eb2aaca0d98b544216 100644 GIT binary patch delta 2813 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 - 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")); @@ -843,6 +845,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 */ bool MainWindow::eventFilter(QObject *obj, QEvent *event) @@ -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,12 +2634,39 @@ 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 */ void MainWindow::addFavoriteFolderActionTriggered(void) @@ -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); }; -- 2.11.0