diff --git a/src/Config.h b/src/Config.h
index 8f3539cf..5df4e3b4 100644
--- a/src/Config.h
+++ b/src/Config.h
@@ -25,7 +25,7 @@
#define VER_LAMEXP_MAJOR 4
#define VER_LAMEXP_MINOR_HI 0
#define VER_LAMEXP_MINOR_LO 0
-#define VER_LAMEXP_BUILD 138
+#define VER_LAMEXP_BUILD 139
#define VER_LAMEXP_SUFFIX TechPreview
/*
diff --git a/src/Dialog_MainWindow.cpp b/src/Dialog_MainWindow.cpp
index a4a560e4..1d84f473 100644
--- a/src/Dialog_MainWindow.cpp
+++ b/src/Dialog_MainWindow.cpp
@@ -839,42 +839,91 @@ void MainWindow::makeFolderButtonClicked(void)
ABORT_IF_BUSY;
QDir basePath(m_fileSystemModel->fileInfo(outputFolderView->currentIndex()).absoluteFilePath());
-
- bool bApplied = true;
- QString folderName = QInputDialog::getText(this, "New Folder", "Enter the name of the new folder:", QLineEdit::Normal, "New folder", &bApplied, Qt::WindowStaysOnTopHint).simplified();
+ QString suggestedName = "New Folder";
- if(bApplied)
+ if(!m_metaData->fileArtist().isEmpty() && !m_metaData->fileAlbum().isEmpty())
{
- folderName.remove(":", Qt::CaseInsensitive);
- folderName.remove("/", Qt::CaseInsensitive);
- folderName.remove("\\", Qt::CaseInsensitive);
- folderName.remove("?", Qt::CaseInsensitive);
- folderName.remove("*", Qt::CaseInsensitive);
- folderName.remove("<", Qt::CaseInsensitive);
- folderName.remove(">", Qt::CaseInsensitive);
-
- int i = 1;
- QString newFolder = folderName;
-
- while(basePath.exists(newFolder))
+ suggestedName = QString("%1 - %2").arg(m_metaData->fileArtist(), m_metaData->fileAlbum());
+ }
+ else if(!m_metaData->fileArtist().isEmpty())
+ {
+ suggestedName = m_metaData->fileArtist();
+ }
+ else if(!m_metaData->fileAlbum().isEmpty())
+ {
+ suggestedName = m_metaData->fileAlbum();
+ }
+ else
+ {
+ for(int i = 0; i < m_fileListModel->rowCount(); i++)
{
- newFolder = QString(folderName).append(QString().sprintf(" (%d)", ++i));
- }
-
- if(basePath.mkdir(newFolder))
- {
- QDir createdDir = basePath;
- if(createdDir.cd(newFolder))
+ AudioFileModel audioFile = m_fileListModel->getFile(m_fileListModel->index(i, 0));
+ if(!audioFile.fileAlbum().isEmpty() || !audioFile.fileArtist().isEmpty())
{
- outputFolderView->setCurrentIndex(m_fileSystemModel->index(createdDir.canonicalPath()));
- outputFolderViewClicked(outputFolderView->currentIndex());
- outputFolderView->setFocus();
+ if(!audioFile.fileArtist().isEmpty() && !audioFile.fileAlbum().isEmpty())
+ {
+ suggestedName = QString("%1 - %2").arg(audioFile.fileArtist(), audioFile.fileAlbum());
+ }
+ else if(!audioFile.fileArtist().isEmpty())
+ {
+ suggestedName = audioFile.fileArtist();
+ }
+ else if(!audioFile.fileAlbum().isEmpty())
+ {
+ suggestedName = audioFile.fileAlbum();
+ }
+ break;
}
}
- else
+ }
+
+ while(true)
+ {
+ bool bApplied = false;
+ QString folderName = QInputDialog::getText(this, "New Folder", QString("Enter the name of the new folder:").leftJustified(96, ' '), QLineEdit::Normal, suggestedName, &bApplied, Qt::WindowStaysOnTopHint).simplified();
+
+ if(bApplied)
{
- QMessageBox::warning(this, "Failed to create folder", QString("The new folder could not be created:
%1
Drive is read-only or insufficient access rights!").arg(basePath.absoluteFilePath(newFolder)));
+ folderName.remove(":", Qt::CaseInsensitive);
+ folderName.remove("/", Qt::CaseInsensitive);
+ folderName.remove("\\", Qt::CaseInsensitive);
+ folderName.remove("?", Qt::CaseInsensitive);
+ folderName.remove("*", Qt::CaseInsensitive);
+ folderName.remove("<", Qt::CaseInsensitive);
+ folderName.remove(">", Qt::CaseInsensitive);
+
+ folderName = folderName.simplified();
+
+ if(folderName.isEmpty())
+ {
+ MessageBeep(MB_ICONERROR);
+ continue;
+ }
+
+ int i = 1;
+ QString newFolder = folderName;
+
+ while(basePath.exists(newFolder))
+ {
+ newFolder = QString(folderName).append(QString().sprintf(" (%d)", ++i));
+ }
+
+ if(basePath.mkdir(newFolder))
+ {
+ QDir createdDir = basePath;
+ if(createdDir.cd(newFolder))
+ {
+ outputFolderView->setCurrentIndex(m_fileSystemModel->index(createdDir.canonicalPath()));
+ outputFolderViewClicked(outputFolderView->currentIndex());
+ outputFolderView->setFocus();
+ }
+ }
+ else
+ {
+ QMessageBox::warning(this, "Failed to create folder", QString("The new folder could not be created:
%1
Drive is read-only or insufficient access rights!").arg(basePath.absoluteFilePath(newFolder)));
+ }
}
+ break;
}
}
diff --git a/src/Model_MetaInfo.cpp b/src/Model_MetaInfo.cpp
index 81bc32e3..1370d6b9 100644
--- a/src/Model_MetaInfo.cpp
+++ b/src/Model_MetaInfo.cpp
@@ -33,6 +33,8 @@
#define CHECK3(STR) (STR.isEmpty() ? Qt::darkGray : QVariant())
#define CHECK4(VAL) ((VAL == 0) ? Qt::darkGray : QVariant())
+#define EXPAND(STR) QString(STR).leftJustified(96, ' ')
+
////////////////////////////////////////////////////////////
// Constructor & Destructor
////////////////////////////////////////////////////////////
@@ -249,7 +251,7 @@ void MetaInfoModel::editItem(const QModelIndex &index, QWidget *parent)
switch(index.row() + m_offset)
{
case 5:
- temp = QInputDialog::getText(parent, "Edit Title", "Please enter the title for this file:", QLineEdit::Normal, m_audioFile->fileName(), &ok).simplified();
+ temp = QInputDialog::getText(parent, "Edit Title", EXPAND("Please enter the title for this file:"), QLineEdit::Normal, m_audioFile->fileName(), &ok).simplified();
if(ok)
{
if(temp.isEmpty())
@@ -265,7 +267,7 @@ void MetaInfoModel::editItem(const QModelIndex &index, QWidget *parent)
}
break;
case 6:
- temp = QInputDialog::getText(parent, "Edit Artist", "Please enter the artist for this file:", QLineEdit::Normal, m_audioFile->fileArtist(), &ok).simplified();
+ temp = QInputDialog::getText(parent, "Edit Artist", EXPAND("Please enter the artist for this file:"), QLineEdit::Normal, m_audioFile->fileArtist(), &ok).simplified();
if(ok)
{
beginResetModel();
@@ -274,7 +276,7 @@ void MetaInfoModel::editItem(const QModelIndex &index, QWidget *parent)
}
break;
case 7:
- temp = QInputDialog::getText(parent, "Edit Album", "Please enter the album for this file:", QLineEdit::Normal, m_audioFile->fileAlbum(), &ok).simplified();
+ temp = QInputDialog::getText(parent, "Edit Album", EXPAND("Please enter the album for this file:"), QLineEdit::Normal, m_audioFile->fileAlbum(), &ok).simplified();
if(ok)
{
beginResetModel();
@@ -284,7 +286,7 @@ void MetaInfoModel::editItem(const QModelIndex &index, QWidget *parent)
break;
case 8:
for(int i = 0; g_lamexp_generes[i]; i++) generes << g_lamexp_generes[i];
- temp = QInputDialog::getItem(parent, "Edit Genre", "Please enter the genre for this file:", generes, (m_audioFile->fileGenre().isEmpty() ? 1 : generes.indexOf(m_audioFile->fileGenre())), false, &ok);
+ temp = QInputDialog::getItem(parent, "Edit Genre", EXPAND("Please enter the genre for this file:"), generes, (m_audioFile->fileGenre().isEmpty() ? 1 : generes.indexOf(m_audioFile->fileGenre())), false, &ok);
if(ok)
{
beginResetModel();
@@ -293,7 +295,7 @@ void MetaInfoModel::editItem(const QModelIndex &index, QWidget *parent)
}
break;
case 9:
- val = QInputDialog::getInt(parent, "Edit Year", "Please enter the year for this file:", (m_audioFile->fileYear() ? m_audioFile->fileYear() : 1900), 0, 2100, 1, &ok);
+ val = QInputDialog::getInt(parent, "Edit Year", EXPAND("Please enter the year for this file:"), (m_audioFile->fileYear() ? m_audioFile->fileYear() : 1900), 0, 2100, 1, &ok);
if(ok)
{
beginResetModel();
@@ -304,7 +306,7 @@ void MetaInfoModel::editItem(const QModelIndex &index, QWidget *parent)
case 10:
if(!m_offset)
{
- val = QInputDialog::getInt(parent, "Edit Position", "Please enter the position (track no.) for this file:", (m_audioFile->filePosition() ? m_audioFile->filePosition() : 1), 0, 99, 1, &ok);
+ val = QInputDialog::getInt(parent, "Edit Position", EXPAND("Please enter the position (track no.) for this file:"), (m_audioFile->filePosition() ? m_audioFile->filePosition() : 1), 0, 99, 1, &ok);
if(ok)
{
beginResetModel();
@@ -317,7 +319,7 @@ void MetaInfoModel::editItem(const QModelIndex &index, QWidget *parent)
QStringList options;
options << "Unspecified (copy from source file)";
options << "Generate from list position";
- temp = QInputDialog::getItem(parent, "Edit Position", "Please enter the position (track no.) for this file:", options, ((m_audioFile->filePosition() == UINT_MAX) ? 1 : 0), false, &ok);
+ temp = QInputDialog::getItem(parent, "Edit Position", EXPAND("Please enter the position (track no.) for this file:"), options, ((m_audioFile->filePosition() == UINT_MAX) ? 1 : 0), false, &ok);
if(ok)
{
beginResetModel();
@@ -327,7 +329,7 @@ void MetaInfoModel::editItem(const QModelIndex &index, QWidget *parent)
}
break;
case 11:
- temp = QInputDialog::getText(parent, "Edit Comment", "Please enter the comment for this file:", QLineEdit::Normal, (m_audioFile->fileComment().isEmpty() ? "Encoded with LameXP" : m_audioFile->fileComment()), &ok).simplified();
+ temp = QInputDialog::getText(parent, "Edit Comment", EXPAND("Please enter the comment for this file:"), QLineEdit::Normal, (m_audioFile->fileComment().isEmpty() ? "Encoded with LameXP" : m_audioFile->fileComment()), &ok).simplified();
if(ok)
{
beginResetModel();