Skip to content

Commit b4029dc

Browse files
committedMay 11, 2016
Fix datetime fields not shown in QgsFieldComboWidget when set to date filter
1 parent a389d23 commit b4029dc

File tree

2 files changed

+52
-1
lines changed

2 files changed

+52
-1
lines changed
 

‎src/gui/qgsfieldproxymodel.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ bool QgsFieldProxyModel::filterAcceptsRow( int source_row, const QModelIndex &so
5353
( mFilters.testFlag( LongLong ) && type == QVariant::LongLong ) ||
5454
( mFilters.testFlag( Int ) && type == QVariant::Int ) ||
5555
( mFilters.testFlag( Double ) && type == QVariant::Double ) ||
56-
( mFilters.testFlag( Date ) && type == QVariant::Date ) )
56+
( mFilters.testFlag( Date ) && type == QVariant::Date ) ||
57+
( mFilters.testFlag( Date ) && type == QVariant::DateTime ) )
5758
return true;
5859

5960
return false;

‎tests/src/gui/testqgsfieldexpressionwidget.cpp

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ class TestQgsFieldExpressionWidget : public QObject
5050
void testRemoveJoin();
5151
void asExpression();
5252
void testIsValid();
53+
void testFilters();
5354

5455
private:
5556
QgsFieldExpressionWidget* mWidget;
@@ -219,6 +220,55 @@ void TestQgsFieldExpressionWidget::testIsValid()
219220
QgsMapLayerRegistry::instance()->removeMapLayer( layer );
220221
}
221222

223+
void TestQgsFieldExpressionWidget::testFilters()
224+
{
225+
QgsVectorLayer* layer = new QgsVectorLayer( "point?field=intfld:int&field=stringfld:string&field=string2fld:string&field=longfld:long&field=doublefld:double&field=datefld:date&field=timefld:time&field=datetimefld:datetime", "x", "memory" );
226+
QgsMapLayerRegistry::instance()->addMapLayer( layer );
227+
228+
QScopedPointer< QgsFieldExpressionWidget > widget( new QgsFieldExpressionWidget() );
229+
widget->setLayer( layer );
230+
231+
QCOMPARE( widget->mCombo->count(), 8 );
232+
QCOMPARE( widget->mCombo->itemText( 0 ), QString( "intfld" ) );
233+
QCOMPARE( widget->mCombo->itemText( 1 ), QString( "stringfld" ) );
234+
QCOMPARE( widget->mCombo->itemText( 2 ), QString( "string2fld" ) );
235+
QCOMPARE( widget->mCombo->itemText( 3 ), QString( "longfld" ) );
236+
QCOMPARE( widget->mCombo->itemText( 4 ), QString( "doublefld" ) );
237+
QCOMPARE( widget->mCombo->itemText( 5 ), QString( "datefld" ) );
238+
QCOMPARE( widget->mCombo->itemText( 6 ), QString( "timefld" ) );
239+
QCOMPARE( widget->mCombo->itemText( 7 ), QString( "datetimefld" ) );
240+
241+
widget->setFilters( QgsFieldProxyModel::String );
242+
QCOMPARE( widget->mCombo->count(), 2 );
243+
QCOMPARE( widget->mCombo->itemText( 0 ), QString( "stringfld" ) );
244+
QCOMPARE( widget->mCombo->itemText( 1 ), QString( "string2fld" ) );
245+
246+
widget->setFilters( QgsFieldProxyModel::Int );
247+
QCOMPARE( widget->mCombo->count(), 1 );
248+
QCOMPARE( widget->mCombo->itemText( 0 ), QString( "intfld" ) );
249+
250+
widget->setFilters( QgsFieldProxyModel::LongLong );
251+
QCOMPARE( widget->mCombo->count(), 1 );
252+
QCOMPARE( widget->mCombo->itemText( 0 ), QString( "longfld" ) );
253+
254+
widget->setFilters( QgsFieldProxyModel::Double );
255+
QCOMPARE( widget->mCombo->count(), 1 );
256+
QCOMPARE( widget->mCombo->itemText( 0 ), QString( "doublefld" ) );
257+
258+
widget->setFilters( QgsFieldProxyModel::Numeric );
259+
QCOMPARE( widget->mCombo->count(), 3 );
260+
QCOMPARE( widget->mCombo->itemText( 0 ), QString( "intfld" ) );
261+
QCOMPARE( widget->mCombo->itemText( 1 ), QString( "longfld" ) );
262+
QCOMPARE( widget->mCombo->itemText( 2 ), QString( "doublefld" ) );
263+
264+
widget->setFilters( QgsFieldProxyModel::Date );
265+
QCOMPARE( widget->mCombo->count(), 2 );
266+
QCOMPARE( widget->mCombo->itemText( 0 ), QString( "datefld" ) );
267+
QCOMPARE( widget->mCombo->itemText( 1 ), QString( "datetimefld" ) );
268+
269+
QgsMapLayerRegistry::instance()->removeMapLayer( layer );
270+
}
271+
222272
QTEST_MAIN( TestQgsFieldExpressionWidget )
223273
#include "testqgsfieldexpressionwidget.moc"
224274

0 commit comments

Comments
 (0)
Please sign in to comment.