[QGIS Commit] r11182 - in trunk/qgis/src: app app/legend app/ogr
core gui
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Mon Jul 27 11:19:41 EDT 2009
Author: homann
Date: 2009-07-27 11:19:39 -0400 (Mon, 27 Jul 2009)
New Revision: 11182
Modified:
trunk/qgis/src/app/legend/qgslegendlayerfile.cpp
trunk/qgis/src/app/ogr/qgsopenvectorlayerdialog.cpp
trunk/qgis/src/app/qgisapp.cpp
trunk/qgis/src/core/qgsvectordataprovider.cpp
trunk/qgis/src/core/qgsvectorfilewriter.cpp
trunk/qgis/src/gui/qgsencodingfiledialog.cpp
trunk/qgis/src/gui/qgsencodingfiledialog.h
Log:
File encoding selector made consistent and persistent between different dialogs.
Modified: trunk/qgis/src/app/legend/qgslegendlayerfile.cpp
===================================================================
--- trunk/qgis/src/app/legend/qgslegendlayerfile.cpp 2009-07-27 13:24:43 UTC (rev 11181)
+++ trunk/qgis/src/app/legend/qgslegendlayerfile.cpp 2009-07-27 15:19:39 UTC (rev 11182)
@@ -247,7 +247,7 @@
tr( "Save layer as..." ),
dirName,
filter,
- QString( "UTF-8" ) );
+ QString( "" ) );
openFileDialog->setAcceptMode( QFileDialog::AcceptSave );
// allow for selection of more than one file
Modified: trunk/qgis/src/app/ogr/qgsopenvectorlayerdialog.cpp
===================================================================
--- trunk/qgis/src/app/ogr/qgsopenvectorlayerdialog.cpp 2009-07-27 13:24:43 UTC (rev 11181)
+++ trunk/qgis/src/app/ogr/qgsopenvectorlayerdialog.cpp 2009-07-27 15:19:39 UTC (rev 11182)
@@ -40,7 +40,19 @@
radioSrcFile->setChecked( true );
mDataSourceType = "file";
//set encoding
- cmbEncodings->setItemText( cmbEncodings->currentIndex(), QString( QTextCodec::codecForLocale()->name() ) );
+ // cmbEncodings->setItemText( cmbEncodings->currentIndex(), QString( QTextCodec::codecForLocale()->name() ) );
+ QSettings settings;
+ QString enc = settings.value( "/UI/encoding", QString("System") ).toString();
+
+ // The specified decoding is added if not existing alread, and then set current.
+ // This should select it.
+ int encindex = cmbEncodings->findText( enc );
+ if ( encindex < 0 )
+ {
+ cmbEncodings->insertItem( 0, enc );
+ encindex = 0;
+ }
+ cmbEncodings->setCurrentIndex( encindex );
//add database drivers
mVectorFileFilter = QgsProviderRegistry::instance()->fileVectorFilters();
@@ -379,11 +391,11 @@
//********************auto connected slots *****************/
void QgsOpenVectorLayerDialog::on_buttonBox_accepted()
{
+ QSettings settings;
QgsDebugMsg( "dialog button accepted" );
if ( radioSrcDatabase->isChecked() )
{
mDataSources.clear();
- QSettings settings;
QString baseKey = "/" + cmbDatabaseTypes->currentText() + "/connections/";
baseKey += cmbConnections->currentText();
QString host = settings.value( baseKey + "/host" ).toString();
@@ -414,6 +426,9 @@
protocolURI->text()
) );
}
+ // Save the used encoding
+ settings.setValue( "/UI/encoding", encoding() );
+
accept();
}
Modified: trunk/qgis/src/app/qgisapp.cpp
===================================================================
--- trunk/qgis/src/app/qgisapp.cpp 2009-07-27 13:24:43 UTC (rev 11181)
+++ trunk/qgis/src/app/qgisapp.cpp 2009-07-27 15:19:39 UTC (rev 11182)
@@ -2300,12 +2300,10 @@
QString lastUsedDir = settings.value( "/UI/" + filterName + "Dir", "." ).toString();
- QString lastUsedEncoding = settings.value( "/UI/encoding" ).toString();
-
QgsDebugMsg( "Opening file dialog with filters: " + filters );
QgsEncodingFileDialog* openFileDialog = new QgsEncodingFileDialog( 0,
- title, lastUsedDir, filters, lastUsedEncoding );
+ title, lastUsedDir, filters, QString ("" ) );
// allow for selection of more than one file
openFileDialog->setFileMode( QFileDialog::ExistingFiles );
@@ -2330,7 +2328,6 @@
settings.setValue( "/UI/" + filterName, openFileDialog->selectedFilter() );
settings.setValue( "/UI/" + filterName + "Dir", myPath );
- settings.setValue( "/UI/encoding", openFileDialog->encoding() );
}
delete openFileDialog;
@@ -3153,12 +3150,10 @@
QString lastUsedDir = settings.value( "/UI/lastVectorFileFilterDir",
"." ).toString();
- QString lastUsedEncoding = settings.value( "/UI/encoding" ).toString();
-
QgsDebugMsg( "Saving vector file dialog without filters: " );
QgsEncodingFileDialog* openFileDialog = new QgsEncodingFileDialog( this,
- tr( "Save As" ), lastUsedDir, "", lastUsedEncoding );
+ tr( "Save As" ), lastUsedDir, "", QString( "" ) );
// allow for selection of more than one file
openFileDialog->setFileMode( QFileDialog::AnyFile );
@@ -3188,7 +3183,6 @@
settings.setValue( "/UI/lastVectorFileFilter", openFileDialog->selectedFilter() );
settings.setValue( "/UI/lastVectorFileFilterDir", openFileDialog->directory().absolutePath() );
- settings.setValue( "/UI/encoding", openFileDialog->encoding() );
delete openFileDialog;
Modified: trunk/qgis/src/core/qgsvectordataprovider.cpp
===================================================================
--- trunk/qgis/src/core/qgsvectordataprovider.cpp 2009-07-27 13:24:43 UTC (rev 11181)
+++ trunk/qgis/src/core/qgsvectordataprovider.cpp 2009-07-27 15:19:39 UTC (rev 11182)
@@ -14,6 +14,7 @@
***************************************************************************/
/* $Id$ */
+#include <QSettings>
#include <QTextCodec>
#include <cfloat> // for DBL_MAX
@@ -27,9 +28,10 @@
QgsVectorDataProvider::QgsVectorDataProvider( QString uri )
: QgsDataProvider( uri ),
mCacheMinMaxDirty( TRUE ),
- mEncoding( QTextCodec::codecForLocale() ),
mFetchFeaturesWithoutGeom( FALSE )
{
+ QSettings settings;
+ setEncoding( settings.value( "/UI/encoding", QString("System") ).toString() );
}
Modified: trunk/qgis/src/core/qgsvectorfilewriter.cpp
===================================================================
--- trunk/qgis/src/core/qgsvectorfilewriter.cpp 2009-07-27 13:24:43 UTC (rev 11181)
+++ trunk/qgis/src/core/qgsvectorfilewriter.cpp 2009-07-27 15:19:39 UTC (rev 11182)
@@ -27,6 +27,7 @@
#include "qgsvectordataprovider.h"
#include <QFile>
+#include <QSettings>
#include <QFileInfo>
#include <QTextCodec>
@@ -72,8 +73,15 @@
mCodec = QTextCodec::codecForName( fileEncoding.toLocal8Bit().data() );
if ( !mCodec )
{
+ QSettings settings;
+ QString enc = settings.value( "/UI/encoding", QString("System") ).toString();
QgsDebugMsg( "error finding QTextCodec for " + fileEncoding );
- mCodec = QTextCodec::codecForLocale();
+ mCodec = QTextCodec::codecForName( enc.toLocal8Bit().data() );
+ if ( !mCodec )
+ {
+ QgsDebugMsg( "error finding QTextCodec for " + enc );
+ mCodec = QTextCodec::codecForLocale();
+ }
}
// consider spatial reference system of the layer
Modified: trunk/qgis/src/gui/qgsencodingfiledialog.cpp
===================================================================
--- trunk/qgis/src/gui/qgsencodingfiledialog.cpp 2009-07-27 13:24:43 UTC (rev 11181)
+++ trunk/qgis/src/gui/qgsencodingfiledialog.cpp 2009-07-27 15:19:39 UTC (rev 11182)
@@ -14,6 +14,9 @@
***************************************************************************/
#include "qgsencodingfiledialog.h"
+#include "qgsproject.h"
+#include "qgslogger.h"
+#include <QSettings>
#include <QComboBox>
#include <QLabel>
#include <QLayout>
@@ -71,14 +74,24 @@
mEncodingComboBox->addItem( "CP1258" );
mEncodingComboBox->addItem( "Apple Roman" );
mEncodingComboBox->addItem( "TIS-620" );
+
+ // Use default encoding if none supplied
+ QString enc = encoding;
if ( encoding.isEmpty() )
{
- mEncodingComboBox->setItemText( mEncodingComboBox->currentIndex(), QString( QTextCodec::codecForLocale()->name() ) );
+ QSettings settings;
+ enc = settings.value( "/UI/encoding", QString("System") ).toString();
}
- else
+
+ // The specified decoding is added if not existing alread, and then set current.
+ // This should select it.
+ int encindex = mEncodingComboBox->findText( enc );
+ if ( encindex < 0 )
{
- mEncodingComboBox->setItemText( mEncodingComboBox->currentIndex(), encoding );
+ mEncodingComboBox->insertItem( 0, enc );
+ encindex = 0;
}
+ mEncodingComboBox->setCurrentIndex( encindex );
// if this dialog is being invoked from QgisApp::findFiles_(), then we
// need to force selection of the first filter since that corresponds to
@@ -86,6 +99,10 @@
// findFiles_(), it won't hurt to force selection of the first file filter
selectFilter( filters().at( 0 ) );
+ // Connect our slot to get a signal when the user is done with the file dialog
+ connect( this, SIGNAL( accepted() ), this, SLOT( saveUsedEncoding() ) );
+
+
}
QgsEncodingFileDialog::~QgsEncodingFileDialog()
@@ -97,3 +114,10 @@
{
return mEncodingComboBox->currentText();
}
+
+void QgsEncodingFileDialog::saveUsedEncoding()
+{
+ QSettings settings;
+ settings.setValue( "/UI/encoding", encoding() );
+ QgsDebugMsg(QString( "Set encoding " + encoding() + " as default.") );
+}
Modified: trunk/qgis/src/gui/qgsencodingfiledialog.h
===================================================================
--- trunk/qgis/src/gui/qgsencodingfiledialog.h 2009-07-27 13:24:43 UTC (rev 11181)
+++ trunk/qgis/src/gui/qgsencodingfiledialog.h 2009-07-27 15:19:39 UTC (rev 11182)
@@ -32,6 +32,9 @@
~QgsEncodingFileDialog();
/**Returns a string describing the choosen encoding*/
QString encoding() const;
+ public slots:
+ void saveUsedEncoding();
+
private:
/**Box to choose the encoding type*/
QComboBox* mEncodingComboBox;
More information about the QGIS-commit
mailing list