Remember most recent path for "add file(s)" and "add directory" dialogs.

This commit is contained in:
LoRd_MuldeR 2011-08-23 18:48:16 +02:00
parent 10ae6c8451
commit b84f66f741
5 changed files with 86 additions and 14 deletions

View File

@ -30,7 +30,7 @@
#define VER_LAMEXP_MINOR_LO 3
#define VER_LAMEXP_TYPE Alpha
#define VER_LAMEXP_PATCH 15
#define VER_LAMEXP_BUILD 662
#define VER_LAMEXP_BUILD 664
///////////////////////////////////////////////////////////////////////////////
// Tools versions

View File

@ -159,7 +159,29 @@ void CueImportDialog::modelChanged(void)
void CueImportDialog::browseButtonClicked(void)
{
QString newOutDir = QFileDialog::getExistingDirectory(this, tr("Choose Output Directory"));
QString newOutDir, currentDir = m_outputDir;
while(QDir(currentDir).exists())
{
int pos = max(currentDir.lastIndexOf(QChar('\\')), currentDir.lastIndexOf(QChar('/')));
if(pos > 0) currentDir.left(pos - 1); else break;
}
if(lamexp_themes_enabled() || ((QSysInfo::windowsVersion() & QSysInfo::WV_NT_based) < QSysInfo::WV_XP))
{
newOutDir = QFileDialog::getExistingDirectory(this, tr("Choose Output Directory"), currentDir);
}
else
{
QFileDialog dialog(this, tr("Choose Output Directory"));
dialog.setFileMode(QFileDialog::DirectoryOnly);
dialog.setDirectory(currentDir);
if(dialog.exec())
{
newOutDir = dialog.selectedFiles().first();
}
}
if(!newOutDir.isEmpty())
{
m_outputDir = newOutDir;

View File

@ -73,7 +73,8 @@
#define SET_TEXT_COLOR(WIDGET,COLOR) { QPalette _palette = WIDGET->palette(); _palette.setColor(QPalette::WindowText, (COLOR)); _palette.setColor(QPalette::Text, (COLOR)); WIDGET->setPalette(_palette); }
#define SET_FONT_BOLD(WIDGET,BOLD) { QFont _font = WIDGET->font(); _font.setBold(BOLD); WIDGET->setFont(_font); }
#define LINK(URL) QString("<a href=\"%1\">%2</a>").arg(URL).arg(URL)
#define TEMP_HIDE_DROPBOX(CMD) { bool __dropBoxVisible = m_dropBox->isVisible(); if(__dropBoxVisible) m_dropBox->hide(); CMD; if(__dropBoxVisible) m_dropBox->show(); }
#define TEMP_HIDE_DROPBOX(CMD) { bool __dropBoxVisible = m_dropBox->isVisible(); if(__dropBoxVisible) m_dropBox->hide(); {CMD}; if(__dropBoxVisible) m_dropBox->show(); }
#define USE_NATIVE_FILE_DIALOG (lamexp_themes_enabled() || ((QSysInfo::windowsVersion() & QSysInfo::WV_NT_based) < QSysInfo::WV_XP))
////////////////////////////////////////////////////////////
// Constructor
@ -1516,9 +1517,27 @@ void MainWindow::importCueSheetActionTriggered(bool checked)
TEMP_HIDE_DROPBOX
(
QString selectedCueFile = QFileDialog::getOpenFileName(this, tr("Open Cue Sheet"), QString(), QString("%1 (*.cue)").arg(tr("Cue Sheet File")));
QString selectedCueFile;
if(USE_NATIVE_FILE_DIALOG)
{
selectedCueFile = QFileDialog::getOpenFileName(this, tr("Open Cue Sheet"), m_settings->mostRecentInputPath(), QString("%1 (*.cue)").arg(tr("Cue Sheet File")));
}
else
{
QFileDialog dialog(this, tr("Open Cue Sheet"));
dialog.setFileMode(QFileDialog::ExistingFile);
dialog.setNameFilter(QString("%1 (*.cue)").arg(tr("Cue Sheet File")));
dialog.setDirectory(m_settings->mostRecentInputPath());
if(dialog.exec())
{
selectedCueFile = dialog.selectedFiles().first();
}
}
if(!selectedCueFile.isEmpty())
{
m_settings->mostRecentInputPath(QFileInfo(selectedCueFile).canonicalPath());
CueImportDialog *cueImporter = new CueImportDialog(this, m_fileListModel, selectedCueFile);
cueImporter->exec();
LAMEXP_DELETE(cueImporter);
@ -1695,12 +1714,13 @@ void MainWindow::addFilesButtonClicked(void)
TEMP_HIDE_DROPBOX
(
if(lamexp_themes_enabled() || ((QSysInfo::windowsVersion() & QSysInfo::WV_NT_based) < QSysInfo::WV_XP))
if(USE_NATIVE_FILE_DIALOG)
{
QStringList fileTypeFilters = DecoderRegistry::getSupportedTypes();
QStringList selectedFiles = QFileDialog::getOpenFileNames(this, tr("Add file(s)"), QString(), fileTypeFilters.join(";;"));
QStringList selectedFiles = QFileDialog::getOpenFileNames(this, tr("Add file(s)"), m_settings->mostRecentInputPath(), fileTypeFilters.join(";;"));
if(!selectedFiles.isEmpty())
{
m_settings->mostRecentInputPath(QFileInfo(selectedFiles.first()).canonicalPath());
addFiles(selectedFiles);
}
}
@ -1710,10 +1730,15 @@ void MainWindow::addFilesButtonClicked(void)
QStringList fileTypeFilters = DecoderRegistry::getSupportedTypes();
dialog.setFileMode(QFileDialog::ExistingFiles);
dialog.setNameFilter(fileTypeFilters.join(";;"));
dialog.setDirectory(m_settings->mostRecentInputPath());
if(dialog.exec())
{
QStringList selectedFiles = dialog.selectedFiles();
addFiles(selectedFiles);
if(!selectedFiles.isEmpty())
{
m_settings->mostRecentInputPath(QFileInfo(selectedFiles.first()).canonicalPath());
addFiles(selectedFiles);
}
}
}
)
@ -1731,15 +1756,15 @@ void MainWindow::openFolderActionActivated(void)
{
TEMP_HIDE_DROPBOX
(
if(lamexp_themes_enabled() || ((QSysInfo::windowsVersion() & QSysInfo::WV_NT_based) < QSysInfo::WV_XP))
if(USE_NATIVE_FILE_DIALOG)
{
selectedFolder = QFileDialog::getExistingDirectory(this, tr("Add Folder"), QDesktopServices::storageLocation(QDesktopServices::MusicLocation));
selectedFolder = QFileDialog::getExistingDirectory(this, tr("Add Folder"), m_settings->mostRecentInputPath());
}
else
{
QFileDialog dialog(this, tr("Add Folder"));
dialog.setFileMode(QFileDialog::DirectoryOnly);
dialog.setDirectory(QDesktopServices::storageLocation(QDesktopServices::MusicLocation));
dialog.setDirectory(m_settings->mostRecentInputPath());
if(dialog.exec())
{
selectedFolder = dialog.selectedFiles().first();
@ -1748,6 +1773,7 @@ void MainWindow::openFolderActionActivated(void)
if(!selectedFolder.isEmpty())
{
m_settings->mostRecentInputPath(QDir(selectedFolder).canonicalPath());
addFolder(selectedFolder, action->data().toBool());
}
)
@ -1866,7 +1892,6 @@ void MainWindow::sourceFilesContextMenu(const QPoint &pos)
*/
void MainWindow::sourceFilesScrollbarMoved(int)
{
qDebug("sourceFileView->resizeColumnToContents(0);");
sourceFileView->resizeColumnToContents(0);
}
@ -2854,7 +2879,22 @@ void MainWindow::autoDetectInstancesChanged(bool checked)
*/
void MainWindow::browseCustomTempFolderButtonClicked(void)
{
QString newTempFolder = QFileDialog::getExistingDirectory(this);
QString newTempFolder;
if(USE_NATIVE_FILE_DIALOG)
{
newTempFolder = QFileDialog::getExistingDirectory(this, QString(), m_settings->customTempPath());
}
else
{
QFileDialog dialog(this);
dialog.setFileMode(QFileDialog::DirectoryOnly);
dialog.setDirectory(m_settings->customTempPath());
if(dialog.exec())
{
newTempFolder = dialog.selectedFiles().first();
}
}
if(!newTempFolder.isEmpty())
{

View File

@ -76,6 +76,7 @@ LAMEXP_MAKE_ID(outputDir, "OutputDirectory/SelectedPath");
LAMEXP_MAKE_ID(outputToSourceDir, "OutputDirectory/OutputToSourceFolder");
LAMEXP_MAKE_ID(prependRelativeSourcePath, "OutputDirectory/PrependRelativeSourcePath");
LAMEXP_MAKE_ID(favoriteOutputFolders, "OutputDirectory/Favorites");
LAMEXP_MAKE_ID(mostRecentInputPath, "InputDirectory/MostRecentPath");
LAMEXP_MAKE_ID(writeMetaTags, "Flags/WriteMetaTags");
LAMEXP_MAKE_ID(createPlaylist, "Flags/AutoCreatePlaylist");
LAMEXP_MAKE_ID(autoUpdateLastCheck, "AutoUpdate/LastCheck");
@ -213,7 +214,14 @@ void SettingsModel::validate(void)
if(this->outputDir().isEmpty() || !QFileInfo(this->outputDir()).isDir())
{
this->outputDir(QDesktopServices::storageLocation(QDesktopServices::MusicLocation));
QString musicLocation = QDesktopServices::storageLocation(QDesktopServices::MusicLocation);
this->outputDir(musicLocation.isEmpty() ? QDesktopServices::storageLocation(QDesktopServices::HomeLocation) : musicLocation);
}
if(this->mostRecentInputPath().isEmpty() || !QFileInfo(this->mostRecentInputPath()).isDir())
{
QString musicLocation = QDesktopServices::storageLocation(QDesktopServices::MusicLocation);
this->outputDir(musicLocation.isEmpty() ? QDesktopServices::storageLocation(QDesktopServices::HomeLocation) : musicLocation);
}
if(!lamexp_query_translations().contains(this->currentLanguage(), Qt::CaseInsensitive))
@ -268,7 +276,7 @@ LAMEXP_MAKE_OPTION_I(interfaceStyle, 0)
LAMEXP_MAKE_OPTION_I(compressionEncoder, 0)
LAMEXP_MAKE_OPTION_I(compressionRCMode, 0)
LAMEXP_MAKE_OPTION_I(compressionBitrate, 7)
LAMEXP_MAKE_OPTION_S(outputDir, QString())
LAMEXP_MAKE_OPTION_S(outputDir, QDesktopServices::storageLocation(QDesktopServices::MusicLocation))
LAMEXP_MAKE_OPTION_B(outputToSourceDir, false)
LAMEXP_MAKE_OPTION_B(prependRelativeSourcePath, false)
LAMEXP_MAKE_OPTION_S(favoriteOutputFolders, QString());
@ -312,3 +320,4 @@ LAMEXP_MAKE_OPTION_U(maximumInstances, 0);
LAMEXP_MAKE_OPTION_S(customTempPath, QDesktopServices::storageLocation(QDesktopServices::TempLocation));
LAMEXP_MAKE_OPTION_B(customTempPathEnabled, false);
LAMEXP_MAKE_OPTION_B(slowStartup, false);
LAMEXP_MAKE_OPTION_S(mostRecentInputPath, QDesktopServices::storageLocation(QDesktopServices::MusicLocation));

View File

@ -126,6 +126,7 @@ public:
LAMEXP_MAKE_OPTION_S(customTempPath);
LAMEXP_MAKE_OPTION_B(customTempPathEnabled);
LAMEXP_MAKE_OPTION_B(slowStartup);
LAMEXP_MAKE_OPTION_S(mostRecentInputPath);
//Misc
void validate(void);