QGIS API Documentation  3.14.0-Pi (9f7028fd23)
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 
280  bool getTableContents( QgsLayoutTableContents &contents ) override SIP_SKIP;
281 
282  QgsConditionalStyle conditionalCellStyle( int row, int column ) const override;
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 
364  QList<int> fieldsToDisplay() const;
365 
371  void restoreFieldAliasMap( const QMap<int, QString> &map );
372 
377  QVariant replaceWrapChar( const QVariant &variant ) const;
378 
379  private slots:
381  void removeLayer( const QString &layerId );
382 
383  void atlasLayerChanged( QgsVectorLayer *layer );
384 
385 };
386 
387 #endif // QGSLAYOUTITEMATTRIBUTETABLE_H
QgsExpressionContext
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
Definition: qgsexpressioncontext.h:369
QgsLayoutMultiFrame::createExpressionContext
QgsExpressionContext createExpressionContext() const override
This method needs to be reimplemented in all classes which implement this interface and return an exp...
Definition: qgslayoutmultiframe.cpp:283
QgsLayoutTableContents
QVector< QgsLayoutTableRow > QgsLayoutTableContents
Definition: qgslayouttable.h:46
QgsReadWriteContext
Definition: qgsreadwritecontext.h:34
QgsLayoutMultiFrame::refreshDataDefinedProperty
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...
Definition: qgslayoutmultiframe.cpp:242
QgsLayoutItemAttributeTable::featureFilter
QString featureFilter() const
Returns the current expression used to filter features for the table.
Definition: qgslayoutitemattributetable.h:236
QgsLayoutMultiFrame::finalizeRestoreFromXml
virtual void finalizeRestoreFromXml()
Called after all pending items have been restored from XML.
Definition: qgslayoutmultiframe.cpp:310
QgsLayoutItemAttributeTable::relationId
QString relationId() const
Returns the relation id which the table displays child features from.
Definition: qgslayoutitemattributetable.h:119
QgsLayoutTable::writePropertiesToElement
bool writePropertiesToElement(QDomElement &elem, QDomDocument &doc, const QgsReadWriteContext &context) const override
Stores multiframe state within an XML DOM element.
Definition: qgslayouttable.cpp:76
QgsLayoutMultiFrame::icon
virtual QIcon icon() const
Returns the item's icon.
Definition: qgslayoutmultiframe.h:154
QgsConditionalStyle
Definition: qgsconditionalstyle.h:112
QgsLayoutItemAttributeTable::maximumNumberOfFeatures
int maximumNumberOfFeatures() const
Returns the maximum number of features to be shown by the table.
Definition: qgslayoutitemattributetable.h:158
QgsLayoutItemAttributeTable::uniqueRowsOnly
bool uniqueRowsOnly() const
Returns true if the table is set to show only unique rows.
Definition: qgslayoutitemattributetable.h:175
SIP_FACTORY
#define SIP_FACTORY
Definition: qgis_sip.h:76
QgsLayoutTable::readPropertiesFromElement
bool readPropertiesFromElement(const QDomElement &itemElem, const QDomDocument &doc, const QgsReadWriteContext &context) override
Sets multiframe state from a DOM element.
Definition: qgslayouttable.cpp:134
QgsLayoutObject::AllProperties
@ AllProperties
All properties for item.
Definition: qgslayoutobject.h:135
QgsLayoutMultiFrame::type
virtual int type() const =0
Returns unique multiframe type id.
SIP_SKIP
#define SIP_SKIP
Definition: qgis_sip.h:126
qgslayouttable.h
qgis_sip.h
QgsLayoutTable::getTableContents
virtual bool getTableContents(QgsLayoutTableContents &contents)=0
Fetches the contents used for the cells in the table.
QgsLayoutItemAttributeTable::ContentSource
ContentSource
Specifies the content source for the attribute table.
Definition: qgslayoutitemattributetable.h:43
QgsLayoutItemAttributeTable
Definition: qgslayoutitemattributetable.h:34
QgsLayoutTable
A class to display a table in the print layout, and allow the table to span over multiple frames.
Definition: qgslayouttable.h:111
QgsLayoutItemAttributeTable::wrapString
QString wrapString() const
Returns the string used to wrap the contents of the table cells by.
Definition: qgslayoutitemattributetable.h:272
QgsLayoutItemMap
Layout graphical items for displaying a map.
Definition: qgslayoutitemmap.h:39
QgsLayoutItemAttributeTable::displayOnlyVisibleFeatures
bool displayOnlyVisibleFeatures() const
Returns true if the table is set to show only features visible on a corresponding map item.
Definition: qgslayoutitemattributetable.h:194
qgsvectorlayerref.h
QgsLayout
Base class for layouts, which can contain items such as maps, labels, scalebars, etc.
Definition: qgslayout.h:49
QgsVectorLayer
Definition: qgsvectorlayer.h:385
QgsLayoutItemAttributeTable::filterToAtlasFeature
bool filterToAtlasFeature() const
Returns true if the table is set to only show features which intersect the current atlas feature.
Definition: qgslayoutitemattributetable.h:210
QgsLayoutItemAttributeTable::AtlasFeature
@ AtlasFeature
Table shows attributes from the current atlas feature.
Definition: qgslayoutitemattributetable.h:46
QgsLayoutItemAttributeTable::filterFeatures
bool filterFeatures() const
Returns true if a feature filter is active on the attribute table.
Definition: qgslayoutitemattributetable.h:218
_LayerRef< QgsVectorLayer >
QgsLayoutTable::conditionalCellStyle
virtual QgsConditionalStyle conditionalCellStyle(int row, int column) const
Returns the conditional style to use for the cell at row, column.
Definition: qgslayouttable.cpp:843
SIP_TRANSFERTHIS
#define SIP_TRANSFERTHIS
Definition: qgis_sip.h:53
QgsLayoutMultiFrame::displayName
virtual QString displayName() const
Returns the multiframe display name.
Definition: qgslayoutmultiframe.cpp:273
QgsLayoutItemAttributeTable::source
ContentSource source() const
Returns the source for attributes shown in the table body.
Definition: qgslayoutitemattributetable.h:76
QgsLayoutItemAttributeTable::map
QgsLayoutItemMap * map() const
Returns the layout map whose extents are controlling the features shown in the table.
Definition: qgslayoutitemattributetable.h:144
QgsLayoutItemAttributeTable::vectorLayer
QgsVectorLayer * vectorLayer() const
Returns the vector layer the attribute table is currently using.
Definition: qgslayoutitemattributetable.h:103
QgsLayoutObject::DataDefinedProperty
DataDefinedProperty
Data defined properties for different item types.
Definition: qgslayoutobject.h:132