Skip to content

Commit d79c296

Browse files
committed
implement #3337
1 parent 40dc7df commit d79c296

File tree

2 files changed

+41
-2
lines changed

2 files changed

+41
-2
lines changed

src/gui/qgsquerybuilder.cpp

+31-2
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ QgsQueryBuilder::QgsQueryBuilder( QgsVectorLayer *layer,
4747

4848
mOrigSubsetString = layer->subsetString();
4949

50+
mUseUnfilteredLayer->setDisabled( mLayer->subsetString().isEmpty() );
51+
5052
lblDataUri->setText( layer->name() );
5153
txtSQL->setText( mOrigSubsetString );
5254

@@ -124,31 +126,54 @@ void QgsQueryBuilder::on_btnSampleValues_clicked()
124126
{
125127
lstValues->setCursor( Qt::WaitCursor );
126128

129+
QString prevSubsetString = mLayer->subsetString();
130+
if ( mUseUnfilteredLayer->isChecked() && !prevSubsetString.isEmpty() )
131+
{
132+
mLayer->setSubsetString( "" );
133+
}
134+
127135
//delete connection mModelValues and lstValues
128136
QStandardItemModel *tmp = new QStandardItemModel();
129137
lstValues->setModel( tmp );
130138
//Clear and fill the mModelValues
131139
fillValues( mModelFields->data( lstFields->currentIndex(), Qt::UserRole + 1 ).toInt(), 25 );
132140
lstValues->setModel( mModelValues );
133-
lstValues->setCursor( Qt::ArrowCursor );
134141
//delete the tmp
135142
delete tmp;
136143

144+
if ( prevSubsetString != mLayer->subsetString() )
145+
{
146+
mLayer->setSubsetString( prevSubsetString );
147+
}
148+
149+
lstValues->setCursor( Qt::ArrowCursor );
137150
}
138151

139152
void QgsQueryBuilder::on_btnGetAllValues_clicked()
140153
{
141154
lstValues->setCursor( Qt::WaitCursor );
142155

156+
QString prevSubsetString = mLayer->subsetString();
157+
if ( mUseUnfilteredLayer->isChecked() && !prevSubsetString.isEmpty() )
158+
{
159+
mLayer->setSubsetString( "" );
160+
}
161+
143162
//delete connection mModelValues and lstValues
144163
QStandardItemModel *tmp = new QStandardItemModel();
145164
lstValues->setModel( tmp );
146165
//Clear and fill the mModelValues
147166
fillValues( mModelFields->data( lstFields->currentIndex(), Qt::UserRole + 1 ).toInt(), -1 );
148167
lstValues->setModel( mModelValues );
149-
lstValues->setCursor( Qt::ArrowCursor );
150168
//delete the tmp
151169
delete tmp;
170+
171+
if ( prevSubsetString != mLayer->subsetString() )
172+
{
173+
mLayer->setSubsetString( prevSubsetString );
174+
}
175+
176+
lstValues->setCursor( Qt::ArrowCursor );
152177
}
153178

154179
void QgsQueryBuilder::test()
@@ -159,6 +184,8 @@ void QgsQueryBuilder::test()
159184

160185
if ( mLayer->setSubsetString( txtSQL->toPlainText() ) )
161186
{
187+
mUseUnfilteredLayer->setDisabled( mLayer->subsetString().isEmpty() );
188+
162189
QMessageBox::information( this,
163190
tr( "Query Result" ),
164191
tr( "The where clause returned %n row(s).", "returned test rows", mLayer->featureCount() ) );
@@ -319,12 +346,14 @@ void QgsQueryBuilder::clear()
319346
{
320347
txtSQL->clear();
321348
mLayer->setSubsetString( "" );
349+
mUseUnfilteredLayer->setDisabled( true );
322350
}
323351

324352
void QgsQueryBuilder::on_btnILike_clicked()
325353
{
326354
txtSQL->insertPlainText( " ILIKE " );
327355
}
356+
328357
void QgsQueryBuilder::setDatasourceDescription( QString uri )
329358
{
330359
lblDataUri->setText( uri );

src/ui/qgsquerybuilderbase.ui

+10
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,16 @@ p, li { white-space: pre-wrap; }
125125
</property>
126126
</widget>
127127
</item>
128+
<item row="2" column="0" colspan="2">
129+
<widget class="QCheckBox" name="mUseUnfilteredLayer">
130+
<property name="enabled">
131+
<bool>false</bool>
132+
</property>
133+
<property name="text">
134+
<string>Use unfiltered layer</string>
135+
</property>
136+
</widget>
137+
</item>
128138
</layout>
129139
</widget>
130140
</item>

0 commit comments

Comments
 (0)