00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #include "qgsencodingfiledialog.h"
00017 #include "qgsproject.h"
00018 #include "qgslogger.h"
00019 #include "qgsvectordataprovider.h"
00020
00021 #include <QSettings>
00022 #include <QComboBox>
00023 #include <QPushButton>
00024 #include <QLabel>
00025 #include <QLayout>
00026 #include <QTextCodec>
00027
00028 QgsEncodingFileDialog::QgsEncodingFileDialog( QWidget * parent,
00029 const QString & caption, const QString & directory,
00030 const QString & filter, const QString & encoding )
00031 : QFileDialog( parent, caption, directory, filter )
00032 {
00033 mCancelAll = false;
00034 mCancelAllButton = 0;
00035 mEncodingComboBox = new QComboBox( this );
00036 QLabel* l = new QLabel( tr( "Encoding:" ), this );
00037 layout()->addWidget( l );
00038 layout()->addWidget( mEncodingComboBox );
00039
00040 mEncodingComboBox->addItems( QgsVectorDataProvider::availableEncodings() );
00041
00042
00043 QString enc = encoding;
00044 if ( encoding.isEmpty() )
00045 {
00046 QSettings settings;
00047 enc = settings.value( "/UI/encoding", QString( "System" ) ).toString();
00048 }
00049
00050
00051
00052 int encindex = mEncodingComboBox->findText( enc );
00053 if ( encindex < 0 )
00054 {
00055 mEncodingComboBox->insertItem( 0, enc );
00056 encindex = 0;
00057 }
00058 mEncodingComboBox->setCurrentIndex( encindex );
00059
00060
00061
00062
00063
00064 selectFilter( filters().at( 0 ) );
00065
00066
00067 connect( this, SIGNAL( accepted() ), this, SLOT( saveUsedEncoding() ) );
00068
00069
00070 }
00071
00072 QgsEncodingFileDialog::~QgsEncodingFileDialog()
00073 {
00074
00075 }
00076
00077 QString QgsEncodingFileDialog::encoding() const
00078 {
00079 return mEncodingComboBox->currentText();
00080 }
00081
00082 void QgsEncodingFileDialog::saveUsedEncoding()
00083 {
00084 QSettings settings;
00085 settings.setValue( "/UI/encoding", encoding() );
00086 QgsDebugMsg( QString( "Set encoding " + encoding() + " as default." ) );
00087 }
00088
00089 void QgsEncodingFileDialog::addCancelAll()
00090 {
00091 if ( ! mCancelAllButton )
00092 {
00093 mCancelAllButton = new QPushButton( tr( "Cancel &All" ), NULL );
00094 layout()->addWidget( mCancelAllButton );
00095 connect( mCancelAllButton, SIGNAL( clicked() ), this, SLOT( pbnCancelAll_clicked() ) );
00096 }
00097 }
00098
00099 bool QgsEncodingFileDialog::cancelAll()
00100 {
00101 return mCancelAll;
00102 }
00103
00104 void QgsEncodingFileDialog::pbnCancelAll_clicked()
00105 {
00106 mCancelAll = true;
00107
00108 reject();
00109 }