Mercurial > hg > syntilista
annotate src/printing.cpp @ 255:55581d90c55d
Change API for slCheckAndReportSQLError().
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Wed, 10 Oct 2018 13:21:51 +0300 |
parents | 43a5e09bb832 |
children | df3f902588af |
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> |
217 | 4 // (C) Copyright 2017-2018 Tecnic Software productions (TNSP) |
157
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" |
246
43a5e09bb832
Split some utility functions to util.{h,cpp}
Matti Hamalainen <ccr@tnsp.org>
parents:
217
diff
changeset
|
12 #include "util.h" |
43a5e09bb832
Split some utility functions to util.{h,cpp}
Matti Hamalainen <ccr@tnsp.org>
parents:
217
diff
changeset
|
13 |
157
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
14 |
161
eeb3bb877b63
More work on printing improvements, make certain hardcoded values #defines.
Matti Hamalainen <ccr@tnsp.org>
parents:
160
diff
changeset
|
15 #define APP_PRINT_WIDTH 1000 |
eeb3bb877b63
More work on printing improvements, make certain hardcoded values #defines.
Matti Hamalainen <ccr@tnsp.org>
parents:
160
diff
changeset
|
16 #define APP_PRINT_HEIGHT 1300 |
eeb3bb877b63
More work on printing improvements, make certain hardcoded values #defines.
Matti Hamalainen <ccr@tnsp.org>
parents:
160
diff
changeset
|
17 |
167
c54ad71c1205
Apply (kludgey) adjustment scales for printed page to avoid overflow ..
Matti Hamalainen <ccr@tnsp.org>
parents:
166
diff
changeset
|
18 #define APP_PRINT_WSCALE 1.01f |
c54ad71c1205
Apply (kludgey) adjustment scales for printed page to avoid overflow ..
Matti Hamalainen <ccr@tnsp.org>
parents:
166
diff
changeset
|
19 #define APP_PRINT_HSCALE 1.00f |
c54ad71c1205
Apply (kludgey) adjustment scales for printed page to avoid overflow ..
Matti Hamalainen <ccr@tnsp.org>
parents:
166
diff
changeset
|
20 |
157
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 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
|
23 { |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
24 // 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
|
25 QPrinter printer(QPrinter::HighResolution); |
166
9511e2f250be
Force default page margins for printing, this fixes some problems under Windows.
Matti Hamalainen <ccr@tnsp.org>
parents:
165
diff
changeset
|
26 printer.setResolution(300); |
157
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
27 printer.setPageSize(QPageSize(QPageSize::A4)); |
166
9511e2f250be
Force default page margins for printing, this fixes some problems under Windows.
Matti Hamalainen <ccr@tnsp.org>
parents:
165
diff
changeset
|
28 printer.setPageMargins(QMarginsF(0.25f, 0.5f, 0.25f, 0.5f), QPageLayout::Inch); |
157
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
29 printer.setColorMode(QPrinter::GrayScale); |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
30 |
177
d119235d3df0
This comment was no longer relevant.
Matti Hamalainen <ccr@tnsp.org>
parents:
176
diff
changeset
|
31 // We need to get the page count and line counts per page here |
157
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
32 pinfo.npages = 0; |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
33 pinfo.nlinesPerPage = 0; |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
34 |
161
eeb3bb877b63
More work on printing improvements, make certain hardcoded values #defines.
Matti Hamalainen <ccr@tnsp.org>
parents:
160
diff
changeset
|
35 QPixmap tmpPixmap(APP_PRINT_WIDTH, APP_PRINT_HEIGHT); |
157
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
36 QPainter tmpPainter; |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
37 tmpPainter.begin(&tmpPixmap); |
160
1c2f9d09e87b
Begin working on printing fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
158
diff
changeset
|
38 bool ret = printDocumentPage(true, -1, &tmpPainter, &printer); |
157
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
39 tmpPainter.end(); |
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 if (!ret) |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
42 { |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
43 // Some kind of error occured |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
44 return; |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
45 } |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
46 |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
47 |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
48 // Set available pages |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
49 printer.setFromTo(1, pinfo.npages); |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
50 |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
51 // 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
|
52 QPrintPreviewDialog preview(&printer, this); |
165
186d0717707f
Add translated window title to print preview dialog.
Matti Hamalainen <ccr@tnsp.org>
parents:
161
diff
changeset
|
53 preview.setWindowTitle(tr("Tulostuksen esikatselu")); |
157
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
54 preview.setWindowModality(Qt::ApplicationModal); |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
55 preview.setSizeGripEnabled(true); |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
56 |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
57 connect( |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
58 &preview, |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
59 SIGNAL(paintRequested(QPrinter *)), |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
60 this, |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
61 SLOT(printDocument(QPrinter *))); |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
62 |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
63 preview.exec(); |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
64 } |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
65 |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
66 |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
67 void SyntilistaMainWindow::printDocument(QPrinter *printer) |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
68 { |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
69 // Create progress dialog |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
70 QProgressDialog progress( |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
71 tr("Tulostetaan ..."), |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
72 tr("Peruuta"), |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
73 0, |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
74 1, |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
75 this); |
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 progress.setWindowModality(Qt::ApplicationModal); |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
78 |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
79 // 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
|
80 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
|
81 printer->setFromTo(1, pinfo.npages); |
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 // 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
|
84 progress.setMinimum(printer->fromPage() - 1); |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
85 progress.setMaximum(printer->toPage()); |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
86 |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
87 // 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
|
88 QPainter painter; |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
89 painter.begin(printer); |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
90 |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
91 bool firstPage = true; |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
92 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
|
93 { |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
94 if (!firstPage) |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
95 printer->newPage(); |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
96 |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
97 qApp->processEvents(); |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
98 if (progress.wasCanceled()) |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
99 break; |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
100 |
160
1c2f9d09e87b
Begin working on printing fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
158
diff
changeset
|
101 printDocumentPage(false, page, &painter, printer); |
157
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
102 progress.setValue(page); |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
103 firstPage = false; |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
104 } |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
105 |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
106 painter.end(); |
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 |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
109 |
160
1c2f9d09e87b
Begin working on printing fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
158
diff
changeset
|
110 bool SyntilistaMainWindow::printDocumentPage(const bool getPageInfo, const int npage, QPainter *pt, QPrinter *printer) |
157
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 // 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
|
113 QString querystr = QStringLiteral( |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
114 "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
|
115 "(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
|
116 "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
|
117 |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
118 // If we are fetching page info, we need to process all entries |
175
d61405758cc9
Add person counts summary to printed page summaries.
Matti Hamalainen <ccr@tnsp.org>
parents:
174
diff
changeset
|
119 int noffset = (npage - 1) * pinfo.nlinesPerPage; |
157
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
120 if (!getPageInfo) |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
121 { |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
122 // 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
|
123 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
|
124 arg(pinfo.nlinesPerPage). |
175
d61405758cc9
Add person counts summary to printed page summaries.
Matti Hamalainen <ccr@tnsp.org>
parents:
174
diff
changeset
|
125 arg(noffset); |
157
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
126 } |
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 QSqlQuery query; |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
129 query.prepare(querystr); |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
130 query.setForwardOnly(true); |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
131 query.exec(); |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
132 |
255
55581d90c55d
Change API for slCheckAndReportSQLError().
Matti Hamalainen <ccr@tnsp.org>
parents:
246
diff
changeset
|
133 if (!slCheckAndReportSQLError(query, "printDocumentPage()")) |
157
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
134 { |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
135 slErrorMsg( |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
136 tr("SQL-tietokantavirhe"), |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
137 tr("Tietokantaa selattaessa tapahtui virhe.")); |
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 return false; |
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 |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
142 pt->save(); |
160
1c2f9d09e87b
Begin working on printing fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
158
diff
changeset
|
143 pt->scale( |
167
c54ad71c1205
Apply (kludgey) adjustment scales for printed page to avoid overflow ..
Matti Hamalainen <ccr@tnsp.org>
parents:
166
diff
changeset
|
144 pt->device()->width() / ((float) APP_PRINT_WIDTH * APP_PRINT_WSCALE), |
c54ad71c1205
Apply (kludgey) adjustment scales for printed page to avoid overflow ..
Matti Hamalainen <ccr@tnsp.org>
parents:
166
diff
changeset
|
145 pt->device()->height() /((float) APP_PRINT_HEIGHT * APP_PRINT_HSCALE)); |
157
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
146 |
160
1c2f9d09e87b
Begin working on printing fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
158
diff
changeset
|
147 QFont font1; |
1c2f9d09e87b
Begin working on printing fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
158
diff
changeset
|
148 font1.setFamily("Arial"); |
1c2f9d09e87b
Begin working on printing fixes.
Matti Hamalainen <ccr@tnsp.org>
parents:
158
diff
changeset
|
149 font1.setPixelSize(24); |
157
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
150 SLDrawContext ctx(pt); |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
151 ctx.setFont(font1); |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
152 |
175
d61405758cc9
Add person counts summary to printed page summaries.
Matti Hamalainen <ccr@tnsp.org>
parents:
174
diff
changeset
|
153 int nline = 0, nperson = noffset; |
157
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
154 while (query.next()) |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
155 { |
174
636a24c76232
Rename some classes to add a SL prefix to their names.
Matti Hamalainen <ccr@tnsp.org>
parents:
167
diff
changeset
|
156 SLPersonInfo info; |
157
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
157 slGetPersonInfoRec(query, info); |
175
d61405758cc9
Add person counts summary to printed page summaries.
Matti Hamalainen <ccr@tnsp.org>
parents:
174
diff
changeset
|
158 nperson++; |
157
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
159 |
176
c29a1078d601
This page end check is not a kludge anymore, really .. I suppose.
Matti Hamalainen <ccr@tnsp.org>
parents:
175
diff
changeset
|
160 // Check for the end of page |
c29a1078d601
This page end check is not a kludge anymore, really .. I suppose.
Matti Hamalainen <ccr@tnsp.org>
parents:
175
diff
changeset
|
161 if (getPageInfo && ctx.lfq(10) >= |
c29a1078d601
This page end check is not a kludge anymore, really .. I suppose.
Matti Hamalainen <ccr@tnsp.org>
parents:
175
diff
changeset
|
162 APP_PRINT_HEIGHT - ctx.boundRect().height() * 1.5f) |
157
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
163 { |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
164 if (nline > pinfo.nlinesPerPage) |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
165 pinfo.nlinesPerPage = nline; |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
166 |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
167 pinfo.npages++; |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
168 nline = 0; |
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 |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
171 if (nline == 0) |
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 // 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
|
174 pt->setBrush(QBrush(Qt::black)); |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
175 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
|
176 |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
177 ctx.setPos(0, 0); |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
178 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
|
179 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
|
180 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
|
181 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
|
182 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
|
183 ctx.lf(); |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
184 |
161
eeb3bb877b63
More work on printing improvements, make certain hardcoded values #defines.
Matti Hamalainen <ccr@tnsp.org>
parents:
160
diff
changeset
|
185 pt->drawLine(0, ctx.m_pos.y(), APP_PRINT_WIDTH, ctx.m_pos.y()); |
157
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
186 |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
187 ctx.move(0, 5); |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
188 } |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
189 |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
190 // 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
|
191 if (nline % 2 == 0) |
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 pt->fillRect( |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
194 0, |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
195 ctx.m_pos.y() - 1, |
161
eeb3bb877b63
More work on printing improvements, make certain hardcoded values #defines.
Matti Hamalainen <ccr@tnsp.org>
parents:
160
diff
changeset
|
196 APP_PRINT_WIDTH, |
157
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
197 ctx.boundRect().height() + 4, |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
198 QColor(0, 0, 0, 40)); |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
199 } |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
200 |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
201 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
|
202 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
|
203 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
|
204 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
|
205 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
|
206 |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
207 ctx.lf(10); |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
208 nline++; |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
209 } |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
210 |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
211 query.finish(); |
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 if (getPageInfo) |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
214 { |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
215 if (nline > pinfo.nlinesPerPage) |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
216 pinfo.nlinesPerPage = nline; |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
217 |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
218 pinfo.npages++; |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
219 } |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
220 else |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
221 { |
161
eeb3bb877b63
More work on printing improvements, make certain hardcoded values #defines.
Matti Hamalainen <ccr@tnsp.org>
parents:
160
diff
changeset
|
222 ctx.setPos(0, APP_PRINT_HEIGHT - ctx.boundRect().height()); |
eeb3bb877b63
More work on printing improvements, make certain hardcoded values #defines.
Matti Hamalainen <ccr@tnsp.org>
parents:
160
diff
changeset
|
223 ctx.drawText(0, APP_PRINT_WIDTH, |
175
d61405758cc9
Add person counts summary to printed page summaries.
Matti Hamalainen <ccr@tnsp.org>
parents:
174
diff
changeset
|
224 tr("Sivu %1 / %2 (%3 / %4) - Henkilöt %5 - %6 / %7"). |
157
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
225 arg(npage - printer->fromPage() + 1). |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
226 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
|
227 arg(npage). |
175
d61405758cc9
Add person counts summary to printed page summaries.
Matti Hamalainen <ccr@tnsp.org>
parents:
174
diff
changeset
|
228 arg(printer->toPage()). |
d61405758cc9
Add person counts summary to printed page summaries.
Matti Hamalainen <ccr@tnsp.org>
parents:
174
diff
changeset
|
229 arg(noffset + 1). |
d61405758cc9
Add person counts summary to printed page summaries.
Matti Hamalainen <ccr@tnsp.org>
parents:
174
diff
changeset
|
230 arg(nperson). |
d61405758cc9
Add person counts summary to printed page summaries.
Matti Hamalainen <ccr@tnsp.org>
parents:
174
diff
changeset
|
231 arg(totalPeople), |
157
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
232 Qt::AlignHCenter); |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
233 } |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
234 |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
235 pt->restore(); |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
236 return true; |
325e7590f93e
Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
237 } |