Skip to content

Commit c23b167

Browse files
committedSep 22, 2014
Better QgsFilterLineEdit support for several edit widgets
1 parent b1474c8 commit c23b167

File tree

4 files changed

+55
-6
lines changed

4 files changed

+55
-6
lines changed
 

‎src/gui/editorwidgets/qgsfilenamewidgetwrapper.cpp

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#include "qgsfilterlineedit.h"
1919

2020
#include <QFileDialog>
21+
#include <QSettings>
2122
#include <QGridLayout>
2223

2324
QgsFileNameWidgetWrapper::QgsFileNameWidgetWrapper( QgsVectorLayer* vl, int fieldIdx, QWidget* editor, QWidget* parent )
@@ -30,7 +31,12 @@ QVariant QgsFileNameWidgetWrapper::value()
3031
QVariant value;
3132

3233
if ( mLineEdit )
33-
value = mLineEdit->text();
34+
{
35+
if ( mLineEdit->text() == QSettings().value( "qgis/nullValue", "NULL" ).toString() )
36+
value = QVariant( field().type() );
37+
else
38+
value = mLineEdit->text();
39+
}
3440

3541
if ( mLabel )
3642
value = mLabel->text();
@@ -73,13 +79,26 @@ void QgsFileNameWidgetWrapper::initWidget( QWidget* editor )
7379
mLabel = qobject_cast<QLabel*>( editor );
7480

7581
if ( mLineEdit )
82+
{
83+
QgsFilterLineEdit* fle = qobject_cast<QgsFilterLineEdit*>( editor );
84+
if ( fle )
85+
{
86+
fle->setNullValue( QSettings().value( "qgis/nullValue", "NULL" ).toString() );
87+
}
88+
7689
connect( mLineEdit, SIGNAL( textChanged( QString ) ), this, SLOT( valueChanged( QString ) ) );
90+
}
7791
}
7892

7993
void QgsFileNameWidgetWrapper::setValue( const QVariant& value )
8094
{
8195
if ( mLineEdit )
82-
mLineEdit->setText( value.toString() );
96+
{
97+
if ( value.isNull() )
98+
mLineEdit->setText( QSettings().value( "qgis/nullValue", "NULL" ).toString() );
99+
else
100+
mLineEdit->setText( value.toString() );
101+
}
83102

84103
if ( mLabel )
85104
mLabel->setText( value.toString() );

‎src/gui/editorwidgets/qgsphotowidgetwrapper.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,13 @@ void QgsPhotoWidgetWrapper::initWidget( QWidget* editor )
120120

121121
if ( mLineEdit )
122122
{
123+
124+
QgsFilterLineEdit *fle = qobject_cast<QgsFilterLineEdit*>( mLineEdit );
125+
if ( fle )
126+
{
127+
fle->setNullValue( QSettings().value( "qgis/nullValue", "NULL" ).toString() );
128+
}
129+
123130
connect( mLineEdit, SIGNAL( textChanged( QString ) ), this, SLOT( valueChanged( QString ) ) );
124131
connect( mLineEdit, SIGNAL( textChanged( QString ) ), this, SLOT( loadPixmap( QString ) ) );
125132
}

‎src/gui/editorwidgets/qgsuniquevaluewidgetwrapper.cpp

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,10 @@
1616
#include "qgsuniquevaluewidgetwrapper.h"
1717

1818
#include "qgsvectorlayer.h"
19+
#include "qgsfilterlineedit.h"
1920

2021
#include <QCompleter>
22+
#include <QSettings>
2123

2224
QgsUniqueValuesWidgetWrapper::QgsUniqueValuesWidgetWrapper( QgsVectorLayer* vl, int fieldIdx, QWidget* editor, QWidget* parent )
2325
: QgsEditorWidgetWrapper( vl, fieldIdx, editor, parent )
@@ -32,15 +34,20 @@ QVariant QgsUniqueValuesWidgetWrapper::value()
3234
value = mComboBox->itemData( mComboBox->currentIndex() );
3335

3436
if ( mLineEdit )
35-
value = mLineEdit->text();
37+
{
38+
if ( mLineEdit->text() == QSettings().value( "qgis/nullValue", "NULL" ).toString() )
39+
value = QVariant( field().type() );
40+
else
41+
value = mLineEdit->text();
42+
}
3643

3744
return value;
3845
}
3946

4047
QWidget* QgsUniqueValuesWidgetWrapper::createWidget( QWidget* parent )
4148
{
4249
if ( config( "Editable" ).toBool() )
43-
return new QLineEdit( parent );
50+
return new QgsFilterLineEdit( parent );
4451
else
4552
return new QComboBox( parent );
4653
}
@@ -56,7 +63,7 @@ void QgsUniqueValuesWidgetWrapper::initWidget( QWidget* editor )
5663

5764
layer()->uniqueValues( fieldIdx(), values );
5865

59-
Q_FOREACH ( QVariant v, values )
66+
Q_FOREACH( QVariant v, values )
6067
{
6168
if ( mComboBox )
6269
{
@@ -71,6 +78,12 @@ void QgsUniqueValuesWidgetWrapper::initWidget( QWidget* editor )
7178

7279
if ( mLineEdit )
7380
{
81+
QgsFilterLineEdit* fle = qobject_cast<QgsFilterLineEdit*>( editor );
82+
if ( fle && !( field().type() == QVariant::Int || field().type() == QVariant::Double || field().type() == QVariant::LongLong || field().type() == QVariant::Date ) )
83+
{
84+
fle->setNullValue( QSettings().value( "qgis/nullValue", "NULL" ).toString() );
85+
}
86+
7487
QCompleter* c = new QCompleter( sValues );
7588
c->setCompletionMode( QCompleter::PopupCompletion );
7689
mLineEdit->setCompleter( c );
@@ -93,6 +106,9 @@ void QgsUniqueValuesWidgetWrapper::setValue( const QVariant& value )
93106

94107
if ( mLineEdit )
95108
{
96-
mLineEdit->setText( value.toString() );
109+
if ( value.isNull() )
110+
mLineEdit->setText( QSettings().value( "qgis/nullValue", "NULL" ).toString() );
111+
else
112+
mLineEdit->setText( value.toString() );
97113
}
98114
}

‎src/gui/editorwidgets/qgswebviewwidgetwrapper.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,13 @@ void QgsWebViewWidgetWrapper::initWidget( QWidget* editor )
7575

7676
if ( mLineEdit )
7777
{
78+
79+
QgsFilterLineEdit* fle = qobject_cast<QgsFilterLineEdit*>( mLineEdit );
80+
if ( fle )
81+
{
82+
fle->setNullValue( QSettings().value( "qgis/nullValue", "NULL" ).toString() );
83+
}
84+
7885
container = qobject_cast<QWidget*>( mLineEdit->parent() );
7986
}
8087
else

0 commit comments

Comments
 (0)
Please sign in to comment.