annotate src/printing.cpp @ 157:325e7590f93e

Move most of the printing related code to printing.cpp
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 12 Sep 2017 15:56:40 +0300
parents
children f5c1861b48aa
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
157
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1 //
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2 // Syntilista - debt list/management database program
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3 // Programmed and designed by Matti Hämäläinen <ccr@tnsp.org>
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
4 // (C) Copyright 2017 Tecnic Software productions (TNSP)
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
5 //
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
6 // Distributed under 3-clause BSD style license, refer to
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
7 // included file "COPYING" for exact terms.
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
8 //
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
9 #include <QPrintDialog>
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
10 #include <QPrintPreviewDialog>
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
11 #include "main.h"
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
12
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
13
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
14 void SyntilistaMainWindow::on_button_Print_clicked()
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
15 {
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
16 // Create a printer object and force some basic settings
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
17 QPrinter printer(QPrinter::HighResolution);
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
18 printer.setPageSize(QPageSize(QPageSize::A4));
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
19 printer.setColorMode(QPrinter::GrayScale);
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
20 printer.setResolution(300);
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
21
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
22 // We need to get the page count here, and also need it again in
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
23 // printDocument(), but there is no sane way to pass that there,
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
24 // so some code duplication is unfortunately necessary
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
25 SLPageInfo pinfo;
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
26 pinfo.npages = 0;
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
27 pinfo.nlinesPerPage = 0;
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
28
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
29 QPixmap tmpPixmap(1000, 1300);
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
30 QPainter tmpPainter;
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
31 tmpPainter.begin(&tmpPixmap);
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
32 bool ret = printDocumentPage(pinfo, true, -1, &tmpPainter, &printer);
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
33 tmpPainter.end();
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
34
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
35 if (!ret)
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
36 {
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
37 // Some kind of error occured
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
38 return;
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
39 }
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
40
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
41
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
42 // Set available pages
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
43 printer.setFromTo(1, pinfo.npages);
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
44
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
45 // Create print preview dialog and show it
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
46 QPrintPreviewDialog preview(&printer, this);
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
47 preview.setWindowModality(Qt::ApplicationModal);
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
48 preview.setSizeGripEnabled(true);
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
49
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
50 connect(
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
51 &preview,
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
52 SIGNAL(paintRequested(QPrinter *)),
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
53 this,
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
54 SLOT(printDocument(QPrinter *)));
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
55
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
56 preview.exec();
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
57 }
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
58
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
59
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
60 void SyntilistaMainWindow::printDocument(QPrinter *printer)
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
61 {
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
62 // Create progress dialog
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
63 QProgressDialog progress(
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
64 tr("Tulostetaan ..."),
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
65 tr("Peruuta"),
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
66 0,
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
67 1,
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
68 this);
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
69
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
70 progress.setWindowModality(Qt::ApplicationModal);
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
71
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
72 // Again, get the page info here .. we need the number of lines per page
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
73 SLPageInfo pinfo;
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
74 pinfo.npages = 0;
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
75 pinfo.nlinesPerPage = 0;
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
76
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
77 QPixmap tmpPixmap(1000, 1300);
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
78 QPainter tmpPainter;
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
79 tmpPainter.begin(&tmpPixmap);
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
80 bool ret = printDocumentPage(pinfo, true, -1, &tmpPainter, printer);
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
81 tmpPainter.end();
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
82
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
83 if (!ret)
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
84 return;
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
85
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
86 // If from and to are 0, we are supposed to print all pages
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
87 if (printer->fromPage() == 0 && printer->toPage() == 0)
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
88 printer->setFromTo(1, pinfo.npages);
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
89
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
90 // Setup rest of the progress dialog here
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
91 progress.setMinimum(printer->fromPage() - 1);
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
92 progress.setMaximum(printer->toPage());
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
93
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
94 // Begin painting to the printer (or preview)
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
95 QPainter painter;
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
96 painter.begin(printer);
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
97
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
98 bool firstPage = true;
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
99 for (int page = printer->fromPage(); page <= printer->toPage(); page++)
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
100 {
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
101 if (!firstPage)
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
102 printer->newPage();
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
103
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
104 qApp->processEvents();
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
105 if (progress.wasCanceled())
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
106 break;
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
107
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
108 printDocumentPage(pinfo, false, page, &painter, printer);
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
109 progress.setValue(page);
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
110 firstPage = false;
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
111 }
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
112
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
113 painter.end();
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
114 }
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
115
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
116
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
117 bool SyntilistaMainWindow::printDocumentPage(SLPageInfo &pinfo, const bool getPageInfo, const int npage, QPainter *pt, QPrinter *printer)
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
118 {
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
119 // Form the SQL query for list of users
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
120 QString querystr = QStringLiteral(
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
121 "SELECT id,first_name,last_name,extra_info,added,updated, "
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
122 "(SELECT TOTAL(value) FROM transactions WHERE transactions.person=people.id) AS balance "
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
123 "FROM people ORDER BY last_name ASC,first_name ASC");
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
124
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
125 // If we are fetching page info, we need to process all entries
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
126 if (!getPageInfo)
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
127 {
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
128 // Otherwise we can limit to given page number
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
129 querystr += QStringLiteral(" LIMIT %1 OFFSET %2").
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
130 arg(pinfo.nlinesPerPage).
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
131 arg((npage - 1) * pinfo.nlinesPerPage);
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
132 }
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
133
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
134 QSqlQuery query;
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
135 query.prepare(querystr);
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
136 query.setForwardOnly(true);
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
137 query.exec();
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
138
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
139 if (!slCheckAndReportSQLError("printDocumentPage()", query.lastError()))
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
140 {
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
141 slErrorMsg(
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
142 tr("SQL-tietokantavirhe"),
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
143 tr("Tietokantaa selattaessa tapahtui virhe."));
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
144
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
145 return false;
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
146 }
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
147
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
148 pt->save();
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
149 if (!getPageInfo)
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
150 {
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
151 pt->scale(
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
152 printer->pageRect().width() / 1000.0f,
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
153 printer->pageRect().height() / 1300.0f);
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
154 }
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
155
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
156 QFont font1("Arial", 5);
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
157 SLDrawContext ctx(pt);
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
158 ctx.setFont(font1);
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
159
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
160 int nline = 0;
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
161 while (query.next())
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
162 {
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
163 PersonInfo info;
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
164 slGetPersonInfoRec(query, info);
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
165
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
166 // Check for end of page
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
167 // KLUDGE for now
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
168 if (getPageInfo && ctx.lfq(10) >= 1300.0f)
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
169 {
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
170 if (nline > pinfo.nlinesPerPage)
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
171 pinfo.nlinesPerPage = nline;
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
172
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
173 pinfo.npages++;
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
174 nline = 0;
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
175 }
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
176
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
177 if (nline == 0)
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
178 {
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
179 // If we are at the start of the page, we shall draw a header
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
180 pt->setBrush(QBrush(Qt::black));
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
181 pt->setPen(QPen(Qt::black, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
182
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
183 ctx.setPos(0, 0);
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
184 ctx.drawText( 5, 180, tr("Etunimi"));
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
185 ctx.drawText( 200, 230, tr("Sukunimi"));
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
186 ctx.drawText( 450, 190, tr("Lisätty"));
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
187 ctx.drawText( 650, 190, tr("Päivitetty"));
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
188 ctx.drawText( 870, 120, tr("Tase"));
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
189 ctx.lf();
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
190
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
191 pt->drawLine(0, ctx.m_pos.y(), 1000, ctx.m_pos.y());
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
192
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
193 ctx.move(0, 5);
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
194 }
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
195
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
196 // Draw a gray bar under every second line
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
197 if (nline % 2 == 0)
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
198 {
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
199 pt->fillRect(
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
200 0,
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
201 ctx.m_pos.y() - 1,
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
202 1000,
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
203 ctx.boundRect().height() + 4,
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
204 QColor(0, 0, 0, 40));
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
205 }
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
206
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
207 ctx.drawText( 5, 180, info.firstName);
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
208 ctx.drawText( 200, 230, info.lastName);
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
209 ctx.drawText( 450, 190, slDateTimeToStr(info.added));
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
210 ctx.drawText( 650, 190, slDateTimeToStr(info.updated));
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
211 ctx.drawText( 870, 120, slMoneyValueToStr(info.balance), Qt::AlignRight);
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
212
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
213 ctx.lf(10);
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
214 nline++;
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
215 }
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
216
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
217 query.finish();
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
218
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
219 if (getPageInfo)
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
220 {
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
221 if (nline > pinfo.nlinesPerPage)
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
222 pinfo.nlinesPerPage = nline;
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
223
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
224 pinfo.npages++;
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
225 }
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
226 else
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
227 {
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
228 ctx.setPos(0, 1240);
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
229 ctx.drawText(0, 1000,
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
230 tr("Sivu %1 / %2 (%3 / %4)").
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
231 arg(npage - printer->fromPage() + 1).
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
232 arg(printer->toPage() - printer->fromPage() + 1).
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
233 arg(npage).
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
234 arg(printer->toPage()),
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
235 Qt::AlignHCenter);
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
236 }
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
237
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
238 pt->restore();
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
239 return true;
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
240 }
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
241
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
242