From 37cbc134d134191d5fff7c92da71abe96f997bbb Mon Sep 17 00:00:00 2001 From: Arin Alexander Date: Fri, 21 Dec 2018 19:04:57 +0300 Subject: [PATCH 1/3] Nested groups footers have been fixed --- limereport/lrreportrender.cpp | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/limereport/lrreportrender.cpp b/limereport/lrreportrender.cpp index 84ce884..a04a6a4 100644 --- a/limereport/lrreportrender.cpp +++ b/limereport/lrreportrender.cpp @@ -717,22 +717,11 @@ void ReportRender::renderGroupHeader(BandDesignIntf *parentBand, IDataSource* da if (gb&&gb->isNeedToClose(m_datasources)){ if (band->childBands().count()>0){ bool didGoBack = dataSource->prior(); - foreach (BandDesignIntf* subBand, band->childrenByType(BandDesignIntf::GroupHeader)) { - foreach(BandDesignIntf* footer, subBand->childrenByType(BandDesignIntf::GroupFooter)){ - renderBand(footer, 0, StartNewPageAsNeeded); - } - closeDataGroup(subBand); - } - - foreach (BandDesignIntf* footer, band->childrenByType(BandDesignIntf::GroupFooter)) { - renderBand(footer, 0, StartNewPageAsNeeded); - } - + renderGroupFooterByHeader(band); if (didGoBack){ dataSource->next(); } } - closeDataGroup(band); } if (gb && !gb->isStarted()){ @@ -759,12 +748,14 @@ void ReportRender::renderGroupHeader(BandDesignIntf *parentBand, IDataSource* da } void ReportRender::renderGroupFooterByHeader(BandDesignIntf* groupHeader){ + if (groupHeader->reprintOnEachPage()) m_reprintableBands.removeOne(groupHeader); foreach (BandDesignIntf* header, groupHeader->childrenByType(BandDesignIntf::GroupHeader)){ renderGroupFooterByHeader(header); } foreach (BandDesignIntf* footer, groupHeader->childrenByType(BandDesignIntf::GroupFooter)){ renderBand(footer, 0, StartNewPageAsNeeded); } + closeDataGroup(groupHeader); } void ReportRender::renderGroupFooter(BandDesignIntf *parentBand) @@ -772,14 +763,7 @@ void ReportRender::renderGroupFooter(BandDesignIntf *parentBand) foreach(BandDesignIntf* band,parentBand->childrenByType(BandDesignIntf::GroupHeader)){ IGroupBand* gb = dynamic_cast(band); if (gb && gb->isStarted()){ - if (band->reprintOnEachPage()) m_reprintableBands.removeOne(band); - foreach(BandDesignIntf* header, band->childrenByType(BandDesignIntf::GroupHeader)){ - renderGroupFooterByHeader(header); - } - foreach(BandDesignIntf* footer, band->childrenByType(BandDesignIntf::GroupFooter)){ - renderBand(footer, 0, StartNewPageAsNeeded); - } - closeDataGroup(band); + renderGroupFooterByHeader(band); } } } From 533eb7efa0b1974c14a173a6dbd024c20f658378 Mon Sep 17 00:00:00 2001 From: Arin Alexander Date: Fri, 21 Dec 2018 19:05:31 +0300 Subject: [PATCH 2/3] Bands relocation has been fixed --- limereport/lrbanddesignintf.cpp | 2 +- limereport/lrpageitemdesignintf.cpp | 23 ++++++++++++++--------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/limereport/lrbanddesignintf.cpp b/limereport/lrbanddesignintf.cpp index 1508b8e..fbef4f0 100644 --- a/limereport/lrbanddesignintf.cpp +++ b/limereport/lrbanddesignintf.cpp @@ -372,7 +372,7 @@ int BandDesignIntf::maxChildIndex(BandDesignIntf::BandsType bandType) const{ int BandDesignIntf::maxChildIndex(QSet ignoredBands) const{ int curIndex = bandIndex(); foreach(BandDesignIntf* childBand, childBands()){ - if (!ignoredBands.contains(childBand->bandType()) && childBand->bandIndex()>bandIndex()){ + if (!ignoredBands.contains(childBand->bandType())){ curIndex = std::max(curIndex,childBand->maxChildIndex(ignoredBands)); } } diff --git a/limereport/lrpageitemdesignintf.cpp b/limereport/lrpageitemdesignintf.cpp index 9a7d350..364d42e 100644 --- a/limereport/lrpageitemdesignintf.cpp +++ b/limereport/lrpageitemdesignintf.cpp @@ -201,17 +201,22 @@ int PageItemDesignIntf::calcBandIndex(BandDesignIntf::BandsType bandType, BandDe int bandIndex=-1; qSort(m_bands.begin(),m_bands.end(),bandSortBandLessThenByIndex); - foreach(BandDesignIntf* band,m_bands){ - if ((band->bandType() == BandDesignIntf::GroupHeader) && ( band->bandType() > bandType)) break; - if ((band->bandType() <= bandType)){ - if (bandIndex <= band->bandIndex()) { - if (bandType != BandDesignIntf::Data){ + if (bandType != BandDesignIntf::Data){ + foreach(BandDesignIntf* band,m_bands){ + if ((band->bandType() == BandDesignIntf::GroupHeader) && ( band->bandType() > bandType)) break; + if ((band->bandType() <= bandType)){ + if (bandIndex <= band->bandIndex()) { bandIndex=band->maxChildIndex(bandType)+1; - } else { - bandIndex=band->maxChildIndex()+1; } - } - } else { increaseBandIndex = true; break;} + } else { increaseBandIndex = true; break;} + } + } else { + int maxChildIndex = 0; + foreach(BandDesignIntf* band, m_bands){ + if (band->bandType() == BandDesignIntf::Data) + maxChildIndex = std::max(maxChildIndex, band->maxChildIndex()); + } + bandIndex = std::max(bandIndex, maxChildIndex+1); } if (bandIndex==-1) { From 668acaba2899bf1b60ba3e21e3db819378dddfbc Mon Sep 17 00:00:00 2001 From: Arin Alexander Date: Fri, 21 Dec 2018 19:06:29 +0300 Subject: [PATCH 3/3] Version changed --- common.pri | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common.pri b/common.pri index 2b6ce4c..15d5257 100644 --- a/common.pri +++ b/common.pri @@ -77,7 +77,7 @@ RCC_DIR = $${ARCH_DIR}/$${BUILD_TYPE}/rcc LIMEREPORT_VERSION_MAJOR = 1 LIMEREPORT_VERSION_MINOR = 4 -LIMEREPORT_VERSION_RELEASE = 110 +LIMEREPORT_VERSION_RELEASE = 111 LIMEREPORT_VERSION = '\\"$${LIMEREPORT_VERSION_MAJOR}.$${LIMEREPORT_VERSION_MINOR}.$${LIMEREPORT_VERSION_RELEASE}\\"' DEFINES += LIMEREPORT_VERSION_STR=\"$${LIMEREPORT_VERSION}\"