Updated MediaInfo to v0.7.91 (2016-11-30), compiled with ICL 17.0 and MSVC 12.0
+
Fixed a bug in auto-rename feature, that caused problem when meta-tag contains path separator
Fixed included MediaInfo binary not working on processor without SSE2 support
+
Some improvements for "high DPI" screens: Adjust initial window size according to DPI setting
+
Updated MediaInfo to v0.7.91 (2016-11-30), compiled with ICL 17.0 and MSVC 12.0
LameXP v4.14 [2016-11-19]
diff --git a/doc/Changelog.md b/doc/Changelog.md
index 3c16fc9e..b4518add 100644
--- a/doc/Changelog.md
+++ b/doc/Changelog.md
@@ -2,9 +2,11 @@
# LameXP v4.xx History #
-## LameXP v4.15 [2016-??-??] ## {-}
-* Updated MediaInfo to v0.7.91 (2016-11-30), compiled with ICL 17.0 and MSVC 12.0
+## LameXP v4.15 [2017-??-??] ## {-}
+* Fixed a bug in auto-rename feature, that caused problem when meta-tag contains path separator
* Fixed included MediaInfo binary not working on processor *without* SSE2 support
+* Some improvements for "high DPI" screens: Adjust initial window size according to DPI setting
+* Updated MediaInfo to v0.7.91 (2016-11-30), compiled with ICL 17.0 and MSVC 12.0
## LameXP v4.14 [2016-11-19] ## {-}
diff --git a/etc/Translation/Blank.ts b/etc/Translation/Blank.ts
index 209bb842..6ff684ee 100644
--- a/etc/Translation/Blank.ts
+++ b/etc/Translation/Blank.ts
@@ -3072,57 +3072,57 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/etc/Translation/LameXP_DE.ts b/etc/Translation/LameXP_DE.ts
index 995b5949..233be21d 100644
--- a/etc/Translation/LameXP_DE.ts
+++ b/etc/Translation/LameXP_DE.ts
@@ -3065,37 +3065,37 @@
Die Quell-Audiodatei konnte nicht zum Lesen geöffnet werden:
-
+ Das Zielverzeichnis existiert nicht und konnte nicht erstellt werden:
-
+ In das Zielverzeichnis kann nicht geschrieben werden:
-
+ Unbekannter Dateiname
-
+ Unbekannter Titel
-
+ Unbekannter Künstler
-
+ Unbekanntes Album
-
+ Unbekannter Kommentar
@@ -3116,22 +3116,22 @@
Übersprungen.
-
+ Zieldatei existiert bereits, die Datei wird übersprungen:
-
+ Wenn existierende Dateien nicht übersprungen werden sollen, ändern Sie bitte den Überschreiben-Modus!
-
+ Zieldatei existiert bereits, die Datei wird gelöscht und überschrieben:
-
+ Die existierende Datei konnte nicht gelöscht werden, ein anderer Dateiname wird gewählt!
diff --git a/etc/Translation/LameXP_ES.ts b/etc/Translation/LameXP_ES.ts
index f73fea68..468751f8 100644
--- a/etc/Translation/LameXP_ES.ts
+++ b/etc/Translation/LameXP_ES.ts
@@ -3065,37 +3065,37 @@
No se puede abrir el archivo de entrada para su lectura:
-
+ La carpeta de salida no existe y NO puede ser creada:
-
+ NO se puede escribir en la carpeta de salida:
-
+ Nombre de archivo desconocido
-
+ Título desconocido
-
+ Artista desconocido
-
+ Álbum desconocido
-
+ Comentario desconocido
@@ -3116,22 +3116,22 @@
Omitidos.
-
+ El archivo de destino ya existe, se omitirá este archivo:
-
+ ¡Si no quiere sobreescribir los archivos existentes, cambie el modo sobreescritura por favor!
-
+ El archivo de destino ya existe, se eliminará este archivo:
-
+ ¡Error al eliminar el archivo de destino existente, se guardará con otro nombre!
diff --git a/etc/Translation/LameXP_FR.ts b/etc/Translation/LameXP_FR.ts
index 9546a653..28fa7f9a 100644
--- a/etc/Translation/LameXP_FR.ts
+++ b/etc/Translation/LameXP_FR.ts
@@ -3072,37 +3072,37 @@ Sélection automatique (par défaut)
Le fichier audio source n'a pas pu être ouvert pour la lecture:
-
+ Le répertoire de sortie cible n'existe pas et ne peut PAS être créé:
-
+ Le répertoire de sortie cible n'est pas accessible en écriture:
-
+ Nom de fichier inconnu
-
+ Titre inconnu
-
+ Artiste inconnu
-
+ Album inconnu
-
+ Commentaire inconnu
@@ -3124,22 +3124,22 @@ Sélection automatique (par défaut)
Ignoré.
-
+ Le fichier de sortie existe déjà, il sera ignoré :
-
+ Si vous ne voulez pas ignorer les fichiers existants, veuillez changer le mode de remplacement !
-
+ Le fichier de sortie existe déjà, il sera supprimé :
-
+ Impossible de supprimer le fichier cible existant, il sera enregistré sous un autre nom !
diff --git a/etc/Translation/LameXP_HU.ts b/etc/Translation/LameXP_HU.ts
index c403a4f7..db2ec8d3 100644
--- a/etc/Translation/LameXP_HU.ts
+++ b/etc/Translation/LameXP_HU.ts
@@ -3072,57 +3072,57 @@
A forrás hangfájl nem nyitható meg olvasásra:
-
+ A cél kimeneti könyvtár nem létezik, és NEM hozható létre:
-
+ A cél kimeneti könyvtár NEM írható:
-
+ Ismeretlen fájlnév
-
+ Ismeretlen cím
-
+ Ismeretlen előadó
-
+ Ismeretlen album
-
+ Ismeretlen hozzászólás
-
+ A cél kimeneti fájl már létezik, ez a fájl ki lesz hagyva:
-
+ Ha nem szeretné a meglévő fájlokat kihagyni, kérjük, változtassa meg a felülírási módot!
-
+ A cél kimeneti fájl már létezik, a meglévő fájl törlésre kerül:
-
+ Nem sikerült törölni a meglévő cél fájlt. Az állomány másik fájlnéven lesz elmentve!
diff --git a/etc/Translation/LameXP_IT.ts b/etc/Translation/LameXP_IT.ts
index f6dbbb35..bfc3ddf1 100644
--- a/etc/Translation/LameXP_IT.ts
+++ b/etc/Translation/LameXP_IT.ts
@@ -3131,38 +3131,38 @@
Il file audio sorgente non può essere aperto per la lettura:
-
+ La cartella di destinazione assegnata non esiste e NON può essere creata:
-
+ La directory di destinazione assegnata è di SOLA LETTURA:La directory di destinazione assegnata NON è scrivibile:
-
+ Nome File Sconosciuto
-
+ Titolo Sconosciuto
-
+ Artista Sconosciuto
-
+ Album Sconosciuto
-
+ Commento Sconosciuto
@@ -3183,22 +3183,22 @@
Saltato.
-
+ Il file di destinazione esiste già, questo file verrà saltato:
-
+ Se non vuoi saltare i file esistenti, cambia la modalità di sovrascrittura!
-
+ Il file di destinazione esiste già, il file esistente verrà eliminato:
-
+ Impossibile eliminare il file di destinazione esistente, il file verrà salvato con un altro nome!
diff --git a/etc/Translation/LameXP_KR.ts b/etc/Translation/LameXP_KR.ts
index 41ef2aa5..bc1b44b6 100644
--- a/etc/Translation/LameXP_KR.ts
+++ b/etc/Translation/LameXP_KR.ts
@@ -3056,37 +3056,37 @@
원본 오디오 파일을 열 수 없음:
-
+ 대상 출력 디렉터리가 존재하지 않으며, 만들 수 없습니다:
-
+ 대상 출력 디렉터리에 쓰기 불가:
-
+ 알수 없는 파일명
-
+ 알수 없는 제목
-
+ 알수 없는 가수
-
+ 알수 없는 앨범
-
+ 알수 없는 설명
@@ -3107,22 +3107,22 @@
건너뜀.
-
+ 대상 출력 파일이 이미 존재합니다. 건너뛰기할 파일:
-
+ 기존 파일을 건너뛰기하지 않으려면, 덮어쓰기 방식을 변경하시기 바랍니다!
-
+ 대상 출력 파일이 이미 존재합니다. 건너뛰기할 파일:
-
+ 기존 대상 파일 삭제 실패. 다른 파일명으로 저장됩니다!
diff --git a/etc/Translation/LameXP_PL.ts b/etc/Translation/LameXP_PL.ts
index 56a5b298..69c4bf56 100644
--- a/etc/Translation/LameXP_PL.ts
+++ b/etc/Translation/LameXP_PL.ts
@@ -3089,57 +3089,57 @@
Źródłowy plik dźwiękowy nie mógł zostać otworzony:
-
+ Lokalizacja docelowa nie istnieje lu NIE mogła zostać utworzona:
-
+ Nie można zapisać do lokalizacji docelowej:
-
+ Nieznana nazwa pliku
-
+ Nieznany Tytuł
-
+ Nieznany Artysta
-
+ Nieznany Album
-
+ Nieznany Komentarz
-
+ Plik wynikowy już istnieje, zostanie pominięty plik:
-
+ Jeśli nie chcesz aby istniejące pliki były pomijane, zmień tryb nadpisywania!
-
+ Plik wynikowy już istnieje, zostanie usunięty plik:
-
+ Usuwanie istniejącego pliku zakończone niepowodzeniem, nowy plik zostanie zapisany pod inną nazwą!
diff --git a/etc/Translation/LameXP_RU.ts b/etc/Translation/LameXP_RU.ts
index 49b4eada..648025f0 100644
--- a/etc/Translation/LameXP_RU.ts
+++ b/etc/Translation/LameXP_RU.ts
@@ -3080,37 +3080,37 @@
Исходный аудио файл не может быть открыт:
-
+ Папка для выходных файлов не существует и не может быть создана:
-
+ Папка для выходных файлов недоступна для записи:
-
+ Неизвестное имя файла
-
+ Неизвестное Название
-
+ Неизвестный Артист
-
+ Неизвестный Альбом
-
+ Неизвестный Комментарий
@@ -3131,22 +3131,22 @@
Пропущен.
-
+ Файл уже существует, будет пропущен:
-
+ Если Вы не хотите пропускать уже существующие файлы, пожалуйста, измените режим перезаписи!
-
+ Файл уже существует, будет удалён:
-
+ Ошибка удаления существующего файла, будет сохранение с другим именем!
diff --git a/etc/Translation/LameXP_SV.ts b/etc/Translation/LameXP_SV.ts
index 897a2e01..c8ef4a25 100644
--- a/etc/Translation/LameXP_SV.ts
+++ b/etc/Translation/LameXP_SV.ts
@@ -3082,57 +3082,57 @@
Källfilen kan inte öppnas för läsning:
-
+ Målmappen finns inte och kan inte skapas:
-
+ Målmappen är INTE skrivbar:
-
+ Okänt filnamn
-
+ Okänd titel
-
+ Okänd artist
-
+ Okänt album
-
+ Okänd kommentar
-
+ Målfilen finns redan! Den här filen hoppas över:
-
+ Om du inte vill att befintliga filer hoppas över, måste du ändra överskrivningsläge!
-
+ Målfilen finns redan! Befintlig fil kommer att tas bort:
-
+ Kunde inte ta bort befintlig målfil. Sparar med annat filnamn!
diff --git a/etc/Translation/LameXP_TW.ts b/etc/Translation/LameXP_TW.ts
index 785be572..451b7a1c 100644
--- a/etc/Translation/LameXP_TW.ts
+++ b/etc/Translation/LameXP_TW.ts
@@ -3056,37 +3056,37 @@
無法打開源音頻文件進行讀取:
-
+ 目標輸出目錄不存在,無法創建:
-
+ 目標輸出目錄不是可寫:
-
+ 未知文件名稱
-
+ 未知標題
-
+ 未知藝術家
-
+ 未知專輯
-
+ 未知評論
@@ -3107,22 +3107,22 @@
跳過.
-
+ 目標輸出文件已經存在, 將跳過此文件:
-
+ 如果你不希望被跳過已存在的文件, 請更改覆蓋模式!
-
+ 目標輸出文件已經存在, 要刪除現有的文件:
-
+ 無法刪除現有目標文件, 將保存到另一個文件名!
diff --git a/etc/Translation/LameXP_UK.ts b/etc/Translation/LameXP_UK.ts
index 6da4d476..f024cbc9 100644
--- a/etc/Translation/LameXP_UK.ts
+++ b/etc/Translation/LameXP_UK.ts
@@ -3073,37 +3073,37 @@
Неможливо відкрити для читання вхідний файл аудіо:
-
+ Вихідної теки не існує і її неможливо створити:
-
+ До вихідної теки неможливо проводити запис:
-
+ Невідома назва файла
-
+ Невідомий заголовок
-
+ Невідомий виконавець
-
+ Невідомий альбом
-
+ Невідомий коментар
@@ -3124,22 +3124,22 @@
Пропущено.
-
+ Вихідний цільовий файл вже існує, спроба пропустити цей файл:
-
+ Якщо ви не хочете, щоб існуючі файли були пропущені, будь ласка, змініть режим перезапису!
-
+ Вихідний цільовий файл вже існує, спроба видалити існуючий файл:
-
+ Неможливо видалити існуючий файл, збереження буде проведено до файла з іншою назвою!
diff --git a/etc/Translation/LameXP_ZH.ts b/etc/Translation/LameXP_ZH.ts
index e5dd49fe..5736eacb 100644
--- a/etc/Translation/LameXP_ZH.ts
+++ b/etc/Translation/LameXP_ZH.ts
@@ -3056,37 +3056,37 @@
无法打开源音频文件进行读取:
-
+ 目标输出目录不存在且无法创建:
-
+ 目标输出目录不可写:
-
+ 未知文件名称
-
+ 未知标题
-
+ 未知艺术家
-
+ 未知专辑
-
+ 未知注释
@@ -3107,22 +3107,22 @@
跳过。
-
+ 目标输出文件已经存在, 将跳过此文件:
-
+ 如果你不希望跳过已存在的文件, 请更改覆盖模式!
-
+ 目标输出文件已经存在, 将删除现有的文件:
-
+ 无法删除现有目标文件, 将保存为另一个文件名!
diff --git a/src/Config.h b/src/Config.h
index 90fcf818..9eeb4a16 100644
--- a/src/Config.h
+++ b/src/Config.h
@@ -34,8 +34,8 @@
#define VER_LAMEXP_MINOR_HI 1
#define VER_LAMEXP_MINOR_LO 5
#define VER_LAMEXP_TYPE Alpha
-#define VER_LAMEXP_PATCH 4
-#define VER_LAMEXP_BUILD 1955
+#define VER_LAMEXP_PATCH 5
+#define VER_LAMEXP_BUILD 1956
#define VER_LAMEXP_CONFG 1934
///////////////////////////////////////////////////////////////////////////////
diff --git a/src/Thread_Process.cpp b/src/Thread_Process.cpp
index 65f99ca3..7eeaca6a 100644
--- a/src/Thread_Process.cpp
+++ b/src/Thread_Process.cpp
@@ -420,17 +420,22 @@ int ProcessThread::generateOutFileName(QString &outFileName)
}
const QString baseName = sourceFile.completeBaseName();
- QDir targetDir(m_outputDirectory.isEmpty() ? sourceFile.canonicalPath() : m_outputDirectory);
+ QDir targetDir(MUtils::clean_file_path(m_outputDirectory.isEmpty() ? sourceFile.canonicalPath() : m_outputDirectory));
//Prepend relative source file path?
if(m_prependRelativeSourcePath && !m_outputDirectory.isEmpty())
{
- QDir rootDir = sourceFile.dir();
- while(!rootDir.isRoot())
+ QDir sourceDir = sourceFile.dir();
+ if (!sourceDir.isRoot())
{
- if(!rootDir.cdUp()) break;
+ quint32 depth = 0;
+ while ((!sourceDir.isRoot()) && (++depth <= 0xFF))
+ {
+ if (!sourceDir.cdUp()) break;
+ }
+ const QString postfix = QFileInfo(sourceDir.relativeFilePath(sourceFile.canonicalFilePath())).path();
+ targetDir.setPath(MUtils::clean_file_path(QString("%1/%2").arg(targetDir.absolutePath(), postfix)));
}
- targetDir.setPath(QString("%1/%2").arg(targetDir.absolutePath(), QFileInfo(rootDir.relativeFilePath(sourceFile.canonicalFilePath())).path()));
}
//Make sure output directory does exist
@@ -457,11 +462,11 @@ int ProcessThread::generateOutFileName(QString &outFileName)
}
//Apply rename pattern
- const QString fileName = applyRegularExpression(applyRenamePattern(baseName, m_audioFile.metaInfo()));
+ const QString fileName = MUtils::clean_file_name(applyRegularExpression(applyRenamePattern(baseName, m_audioFile.metaInfo())));
//Generate full output path
- const QString fileExt = m_renameFileExt.isEmpty() ? QString::fromUtf8(m_encoder->toEncoderInfo()->extension()) : m_renameFileExt;
- outFileName = MUtils::clean_file_path(QString("%1/%2.%3").arg(targetDir.canonicalPath(), fileName, fileExt));
+ const QString fileExt = m_renameFileExt.isEmpty() ? QString::fromUtf8(m_encoder->toEncoderInfo()->extension()) : m_renameFileExt;
+ outFileName = QString("%1/%2.%3").arg(targetDir.canonicalPath(), fileName, fileExt);
//Skip file, if target file exists (optional!)
if((m_overwriteMode == OverwriteMode_SkipExisting) && QFileInfo(outFileName).exists())
@@ -497,7 +502,7 @@ int ProcessThread::generateOutFileName(QString &outFileName)
//Generate final name
while(QFileInfo(outFileName).exists() && (n < (INT_MAX/2)))
{
- outFileName = MUtils::clean_file_path(QString("%1/%2 (%3).%4").arg(targetDir.canonicalPath(), fileName, QString::number(++n), fileExt));
+ outFileName = QString("%1/%2 (%3).%4").arg(targetDir.canonicalPath(), fileName, QString::number(++n), fileExt);
}
//Create placeholder
@@ -522,24 +527,25 @@ QString ProcessThread::applyRenamePattern(const QString &baseName, const AudioFi
fileName.replace("", QString().sprintf("%04d", metaInfo.year()), Qt::CaseInsensitive);
fileName.replace("", STRDEF(metaInfo.comment(), tr("Unknown Comment")), Qt::CaseInsensitive);
- return fileName;
+ return fileName.trimmed().isEmpty() ? baseName : fileName;
}
-QString ProcessThread::applyRegularExpression(const QString &fileName)
+QString ProcessThread::applyRegularExpression(const QString &baseName)
{
if(m_renameRegExp_Search.isEmpty() || m_renameRegExp_Replace.isEmpty())
{
- return fileName;
+ return baseName;
}
QRegExp regExp(m_renameRegExp_Search);
if(!regExp.isValid())
{
qWarning("Invalid regular expression detected -> cannot rename!");
- return fileName;
+ return baseName;
}
-
- return (QString(fileName).replace(regExp, m_renameRegExp_Replace));
+
+ const QString fileName = QString(baseName).replace(regExp, m_renameRegExp_Replace);
+ return fileName.trimmed().isEmpty() ? baseName : fileName;
}
QString ProcessThread::generateTempFileName(void)
diff --git a/src/Thread_Process.h b/src/Thread_Process.h
index 941ebdad..4dc359b1 100644
--- a/src/Thread_Process.h
+++ b/src/Thread_Process.h
@@ -90,7 +90,7 @@ private:
void processFile();
int generateOutFileName(QString &outFileName);
QString applyRenamePattern(const QString &baseName, const AudioFileModel_MetaInfo &metaInfo);
- QString applyRegularExpression(const QString &fileName);
+ QString applyRegularExpression(const QString &baseName);
QString generateTempFileName(void);
bool insertDownmixFilter(const unsigned int *const supportedChannels);
bool insertDownsampleFilter(const unsigned int *const supportedSamplerates, const unsigned int *const supportedBitdepths);