annotate src/printing.cpp @ 246:43a5e09bb832

Split some utility functions to util.{h,cpp}
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 08 May 2018 13:14:29 +0300
parents 58af72da7f60
children 55581d90c55d
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>
217
58af72da7f60 Update copyrights.
Matti Hamalainen <ccr@tnsp.org>
parents: 177
diff changeset
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
325e7590f93e Move most of the printing related code to printing.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
133 if (!slCheckAndReportSQLError("printDocumentPage()", query.lastError()))
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 }