QGIS API Documentation  3.21.0-Master (5b68dc587e)
qgslayoutitemattributetable.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgslayoutitemattributetable.h
3  ---------------------------
4  begin : November 2017
5  copyright : (C) 2017 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 QGSLAYOUTITEMATTRIBUTETABLE_H
19 #define QGSLAYOUTITEMATTRIBUTETABLE_H
20 
21 #include "qgis_core.h"
22 #include "qgis_sip.h"
23 #include "qgslayouttable.h"
24 #include "qgsvectorlayerref.h"
25 
26 class QgsLayoutItemMap;
27 class QgsVectorLayer;
28 
35 {
36  Q_OBJECT
37 
38  public:
39 
44  {
45  LayerAttributes = 0,
47  RelationChildren
48  };
49 
56 
57  int type() const override;
58  QIcon icon() const override;
59  QString displayName() const override;
60 
64  static QgsLayoutItemAttributeTable *create( QgsLayout *layout ) SIP_FACTORY;
65 
70  void setSource( ContentSource source );
71 
76  ContentSource source() const { return mSource; }
77 
84  QgsVectorLayer *sourceLayer() const;
85 
93  void setVectorLayer( QgsVectorLayer *layer );
94 
103  QgsVectorLayer *vectorLayer() const { return mVectorLayer.get(); }
104 
111  void setRelationId( const QString &id );
112 
119  QString relationId() const { return mRelationId; }
120 
125  void resetColumns();
126 
136  void setMap( QgsLayoutItemMap *map );
137 
144  QgsLayoutItemMap *map() const { return mMap; }
145 
152  void setMaximumNumberOfFeatures( int features );
153 
158  int maximumNumberOfFeatures() const { return mMaximumNumberOfFeatures; }
159 
168  void setUniqueRowsOnly( bool uniqueOnly );
169 
175  bool uniqueRowsOnly() const { return mShowUniqueRowsOnly; }
176 
185  void setDisplayOnlyVisibleFeatures( bool visibleOnly );
186 
194  bool displayOnlyVisibleFeatures() const { return mShowOnlyVisibleFeatures; }
195 
202  void setFilterToAtlasFeature( bool filterToAtlas );
203 
210  bool filterToAtlasFeature() const { return mFilterToAtlasIntersection; }
211 
218  bool filterFeatures() const { return mFilterFeatures; }
219 
227  void setFilterFeatures( bool filter );
228 
236  QString featureFilter() const { return mFeatureFilter; }
237 
247  void setFeatureFilter( const QString &expression );
248 
257  void setDisplayedFields( const QStringList &fields, bool refresh = true );
258 
265  void setWrapString( const QString &wrapString );
266 
272  QString wrapString() const { return mWrapString; }
273 
279  bool getTableContents( QgsLayoutTableContents &contents ) override;
280 
281  QgsConditionalStyle conditionalCellStyle( int row, int column ) const override;
282  QgsExpressionContextScope *scopeForCell( int row, int column ) const override SIP_FACTORY;
283 
285  void finalizeRestoreFromXml() override;
286 
288 
296  bool useConditionalStyling() const;
297 
305  void setUseConditionalStyling( bool enabled );
306 
307  protected:
308 
309  bool writePropertiesToElement( QDomElement &elem, QDomDocument &doc, const QgsReadWriteContext &context ) const override;
310  bool readPropertiesFromElement( const QDomElement &itemElem, const QDomDocument &doc, const QgsReadWriteContext &context ) override;
311 
312  private slots:
313 
314  void disconnectCurrentMap();
315 
316  private:
317 
319  ContentSource mSource = LayerAttributes;
321  QgsVectorLayerRef mVectorLayer = nullptr;
322 
324  QPointer< QgsVectorLayer > mDataDefinedVectorLayer;
325 
327  QString mRelationId;
328 
330  QgsVectorLayer *mCurrentAtlasLayer = nullptr;
331 
333  QgsLayoutItemMap *mMap = nullptr;
334  QString mMapUuid;
335 
337  int mMaximumNumberOfFeatures = 30;
338 
340  bool mShowUniqueRowsOnly = false;
341 
343  bool mShowOnlyVisibleFeatures = false;
344 
346  bool mFilterToAtlasIntersection = false;
347 
349  bool mFilterFeatures = false;
350 
352  QString mFeatureFilter;
353 
354  QString mWrapString;
355 
356  bool mUseConditionalStyling = false;
357 
358  QList< QList< QgsConditionalStyle > > mConditionalStyles;
359  QList< QgsFeature > mFeatures;
360 
361  struct Cell
362  {
363  Cell() = default;
364 
365  Cell( const QVariant &content, const QgsConditionalStyle &style, const QgsFeature &feature )
366  : content( content )
367  , style( style )
368  , feature( feature ) {}
369  QVariant content;
370  QgsConditionalStyle style;
371  QgsFeature feature;
372  };
373 
378  QList<int> fieldsToDisplay() const;
379 
385  void restoreFieldAliasMap( const QMap<int, QString> &map );
386 
391  QVariant replaceWrapChar( const QVariant &variant ) const;
392 
393 #ifdef HAVE_SERVER_PYTHON_PLUGINS
394 
398  QgsLayoutTableColumns filteredColumns( );
399 #endif
400 
401  private slots:
403  void removeLayer( const QString &layerId );
404 
405  void atlasLayerChanged( QgsVectorLayer *layer );
406 
407 };
408 
409 #endif // QGSLAYOUTITEMATTRIBUTETABLE_H
Conditional styling for a rule.
Single scope for storing variables and functions for use within a QgsExpressionContext.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
Definition: qgsfeature.h:56
A layout table subclass that displays attributes from a vector layer.
QString wrapString() const
Returns the string used to wrap the contents of the table cells by.
ContentSource
Specifies the content source for the attribute table.
@ AtlasFeature
Table shows attributes from the current atlas feature.
QgsVectorLayer * vectorLayer() const
Returns the vector layer the attribute table is currently using.
QString featureFilter() const
Returns the current expression used to filter features for the table.
ContentSource source() const
Returns the source for attributes shown in the table body.
bool displayOnlyVisibleFeatures() const
Returns true if the table is set to show only features visible on a corresponding map item.
bool filterToAtlasFeature() const
Returns true if the table is set to only show features which intersect the current atlas feature.
QString relationId() const
Returns the relation id which the table displays child features from.
bool filterFeatures() const
Returns true if a feature filter is active on the attribute table.
QgsLayoutItemMap * map() const
Returns the layout map whose extents are controlling the features shown in the table.
int maximumNumberOfFeatures() const
Returns the maximum number of features to be shown by the table.
bool uniqueRowsOnly() const
Returns true if the table is set to show only unique rows.
Layout graphical items for displaying a map.
virtual void finalizeRestoreFromXml()
Called after all pending items have been restored from XML.
QgsExpressionContext createExpressionContext() const override
This method needs to be reimplemented in all classes which implement this interface and return an exp...
virtual int type() const =0
Returns unique multiframe type id.
virtual QIcon icon() const
Returns the item's icon.
virtual QString displayName() const
Returns the multiframe display name.
virtual void refreshDataDefinedProperty(QgsLayoutObject::DataDefinedProperty property=QgsLayoutObject::AllProperties)
Refreshes a data defined property for the multi frame by reevaluating the property's value and redraw...
DataDefinedProperty
Data defined properties for different item types.
@ AllProperties
All properties for item.
A class to display a table in the print layout, and allow the table to span over multiple frames.
virtual QgsConditionalStyle conditionalCellStyle(int row, int column) const
Returns the conditional style to use for the cell at row, column.
virtual QgsExpressionContextScope * scopeForCell(int row, int column) const
Creates a new QgsExpressionContextScope for the cell at row, column.
virtual bool getTableContents(QgsLayoutTableContents &contents)=0
Fetches the contents used for the cells in the table.
bool writePropertiesToElement(QDomElement &elem, QDomDocument &doc, const QgsReadWriteContext &context) const override
Stores multiframe state within an XML DOM element.
bool readPropertiesFromElement(const QDomElement &itemElem, const QDomDocument &doc, const QgsReadWriteContext &context) override
Sets multiframe state from a DOM element.
Base class for layouts, which can contain items such as maps, labels, scalebars, etc.
Definition: qgslayout.h:51
The class is used as a container of context for various read/write operations on other objects.
Represents a vector layer which manages a vector based data sets.
QVector< QgsLayoutTableColumn > QgsLayoutTableColumns
List of column definitions for a QgsLayoutTable.
QVector< QgsLayoutTableRow > QgsLayoutTableContents
List of QgsLayoutTableRows, representing rows and column cell contents for a QgsLayoutTable.
#define SIP_TRANSFERTHIS
Definition: qgis_sip.h:53
#define SIP_FACTORY
Definition: qgis_sip.h:76