@@ -2990,33 +2990,24 @@ void QgisApp::newVectorLayer()
29902990 std::list<std::pair<QString, QString> > attributes;
29912991 geomDialog.attributes ( attributes );
29922992
2993- bool haveLastUsedFilter = false ; // by default, there is no last
2994- // used filter
29952993 QString enc;
29962994 QString fileName;
29972995
2998- QSettings settings; // where we keep last used filter in
2999- // persistent state
3000-
3001- haveLastUsedFilter = settings.contains ( " /UI/lastVectorFileFilter" );
3002- QString lastUsedFilter = settings.value ( " /UI/lastVectorFileFilter" ,
3003- QVariant ( QString::null ) ).toString ();
3004-
3005- QString lastUsedDir = settings.value ( " /UI/lastVectorFileFilterDir" ,
3006- " ." ).toString ();
2996+ QSettings settings;
2997+ QString lastUsedDir = settings.value ( " /UI/lastVectorFileFilterDir" , " ." ).toString ();
30072998
30082999 QgsDebugMsg ( " Saving vector file dialog without filters: " );
30093000
3010- QgsEncodingFileDialog* openFileDialog = new QgsEncodingFileDialog ( this ,
3011- tr ( " Save As" ), lastUsedDir, " " , QString ( " " ) );
3001+ QgsEncodingFileDialog* openFileDialog =
3002+ new QgsEncodingFileDialog ( this , tr ( " Save As" ), lastUsedDir, " " , QString ( " " ) );
30123003
3013- // allow for selection of more than one file
30143004 openFileDialog->setFileMode ( QFileDialog::AnyFile );
30153005 openFileDialog->setAcceptMode ( QFileDialog::AcceptSave );
30163006 openFileDialog->setConfirmOverwrite ( true );
30173007
3018- if ( haveLastUsedFilter ) // set the filter to the last one used
3008+ if ( settings. contains ( " /UI/lastVectorFileFilter " ) )
30193009 {
3010+ QString lastUsedFilter = settings.value ( " /UI/lastVectorFileFilter" , QVariant ( QString::null ) ).toString ();
30203011 openFileDialog->selectFilter ( lastUsedFilter );
30213012 }
30223013
@@ -3026,23 +3017,14 @@ void QgisApp::newVectorLayer()
30263017 return ;
30273018 }
30283019
3029- enc = openFileDialog->encoding ();
3020+ fileName = openFileDialog->selectedFiles (). first ();
30303021
3031- // If the file exists, delete it otherwise we'll end up loading that
3032- // file, which can cause problems (e.g., if the file contains
3033- // linestrings, but we're wanting to create points, we'll end up
3034- // with a linestring file).
3035- if ( fileformat == " ESRI Shapefile" )
3036- {
3037- QgsVectorFileWriter::deleteShapeFile ( fileName );
3038- }
3039- else
3040- {
3041- QFile::remove ( fileName );
3042- }
3022+ if ( fileformat == " ESRI Shapefile" && !fileName.endsWith ( " .shp" , Qt::CaseInsensitive ) )
3023+ fileName += " .shp" ;
30433024
3044- settings. setValue ( " /UI/lastVectorFileFilter " , openFileDialog->selectedFilter () );
3025+ enc = openFileDialog->encoding ( );
30453026
3027+ settings.setValue ( " /UI/lastVectorFileFilter" , openFileDialog->selectedFilter () );
30463028 settings.setValue ( " /UI/lastVectorFileFilterDir" , openFileDialog->directory ().absolutePath () );
30473029
30483030 delete openFileDialog;
0 commit comments