# HG changeset patch # User Matti Hamalainen # Date 1505809658 -10800 # Node ID 1c2f9d09e87b4e101c9c840757b85673afc2fedc # Parent d2905ee5ff9c671ad1c4ace295455b3b713f1e71 Begin working on printing fixes. diff -r d2905ee5ff9c -r 1c2f9d09e87b src/main.h --- a/src/main.h Mon Sep 18 09:50:23 2017 +0300 +++ b/src/main.h Tue Sep 19 11:27:38 2017 +0300 @@ -165,7 +165,7 @@ void updateMiscValues(); void backupDatabase(); - bool printDocumentPage(SLPageInfo &pinfo, const bool getPageInfo, const int page, QPainter *pt, QPrinter *printer); + bool printDocumentPage(const bool getPageInfo, const int page, QPainter *pt, QPrinter *printer); PersonSQLModel *model_People; @@ -224,6 +224,8 @@ int peopleSortIndex; Qt::SortOrder peopleSortOrder; QString peopleFilter; + + SLPageInfo pinfo; }; diff -r d2905ee5ff9c -r 1c2f9d09e87b src/printing.cpp --- a/src/printing.cpp Mon Sep 18 09:50:23 2017 +0300 +++ b/src/printing.cpp Tue Sep 19 11:27:38 2017 +0300 @@ -22,14 +22,13 @@ // We need to get the page count here, and also need it again in // printDocument(), but there is no sane way to pass that there, // so some code duplication is unfortunately necessary - SLPageInfo pinfo; pinfo.npages = 0; pinfo.nlinesPerPage = 0; QPixmap tmpPixmap(1000, 1300); QPainter tmpPainter; tmpPainter.begin(&tmpPixmap); - bool ret = printDocumentPage(pinfo, true, -1, &tmpPainter, &printer); + bool ret = printDocumentPage(true, -1, &tmpPainter, &printer); tmpPainter.end(); if (!ret) @@ -69,20 +68,6 @@ progress.setWindowModality(Qt::ApplicationModal); - // Again, get the page info here .. we need the number of lines per page - SLPageInfo pinfo; - pinfo.npages = 0; - pinfo.nlinesPerPage = 0; - - QPixmap tmpPixmap(1000, 1300); - QPainter tmpPainter; - tmpPainter.begin(&tmpPixmap); - bool ret = printDocumentPage(pinfo, true, -1, &tmpPainter, printer); - tmpPainter.end(); - - if (!ret) - return; - // If from and to are 0, we are supposed to print all pages if (printer->fromPage() == 0 && printer->toPage() == 0) printer->setFromTo(1, pinfo.npages); @@ -105,7 +90,7 @@ if (progress.wasCanceled()) break; - printDocumentPage(pinfo, false, page, &painter, printer); + printDocumentPage(false, page, &painter, printer); progress.setValue(page); firstPage = false; } @@ -114,7 +99,7 @@ } -bool SyntilistaMainWindow::printDocumentPage(SLPageInfo &pinfo, const bool getPageInfo, const int npage, QPainter *pt, QPrinter *printer) +bool SyntilistaMainWindow::printDocumentPage(const bool getPageInfo, const int npage, QPainter *pt, QPrinter *printer) { // Form the SQL query for list of users QString querystr = QStringLiteral( @@ -146,14 +131,13 @@ } pt->save(); - if (!getPageInfo) - { - pt->scale( - printer->pageRect().width() / 1000.0f, - printer->pageRect().height() / 1300.0f); - } + pt->scale( + pt->device()->width() / 1000.0f, + pt->device()->height() / 1300.0f); - QFont font1("Arial", 5); + QFont font1; + font1.setFamily("Arial"); + font1.setPixelSize(24); SLDrawContext ctx(pt); ctx.setFont(font1); @@ -165,7 +149,7 @@ // Check for end of page // KLUDGE for now - if (getPageInfo && ctx.lfq(10) >= 1300.0f) + if (getPageInfo && ctx.lfq(10) >= 1300.0f - 50) { if (nline > pinfo.nlinesPerPage) pinfo.nlinesPerPage = nline;