QGIS API Documentation  3.21.0-Master (564c892cfd)
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 
173  // QAbstractItemModel interface
174  QModelIndex index( int row, int column, const QModelIndex &parent = QModelIndex() ) const override;
175  QModelIndex parent( const QModelIndex &child ) const override;
176  int rowCount( const QModelIndex &parent = QModelIndex() ) const override;
177  int columnCount( const QModelIndex &parent = QModelIndex() ) const override;
178  QVariant data( const QModelIndex &index, int role = Qt::DisplayRole ) const override;
179  bool setData( const QModelIndex &index, const QVariant &value, int role = Qt::EditRole ) override;
180  Qt::ItemFlags flags( const QModelIndex &index ) const override;
181  bool insertRows( int row, int count, const QModelIndex &parent = QModelIndex() ) override;
182  bool removeRows( int row, int count, const QModelIndex &parent = QModelIndex() ) override;
183  QStringList mimeTypes() const override;
184  bool canDropMimeData( const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent ) const override;
185  QMimeData *mimeData( const QModelIndexList &indexes ) const override;
186  bool dropMimeData( const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent ) override;
187  Qt::DropActions supportedDropActions() const override;
188 
194  QHash<int, QByteArray> roleNames() const override SIP_SKIP;
195 
200  static QIcon iconForLayer( QgsMapLayer *layer );
201 
202  protected slots:
203  void removeLayers( const QStringList &layerIds );
204  void addLayers( const QList<QgsMapLayer *> &layers );
205 
206  protected:
207  QList<QgsMapLayer *> mLayers;
208  QMap<QString, Qt::CheckState> mLayersChecked;
209  bool mItemCheckable = false;
210  bool mCanReorder = false;
211 
212  QgsProject *mProject = nullptr;
213 
214  private:
215 
216  bool mAllowEmpty = false;
217  QString mEmptyText;
218  QIcon mEmptyIcon;
219  bool mShowCrs = false;
220  QStringList mAdditionalItems;
221 };
222 
223 #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:70
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
Definition: qgsproject.h:99
#define SIP_TRANSFERTHIS
Definition: qgis_sip.h:53
#define SIP_SKIP
Definition: qgis_sip.h:126