Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Allow provider-level filtering on layers with joined fields (fix conf…
…licts)
  • Loading branch information
Hugo Mercier committed Mar 25, 2015
1 parent 7019db8 commit 4a52750
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 6 deletions.
2 changes: 1 addition & 1 deletion src/app/qgsapplayertreeviewmenuprovider.cpp
Expand Up @@ -148,7 +148,7 @@ QMenu* QgsAppLayerTreeViewMenuProvider::createContextMenu()
menu->addAction( tr( "Save As..." ), QgisApp::instance(), SLOT( saveAsFile() ) );
menu->addAction( tr( "Save As Layer Definition File..." ), QgisApp::instance(), SLOT( saveAsLayerDefinition() ) );

if ( !vlayer->isEditable() && vlayer->dataProvider()->supportsSubsetString() && vlayer->vectorJoins().isEmpty() )
if ( !vlayer->isEditable() && vlayer->dataProvider()->supportsSubsetString() )
menu->addAction( tr( "&Filter..." ), QgisApp::instance(), SLOT( layerSubsetString() ) );

menu->addAction( actions->actionShowFeatureCount( menu ) );
Expand Down
10 changes: 5 additions & 5 deletions src/app/qgsvectorlayerproperties.cpp
Expand Up @@ -306,7 +306,7 @@ void QgsVectorLayerProperties::toggleEditing()
emit toggleEditing( layer );

pbnQueryBuilder->setEnabled( layer->dataProvider() && layer->dataProvider()->supportsSubsetString() &&
!layer->isEditable() && layer->vectorJoins().size() < 1 );
!layer->isEditable() );
if ( layer->isEditable() )
{
pbnQueryBuilder->setToolTip( tr( "Stop editing mode to enable this." ) );
Expand Down Expand Up @@ -392,7 +392,7 @@ void QgsVectorLayerProperties::syncToLayer( void )
// a mechanism to check it must be implemented.
txtSubsetSQL->setEnabled( false );
pbnQueryBuilder->setEnabled( layer->dataProvider() && layer->dataProvider()->supportsSubsetString() &&
!layer->isEditable() && layer->vectorJoins().size() < 1 );
!layer->isEditable() );
if ( layer->isEditable() )
{
pbnQueryBuilder->setToolTip( tr( "Stop editing mode to enable this." ) );
Expand Down Expand Up @@ -1056,7 +1056,7 @@ void QgsVectorLayerProperties::on_mButtonAddJoin_clicked()
layer->addJoin( info );
addJoinToTreeWidget( info );
pbnQueryBuilder->setEnabled( layer && layer->dataProvider() && layer->dataProvider()->supportsSubsetString() &&
!layer->isEditable() && layer->vectorJoins().size() < 1 );
!layer->isEditable() );
mFieldsPropertiesDialog->init();
}
}
Expand Down Expand Up @@ -1117,7 +1117,7 @@ void QgsVectorLayerProperties::on_mButtonEditJoin_clicked()
addJoinToTreeWidget( info, idx );

pbnQueryBuilder->setEnabled( layer && layer->dataProvider() && layer->dataProvider()->supportsSubsetString() &&
!layer->isEditable() && layer->vectorJoins().size() < 1 );
!layer->isEditable() );
mFieldsPropertiesDialog->init();
}
}
Expand Down Expand Up @@ -1196,7 +1196,7 @@ void QgsVectorLayerProperties::on_mButtonRemoveJoin_clicked()
layer->removeJoin( currentJoinItem->data( 0, Qt::UserRole ).toString() );
mJoinTreeWidget->takeTopLevelItem( mJoinTreeWidget->indexOfTopLevelItem( currentJoinItem ) );
pbnQueryBuilder->setEnabled( layer && layer->dataProvider() && layer->dataProvider()->supportsSubsetString() &&
!layer->isEditable() && layer->vectorJoins().size() < 1 );
!layer->isEditable() );
mFieldsPropertiesDialog->init();
}

Expand Down
5 changes: 5 additions & 0 deletions src/gui/qgsquerybuilder.cpp
Expand Up @@ -72,6 +72,11 @@ void QgsQueryBuilder::populateFields()
const QgsFields& fields = mLayer->pendingFields();
for ( int idx = 0; idx < fields.count(); ++idx )
{
if ( fields.fieldOrigin(idx) != QgsFields::OriginProvider )
{
// only consider native fields
continue;
}
QStandardItem *myItem = new QStandardItem( fields[idx].name() );
myItem->setData( idx );
myItem->setEditable( false );
Expand Down

0 comments on commit 4a52750

Please sign in to comment.