24 : QAbstractItemModel( parent )
54 if ( allowEmpty == mAllowEmpty )
59 beginInsertRows( QModelIndex(), 0, 0 );
65 beginRemoveRows( QModelIndex(), 0, 0 );
73 if ( !name.isEmpty() )
75 int idx = mAttributes.
indexOf( name );
79 return index( 1 + idx, 0 );
81 return index( idx, 0 );
85 if ( mAllowEmpty && name.isEmpty() )
93 if ( hasIndex( row, column,
parent ) )
95 return createIndex( row, column, row );
104 return QModelIndex();
114 return ( mAllowEmpty ? 1 : 0 ) + mAttributes.
count();
125 if ( !
index.isValid() )
128 const bool isEmpty = mAllowEmpty &&
index.row() == 0;
129 const int fieldOffset = mAllowEmpty ? 1 : 0;
131 if ( !isEmpty && (
index.row() - fieldOffset >= mAttributes.
count() ) )
142 return mAttributes.
at(
index.row() - fieldOffset ).
name();
151 return index.row() - fieldOffset;
160 return static_cast< int >( mAttributes.
at(
index.row() - fieldOffset ).
size() );
169 return static_cast< int >( mAttributes.
at(
index.row() - fieldOffset ).
type() );
186 case Qt::DisplayRole:
188 case Qt::ToolTipRole:
194 else if ( role == Qt::ToolTipRole )
199 return mAttributes.
at(
index.row() - fieldOffset ).
name();
202 case Qt::DecorationRole:
218 QString toolTip = QStringLiteral(
"<b>%1</b>" ).arg( attribute.
name() );
220 toolTip += QStringLiteral(
"<br><font style='font-family:monospace; white-space: nowrap;'>%3</font>" ).arg( attribute.
displayType() );
254 : QSortFilterProxyModel( parent )
257 setSourceModel( mModel );
269 QModelIndex index = sourceModel()->index( source_row, 0, source_parent );
271 if ( mFilters.testFlag(
AllTypes ) )
275 if ( typeVar.isNull() )
312 return leftId < rightId;
static QIcon getThemeIcon(const QString &name)
Helper to get a theme icon.
Collection of point cloud attributes.
int count() const
Returns the number of attributes present in the collection.
const QgsPointCloudAttribute & at(int index) const
Returns the attribute at the specified index.
int indexOf(const QString &name) const
Returns the index of the attribute with the specified name.
A model for display of available attributes from a point cloud.
QgsPointCloudAttributeCollection attributes() const
Returns the attributes associated with the model.
QModelIndex parent(const QModelIndex &child) const override
void setAllowEmptyAttributeName(bool allowEmpty)
Sets whether an optional empty attribute ("not set") option is present in the model.
QModelIndex index(int row, int column, const QModelIndex &parent=QModelIndex()) const override
int columnCount(const QModelIndex &parent) const override
void setLayer(QgsPointCloudLayer *layer)
Sets the layer associated with the model.
int rowCount(const QModelIndex &parent=QModelIndex()) const override
QVariant data(const QModelIndex &index, int role) const override
QgsPointCloudAttributeModel(QObject *parent=nullptr)
Constructor for QgsPointCloudAttributeModel, with the specified parent object.
void setAttributes(const QgsPointCloudAttributeCollection &attributes)
Sets the attributes to include in the model.
static QString attributeToolTip(const QgsPointCloudAttribute &attribute)
Returns a HTML formatted tooltip string for a attribute, containing details like the attribute name a...
QModelIndex indexFromName(const QString &name)
Returns the index corresponding to a given attribute name.
@ AttributeNameRole
Attribute name.
@ 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.
@ AttributeSizeRole
Attribute size.
@ IsNumericRole
true if the index corresponds to a numeric attributre
QgsPointCloudLayer * layer()
Returns the layer associated with the model.
static QIcon iconForAttributeType(QgsPointCloudAttribute::DataType type)
Returns an icon corresponding to an attribute type.
A proxy model for filtering available attributes from a point cloud attribute model.
bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override
bool lessThan(const QModelIndex &left, const QModelIndex &right) const override
Filters filters() const
Returns the filters controlling displayed attributes.
@ Double
Double attributes.
@ AllTypes
All attribute types.
@ Char
Character attributes.
QgsPointCloudAttributeProxyModel * setFilters(QgsPointCloudAttributeProxyModel::Filters filters)
Set flags that affect how fields are filtered in the model.
QgsPointCloudAttributeProxyModel(QgsPointCloudAttributeModel *source, QObject *parent=nullptr)
Constructor for QgsPointCloudAttributeProxyModel, with the specified source model and parent object.
Attribute for point cloud data pair of name and size in bytes.
DataType
Systems of unit measurement.
@ UShort
Unsigned short int 2 bytes.
@ Short
Short int 2 bytes.
static bool isNumeric(DataType type)
Returns true if the specified data type is numeric.
QString displayType() const
Returns the type to use when displaying this field.
int size() const
Returns size of the attribute in bytes.
QString name() const
Returns name of the attribute.
DataType type() const
Returns the data type.
Represents a map layer supporting display of point clouds.
QgsPointCloudAttributeCollection attributes() const
Returns the attributes available from the layer.