QGIS API Documentation  3.10.0-A Coruña (6c816b4204)
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 
266  QVector< QPair<int, bool> > sortAttributes() const SIP_SKIP;
267 
274  void setWrapString( const QString &wrapString );
275 
281  QString wrapString() const { return mWrapString; }
282 
289  bool getTableContents( QgsLayoutTableContents &contents ) override SIP_SKIP;
290 
292  void finalizeRestoreFromXml() override;
293 
295 
296  protected:
297 
298  bool writePropertiesToElement( QDomElement &elem, QDomDocument &doc, const QgsReadWriteContext &context ) const override;
299  bool readPropertiesFromElement( const QDomElement &itemElem, const QDomDocument &doc, const QgsReadWriteContext &context ) override;
300 
301  private slots:
302 
303  void disconnectCurrentMap();
304 
305  private:
306 
308  ContentSource mSource = LayerAttributes;
310  QgsVectorLayerRef mVectorLayer = nullptr;
311 
313  QPointer< QgsVectorLayer > mDataDefinedVectorLayer;
314 
316  QString mRelationId;
317 
319  QgsVectorLayer *mCurrentAtlasLayer = nullptr;
320 
322  QgsLayoutItemMap *mMap = nullptr;
323  QString mMapUuid;
324 
326  int mMaximumNumberOfFeatures = 30;
327 
329  bool mShowUniqueRowsOnly = false;
330 
332  bool mShowOnlyVisibleFeatures = false;
333 
335  bool mFilterToAtlasIntersection = false;
336 
338  bool mFilterFeatures = false;
339 
341  QString mFeatureFilter;
342 
343  QString mWrapString;
344 
349  QList<int> fieldsToDisplay() const;
350 
356  void restoreFieldAliasMap( const QMap<int, QString> &map );
357 
362  QVariant replaceWrapChar( const QVariant &variant ) const;
363 
364  private slots:
366  void removeLayer( const QString &layerId );
367 
368  void atlasLayerChanged( QgsVectorLayer *layer );
369 
370 };
371 
372 #endif // QGSLAYOUTITEMATTRIBUTETABLE_H
The class is used as a container of context for various read/write operations on other objects...
QString relationId() const
Returns the relation id which the table displays child features from.
virtual QIcon icon() const
Returns the item&#39;s icon.
#define SIP_TRANSFERTHIS
Definition: qgis_sip.h:53
A class to display a table in the print layout, and allow the table to span over multiple frames...
QString featureFilter() const
Returns the current expression used to filter features for the table.
bool writePropertiesToElement(QDomElement &elem, QDomDocument &doc, const QgsReadWriteContext &context) const override
Stores multiframe state within an XML DOM element.
bool filterFeatures() const
Returns true if a feature filter is active on the attribute table.
QString wrapString() const
Returns the string used to wrap the contents of the table cells by.
int maximumNumberOfFeatures() const
Returns the maximum number of features to be shown by the table.
bool filterToAtlasFeature() const
Returns true if the table is set to only show features which intersect the current atlas feature...
Layout graphical items for displaying a map.
#define SIP_SKIP
Definition: qgis_sip.h:126
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
bool displayOnlyVisibleFeatures() const
Returns true if the table is set to show only features visible on a corresponding map item...
A layout table subclass that displays attributes from a vector layer.
Table shows attributes from the current atlas feature.
#define SIP_FACTORY
Definition: qgis_sip.h:76
virtual void finalizeRestoreFromXml()
Called after all pending items have been restored from XML.
Base class for layouts, which can contain items such as maps, labels, scalebars, etc.
Definition: qgslayout.h:49
virtual bool getTableContents(QgsLayoutTableContents &contents)=0
Fetches the contents used for the cells in the table.
virtual QString displayName() const
Returns the multiframe display name.
QgsVectorLayer * vectorLayer() const
Returns the vector layer the attribute table is currently using.
bool uniqueRowsOnly() const
Returns true if the table is set to show only unique rows.
virtual int type() const =0
Returns unique multiframe type id.
ContentSource
Specifies the content source for the attribute table.
ContentSource source() const
Returns the source for attributes shown in the table body.
QgsLayoutItemMap * map() const
Returns the layout map whose extents are controlling the features shown in the table.
Represents a vector layer which manages a vector based data sets.
DataDefinedProperty
Data defined properties for different item types.
QVector< QgsLayoutTableRow > QgsLayoutTableContents
List of QgsLayoutTableRows, representing rows and column cell contents for a QgsLayoutTable.
QgsExpressionContext createExpressionContext() const override
This method needs to be reimplemented in all classes which implement this interface and return an exp...
bool readPropertiesFromElement(const QDomElement &itemElem, const QDomDocument &doc, const QgsReadWriteContext &context) override
Sets multiframe state from a DOM element.
All properties for item.
virtual void refreshDataDefinedProperty(QgsLayoutObject::DataDefinedProperty property=QgsLayoutObject::AllProperties)
Refreshes a data defined property for the multi frame by reevaluating the property&#39;s value and redraw...