16#ifndef QGSREPORTSECTIONFIELDGROUP_H
17#define QGSREPORTSECTIONFIELDGROUP_H
25using namespace Qt::StringLiterals;
40class CORE_EXPORT QgsReportSectionFieldGroup :
public QgsAbstractReportSection
47 enum SectionVisibility
49 IncludeWhenFeaturesFound,
57 QgsReportSectionFieldGroup( QgsAbstractReportSection *parentSection =
nullptr );
59 QString type()
const override {
return u
"SectionFieldGroup"_s; }
60 QString description()
const override;
61 QIcon icon()
const override;
69 QgsLayout *body() {
return mBody.get(); }
78 void setBody( QgsLayout *body
SIP_TRANSFER ) { mBody.reset( body ); }
86 bool bodyEnabled()
const {
return mBodyEnabled; }
94 void setBodyEnabled(
bool enabled ) { mBodyEnabled = enabled; }
101 QgsVectorLayer *layer() {
return mCoverageLayer.get(); }
107 void setLayer( QgsVectorLayer *layer ) { mCoverageLayer = layer; }
113 QString field()
const {
return mField; }
119 void setField(
const QString &field ) { mField = field; }
126 bool sortAscending()
const;
133 void setSortAscending(
bool sortAscending );
139 SectionVisibility headerVisibility()
const {
return mHeaderVisibility; }
145 void setHeaderVisibility( SectionVisibility visibility ) { mHeaderVisibility = visibility; }
151 SectionVisibility footerVisibility()
const {
return mFooterVisibility; }
157 void setFooterVisibility( SectionVisibility visibility ) { mFooterVisibility = visibility; }
159 QgsReportSectionFieldGroup *clone() const override
SIP_FACTORY;
160 bool beginRender() override;
161 bool prepareHeader() override;
162 bool prepareFooter() override;
163 QgsLayout *nextBody(
bool &ok ) override;
164 void reset() override;
165 void setParentSection( QgsAbstractReportSection *parentSection ) override;
166 void reloadSettings() override;
170 bool writePropertiesToElement( QDomElement &element, QDomDocument &document, const QgsReadWriteContext &context ) const override;
171 bool readPropertiesFromElement( const QDomElement &element, const QDomDocument &document, const QgsReadWriteContext &context ) override;
177 bool mSortAscending = true;
178 int mFieldIndex = -1;
179 QgsFeatureIterator mFeatures;
180 bool mSkipNextRequest = false;
181 bool mNoFeatures = false;
182 SectionVisibility mHeaderVisibility = IncludeWhenFeaturesFound;
183 SectionVisibility mFooterVisibility = IncludeWhenFeaturesFound;
184 QgsFeature mHeaderFeature;
185 QgsFeature mLastFeature;
186 QSet< QVariant > mEncounteredValues;
188 bool mBodyEnabled = false;
189 std::unique_ptr< QgsLayout > mBody;
191 QgsFeatureRequest buildFeatureRequest() const;
193 QgsFeature getNextFeature();
194 void updateChildContexts( const QgsFeature &feature );
_LayerRef< QgsVectorLayer > QgsVectorLayerRef