From 7596d4d2b4c345b8cefc8759b48d94eb031b00ca Mon Sep 17 00:00:00 2001 From: timlinux Date: Tue, 1 Nov 2005 00:30:31 +0000 Subject: [PATCH] Fix bug where file dialogs lose the last directory node each time they are used. Move settings stuff inside accepted check of dialog so last dir etc arnt saved if user presses cancel git-svn-id: http://svn.osgeo.org/qgis/trunk@4143 c8812cc2-4d05-0410-92ff-de0c093fc19c --- src/qgisapp.cpp | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/src/qgisapp.cpp b/src/qgisapp.cpp index 10230b3f403..635b3ceb3e0 100644 --- a/src/qgisapp.cpp +++ b/src/qgisapp.cpp @@ -1048,17 +1048,16 @@ static void openFilesRememberingFilter_(QString const &filterName, QString::null, &haveLastUsedFilter); - QString lastUsedDir = settings.readEntry("/qgis/UI/" + filterName + "Dir", - "."); + QString lastUsedDir = settings.readEntry("/qgis/UI/" + filterName + "Dir","."); QString lastUsedEncoding = settings.readEntry("/qgis/UI/encoding"); #ifdef QGISDEBUG - - std::cerr << "Opening vector file dialog with filters: " << filters.local8Bit() << std::endl; + std::cerr << "Opening file dialog with filters: " << filters.local8Bit() << std::endl; #endif - QgsEncodingFileDialog* openFileDialog = new QgsEncodingFileDialog(lastUsedDir, filters, 0, QFileDialog::tr("open files dialog"), lastUsedEncoding); + QgsEncodingFileDialog* openFileDialog = + new QgsEncodingFileDialog(lastUsedDir, filters, 0, QFileDialog::tr("open files dialog"), lastUsedEncoding); // allow for selection of more than one file openFileDialog->setMode(QFileDialog::ExistingFiles); @@ -1071,20 +1070,25 @@ static void openFilesRememberingFilter_(QString const &filterName, if (openFileDialog->exec() == QDialog::Accepted) { - selectedFiles = openFileDialog->selectedFiles(); - enc = openFileDialog->encoding(); + selectedFiles = openFileDialog->selectedFiles(); + enc = openFileDialog->encoding(); + // Fix by Tim - getting the dirPath from the dialog + // directly truncates the last node in the dir path. + // This is a workaround for that + QString myFirstFileName = selectedFiles.first(); + QFileInfo myFI(myFirstFileName); + QString myPath = myFI.dirPath(); +#ifdef QGISDEBUG + qDebug("Writing last used dir: " + myPath); +#endif + + settings.writeEntry("/qgis/UI/" + filterName, openFileDialog->selectedFilter()); + settings.writeEntry("/qgis/UI/" + filterName + "Dir", myPath); + settings.writeEntry("/qgis/UI/encoding", openFileDialog->encoding()); } - settings.writeEntry("/qgis/UI/" + filterName, openFileDialog->selectedFilter()); - - - settings.writeEntry("/qgis/UI/" + filterName + "Dir", openFileDialog->dirPath()); - settings.writeEntry("/qgis/UI/encoding", openFileDialog->encoding()); - delete openFileDialog; -} // openFilesRememberingFilter_ - - +} // openFilesRememberingFilter_ /**