QGIS API Documentation 3.28.0-Firenze (ed3ad0430f)
qgspointcloudattributemodel.h
Go to the documentation of this file.
1/***************************************************************************
2 qgspointcloudattributemodel.h
3 ---------------------
4 begin : November 2020
5 copyright : (C) 2020 by Nyall Dawson
6 email : nyall dot dawson at gmail dot com
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18#ifndef QGSPOINTCLOUDATTRIBUTEMODEL_H
19#define QGSPOINTCLOUDATTRIBUTEMODEL_H
20
22
23#include <QAbstractItemModel>
24#include <QPointer>
25#include <QSortFilterProxyModel>
26
28
36class CORE_EXPORT QgsPointCloudAttributeModel : public QAbstractItemModel
37{
38 Q_OBJECT
39
40 public:
41
44 {
45 AttributeNameRole = Qt::UserRole + 1,
51 };
52
56 explicit QgsPointCloudAttributeModel( QObject *parent SIP_TRANSFERTHIS = nullptr );
57
63 void setLayer( QgsPointCloudLayer *layer );
64
70 QgsPointCloudLayer *layer();
71
78 void setAttributes( const QgsPointCloudAttributeCollection &attributes );
79
85 QgsPointCloudAttributeCollection attributes() const { return mAttributes; }
86
91 void setAllowEmptyAttributeName( bool allowEmpty );
92
96 QModelIndex indexFromName( const QString &name );
97
102 bool allowEmptyAttributeName() const { return mAllowEmpty; }
103
104 // QAbstractItemModel interface
105 QModelIndex index( int row, int column, const QModelIndex &parent = QModelIndex() ) const override;
106 QModelIndex parent( const QModelIndex &child ) const override;
107 int rowCount( const QModelIndex &parent = QModelIndex() ) const override;
108 int columnCount( const QModelIndex &parent ) const override;
109 QVariant data( const QModelIndex &index, int role ) const override;
110
115 static QString attributeToolTip( const QgsPointCloudAttribute &attribute );
116
120 static QIcon iconForAttributeType( QgsPointCloudAttribute::DataType type );
121
122 private:
123
125 bool mAllowEmpty = false;
126 QPointer< QgsPointCloudLayer > mLayer;
127};
128
129
137class CORE_EXPORT QgsPointCloudAttributeProxyModel : public QSortFilterProxyModel
138{
139 Q_OBJECT
140 public:
141
144 {
145 Char = 1 << 0,
146 Short = 1 << 1,
147 Int32 = 1 << 2,
148 Float = 1 << 3,
149 Double = 1 << 4,
150 Numeric = Short | Int32 | Float | Double,
151 AllTypes = Numeric | Char,
152 };
153 Q_DECLARE_FLAGS( Filters, Filter )
154 Q_FLAG( Filters )
155
156
160 explicit QgsPointCloudAttributeProxyModel( QgsPointCloudAttributeModel *source, QObject *parent SIP_TRANSFERTHIS = nullptr );
161
166
171 QgsPointCloudAttributeProxyModel *setFilters( QgsPointCloudAttributeProxyModel::Filters filters );
172
177 Filters filters() const { return mFilters; }
178
179 private:
180
181 QgsPointCloudAttributeModel *mModel = nullptr;
182 Filters mFilters = AllTypes;
183
184 // QSortFilterProxyModel interface
185 public:
186 bool filterAcceptsRow( int source_row, const QModelIndex &source_parent ) const override;
187 bool lessThan( const QModelIndex &left, const QModelIndex &right ) const override;
188};
189Q_DECLARE_OPERATORS_FOR_FLAGS( QgsPointCloudAttributeProxyModel::Filters )
190
191
192#endif // QGSPOINTCLOUDATTRIBUTEMODEL_H
Collection of point cloud attributes.
A model for display of available attributes from a point cloud.
QgsPointCloudAttributeCollection attributes() const
Returns the attributes associated with the model.
FieldRoles
Roles utilized by the model.
@ AttributeTypeRole
Attribute type, see QgsPointCloudAttribute::DataType.
@ IsEmptyRole
true if the index corresponds to the empty value
@ AttributeIndexRole
Attribute index if index corresponds to an attribute.
@ IsNumericRole
true if the index corresponds to a numeric attributre
bool allowEmptyAttributeName() const
Returns true if the model allows the empty attribute ("not set") choice.
A proxy model for filtering available attributes from a point cloud attribute model.
Filters filters() const
Returns the filters controlling displayed attributes.
QgsPointCloudAttributeModel * sourceAttributeModel()
Returns the QgsPointCloudAttributeModel used in this QSortFilterProxyModel.
Attribute for point cloud data pair of name and size in bytes.
DataType
Systems of unit measurement.
Represents a map layer supporting display of point clouds.
#define SIP_TRANSFERTHIS
Definition: qgis_sip.h:53
Q_DECLARE_OPERATORS_FOR_FLAGS(QgsField::ConfigurationFlags) CORE_EXPORT QDataStream &operator<<(QDataStream &out
Writes the field to stream out. QGIS version compatibility is not guaranteed.