diff --git a/src/plugins/gps_importer/qgsgpsplugin.cpp b/src/plugins/gps_importer/qgsgpsplugin.cpp
index f7f184bafc8..e359496b1d1 100644
--- a/src/plugins/gps_importer/qgsgpsplugin.cpp
+++ b/src/plugins/gps_importer/qgsgpsplugin.cpp
@@ -79,7 +79,6 @@ QgsGPSPlugin::~QgsGPSPlugin()
delete iter2->second;
}
-
/*
* Initialize the GUI interface for the plugin
*/
@@ -156,13 +155,14 @@ void QgsGPSPlugin::run()
myPluginGui->show();
}
-
void QgsGPSPlugin::createGPX()
{
+ QSettings settings;
+ QString dir = settings.value( "/Plugin-GPS/gpxdirectory", "." ).toString();
QString fileName =
QFileDialog::getSaveFileName( mQGisInterface->mainWindow(),
tr( "Save new GPX file as..." ),
- ".",
+ dir,
tr( "GPS eXchange file (*.gpx)" ) );
if ( !fileName.isEmpty() )
{
@@ -180,6 +180,8 @@ void QgsGPSPlugin::createGPX()
"directory." ) );
return;
}
+ settings.setValue( "/Plugin-GPS/gpxdirectory", fileInfo.absolutePath() );
+
ofs << "" << std::endl;
emit drawVectorLayer( fileName + "?type=track",
@@ -191,7 +193,6 @@ void QgsGPSPlugin::createGPX()
}
}
-
void QgsGPSPlugin::drawVectorLayer( QString thePathNameQString,
QString theBaseNameQString,
QString theProviderQString )
@@ -214,7 +215,6 @@ void QgsGPSPlugin::unload()
void QgsGPSPlugin::loadGPXFile( QString fileName, bool loadWaypoints, bool loadRoutes,
bool loadTracks )
{
-
//check if input file is readable
QFileInfo fileInfo( fileName );
if ( !fileInfo.isReadable() )
@@ -225,10 +225,6 @@ void QgsGPSPlugin::loadGPXFile( QString fileName, bool loadWaypoints, bool loadR
return;
}
- // remember the directory
- QSettings settings;
- settings.setValue( "/Plugin-GPS/gpxdirectory", fileInfo.path() );
-
// add the requested layers
if ( loadTracks )
emit drawVectorLayer( fileName + "?type=track",
@@ -243,13 +239,11 @@ void QgsGPSPlugin::loadGPXFile( QString fileName, bool loadWaypoints, bool loadR
emit closeGui();
}
-
void QgsGPSPlugin::importGPSFile( QString inputFileName, QgsBabelFormat* importer,
bool importWaypoints, bool importRoutes,
bool importTracks, QString outputFileName,
QString layerName )
{
-
// what features does the user want to import?
QString typeArg;
if ( importWaypoints )
@@ -312,15 +306,12 @@ void QgsGPSPlugin::importGPSFile( QString inputFileName, QgsBabelFormat* importe
emit closeGui();
}
-
void QgsGPSPlugin::convertGPSFile( QString inputFileName,
int convertType,
QString outputFileName,
QString layerName )
{
-
// what features does the user want to import?
-
QStringList convertStrings;
switch ( convertType )
@@ -399,7 +390,6 @@ void QgsGPSPlugin::downloadFromGPS( QString device, QString port,
bool downloadTracks, QString outputFileName,
QString layerName )
{
-
// what does the user want to download?
QString typeArg, features;
if ( downloadWaypoints )
@@ -430,7 +420,6 @@ void QgsGPSPlugin::downloadFromGPS( QString device, QString port,
return;
}
-
QgsDebugMsg( QString( "Download command: " ) + babelArgs.join( "|" ) );
QProcess babelProcess;
@@ -481,11 +470,9 @@ void QgsGPSPlugin::downloadFromGPS( QString device, QString port,
emit closeGui();
}
-
void QgsGPSPlugin::uploadToGPS( QgsVectorLayer* gpxLayer, QString device,
QString port )
{
-
const QString& source( gpxLayer->dataProvider()->dataSourceUri() );
// what kind of data does the user want to upload?
@@ -562,10 +549,8 @@ void QgsGPSPlugin::uploadToGPS( QgsVectorLayer* gpxLayer, QString device,
emit closeGui();
}
-
void QgsGPSPlugin::setupBabel()
{
-
// where is gpsbabel?
QSettings settings;
mBabelPath = settings.value( "/Plugin-GPS/gpsbabelpath", "" ).toString();
diff --git a/src/plugins/gps_importer/qgsgpsplugingui.cpp b/src/plugins/gps_importer/qgsgpsplugingui.cpp
index 78d310a0690..e770cceeeef 100644
--- a/src/plugins/gps_importer/qgsgpsplugingui.cpp
+++ b/src/plugins/gps_importer/qgsgpsplugingui.cpp
@@ -35,6 +35,10 @@ QgsGPSPluginGui::QgsGPSPluginGui( const BabelMap& importers,
, mDevices( devices )
{
setupUi( this );
+
+ // restore size, position and active tab
+ restoreState();
+
populatePortComboBoxes();
populateULLayerComboBox();
populateIMPBabelFormats();
@@ -80,17 +84,17 @@ QgsGPSPluginGui::~QgsGPSPluginGui()
void QgsGPSPluginGui::on_buttonBox_accepted()
{
+ saveState();
// what should we do?
switch ( tabWidget->currentIndex() )
{
- // add a GPX layer?
+ // add a GPX layer?
case 0:
emit loadGPXFile( leGPXFile->text(), cbGPXWaypoints->isChecked(),
cbGPXRoutes->isChecked(), cbGPXTracks->isChecked() );
break;
-
- // or import other file?
+ // or import other file?
case 1:
{
const QString& typeString( cmbIMPFeature->currentText() );
@@ -109,7 +113,7 @@ void QgsGPSPluginGui::on_buttonBox_accepted()
int featureType = cmbDLFeatureType->currentIndex();
QString fileName = leDLOutput->text();
- if ( fileName.right( 4 ) != ".gpx" )
+ if ( !fileName.toLower().endsWith( ".gpx" ) )
{
fileName += ".gpx";
}
@@ -140,24 +144,32 @@ void QgsGPSPluginGui::on_buttonBox_accepted()
break;
}
}
+
// The slots that are called above will emit closeGui() when successful.
// If not successful, the user will get another shot without starting from scratch
// accept();
}
-
void QgsGPSPluginGui::on_pbnDLOutput_clicked()
{
+ QSettings settings;
+ QString dir = settings.value( "/Plugin-GPS/gpxdirectory", "." ).toString();
QString myFileNameQString =
- QFileDialog::getSaveFileName( this, //parent dialog
+ QFileDialog::getSaveFileName( this,
tr( "Choose a file name to save under" ),
- ".", //initial dir
+ dir,
tr( "GPS eXchange format (*.gpx)" ) );
if ( !myFileNameQString.isEmpty() )
+ {
+ if ( !myFileNameQString.toLower().endsWith( ".gpx" ) )
+ {
+ myFileNameQString += ".gpx";
+ }
leDLOutput->setText( myFileNameQString );
+ settings.setValue( "/Plugin-GPS/gpxdirectory", QFileInfo( myFileNameQString ).absolutePath() );
+ }
}
-
void QgsGPSPluginGui::enableRelevantControls()
{
// load GPX
@@ -188,7 +200,6 @@ void QgsGPSPluginGui::enableRelevantControls()
// import other file
else if ( tabWidget->currentIndex() == 1 )
{
-
if (( leIMPInput->text() == "" ) || ( leIMPOutput->text() == "" ) ||
( leIMPLayer->text() == "" ) )
pbnOK->setEnabled( false );
@@ -218,7 +229,6 @@ void QgsGPSPluginGui::enableRelevantControls()
// convert between waypoint/routes
else if ( tabWidget->currentIndex() == 4 )
{
-
if (( leCONVInput->text() == "" ) || ( leCONVOutput->text() == "" ) ||
( leCONVLayer->text() == "" ) )
pbnOK->setEnabled( false );
@@ -227,45 +237,47 @@ void QgsGPSPluginGui::enableRelevantControls()
}
}
-
void QgsGPSPluginGui::on_buttonBox_rejected()
{
+ saveState();
reject();
}
-
void QgsGPSPluginGui::on_pbnGPXSelectFile_clicked()
{
QgsLogger::debug( " GPS File Importer::pbnGPXSelectFile_clicked() " );
- QString myFileTypeQString;
- QString myFilterString = tr( "GPS eXchange format (*.gpx)" );
QSettings settings;
- QString dir = settings.value( "/Plugin-GPS/gpxdirectory" ).toString();
- if ( dir.isEmpty() )
- dir = ".";
+ QString dir = settings.value( "/Plugin-GPS/gpxdirectory", "." ).toString();
QString myFileNameQString = QFileDialog::getOpenFileName(
- this, //parent dialog
- tr( "Select GPX file" ), //caption
- dir, //initial dir
- myFilterString, //filters to select
- &myFileTypeQString ); //the pointer to store selected filter
- QgsLogger::debug( "Selected filetype filter is : " + myFileTypeQString );
+ this,
+ tr( "Select GPX file" ),
+ dir,
+ tr( "GPS eXchange format (*.gpx)" ) );
if ( !myFileNameQString.isEmpty() )
+ {
leGPXFile->setText( myFileNameQString );
+ settings.setValue( "/Plugin-GPS/gpxdirectory", QFileInfo( myFileNameQString ).absolutePath() );
+ }
}
-
void QgsGPSPluginGui::on_pbnIMPInput_clicked()
{
- QString myFileType;
+ QSettings settings;
+ QString dir = settings.value( "/Plugin-GPS/importdirectory", "." ).toString();
+ QString tf = mBabelFilter.split( ";;" ).first();
+ QString myFileType = settings.value( "/Plugin-GPS/lastImportFilter", tf ).toString();
QString myFileName = QFileDialog::getOpenFileName(
- this, //parent dialog
- tr( "Select file and format to import" ), //caption
- ".", //initial dir
+ this,
+ tr( "Select file and format to import" ),
+ dir,
mBabelFilter,
- &myFileType ); //the pointer to store selected filter
+ &myFileType );
if ( !myFileName.isEmpty() )
{
+ // save directory and file type
+ settings.setValue( "/Plugin-GPS/importdirectory", QFileInfo( myFileName ).absolutePath() );
+ settings.setValue( "/Plugin-GPS/lastImportFilter", myFileType );
+
mImpFormat = myFileType.left( myFileType.length() - 6 );
std::map::const_iterator iter;
iter = mImporters.find( mImpFormat );
@@ -289,16 +301,24 @@ void QgsGPSPluginGui::on_pbnIMPInput_clicked()
}
}
-
void QgsGPSPluginGui::on_pbnIMPOutput_clicked()
{
+ QSettings settings;
+ QString dir = settings.value( "/Plugin-GPS/gpxdirectory", "." ).toString();
QString myFileNameQString =
- QFileDialog::getSaveFileName( this, //parent dialog
+ QFileDialog::getSaveFileName( this,
tr( "Choose a file name to save under" ),
- ".", //initial dir
+ dir,
tr( "GPS eXchange format (*.gpx)" ) );
if ( !myFileNameQString.isEmpty() )
+ {
+ if ( !myFileNameQString.toLower().endsWith( ".gpx" ) )
+ {
+ myFileNameQString += ".gpx";
+ }
leIMPOutput->setText( myFileNameQString );
+ settings.setValue( "/Plugin-GPS/gpxdirectory", QFileInfo( myFileNameQString ).absolutePath() );
+ }
}
void QgsGPSPluginGui::on_pbnRefresh_clicked()
@@ -343,7 +363,6 @@ void QgsGPSPluginGui::populateULLayerComboBox()
cmbULLayer->addItem( mGPXLayers[i]->name() );
}
-
void QgsGPSPluginGui::populateIMPBabelFormats()
{
mBabelFilter = "";
@@ -375,31 +394,38 @@ void QgsGPSPluginGui::populateIMPBabelFormats()
void QgsGPSPluginGui::on_pbnCONVInput_clicked()
{
- QString myFileTypeQString;
- QString myFilterString = tr( "GPS eXchange format (*.gpx)" );
QSettings settings;
- QString dir = settings.value( "/Plugin-GPS/gpxdirectory" ).toString();
- if ( dir.isEmpty() )
- dir = ".";
+ QString dir = settings.value( "/Plugin-GPS/gpxdirectory", "." ).toString();
QString myFileNameQString = QFileDialog::getOpenFileName(
- this, //parent dialog
- tr( "Select GPX file" ), //caption
- dir, //initial dir
- myFilterString, //filters to select
- &myFileTypeQString ); //the pointer to store selected filter
+ this,
+ tr( "Select GPX file" ),
+ dir,
+ tr( "GPS eXchange format (*.gpx)" ) );
if ( !myFileNameQString.isEmpty() )
+ {
leCONVInput->setText( myFileNameQString );
+ settings.setValue( "/Plugin-GPS/gpxdirectory", QFileInfo( myFileNameQString ).absolutePath() );
+ }
}
void QgsGPSPluginGui::on_pbnCONVOutput_clicked()
{
+ QSettings settings;
+ QString dir = settings.value( "/Plugin-GPS/gpxdirectory", "." ).toString();
QString myFileNameQString =
- QFileDialog::getSaveFileName( this, //parent dialog
+ QFileDialog::getSaveFileName( this,
tr( "Choose a file name to save under" ),
- ".", //initial dir
+ dir,
tr( "GPS eXchange format (*.gpx)" ) );
if ( !myFileNameQString.isEmpty() )
+ {
+ if ( !myFileNameQString.toLower().endsWith( ".gpx" ) )
+ {
+ myFileNameQString += ".gpx";
+ }
leCONVOutput->setText( myFileNameQString );
+ settings.setValue( "/Plugin-GPS/gpxdirectory", QFileInfo( myFileNameQString ).absolutePath() );
+ }
}
void QgsGPSPluginGui::openDeviceEditor()
@@ -413,3 +439,17 @@ void QgsGPSPluginGui::devicesUpdated()
{
populateIMPBabelFormats();
}
+
+void QgsGPSPluginGui::saveState()
+{
+ QSettings settings;
+ settings.setValue( "/Plugin-GPS/geometry", saveGeometry() );
+ settings.setValue( "/Plugin-GPS/lastTab", tabWidget->currentIndex() );
+}
+
+void QgsGPSPluginGui::restoreState()
+{
+ QSettings settings;
+ restoreGeometry( settings.value( "/Plugin-GPS/geometry" ).toByteArray() );
+ tabWidget->setCurrentIndex( settings.value( "/Plugin-GPS/lastTab", 4 ).toInt() );
+}
diff --git a/src/plugins/gps_importer/qgsgpsplugingui.h b/src/plugins/gps_importer/qgsgpsplugingui.h
index 4a231eecbd5..85c6bb7a862 100644
--- a/src/plugins/gps_importer/qgsgpsplugingui.h
+++ b/src/plugins/gps_importer/qgsgpsplugingui.h
@@ -65,6 +65,9 @@ class QgsGPSPluginGui : public QDialog, private Ui::QgsGPSPluginGuiBase
void populatePortComboBoxes();
void populateCONVDialog();
+ void saveState();
+ void restoreState();
+
#if 0
void populateLoadDialog();
void populateDLDialog();