diff --git a/common.pri b/common.pri
index dd4bb53..8fe2096 100644
--- a/common.pri
+++ b/common.pri
@@ -133,7 +133,7 @@ RCC_DIR = $${ARCH_DIR}/$${BUILD_TYPE}/rcc
LIMEREPORT_VERSION_MAJOR = 1
LIMEREPORT_VERSION_MINOR = 5
-LIMEREPORT_VERSION_RELEASE = 78
+LIMEREPORT_VERSION_RELEASE = 80
LIMEREPORT_VERSION = '$${LIMEREPORT_VERSION_MAJOR}.$${LIMEREPORT_VERSION_MINOR}.$${LIMEREPORT_VERSION_RELEASE}'
DEFINES *= LIMEREPORT_VERSION_STR=\\\"$${LIMEREPORT_VERSION}\\\"
diff --git a/limereport/lrpageitemdesignintf.cpp b/limereport/lrpageitemdesignintf.cpp
index fb27fda..850319b 100644
--- a/limereport/lrpageitemdesignintf.cpp
+++ b/limereport/lrpageitemdesignintf.cpp
@@ -53,7 +53,7 @@ PageItemDesignIntf::PageItemDesignIntf(QObject *owner, QGraphicsItem *parent) :
m_isExtendedInDesignMode(false), m_extendedHeight(1000), m_isTOC(false),
m_setPageSizeToPrinter(false), m_endlessHeight(false), m_printable(true),
m_pageFooter(0), m_printBehavior(Split), m_dropPrinterMargins(false),
- m_notPrintIfEmpty(false)
+ m_notPrintIfEmpty(false), m_mixWithPriorPage(false)
{
setFixedPos(true);
setPossibleResizeDirectionFlags(Fixed);
@@ -69,7 +69,7 @@ PageItemDesignIntf::PageItemDesignIntf(const PageSize pageSize, const QRectF &re
m_isExtendedInDesignMode(false), m_extendedHeight(1000), m_isTOC(false),
m_setPageSizeToPrinter(false), m_endlessHeight(false), m_printable(true),
m_pageFooter(0), m_printBehavior(Split), m_dropPrinterMargins(false),
- m_notPrintIfEmpty(false)
+ m_notPrintIfEmpty(false), m_mixWithPriorPage(false)
{
setFixedPos(true);
setPossibleResizeDirectionFlags(Fixed);
@@ -755,6 +755,10 @@ void PageItemDesignIntf::preparePopUpMenu(QMenu &menu)
action->setCheckable(true);
action->setChecked(getSetPageSizeToPrinter());
+ action = menu.addAction(tr("Mix with prior page"));
+ action->setCheckable(true);
+ action->setChecked(mixWithPriorPage());
+
// action = menu.addAction(tr("Transparent"));
// action->setCheckable(true);
// action->setChecked(backgroundMode() == TransparentMode);
@@ -776,6 +780,10 @@ void PageItemDesignIntf::processPopUpAction(QAction *action)
page()->setPropertyToSelectedItems("setPageSizeToPrinter",action->isChecked());
}
+ if (action->text().compare(tr("Mix with prior page")) == 0){
+ page()->setPropertyToSelectedItems("mixWithPriorPage",action->isChecked());
+ }
+
}
void PageItemDesignIntf::initPageSize(const PageItemDesignIntf::PageSize &size)
{
@@ -1058,4 +1066,21 @@ PageItemDesignIntf::Ptr PageItemDesignIntf::create(QObject *owner)
return PageItemDesignIntf::Ptr(new PageItemDesignIntf(owner));
}
+bool PageItemDesignIntf::mixWithPriorPage() const
+{
+ return m_mixWithPriorPage;
+}
+
+void PageItemDesignIntf::setMixWithPriorPage(bool value)
+{
+ if (m_mixWithPriorPage != value){
+ m_mixWithPriorPage = value;
+ if (!isLoading()){
+ update();
+ notify("mixWithPriorPage", !value, value);
+ }
+ }
+
+}
+
}
diff --git a/limereport/lrpageitemdesignintf.h b/limereport/lrpageitemdesignintf.h
index 07b078e..d297b5f 100644
--- a/limereport/lrpageitemdesignintf.h
+++ b/limereport/lrpageitemdesignintf.h
@@ -63,6 +63,7 @@ class PageItemDesignIntf : public ItemsContainerDesignInft
Q_PROPERTY(PrintBehavior printBehavior READ printBehavior WRITE setPrintBehavior)
Q_PROPERTY(bool dropPrinterMargins READ dropPrinterMargins WRITE setDropPrinterMargins)
Q_PROPERTY(bool notPrintIfEmpty READ notPrintIfEmpty WRITE setNotPrintIfEmpty)
+ Q_PROPERTY(bool mixWithPriorPage READ mixWithPriorPage WRITE setMixWithPriorPage)
friend class ReportRender;
public:
enum Orientation { Portrait = QPrinter::Portrait, Landscape = QPrinter::Landscape };
@@ -188,6 +189,9 @@ public:
bool notPrintIfEmpty() const;
void setNotPrintIfEmpty(bool notPrintIfEmpty);
+ bool mixWithPriorPage() const;
+ void setMixWithPriorPage(bool value);
+
signals:
void beforeFirstPageRendered();
void afterLastPageRendered();
@@ -233,6 +237,7 @@ private:
PrintBehavior m_printBehavior;
bool m_dropPrinterMargins;
bool m_notPrintIfEmpty;
+ bool m_mixWithPriorPage;
};
diff --git a/limereport/lrreportengine.cpp b/limereport/lrreportengine.cpp
index 0165e9d..8595a74 100644
--- a/limereport/lrreportengine.cpp
+++ b/limereport/lrreportengine.cpp
@@ -1321,7 +1321,11 @@ ReportPages ReportEnginePrivate::renderToPages()
PageItemDesignIntf* page = m_renderingPages.at(i);
if (!page->isTOC() && page->isPrintable()){
page->setReportSettings(&m_reportSettings);
- result.append(m_reportRender->renderPageToPages(page));
+ result = appendPages(
+ result,
+ m_reportRender->renderPageToPages(page),
+ page->mixWithPriorPage() ? MixPages : AppendPages
+ );
} else {
startTOCPage = result.count();
pageAfterTOCIndex = i+1;
@@ -1347,7 +1351,11 @@ ReportPages ReportEnginePrivate::renderToPages()
}
} else {
- result.append(m_reportRender->renderPageToPages(page));
+ result = appendPages(
+ result,
+ m_reportRender->renderPageToPages(page),
+ page->mixWithPriorPage() ? MixPages : AppendPages
+ );
}
}
}
@@ -1369,6 +1377,23 @@ ReportPages ReportEnginePrivate::renderToPages()
}
}
+ReportPages ReportEnginePrivate::appendPages(ReportPages s1, ReportPages s2, AppendType appendType)
+{
+ if (!s1.isEmpty()>0 && s1.size() == s2.size() && appendType == MixPages){
+ ReportPages result;
+ ReportPages::Iterator s1It;
+ ReportPages::Iterator s2It;
+ for (s1It = s1.begin(), s2It = s2.begin(); s1It != s1.end(); ++s1It,++s2It){
+ result.append(*s1It);
+ result.append(*s2It);
+ }
+ return result;
+ } else {
+ s1.append(s2);
+ return s1;
+ }
+}
+
QString ReportEnginePrivate::lastError()
{
return m_lastError;
diff --git a/limereport/lrreportengine_p.h b/limereport/lrreportengine_p.h
index d49743e..dd501b9 100644
--- a/limereport/lrreportengine_p.h
+++ b/limereport/lrreportengine_p.h
@@ -144,6 +144,8 @@ class ReportEnginePrivate : public QObject,
Q_PROPERTY(bool suppressFieldAndVarError READ suppressFieldAndVarError WRITE setSuppressFieldAndVarError)
Q_PROPERTY(ATranslationProperty translation READ fakeTranslationReader)
+ enum AppendType{MixPages, AppendPages};
+
friend class PreviewReportWidget;
public:
bool printPages(ReportPages pages, QPrinter *printer);
@@ -304,6 +306,7 @@ private:
void updateTranslations();
//ITranslationContainer
ReportPages renderToPages();
+ ReportPages appendPages(ReportPages s1, ReportPages s2, AppendType appendType);
QString renderToString();
PageItemDesignIntf *getPageByName(const QString& pageName);
ATranslationProperty fakeTranslationReader(){ return ATranslationProperty();}
diff --git a/limereport/objectinspector/lrobjectitemmodel.cpp b/limereport/objectinspector/lrobjectitemmodel.cpp
index 982103b..65e2f4a 100644
--- a/limereport/objectinspector/lrobjectitemmodel.cpp
+++ b/limereport/objectinspector/lrobjectitemmodel.cpp
@@ -168,6 +168,7 @@ void QObjectPropertyModel::translatePropertyName()
tr("removeGap");
tr("dropPrinterMargins");
tr("notPrintIfEmpty");
+ tr("mixWithPriorPage");
}
void QObjectPropertyModel::clearObjectsList()
diff --git a/translations/limereport_ru.ts b/translations/limereport_ru.ts
index e37ae33..1f3a1f8 100644
--- a/translations/limereport_ru.ts
+++ b/translations/limereport_ru.ts
@@ -1338,6 +1338,10 @@ p, li { white-space: pre-wrap; }
Отправить параметры страницы в принтер
+
+
+ Смешивать с предыдущей страницей
+
LimeReport::PreviewReportWidget
@@ -2042,6 +2046,10 @@ p, li { white-space: pre-wrap; }
Не печатать, если пусто
+
+
+ Смешивать с предыдущей сраницей
+
LimeReport::RectPropItem