16#ifndef QGSREPORTSECTIONFIELDGROUP_H
17#define QGSREPORTSECTIONFIELDGROUP_H
25using namespace Qt::StringLiterals;
40class CORE_EXPORT QgsReportSectionFieldGroup :
public QgsAbstractReportSection
46 enum SectionVisibility
48 IncludeWhenFeaturesFound,
56 QgsReportSectionFieldGroup( QgsAbstractReportSection *parentSection =
nullptr );
58 QString type()
const override {
return u
"SectionFieldGroup"_s; }
59 QString description()
const override;
60 QIcon icon()
const override;
68 QgsLayout *body() {
return mBody.get(); }
77 void setBody( QgsLayout *body
SIP_TRANSFER ) { mBody.reset( body ); }
85 bool bodyEnabled()
const {
return mBodyEnabled; }
93 void setBodyEnabled(
bool enabled ) { mBodyEnabled = enabled; }
100 QgsVectorLayer *layer() {
return mCoverageLayer.get(); }
106 void setLayer( QgsVectorLayer *layer ) { mCoverageLayer = layer; }
112 QString field()
const {
return mField; }
118 void setField(
const QString &field ) { mField = field; }
125 bool sortAscending()
const;
132 void setSortAscending(
bool sortAscending );
138 SectionVisibility headerVisibility()
const {
return mHeaderVisibility; }
144 void setHeaderVisibility( SectionVisibility visibility ) { mHeaderVisibility = visibility; }
150 SectionVisibility footerVisibility()
const {
return mFooterVisibility; }
156 void setFooterVisibility( SectionVisibility visibility ) { mFooterVisibility = visibility; }
158 QgsReportSectionFieldGroup *clone() const override
SIP_FACTORY;
159 bool beginRender() override;
160 bool prepareHeader() override;
161 bool prepareFooter() override;
162 QgsLayout *nextBody(
bool &ok ) override;
163 void reset() override;
164 void setParentSection( QgsAbstractReportSection *parentSection ) override;
165 void reloadSettings() override;
168 bool writePropertiesToElement( QDomElement &element, QDomDocument &document, const QgsReadWriteContext &context ) const override;
169 bool readPropertiesFromElement( const QDomElement &element, const QDomDocument &document, const QgsReadWriteContext &context ) override;
174 bool mSortAscending = true;
175 int mFieldIndex = -1;
176 QgsFeatureIterator mFeatures;
177 bool mSkipNextRequest = false;
178 bool mNoFeatures = false;
179 SectionVisibility mHeaderVisibility = IncludeWhenFeaturesFound;
180 SectionVisibility mFooterVisibility = IncludeWhenFeaturesFound;
181 QgsFeature mHeaderFeature;
182 QgsFeature mLastFeature;
183 QSet< QVariant > mEncounteredValues;
185 bool mBodyEnabled = false;
186 std::unique_ptr< QgsLayout > mBody;
188 QgsFeatureRequest buildFeatureRequest() const;
190 QgsFeature getNextFeature();
191 void updateChildContexts( const QgsFeature &feature );
_LayerRef< QgsVectorLayer > QgsVectorLayerRef