QGIS API Documentation  3.8.0-Zanzibar (11aff65)
qgsmaplayermodel.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsmaplayermodel.h
3  --------------------------------------
4  Date : 01.04.2014
5  Copyright : (C) 2014 Denis Rouzaud
6  Email : denis.rouzaud@gmail.com
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 QGSMAPLAYERMODEL_H
17 #define QGSMAPLAYERMODEL_H
18 
19 #include <QAbstractItemModel>
20 #include <QSortFilterProxyModel>
21 #include <QStringList>
22 
23 #include "qgis_core.h"
24 #include "qgis_sip.h"
25 
26 class QgsMapLayer;
27 
28 
36 class CORE_EXPORT QgsMapLayerModel : public QAbstractItemModel
37 {
38  Q_OBJECT
39 
40  Q_PROPERTY( bool allowEmptyLayer READ allowEmptyLayer WRITE setAllowEmptyLayer )
41  Q_PROPERTY( bool showCrs READ showCrs WRITE setShowCrs )
42  Q_PROPERTY( bool itemsCheckable READ itemsCheckable WRITE setItemsCheckable )
43  Q_PROPERTY( QStringList additionalItems READ additionalItems WRITE setAdditionalItems )
44 
45  public:
46 
49  {
50  LayerIdRole = Qt::UserRole + 1,
54  };
55  Q_ENUM( ItemDataRole )
56 
57 
60  explicit QgsMapLayerModel( QObject *parent SIP_TRANSFERTHIS = nullptr );
61 
65  explicit QgsMapLayerModel( const QList<QgsMapLayer *> &layers, QObject *parent = nullptr );
66 
70  void setItemsCheckable( bool checkable );
71 
75  void checkAll( Qt::CheckState checkState );
76 
82  void setAllowEmptyLayer( bool allowEmpty );
83 
89  bool allowEmptyLayer() const { return mAllowEmpty; }
90 
96  void setShowCrs( bool showCrs );
97 
103  bool showCrs() const { return mShowCrs; }
104 
108  QList<QgsMapLayer *> layersChecked( Qt::CheckState checkState = Qt::Checked );
110  bool itemsCheckable() const { return mItemCheckable; }
111 
116  QModelIndex indexFromLayer( QgsMapLayer *layer ) const;
117 
123  QgsMapLayer *layerFromIndex( const QModelIndex &index ) const;
124 
132  void setAdditionalItems( const QStringList &items );
133 
139  QStringList additionalItems() const { return mAdditionalItems; }
140 
141  // QAbstractItemModel interface
142  QModelIndex index( int row, int column, const QModelIndex &parent = QModelIndex() ) const override;
143  QModelIndex parent( const QModelIndex &child ) const override;
144  int rowCount( const QModelIndex &parent = QModelIndex() ) const override;
145  int columnCount( const QModelIndex &parent = QModelIndex() ) const override;
146  QVariant data( const QModelIndex &index, int role = Qt::DisplayRole ) const override;
147 
153  QHash<int, QByteArray> roleNames() const override SIP_SKIP;
154 
155  bool setData( const QModelIndex &index, const QVariant &value, int role = Qt::EditRole ) override;
156  Qt::ItemFlags flags( const QModelIndex &index ) const override;
157 
162  static QIcon iconForLayer( QgsMapLayer *layer );
163 
164  protected slots:
165  void removeLayers( const QStringList &layerIds );
166  void addLayers( const QList<QgsMapLayer *> &layers );
167 
168  protected:
169  QList<QgsMapLayer *> mLayers;
170  QMap<QString, Qt::CheckState> mLayersChecked;
171  bool mItemCheckable = false;
172 
173  private:
174 
175  bool mAllowEmpty = false;
176  bool mShowCrs = false;
177  QStringList mAdditionalItems;
178 };
179 
180 #endif // QGSMAPLAYERMODEL_H
Base class for all map layer types.
Definition: qgsmaplayer.h:78
ItemDataRole
Item data roles.
#define SIP_TRANSFERTHIS
Definition: qgis_sip.h:46
Stores pointer to the map layer itself.
bool allowEmptyLayer() const
Returns true if the model allows the empty layer ("not set") choice.
True if index corresponds to an additional (non map layer) item.
QStringList additionalItems() const
Returns the list of additional (non map layer) items included at the end of the model.
#define SIP_SKIP
Definition: qgis_sip.h:119
The QgsMapLayerModel class is a model to display layers in widgets.
QMap< QString, Qt::CheckState > mLayersChecked
QList< QgsMapLayer * > mLayers
bool showCrs() const
Returns true if the model includes layer&#39;s CRS in the display role.
bool itemsCheckable() const
returns if the items can be checked or not
True if index corresponds to the empty (not set) value.