16#ifndef QGSREPORTSECTIONFIELDGROUP_H
17#define QGSREPORTSECTIONFIELDGROUP_H
36class CORE_EXPORT QgsReportSectionFieldGroup :
public QgsAbstractReportSection
43 enum SectionVisibility
45 IncludeWhenFeaturesFound,
53 QgsReportSectionFieldGroup( QgsAbstractReportSection *parentSection =
nullptr );
55 QString type()
const override {
return QStringLiteral(
"SectionFieldGroup" ); }
56 QString description()
const override;
57 QIcon icon()
const override;
65 QgsLayout *body() {
return mBody.get(); }
74 void setBody( QgsLayout *body
SIP_TRANSFER ) { mBody.reset( body ); }
82 bool bodyEnabled()
const {
return mBodyEnabled; }
90 void setBodyEnabled(
bool enabled ) { mBodyEnabled = enabled; }
97 QgsVectorLayer *layer() {
return mCoverageLayer.get(); }
103 void setLayer( QgsVectorLayer *layer ) { mCoverageLayer = layer; }
109 QString field()
const {
return mField; }
115 void setField(
const QString &field ) { mField = field; }
122 bool sortAscending()
const;
129 void setSortAscending(
bool sortAscending );
135 SectionVisibility headerVisibility()
const {
return mHeaderVisibility; }
141 void setHeaderVisibility( SectionVisibility visibility ) { mHeaderVisibility = visibility; }
147 SectionVisibility footerVisibility()
const {
return mFooterVisibility; }
153 void setFooterVisibility( SectionVisibility visibility ) { mFooterVisibility = visibility; }
155 QgsReportSectionFieldGroup *clone() const override
SIP_FACTORY;
156 bool beginRender() override;
157 bool prepareHeader() override;
158 bool prepareFooter() override;
159 QgsLayout *nextBody(
bool &ok ) override;
160 void reset() override;
161 void setParentSection( QgsAbstractReportSection *parentSection ) override;
162 void reloadSettings() override;
166 bool writePropertiesToElement( QDomElement &element, QDomDocument &document, const QgsReadWriteContext &context ) const override;
167 bool readPropertiesFromElement( const QDomElement &element, const QDomDocument &document, const QgsReadWriteContext &context ) override;
173 bool mSortAscending = true;
174 int mFieldIndex = -1;
175 QgsFeatureIterator mFeatures;
176 bool mSkipNextRequest = false;
177 bool mNoFeatures = false;
178 SectionVisibility mHeaderVisibility = IncludeWhenFeaturesFound;
179 SectionVisibility mFooterVisibility = IncludeWhenFeaturesFound;
180 QgsFeature mHeaderFeature;
181 QgsFeature mLastFeature;
182 QSet< QVariant > mEncounteredValues;
184 bool mBodyEnabled = false;
185 std::unique_ptr< QgsLayout > mBody;
187 QgsFeatureRequest buildFeatureRequest() const;
189 QgsFeature getNextFeature();
190 void updateChildContexts( const QgsFeature &feature );
_LayerRef< QgsVectorLayer > QgsVectorLayerRef