0
0
mirror of https://github.com/fralx/LimeReport.git synced 2025-11-25 00:18:06 +03:00

Finish TOC-Refactoring

This commit is contained in:
Arin Alexander
2019-01-29 23:20:11 +03:00
5 changed files with 159 additions and 59 deletions

View File

@@ -82,7 +82,7 @@ ReportEnginePrivate::ReportEnginePrivate(QObject *parent) :
m_reportRendering(false), m_resultIsEditable(true), m_passPhrase("HjccbzHjlbyfCkjy"),
m_fileWatcher( new QFileSystemWatcher( this ) ), m_reportLanguage(QLocale::AnyLanguage),
m_previewLayoutDirection(Qt::LayoutDirectionAuto), m_designerFactory(0),
m_previewScaleType(FitWidth), m_previewScalePercent(0)
m_previewScaleType(FitWidth), m_previewScalePercent(0), m_startTOCPage(0)
{
#ifdef HAVE_STATIC_BUILD
initResources();
@@ -1147,6 +1147,9 @@ void ReportEnginePrivate::paintByExternalPainter(const QString& objectName, QPai
ReportPages ReportEnginePrivate::renderToPages()
{
int startTOCPage = -1;
int pageAfterTOCIndex = -1;
if (m_reportRendering) return ReportPages();
initReport();
m_reportRender = ReportRender::Ptr(new ReportRender);
@@ -1183,10 +1186,15 @@ ReportPages ReportEnginePrivate::renderToPages()
activateLanguage(m_reportLanguage);
emit renderStarted();
foreach(PageItemDesignIntf* page , m_renderingPages){
for(int i = 0; i < m_renderingPages.count(); ++i){
PageItemDesignIntf* page = m_renderingPages.at(i);
if (!page->isTOC() && page->isPrintable()){
page->setReportSettings(&m_reportSettings);
result.append(m_reportRender->renderPageToPages(page));
} else {
startTOCPage = result.count();
pageAfterTOCIndex = i+1;
m_reportRender->createTOCMarker(page->resetPageNumber());
}
}
@@ -1194,16 +1202,17 @@ ReportPages ReportEnginePrivate::renderToPages()
PageItemDesignIntf* page = m_renderingPages.at(i);
if (page->isTOC()){
page->setReportSettings(&m_reportSettings);
if (i==0){
if (i < m_renderingPages.count()){
PageItemDesignIntf* secondPage = 0;
if (m_pages.count()>1) secondPage = m_renderingPages.at(1);
if ( m_renderingPages.count() > (pageAfterTOCIndex))
secondPage = m_renderingPages.at(pageAfterTOCIndex);
ReportPages pages = m_reportRender->renderTOC(
page,
true,
secondPage && secondPage->resetPageNumber()
);
for (int j=0; j<pages.count(); ++j){
result.insert(j,pages.at(j));
result.insert(startTOCPage+j,pages.at(j));
}
} else {