From f857054ddaf1401773f3e03bc691d3327c52d775 Mon Sep 17 00:00:00 2001 From: lordmulder Date: Wed, 4 Jan 2012 21:10:33 +0100 Subject: [PATCH] Added support for importing Meta tags from a CSV files. --- doc/Changelog.html | 1 + etc/Translation/Blank.ts | 488 +++++++++++++++++++++------------- etc/Translation/LameXP_DE.ts | 80 ++++++ etc/Translation/LameXP_ES.ts | 80 ++++++ etc/Translation/LameXP_FR.ts | 80 ++++++ etc/Translation/LameXP_IT.ts | 80 ++++++ etc/Translation/LameXP_KR.ts | 80 ++++++ etc/Translation/LameXP_PL.ts | 488 +++++++++++++++++++++------------- etc/Translation/LameXP_RU.ts | 80 ++++++ etc/Translation/LameXP_TW.ts | 80 ++++++ etc/Translation/LameXP_UK.ts | 80 ++++++ etc/Translation/LameXP_ZH.ts | 80 ++++++ res/Icons.qrc | 1 + res/localization/LameXP_DE.qm | Bin 74893 -> 77611 bytes res/localization/LameXP_ES.qm | Bin 74279 -> 74401 bytes res/localization/LameXP_FR.qm | Bin 65253 -> 65363 bytes res/localization/LameXP_IT.qm | Bin 37507 -> 37571 bytes res/localization/LameXP_KR.qm | Bin 44598 -> 44698 bytes res/localization/LameXP_PL.qm | Bin 73918 -> 74124 bytes res/localization/LameXP_RU.qm | Bin 62993 -> 63101 bytes res/localization/LameXP_TW.qm | Bin 52169 -> 52339 bytes res/localization/LameXP_UK.qm | Bin 76344 -> 76546 bytes res/localization/LameXP_ZH.qm | Bin 52169 -> 52339 bytes src/Config.h | 2 +- src/Dialog_MainWindow.cpp | 75 +++++- src/Dialog_MainWindow.h | 2 + src/Model_FileList.cpp | 202 +++++++++++++- src/Model_FileList.h | 14 + 28 files changed, 1602 insertions(+), 391 deletions(-) diff --git a/doc/Changelog.html b/doc/Changelog.html index 99c10062..ef638e3e 100644 --- a/doc/Changelog.html +++ b/doc/Changelog.html @@ -20,6 +20,7 @@ a:visited { color: #0000EE; }
  • Added support for the QAAC Encoder, requires QuickTime v7.7.1 or newer (see FAQ doc for details)
  • Added Chinese and Taiwanese translations, thanks to 456Vv <123@456vv.com>
  • Added experimental support for dcaenc, created by Alexander E. Patrakov <patrakov@gmail.com> +
  • Added CSV export/import for Meta tags (see context-menu on the "Source Files" tab)
  • Updated Qt runtime libraries to v4.8.0 (2011-12-15), compiled with MSVC 10.0
  • Updated LAME encoder to v3.99.2 Final (2011-11-18), compiled with ICL 12.1.7 and MSVC 10.0 (details)
  • Updated MediaInfo to v0.7.52 (2011-12-19), compiled with ICL 12.1.6 and MSVC 10.0 diff --git a/etc/Translation/Blank.ts b/etc/Translation/Blank.ts index 404b776e..85a824d3 100644 --- a/etc/Translation/Blank.ts +++ b/etc/Translation/Blank.ts @@ -677,15 +677,35 @@ FileListModel - + Title - + Full Path + + + (System Default) + + + + + Select ANSI Codepage for CSV file: + + + + + OK + + + + + Cancel + + LogViewDialog @@ -750,7 +770,7 @@ - + Show Details @@ -1412,9 +1432,9 @@ - - - + + + Check for Updates @@ -1455,13 +1475,13 @@ - + Disable Update Reminder - + Disable Sound Effects @@ -1541,710 +1561,802 @@ - + 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! - + 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! - - - - + + + + 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 123a0fd5..cee679f0 100644 --- a/etc/Translation/LameXP_DE.ts +++ b/etc/Translation/LameXP_DE.ts @@ -536,6 +536,22 @@ Full Path Dateipfad + + (System Default) + (Systemstandard) + + + Select ANSI Codepage for CSV file: + ANSI Codepage für CSV Datei auswählen: + + + OK + OK + + + Cancel + Abbrechen + LogViewDialog @@ -1734,6 +1750,70 @@ DCA Enc + + Export Meta Tags to CSV File + Metatags als CSV-Datei exportieren + + + Import Meta Tags from CSV File + Metatags aus CSV-Datei importieren + + + Save CSV file + CSV-Datei speichern + + + CSV File + CSV Datei + + + CSV Export + CSV Export + + + Sorry, there are no meta tags that can be exported! + Keine Metatags gefunden, die exportiert werden können! + + + Sorry, failed to open CSV file for writing! + Die CSV-Datei konnte nicht zum Schreiben geöffnet werden! + + + Sorry, failed to write to the CSV file! + Beim Schreiben der CSV-Datei ist ein Fehler aufgetreten! + + + The CSV files was created successfully! + Die CSV-Datei wurde erfolgreich erzeugt! + + + Open CSV file + CSV-Datei öffnen + + + Sorry, failed to open CSV file for reading! + Die CSV-Datei konnte nicht zum Lesen geöffnet werden! + + + Sorry, failed to read from the CSV file! + Beim Lesen der CSV-Datei ist ein Fehler aufgetreten! + + + Sorry, the CSV file does not contain any known fields! + Die CSV-Datei enthält keine unterstützten Datenfelder! + + + CSV file is incomplete. Not all files were updated! + Die CSV-Datei ist unvollständig. Nicht alle Dateien wurden aktualisiert! + + + The CSV files was imported successfully! + Die CSV-Datei wurde erfolgreich importiert! + + + CSV Import + CSV Import + MetaInfo diff --git a/etc/Translation/LameXP_ES.ts b/etc/Translation/LameXP_ES.ts index 0a324fcc..d3d1f32b 100644 --- a/etc/Translation/LameXP_ES.ts +++ b/etc/Translation/LameXP_ES.ts @@ -535,6 +535,22 @@ Full Path Ruta completa + + (System Default) + + + + Select ANSI Codepage for CSV file: + + + + OK + Aceptar + + + Cancel + Cancelar + LogViewDialog @@ -1733,6 +1749,70 @@ DCA Enc + + Export Meta Tags to CSV File + + + + Import Meta Tags from CSV File + + + + 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 + + + + 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! + + + + CSV Import + + MetaInfo diff --git a/etc/Translation/LameXP_FR.ts b/etc/Translation/LameXP_FR.ts index b0392e5f..11992659 100644 --- a/etc/Translation/LameXP_FR.ts +++ b/etc/Translation/LameXP_FR.ts @@ -539,6 +539,22 @@ Full Path Chemin complet + + (System Default) + + + + Select ANSI Codepage for CSV file: + + + + OK + OK + + + Cancel + Annuler + LogViewDialog @@ -1743,6 +1759,70 @@ Ouvrir le dossier récursivement... DCA Enc + + Export Meta Tags to CSV File + + + + Import Meta Tags from CSV File + + + + 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 + + + + 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! + + + + CSV Import + + MetaInfo diff --git a/etc/Translation/LameXP_IT.ts b/etc/Translation/LameXP_IT.ts index aad2d054..e46e9e4e 100644 --- a/etc/Translation/LameXP_IT.ts +++ b/etc/Translation/LameXP_IT.ts @@ -536,6 +536,22 @@ Full Path Percorso + + (System Default) + + + + Select ANSI Codepage for CSV file: + + + + OK + + + + Cancel + Cancella + LogViewDialog @@ -1734,6 +1750,70 @@ DCA Enc + + Export Meta Tags to CSV File + + + + Import Meta Tags from CSV File + + + + 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 + + + + 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! + + + + CSV Import + + MetaInfo diff --git a/etc/Translation/LameXP_KR.ts b/etc/Translation/LameXP_KR.ts index e850cd51..d7c08254 100644 --- a/etc/Translation/LameXP_KR.ts +++ b/etc/Translation/LameXP_KR.ts @@ -535,6 +535,22 @@ Full Path 전체 경로 + + (System Default) + + + + Select ANSI Codepage for CSV file: + + + + OK + 확인 + + + Cancel + 취소 + LogViewDialog @@ -1733,6 +1749,70 @@ DCA Enc + + Export Meta Tags to CSV File + + + + Import Meta Tags from CSV File + + + + 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 + + + + 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! + + + + CSV Import + + MetaInfo diff --git a/etc/Translation/LameXP_PL.ts b/etc/Translation/LameXP_PL.ts index 50f33207..022b2a21 100644 --- a/etc/Translation/LameXP_PL.ts +++ b/etc/Translation/LameXP_PL.ts @@ -677,15 +677,35 @@ FileListModel - + Title Tytuł - + Full Path Pełna ścieżka + + + (System Default) + (Domyślne systemowe) + + + + Select ANSI Codepage for CSV file: + + + + + OK + OK + + + + Cancel + Anuluj + LogViewDialog @@ -750,7 +770,7 @@ - + Show Details Pokaż szczegóły @@ -1412,9 +1432,9 @@ - - - + + + Check for Updates Sprawdź aktualizacje @@ -1455,13 +1475,13 @@ - + Disable Update Reminder Wyłącz przypominanie o aktualizacji - + Disable Sound Effects Wyłącz efekty dźwiękowe @@ -1541,710 +1561,802 @@ 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 - + + Export Meta Tags to CSV File + + + + + Import Meta Tags from CSV File + + + + 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 + + + + + + + + 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 + + + + + Sorry, failed to open CSV file for reading! + + + + + + + + + CSV Import + + + + + 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 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! - - - - + + + + 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 1a44da5a..e804a09b 100644 --- a/etc/Translation/LameXP_RU.ts +++ b/etc/Translation/LameXP_RU.ts @@ -538,6 +538,22 @@ Full Path Полный путь + + (System Default) + + + + Select ANSI Codepage for CSV file: + + + + OK + ОК + + + Cancel + Отмена + LogViewDialog @@ -1739,6 +1755,70 @@ DCA Enc + + Export Meta Tags to CSV File + + + + Import Meta Tags from CSV File + + + + 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 + + + + 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! + + + + CSV Import + + MetaInfo diff --git a/etc/Translation/LameXP_TW.ts b/etc/Translation/LameXP_TW.ts index 8d491415..0784c51c 100644 --- a/etc/Translation/LameXP_TW.ts +++ b/etc/Translation/LameXP_TW.ts @@ -535,6 +535,22 @@ Full Path 完整路徑 + + (System Default) + (系統默認) + + + Select ANSI Codepage for CSV file: + + + + OK + 確定 + + + Cancel + 取消 + LogViewDialog @@ -1733,6 +1749,70 @@ DCA Enc + + Export Meta Tags to CSV File + + + + Import Meta Tags from CSV File + + + + 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 + + + + 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! + + + + CSV Import + + MetaInfo diff --git a/etc/Translation/LameXP_UK.ts b/etc/Translation/LameXP_UK.ts index 98ac9d99..abdd2ad1 100644 --- a/etc/Translation/LameXP_UK.ts +++ b/etc/Translation/LameXP_UK.ts @@ -536,6 +536,22 @@ Full Path Повний шлях + + (System Default) + (Типово для ОС) + + + Select ANSI Codepage for CSV file: + + + + OK + Ок + + + Cancel + Відмінити + LogViewDialog @@ -1734,6 +1750,70 @@ DCA Enc DCA Enc + + Export Meta Tags to CSV File + + + + Import Meta Tags from CSV File + + + + 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 + + + + 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! + + + + CSV Import + + MetaInfo diff --git a/etc/Translation/LameXP_ZH.ts b/etc/Translation/LameXP_ZH.ts index bb935486..d9f20530 100644 --- a/etc/Translation/LameXP_ZH.ts +++ b/etc/Translation/LameXP_ZH.ts @@ -535,6 +535,22 @@ Full Path 完整路径 + + (System Default) + (系统默认) + + + Select ANSI Codepage for CSV file: + + + + OK + 确定 + + + Cancel + 取消 + LogViewDialog @@ -1733,6 +1749,70 @@ DCA Enc + + Export Meta Tags to CSV File + + + + Import Meta Tags from CSV File + + + + 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 + + + + 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! + + + + CSV Import + + MetaInfo diff --git a/res/Icons.qrc b/res/Icons.qrc index 41db7cf5..1574edd9 100644 --- a/res/Icons.qrc +++ b/res/Icons.qrc @@ -59,6 +59,7 @@ icons/folder_image.png icons/folder_explore.png icons/folder_page.png + icons/folder_table.png icons/font.png icons/group.png icons/house.png diff --git a/res/localization/LameXP_DE.qm b/res/localization/LameXP_DE.qm index e82064ed8d1ad6f55cd35774210f5fb113c58016..812fb0962cf286adf5c2c6295fb97fcc0315c901 100644 GIT binary patch delta 6384 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 delta 4638 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 Knv%O`=>Gx0%#lL? diff --git a/res/localization/LameXP_ES.qm b/res/localization/LameXP_ES.qm index a49b90cd6a8c6bc38ecc1a9efdf5c38d255198dd..1bce12eaca867c260dae9418c34c98305c3aaf80 100644 GIT binary patch delta 4344 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 Pz2eJD>g|_@I%WSKR}M5P delta 4265 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 G(*FU)X)w6} diff --git a/res/localization/LameXP_FR.qm b/res/localization/LameXP_FR.qm index 7ad42a05519f92858ebb08b6d4d2fbc75ff38eb2..3ceff8c9d1c335258125f9cebf35cb1d4083f63d 100644 GIT binary patch delta 3831 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 delta 3803 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 delta 2258 zcmXX`dt8k99)4!#edm4WjJUlpYm%_6lTtafi?AUI zyFP2J#Ukm1)4H~2osZgfmxE<(9Clql=W*uz^~^gn@9+0~pUbztTDhuPS>o#W5x@w* zZ7m>91_p%yF|ojsS3q(-5bXlt@Dw1x0^u70@YgvpJ_^ERZ+?Fs;s$;{tQq2WjX>0o z5MLGovn=pmfJ#O>8Xe6%s63D!ZnTH1=3Q2ib)SXl3_r_myb^_hgP`R!daBacO$! z0mki8xSsR@JnRZ{K|AnareefCe_&2$#Y9mBcomi~XIE_$9sh??+H)IG8>LbK`xSV<#gxQv8;JuZ?{QOejqlv;Q z({sSuCam2={oRiV>ke}O+XP`t#0e(J=0wi|C)!pB)wOFKOvoN#PYR8kS0Ws+Gg%fv zsFlbxr%I@+XL2SQgcI$LY0XaIY%eA#;gQhrYcmkhC^W|KqVacyD;can$nQc+SrK42 z3vc51UY~hlrzge0;A+vjm^c`}UgvyBye(1MF9QNWgV0IOAAG2H2 zTEz|F4fO80Sbni9lNBdcT%ZN6o5ii`_5*36xZ{x$2>ge*w|N%{1&jMXX7`r%5zmBN zr3HJ%Yb|BGc$RoQbSb;FT5Q`!!b?2G_A&ElU9Nb)jv0A>hT4>IeLJuyPVHslWc{bA zeT7tDx>-GNKg-?whI;HKmM&qhI>Mb3C2mkh)_%<{#HekbQ1ZYqb@CV9K$4$2HJOvH zl+-KhNMOZKb=85sK>7srfm~K4%v_cvm>ucrTfgQ2AM{c`NTuP{ze(C*$APi=l8bgY zP!KKoB+}ri6D8jrq11hu6!hQ%V7x7bg)@0GcS|YP<^sO6rG@X$U;!6M3rp!sK)AG6 zxq?1GDqWw>hTEm`MOH@ry!1&7$F^5WySt5IaF+gE+M{V=BM(Z43;I*sr6eL8dNNG=y-sbCtJIcP|7fQ@N^gY<|BvpI72-H z<<_! z@|7mz5(i5!(qtXt`LiN4v-7ElrA1RX*a$2L*X&(d%Bc6>t*PlCBVn=TL}VrYKO$*nu%uluHVXmC)x)W_jwK;xN zAT&l>GAIX_a7equ{w?5hL|c>m8K5q9V!tNsp|2cofVp?Iry{oVpncj#HJKIuq`hp3 z1PlwcH}19rLw&VvC0vKz_1Y(aoGfj>PP64436F7Nr~jj?hx57jPTf!gtxz4-jR|CB zg4%R5byUcbrJMQv4R-FJuE?k-;S$|uhn^P}`RjJIk?FEZU3KlhS^j>yGhJ$c&PlrZ zitCKFT6aZH$&FUsRZCx>XS=RrXf(G>i0)-9iF*L;9(k)Hz$ZO*P@yqp2yr?e-@Famd`j2XVqo>Q9n2@XA zyS0)YHtTDj4FMLf)HnRVMcyNs$X4{I(f@Abf%6~h|5)9X-HJ8H*ZDl+slm;wgBdt& z=zlSXU2QR>Y`I1yM;cPMQNab@r5N&x>0xTIp<;?V4|-zwRN4thZibWZEaBc&8_v7a z%K_UB_j1MnxnV|+HK~AKh|$l>mly0a1~~cx%Hzht5!^OCHyKAoHB*Tt#UHskg#M_Art#_FQ!Tyhtj7#w75x2yoh#2N43;m$L67#|u2F#3NQpAToE62nZr zvJ1FMj+wl^E(X?wo2Hrbcx$q0x~-ML>19gY$!AP5WzO;EiuuNr72n7JRhyQS`q7_e vQesJi=_Z;Qc6oA%noK{ajQpc}7O<}Hh*D#BIkKfkz{39m19)y6 diff --git a/res/localization/LameXP_KR.qm b/res/localization/LameXP_KR.qm index e98c86424d7847c2f9412e815c6326704e28b91d..c696e742958e730148d11ac02c4a821c923f49d6 100644 GIT binary patch delta 3611 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 delta 3574 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 VfIlxfG(-N=1o$6V8}#Mb{{sa*b=3d> delta 4537 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 Xdp1dZ6TYhIoX~T)?cv$O8|MEXaA0`B diff --git a/res/localization/LameXP_RU.qm b/res/localization/LameXP_RU.qm index eb546a72d8653274f91888138b9846a8d6bc0458..d774dc5372455c98bbcc0be16b8d5ba61cdec183 100644 GIT binary patch delta 3813 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 delta 3791 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 QKA!2aug|e1zT&a}1KLb_zyJUM diff --git a/res/localization/LameXP_TW.qm b/res/localization/LameXP_TW.qm index 2a00b429c1fe8fdc901123354769708d467fa369..f24e6c7cabf1da51a4d18ea9f760f1e26ecd3737 100644 GIT binary patch delta 4544 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 NJKG+bH!N`Ne*u81KMMc= delta 4492 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 WW_W(!o8fHd%xeQ(4>)-aP5D20$t(Q; diff --git a/res/localization/LameXP_UK.qm b/res/localization/LameXP_UK.qm index aacac040141c1fbee1e69a73f4110d6d918d9247..69fe2e85116ef3a31e1dfb6e34605e7a20e1f8ac 100644 GIT binary patch delta 4592 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 aJvIOTu;iIn^2*>k$#Rw5zLmk-uKpi|o{Z}N delta 4570 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 E|F>{=`~Uy| diff --git a/res/localization/LameXP_ZH.qm b/res/localization/LameXP_ZH.qm index af6bdb6b25ab9bdd727e8beb6ab7b3cf711df836..ec2a44bb6f37459f73e8438dabfa3233892d7b48 100644 GIT binary patch delta 4544 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 NJKG+bH!N`Ne*u81KMMc= delta 4492 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 WW_W(!o8fHd%xeQ(4>)-aP5D20$t(Q; diff --git a/src/Config.h b/src/Config.h index 2cdd1172..22ffc381 100644 --- a/src/Config.h +++ b/src/Config.h @@ -30,7 +30,7 @@ #define VER_LAMEXP_MINOR_LO 4 #define VER_LAMEXP_TYPE Alpha #define VER_LAMEXP_PATCH 13 -#define VER_LAMEXP_BUILD 867 +#define VER_LAMEXP_BUILD 870 /////////////////////////////////////////////////////////////////////////////// // Tool versions (minimum expected versions!) diff --git a/src/Dialog_MainWindow.cpp b/src/Dialog_MainWindow.cpp index de65afd3..9a042bf3 100644 --- a/src/Dialog_MainWindow.cpp +++ b/src/Dialog_MainWindow.cpp @@ -127,6 +127,7 @@ MainWindow::MainWindow(FileListModel *fileListModel, AudioFileModel *metaInfo, S m_findFileContextAction = m_sourceFilesContextMenu->addAction(QIcon(":/icons/folder_go.png"), "N/A"); m_sourceFilesContextMenu->addSeparator(); m_exportCsvContextAction = m_sourceFilesContextMenu->addAction(QIcon(":/icons/table_save.png"), "N/A"); + m_importCsvContextAction = m_sourceFilesContextMenu->addAction(QIcon(":/icons/folder_table.png"), "N/A"); SET_FONT_BOLD(m_showDetailsContextAction, true); connect(buttonAddFiles, SIGNAL(clicked()), this, SLOT(addFilesButtonClicked())); connect(buttonRemoveFile, SIGNAL(clicked()), this, SLOT(removeFileButtonClicked())); @@ -144,6 +145,8 @@ MainWindow::MainWindow(FileListModel *fileListModel, AudioFileModel *metaInfo, S connect(m_previewContextAction, SIGNAL(triggered(bool)), this, SLOT(previewContextActionTriggered())); connect(m_findFileContextAction, SIGNAL(triggered(bool)), this, SLOT(findFileContextActionTriggered())); connect(m_exportCsvContextAction, SIGNAL(triggered(bool)), this, SLOT(exportCsvContextActionTriggered())); + connect(m_importCsvContextAction, SIGNAL(triggered(bool)), this, SLOT(importCsvContextActionTriggered())); + //Setup "Output" tab m_fileSystemModel = new QFileSystemModelEx(); @@ -707,6 +710,7 @@ void MainWindow::changeEvent(QEvent *e) m_showFolderContextAction->setText(tr("Browse Selected Folder")); 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")); //Force GUI update m_metaInfoModel->clearData(); @@ -2131,6 +2135,9 @@ void MainWindow::handleDelayedFiles(void) addFiles(selectedFiles); } +/* + * Export Meta tags to CSV file + */ void MainWindow::exportCsvContextActionTriggered(void) { TEMP_HIDE_DROPBOX @@ -2159,18 +2166,76 @@ void MainWindow::exportCsvContextActionTriggered(void) m_settings->mostRecentInputPath(QFileInfo(selectedCsvFile).canonicalPath()); switch(m_fileListModel->exportToCsv(selectedCsvFile)) { - case 1: - QMessageBox::critical(this, tr("CSV Export"), NOBR(tr("There are no meta tags that could be exported!"))); + case FileListModel::CsvError_NoTags: + QMessageBox::critical(this, tr("CSV Export"), NOBR(tr("Sorry, there are no meta tags that can be exported!"))); break; - case 2: + case FileListModel::CsvError_FileOpen: QMessageBox::critical(this, tr("CSV Export"), NOBR(tr("Sorry, failed to open CSV file for writing!"))); break; - case 3: + case FileListModel::CsvError_FileWrite: QMessageBox::critical(this, tr("CSV Export"), NOBR(tr("Sorry, failed to write to the CSV file!"))); break; - default: + case FileListModel::CsvError_OK: QMessageBox::information(this, tr("CSV Export"), NOBR(tr("The CSV files was created successfully!"))); break; + default: + qWarning("exportToCsv: Unknown return code!"); + } + } + ) +} + + +/* + * Import Meta tags from CSV file + */ +void MainWindow::importCsvContextActionTriggered(void) +{ + TEMP_HIDE_DROPBOX + ( + QString selectedCsvFile; + + if(USE_NATIVE_FILE_DIALOG) + { + selectedCsvFile = QFileDialog::getOpenFileName(this, tr("Open CSV file"), m_settings->mostRecentInputPath(), QString("%1 (*.csv)").arg(tr("CSV File"))); + } + else + { + QFileDialog dialog(this, tr("Open CSV file")); + dialog.setFileMode(QFileDialog::ExistingFile); + dialog.setNameFilter(QString("%1 (*.csv)").arg(tr("CSV File"))); + dialog.setDirectory(m_settings->mostRecentInputPath()); + if(dialog.exec()) + { + selectedCsvFile = dialog.selectedFiles().first(); + } + } + + if(!selectedCsvFile.isEmpty()) + { + m_settings->mostRecentInputPath(QFileInfo(selectedCsvFile).canonicalPath()); + switch(m_fileListModel->importFromCsv(this, selectedCsvFile)) + { + case FileListModel::CsvError_FileOpen: + QMessageBox::critical(this, tr("CSV Import"), NOBR(tr("Sorry, failed to open CSV file for reading!"))); + break; + case FileListModel::CsvError_FileRead: + QMessageBox::critical(this, tr("CSV Import"), NOBR(tr("Sorry, failed to read from the CSV file!"))); + break; + case FileListModel::CsvError_NoTags: + QMessageBox::critical(this, tr("CSV Import"), NOBR(tr("Sorry, the CSV file does not contain any known fields!"))); + break; + case FileListModel::CsvError_Incomplete: + QMessageBox::warning(this, tr("CSV Import"), NOBR(tr("CSV file is incomplete. Not all files were updated!"))); + break; + case FileListModel::CsvError_OK: + QMessageBox::information(this, tr("CSV Import"), NOBR(tr("The CSV files was imported successfully!"))); + break; + case FileListModel::CsvError_Aborted: + /* User aborted, ignore! */ + break; + default: + qWarning("exportToCsv: Unknown return code!"); } } ) diff --git a/src/Dialog_MainWindow.h b/src/Dialog_MainWindow.h index 08b67228..a983c9f4 100644 --- a/src/Dialog_MainWindow.h +++ b/src/Dialog_MainWindow.h @@ -90,6 +90,7 @@ private slots: void handleDelayedFiles(void); void hibernateComputerActionTriggered(bool checked); void importCueSheetActionTriggered(bool checked); + void importCsvContextActionTriggered(void); void initOutputFolderModel(void); void languageActionActivated(QAction *action); void languageFromFileActionActivated(bool checked); @@ -185,6 +186,7 @@ private: QAction *m_showFolderContextAction; QAction *m_addFavoriteFolderAction; QAction *m_exportCsvContextAction; + QAction *m_importCsvContextAction; QActionGroup *m_languageActionGroup; QActionGroup *m_styleActionGroup; QActionGroup *m_tabActionGroup; diff --git a/src/Model_FileList.cpp b/src/Model_FileList.cpp index 7ca633ff..f96790e8 100644 --- a/src/Model_FileList.cpp +++ b/src/Model_FileList.cpp @@ -21,9 +21,17 @@ #include "Model_FileList.h" +#include "Global.h" + #include #include #include +#include +#include +#include + +#define EXPAND(STR) QString(STR).leftJustified(96, ' ') +#define CHECK_HDR(STR,NAM) (!(STR).compare((NAM), Qt::CaseInsensitive)) //////////////////////////////////////////////////////////// // Constructor & Destructor @@ -245,12 +253,16 @@ int FileListModel::exportToCsv(const QString &outFile) if(!(haveTitle || haveArtist || haveAlbum || haveGenre || haveYear || haveComment)) { - return 1; + return CsvError_NoTags; } QFile file(outFile); - if(file.open(QIODevice::WriteOnly)) + if(!file.open(QIODevice::WriteOnly)) + { + return CsvError_FileOpen; + } + else { QStringList line; @@ -265,13 +277,9 @@ int FileListModel::exportToCsv(const QString &outFile) if(file.write(line.join(";").append("\r\n").toUtf8().prepend("\xef\xbb\xbf")) < 1) { file.close(); - return 3; + return CsvError_FileWrite; } } - else - { - return 2; - } for(int i = 0; i < nFiles; i++) { @@ -288,10 +296,186 @@ int FileListModel::exportToCsv(const QString &outFile) if(file.write(line.replaceInStrings(";", ",").join(";").append("\r\n").toUtf8()) < 1) { file.close(); - return 3; + return CsvError_FileWrite; } } file.close(); - return 0; + return CsvError_OK; +} + +int FileListModel::importFromCsv(QWidget *parent, const QString &inFile) +{ + QFile file(inFile); + if(!file.open(QIODevice::ReadOnly)) + { + return CsvError_FileOpen; + } + + QTextCodec *codec = NULL; + QByteArray bomCheck = file.peek(16); + + if((!bomCheck.isEmpty()) && bomCheck.startsWith("\xef\xbb\xbf")) + { + codec = QTextCodec::codecForName("UTF-8"); + } + else if((!bomCheck.isEmpty()) && bomCheck.startsWith("\xff\xfe")) + { + codec = QTextCodec::codecForName("UTF-16LE"); + } + else if((!bomCheck.isEmpty()) && bomCheck.startsWith("\xfe\xff")) + { + codec = QTextCodec::codecForName("UTF-16BE"); + } + else + { + const QString systemDefault = tr("(System Default)"); + + QStringList codecList; + codecList.append(systemDefault); + codecList.append(lamexp_available_codepages()); + + QInputDialog *input = new QInputDialog(parent); + input->setLabelText(EXPAND(tr("Select ANSI Codepage for CSV file:"))); + input->setOkButtonText(tr("OK")); + input->setCancelButtonText(tr("Cancel")); + input->setTextEchoMode(QLineEdit::Normal); + input->setComboBoxItems(codecList); + + if(input->exec() < 1) + { + LAMEXP_DELETE(input); + return CsvError_Aborted; + } + + if(input->textValue().compare(systemDefault, Qt::CaseInsensitive)) + { + qDebug("User-selected codec is: %s", input->textValue().toLatin1().constData()); + codec = QTextCodec::codecForName(input->textValue().toLatin1().constData()); + } + else + { + qDebug("Going to use the system's default codec!"); + codec = QTextCodec::codecForName("System"); + } + + LAMEXP_DELETE(input); + } + + bomCheck.clear(); + + //----------------------// + + QTextStream stream(&file); + stream.setAutoDetectUnicode(false); + stream.setCodec(codec); + + QStringList header = stream.readLine().simplified().split(";", QString::KeepEmptyParts); + + const int nCols = header.count(); + const int nFiles = m_fileList.count(); + + if(nCols < 1) + { + return CsvError_FileRead; + } + + for(int i = 0; i < nCols; i++) + { + header[i] = header[i].trimmed(); + } + + bool *ignore = new bool[nCols]; + memset(ignore, 0, sizeof(bool) * nCols); + + //----------------------// + + for(int i = 0; i < nFiles; i++) + { + if(stream.atEnd()) + { + LAMEXP_DELETE_ARRAY(ignore); + return CsvError_Incomplete; + } + + QStringList line = stream.readLine().split(";", QString::KeepEmptyParts); + + if(line.count() < header.count()) + { + qWarning("Skipping an incomplete line in CSV file!"); + continue; + } + + for(int j = 0; j < nCols; j++) + { + if(ignore[j]) + { + continue; + } + else if(CHECK_HDR(header.at(j), "POSITION")) + { + bool ok = false; + unsigned int temp = line.at(j).trimmed().toUInt(&ok); + if(ok) m_fileList[i].setFilePosition(temp); + } + else if(CHECK_HDR(header.at(j), "TITLE")) + { + QString temp = line.at(j).trimmed(); + if(!temp.isEmpty()) m_fileList[i].setFileName(temp); + } + else if(CHECK_HDR(header.at(j), "ARTIST")) + { + QString temp = line.at(j).trimmed(); + if(!temp.isEmpty()) m_fileList[i].setFileArtist(temp); + } + else if(CHECK_HDR(header.at(j), "ALBUM")) + { + QString temp = line.at(j).trimmed(); + if(!temp.isEmpty()) m_fileList[i].setFileAlbum(temp); + } + else if(CHECK_HDR(header.at(j), "GENRE")) + { + QString temp = line.at(j).trimmed(); + if(!temp.isEmpty()) m_fileList[i].setFileGenre(temp); + } + else if(CHECK_HDR(header.at(j), "YEAR")) + { + bool ok = false; + unsigned int temp = line.at(j).trimmed().toUInt(&ok); + if(ok) m_fileList[i].setFileYear(temp); + } + else if(CHECK_HDR(header.at(j), "COMMENT")) + { + QString temp = line.at(j).trimmed(); + if(!temp.isEmpty()) m_fileList[i].setFileComment(temp); + } + else + { + qWarning("Unkonw field '%s' will be ignored!", header.at(j).toUtf8().constData()); + ignore[j] = true; + } + } + + bool noFieldsLeft = true; + + for(int j = 0; j < nCols; j++) + { + if(!ignore[j]) + { + noFieldsLeft = false; + break; + } + } + + if(noFieldsLeft) + { + LAMEXP_DELETE_ARRAY(ignore); + return CsvError_NoTags; + } + } + + //----------------------// + + LAMEXP_DELETE_ARRAY(ignore); + return CsvError_OK; } diff --git a/src/Model_FileList.h b/src/Model_FileList.h index d7ce173e..3df1890b 100644 --- a/src/Model_FileList.h +++ b/src/Model_FileList.h @@ -50,6 +50,20 @@ public: //CSV export/import int exportToCsv(const QString &outFile); + int importFromCsv(QWidget *parent, const QString &inFile); + + //Public types + enum + { + CsvError_OK = 0, + CsvError_NoTags = 1, + CsvError_FileOpen = 2, + CsvError_FileRead = 3, + CsvError_FileWrite = 4, + CsvError_Incomplete = 5, + CsvError_Aborted = 6 + } + CsvError; public slots: void addFile(const QString &filePath);