QGIS API Documentation  3.4.15-Madeira (e83d02e274)
qgsmaplayerproxymodel.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsmaplayerproxymodel.h
3  --------------------------------------
4  Date : 01.04.2014
5  Copyright : (C) 2014 Denis Rouzaud
6  Email : [email protected]
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15 
16 #ifndef QGSMAPLAYERPROXYMODEL_H
17 #define QGSMAPLAYERPROXYMODEL_H
18 
19 #include <QSortFilterProxyModel>
20 #include <QStringList>
21 
22 #include "qgis_core.h"
23 #include "qgis.h"
24 
25 class QgsMapLayerModel;
26 class QgsMapLayer;
27 
33 class CORE_EXPORT QgsMapLayerProxyModel : public QSortFilterProxyModel
34 {
35  Q_OBJECT
36 
37  Q_PROPERTY( QgsMapLayerProxyModel::Filters filters READ filters WRITE setFilters )
38  Q_PROPERTY( QList<QgsMapLayer *> exceptedLayerList READ exceptedLayerList WRITE setExceptedLayerList )
39  Q_PROPERTY( QStringList exceptedLayerIds READ exceptedLayerIds WRITE setExceptedLayerIds )
40 
41  public:
42  enum Filter
43  {
44  RasterLayer = 1,
45  NoGeometry = 2,
46  PointLayer = 4,
47  LineLayer = 8,
48  PolygonLayer = 16,
49  HasGeometry = PointLayer | LineLayer | PolygonLayer,
50  VectorLayer = NoGeometry | HasGeometry,
51  PluginLayer = 32,
52  WritableLayer = 64,
53  All = RasterLayer | VectorLayer | PluginLayer
54  };
55  Q_DECLARE_FLAGS( Filters, Filter )
56  Q_FLAG( Filters )
57 
62  explicit QgsMapLayerProxyModel( QObject *parent SIP_TRANSFERTHIS = nullptr );
63 
67  QgsMapLayerModel *sourceLayerModel() const { return mModel; }
68 
76  QgsMapLayerProxyModel *setFilters( QgsMapLayerProxyModel::Filters filters );
77 
85  const Filters &filters() const { return mFilters; }
86 
98  void setLayerWhitelist( const QList<QgsMapLayer *> &layers );
99 
110  QList<QgsMapLayer *> layerWhitelist() {return mLayerWhitelist;}
111 
118  void setExceptedLayerList( const QList<QgsMapLayer *> &exceptList );
119 
126  QList<QgsMapLayer *> exceptedLayerList() {return mExceptList;}
127 
133  void setExceptedLayerIds( const QStringList &ids );
134 
140  QStringList exceptedLayerIds() const;
141 
147  void setExcludedProviders( const QStringList &providers );
148 
154  QStringList excludedProviders() const { return mExcludedProviders; }
155 
162  QString filterString() const { return mFilterString; }
163 
164  bool filterAcceptsRow( int source_row, const QModelIndex &source_parent ) const override;
165  bool lessThan( const QModelIndex &left, const QModelIndex &right ) const override;
166 
167  public slots:
168 
176  void setFilterString( const QString &filter );
177 
178  private:
179  Filters mFilters;
180  QList<QgsMapLayer *> mExceptList;
181  QList<QgsMapLayer *> mLayerWhitelist;
182  QgsMapLayerModel *mModel = nullptr;
183  QStringList mExcludedProviders;
184  QString mFilterString;
185 };
186 
187 Q_DECLARE_OPERATORS_FOR_FLAGS( QgsMapLayerProxyModel::Filters )
188 
189 #endif // QGSMAPLAYERPROXYMODEL_H
Base class for all map layer types.
Definition: qgsmaplayer.h:63
#define SIP_TRANSFERTHIS
Definition: qgis_sip.h:46
QList< QgsMapLayer * > exceptedLayerList()
Returns the blacklist of layers which are excluded from the model.
QList< QgsMapLayer * > layerWhitelist()
Returns the list of layers which are excluded from the model.
The QgsMapLayerModel class is a model to display layers in widgets.
The QgsMapLayerProxyModel class provides an easy to use model to display the list of layers in widget...
QStringList excludedProviders() const
Returns the blacklist of data providers which are excluded from the model.
QString filterString() const
Returns the current filter string, if set.
const Filters & filters() const
Returns the filter flags which affect how layers are filtered within the model.