diff --git a/src/gui/qgsquerybuilder.cpp b/src/gui/qgsquerybuilder.cpp index c6d449095477..cc93dc65c6cc 100644 --- a/src/gui/qgsquerybuilder.cpp +++ b/src/gui/qgsquerybuilder.cpp @@ -47,6 +47,8 @@ QgsQueryBuilder::QgsQueryBuilder( QgsVectorLayer *layer, mOrigSubsetString = layer->subsetString(); + mUseUnfilteredLayer->setDisabled( mLayer->subsetString().isEmpty() ); + lblDataUri->setText( layer->name() ); txtSQL->setText( mOrigSubsetString ); @@ -124,31 +126,54 @@ void QgsQueryBuilder::on_btnSampleValues_clicked() { lstValues->setCursor( Qt::WaitCursor ); + QString prevSubsetString = mLayer->subsetString(); + if ( mUseUnfilteredLayer->isChecked() && !prevSubsetString.isEmpty() ) + { + mLayer->setSubsetString( "" ); + } + //delete connection mModelValues and lstValues QStandardItemModel *tmp = new QStandardItemModel(); lstValues->setModel( tmp ); //Clear and fill the mModelValues fillValues( mModelFields->data( lstFields->currentIndex(), Qt::UserRole + 1 ).toInt(), 25 ); lstValues->setModel( mModelValues ); - lstValues->setCursor( Qt::ArrowCursor ); //delete the tmp delete tmp; + if ( prevSubsetString != mLayer->subsetString() ) + { + mLayer->setSubsetString( prevSubsetString ); + } + + lstValues->setCursor( Qt::ArrowCursor ); } void QgsQueryBuilder::on_btnGetAllValues_clicked() { lstValues->setCursor( Qt::WaitCursor ); + QString prevSubsetString = mLayer->subsetString(); + if ( mUseUnfilteredLayer->isChecked() && !prevSubsetString.isEmpty() ) + { + mLayer->setSubsetString( "" ); + } + //delete connection mModelValues and lstValues QStandardItemModel *tmp = new QStandardItemModel(); lstValues->setModel( tmp ); //Clear and fill the mModelValues fillValues( mModelFields->data( lstFields->currentIndex(), Qt::UserRole + 1 ).toInt(), -1 ); lstValues->setModel( mModelValues ); - lstValues->setCursor( Qt::ArrowCursor ); //delete the tmp delete tmp; + + if ( prevSubsetString != mLayer->subsetString() ) + { + mLayer->setSubsetString( prevSubsetString ); + } + + lstValues->setCursor( Qt::ArrowCursor ); } void QgsQueryBuilder::test() @@ -159,6 +184,8 @@ void QgsQueryBuilder::test() if ( mLayer->setSubsetString( txtSQL->toPlainText() ) ) { + mUseUnfilteredLayer->setDisabled( mLayer->subsetString().isEmpty() ); + QMessageBox::information( this, tr( "Query Result" ), tr( "The where clause returned %n row(s).", "returned test rows", mLayer->featureCount() ) ); @@ -319,12 +346,14 @@ void QgsQueryBuilder::clear() { txtSQL->clear(); mLayer->setSubsetString( "" ); + mUseUnfilteredLayer->setDisabled( true ); } void QgsQueryBuilder::on_btnILike_clicked() { txtSQL->insertPlainText( " ILIKE " ); } + void QgsQueryBuilder::setDatasourceDescription( QString uri ) { lblDataUri->setText( uri ); diff --git a/src/ui/qgsquerybuilderbase.ui b/src/ui/qgsquerybuilderbase.ui index d9097b83ec3f..05f9d950c2ac 100644 --- a/src/ui/qgsquerybuilderbase.ui +++ b/src/ui/qgsquerybuilderbase.ui @@ -125,6 +125,16 @@ p, li { white-space: pre-wrap; } + + + + false + + + Use unfiltered layer + + +