QGIS API Documentation  3.22.4-Białowieża (ce8e65e95e)
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 : [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 QGSMAPLAYERMODEL_H
17 #define QGSMAPLAYERMODEL_H
18 
19 #include <QAbstractItemModel>
20 #include <QSortFilterProxyModel>
21 #include <QStringList>
22 #include <QIcon>
23 
24 #include "qgis_core.h"
25 #include "qgis_sip.h"
26 
27 class QgsMapLayer;
28 class QgsProject;
29 
37 class CORE_EXPORT QgsMapLayerModel : public QAbstractItemModel
38 {
39  Q_OBJECT
40 
41  Q_PROPERTY( bool allowEmptyLayer READ allowEmptyLayer WRITE setAllowEmptyLayer )
42  Q_PROPERTY( bool showCrs READ showCrs WRITE setShowCrs )
43  Q_PROPERTY( bool itemsCheckable READ itemsCheckable WRITE setItemsCheckable )
44  Q_PROPERTY( QStringList additionalItems READ additionalItems WRITE setAdditionalItems )
45 
46  public:
47 
50  {
51  LayerIdRole = Qt::UserRole + 1,
55  };
56  Q_ENUM( ItemDataRole )
57 
58 
64  explicit QgsMapLayerModel( QObject *parent SIP_TRANSFERTHIS = nullptr, QgsProject *project = nullptr );
65 
72  explicit QgsMapLayerModel( const QList<QgsMapLayer *> &layers, QObject *parent = nullptr, QgsProject *project = nullptr );
73 
77  void setItemsCheckable( bool checkable );
78 
85  void setItemsCanBeReordered( bool allow );
86 
93  bool itemsCanBeReordered() const;
94 
98  void checkAll( Qt::CheckState checkState );
99 
108  void setAllowEmptyLayer( bool allowEmpty, const QString &text = QString(), const QIcon &icon = QIcon() );
109 
115  bool allowEmptyLayer() const { return mAllowEmpty; }
116 
122  void setShowCrs( bool showCrs );
123 
129  bool showCrs() const { return mShowCrs; }
130 
134  QList<QgsMapLayer *> layersChecked( Qt::CheckState checkState = Qt::Checked );
135 
139  void setLayersChecked( const QList< QgsMapLayer * > &layers );
140 
142  bool itemsCheckable() const { return mItemCheckable; }
143 
148  QModelIndex indexFromLayer( QgsMapLayer *layer ) const;
149 
155  QgsMapLayer *layerFromIndex( const QModelIndex &index ) const;
156 
164  void setAdditionalItems( const QStringList &items );
165 
171  QStringList additionalItems() const { return mAdditionalItems; }
172 
182  void setAdditionalLayers( const QList<QgsMapLayer *> &layers );
183 
190  QList< QgsMapLayer * > additionalLayers() const;
191 
192  // QAbstractItemModel interface
193  QModelIndex index( int row, int column, const QModelIndex &parent = QModelIndex() ) const override;
194  QModelIndex parent( const QModelIndex &child ) const override;
195  int rowCount( const QModelIndex &parent = QModelIndex() ) const override;
196  int columnCount( const QModelIndex &parent = QModelIndex() ) const override;
197  QVariant data( const QModelIndex &index, int role = Qt::DisplayRole ) const override;
198  bool setData( const QModelIndex &index, const QVariant &value, int role = Qt::EditRole ) override;
199  Qt::ItemFlags flags( const QModelIndex &index ) const override;
200  bool insertRows( int row, int count, const QModelIndex &parent = QModelIndex() ) override;
201  bool removeRows( int row, int count, const QModelIndex &parent = QModelIndex() ) override;
202  QStringList mimeTypes() const override;
203  bool canDropMimeData( const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent ) const override;
204  QMimeData *mimeData( const QModelIndexList &indexes ) const override;
205  bool dropMimeData( const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent ) override;
206  Qt::DropActions supportedDropActions() const override;
207 
213  QHash<int, QByteArray> roleNames() const override SIP_SKIP;
214 
219  static QIcon iconForLayer( QgsMapLayer *layer );
220 
221  protected slots:
222  void removeLayers( const QStringList &layerIds );
223  void addLayers( const QList<QgsMapLayer *> &layers );
224 
225  protected:
226  QList<QgsMapLayer *> mLayers;
227  QList< QPointer<QgsMapLayer> > mAdditionalLayers;
228  QMap<QString, Qt::CheckState> mLayersChecked;
229  bool mItemCheckable = false;
230  bool mCanReorder = false;
231 
232  QgsProject *mProject = nullptr;
233 
234  private:
235 
236  bool mAllowEmpty = false;
237  QString mEmptyText;
238  QIcon mEmptyIcon;
239  bool mShowCrs = false;
240  QStringList mAdditionalItems;
241 };
242 
243 #endif // QGSMAPLAYERMODEL_H
The QgsMapLayerModel class is a model to display layers in widgets.
bool itemsCheckable() const
returns if the items can be checked or not
ItemDataRole
Item data roles.
@ EmptyRole
True if index corresponds to the empty (not set) value.
@ LayerRole
Stores pointer to the map layer itself.
@ AdditionalRole
True if index corresponds to an additional (non map layer) item.
bool showCrs() const
Returns true if the model includes layer's CRS in the display role.
QStringList additionalItems() const
Returns the list of additional (non map layer) items included at the end of the model.
bool allowEmptyLayer() const
Returns true if the model allows the empty layer ("not set") choice.
Base class for all map layer types.
Definition: qgsmaplayer.h:73
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
Definition: qgsproject.h:101
#define SIP_TRANSFERTHIS
Definition: qgis_sip.h:53
#define SIP_SKIP
Definition: qgis_sip.h:126