diff options
author | Gehad elrobey <gehadelrobey@gmail.com> | 2015-08-21 11:02:10 +0200 |
---|---|---|
committer | Lubomir I. Ivanov <neolit123@gmail.com> | 2015-08-22 18:33:36 +0300 |
commit | c516421bc2ba8bcd70e1ac3e7173f3e9524ecb24 (patch) | |
tree | 04f1002bd330dcd4f42d024e5bc93d9d26ab2da1 /printer.cpp | |
parent | 13febc1eee0766801f3d86e0aa413552def76135 (diff) | |
download | subsurface-c516421bc2ba8bcd70e1ac3e7173f3e9524ecb24.tar.gz |
Printing: check the print type in the preview section
Preview output should be identical to the actual printing code, so
call the flow rendering method for all flow templates.
Also don't create new pages while rendering a one page preview, just
exit after the first page is full.
Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Gehad elrobey <gehadelrobey@gmail.com>
Diffstat (limited to 'printer.cpp')
-rw-r--r-- | printer.cpp | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/printer.cpp b/printer.cpp index b4d937094..66fed7cf3 100644 --- a/printer.cpp +++ b/printer.cpp @@ -95,7 +95,14 @@ void Printer::flowRender() // rendering progress is 4/5 of total work emit(progessUpdated((end * 80.0 / fullPageResolution) + done)); - static_cast<QPrinter*>(paintDevice)->newPage(); + + // add new pages only in print mode, while previewing we don't add new pages + if (printMode == Printer::PRINT) + static_cast<QPrinter*>(paintDevice)->newPage(); + else { + painter.end(); + return; + } start = dontbreakElement.geometry().y(); } } @@ -297,7 +304,16 @@ void Printer::previewOnePage() templateOptions->border_width = std::max(1, pageSize.width() / 1000); webView->setHtml(t.generate()); - // render only one page - render(1); + bool ok; + int divesPerPage = webView->page()->mainFrame()->findFirstElement("body").attribute("data-numberofdives").toInt(&ok); + if (!ok) { + divesPerPage = 1; // print each dive in a single page if the attribute is missing or malformed + //TODO: show warning + } + if (divesPerPage == 0) { + flowRender(); + } else { + render(1); + } } } |