Print range from QPrinter fix

This commit is contained in:
Arin Alexander
2017-04-21 23:03:56 +03:00
parent 09e1c79b87
commit e3df7c88d1
5 changed files with 17 additions and 25 deletions

View File

@@ -208,7 +208,7 @@ void ReportEnginePrivate::printReport(ItemsReaderIntf::Ptr reader, QPrinter& pri
}
}
void ReportEnginePrivate::printReport(ReportPages pages, QPrinter &printer, const PrintRange& printRange)
void ReportEnginePrivate::printReport(ReportPages pages, QPrinter &printer)
{
LimeReport::PageDesignIntf renderPage;
renderPage.setItemMode(PrintMode);
@@ -216,13 +216,13 @@ void ReportEnginePrivate::printReport(ReportPages pages, QPrinter &printer, cons
bool isFirst = true;
int currenPage = 1;
foreach(PageItemDesignIntf::Ptr page,pages){
foreach(PageItemDesignIntf::Ptr page, pages){
if (
(printRange.rangeType()==QPrintDialog::AllPages) ||
( (printRange.rangeType()==QPrintDialog::PageRange) &&
(currenPage>=printRange.fromPage()) &&
(currenPage<=printRange.toPage())
(printer.printRange() == QPrinter::AllPages) ||
( (printer.printRange()==QPrinter::PageRange) &&
(currenPage>=printer.fromPage()) &&
(currenPage<=printer.toPage())
)
)
{
@@ -286,7 +286,7 @@ bool ReportEnginePrivate::printReport(QPrinter* printer)
ReportPages pages = renderToPages();
dataManager()->setDesignTime(true);
if (pages.count()>0){
printReport(pages,*printer,PrintRange());
printReport(pages,*printer);
}
} catch(ReportError &exception){
saveError(exception.what());
@@ -295,18 +295,12 @@ bool ReportEnginePrivate::printReport(QPrinter* printer)
} else return false;
}
bool ReportEnginePrivate::printPages(ReportPages pages, QPrinter *printer, PrintRange printRange)
bool ReportEnginePrivate::printPages(ReportPages pages, QPrinter *printer)
{
if (!printer&&!m_printerSelected){
QPrintDialog dialog(m_printer.data(),QApplication::activeWindow());
m_printerSelected = dialog.exec()!=QDialog::Rejected;
if (m_printerSelected){
printRange.setRangeType(dialog.printRange());
printRange.setFromPage(dialog.fromPage());
printRange.setToPage(dialog.toPage());
}
}
if (!printer&&!m_printerSelected) return false;
@@ -316,8 +310,7 @@ bool ReportEnginePrivate::printPages(ReportPages pages, QPrinter *printer, Print
if (pages.count()>0){
printReport(
pages,
*printer,
printRange
*printer
);
}
} catch(ReportError &exception){
@@ -828,9 +821,9 @@ bool ReportEngine::printReport(QPrinter *printer)
return d->printReport(printer);
}
bool ReportEngine::printPages(ReportPages pages, QPrinter *printer, PrintRange printRange){
bool ReportEngine::printPages(ReportPages pages, QPrinter *printer){
Q_D(ReportEngine);
return d->printPages(pages,printer, printRange);
return d->printPages(pages,printer);
}
void ReportEngine::printToFile(const QString &fileName)