Add a new filter for WritableLayers to QgsMapLayerProxyModel

This commit is contained in:
Matthias Kuhn 2016-03-23 15:05:37 +01:00
parent 93e73ac66f
commit ae7b657da3
3 changed files with 7 additions and 1 deletions

View File

@ -20,6 +20,7 @@ class QgsMapLayerProxyModel : QSortFilterProxyModel
HasGeometry,
VectorLayer,
PluginLayer,
WritableLayer,
All
};
typedef QFlags<QgsMapLayerProxyModel::Filter> Filters;

View File

@ -84,6 +84,11 @@ bool QgsMapLayerProxyModel::filterAcceptsRow( int source_row, const QModelIndex
if ( mExceptList.contains( layer ) )
return false;
QgsVectorLayer* vl = qobject_cast<QgsVectorLayer*>( layer );
if ( mFilters.testFlag( WritableLayer ) && layer->readOnly() )
return false;
// layer type
if (( mFilters.testFlag( RasterLayer ) && layer->type() == QgsMapLayer::RasterLayer ) ||
( mFilters.testFlag( VectorLayer ) && layer->type() == QgsMapLayer::VectorLayer ) ||
@ -98,7 +103,6 @@ bool QgsMapLayerProxyModel::filterAcceptsRow( int source_row, const QModelIndex
mFilters.testFlag( HasGeometry );
if ( detectGeometry && layer->type() == QgsMapLayer::VectorLayer )
{
QgsVectorLayer* vl = dynamic_cast<QgsVectorLayer*>( layer );
if ( vl )
{
if ( mFilters.testFlag( HasGeometry ) && vl->hasGeometryType() )

View File

@ -46,6 +46,7 @@ class GUI_EXPORT QgsMapLayerProxyModel : public QSortFilterProxyModel
HasGeometry = PointLayer | LineLayer | PolygonLayer,
VectorLayer = NoGeometry | HasGeometry,
PluginLayer = 32,
WritableLayer = 64,
All = RasterLayer | VectorLayer | PluginLayer
};
Q_DECLARE_FLAGS( Filters, Filter )