Completed print recipe.

Mon, 25 Apr 2022 12:10:18 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Mon, 25 Apr 2022 12:10:18 +0200
changeset 160
2b62a032079f
parent 159
231f5c8002e3
child 161
b36d249512cc

Completed print recipe.

src/PrinterDialog.cpp file | annotate | diff | comparison | revisions
--- a/src/PrinterDialog.cpp	Sun Apr 24 22:22:22 2022 +0200
+++ b/src/PrinterDialog.cpp	Mon Apr 25 12:10:18 2022 +0200
@@ -311,7 +311,7 @@
 
 	printHeader(&painter);
         y = 120;
-	/* Fermentables supplies header */
+	/* Generic header */
         painter.setFont(QFont("Helvetica", 9, QFont::Bold));
         painter.setPen(Qt::black);
         painter.fillRect(  0, y,   735, 20, c_header);
@@ -495,7 +495,14 @@
 	}
 	painter.fillRect(670, y,    60, 20, c_line1);
         painter.drawText(670, y+4,  60, 20, Qt::AlignRight, QString("%1 €").arg(cost_yeasts, 1, 'f', 3));
-        y += 40;
+
+	if ((y + 80 + (recipe->miscs.size() * 20)) > painter.device()->height()) {      /* Rows + header + footer + blank */
+            printer->newPage();
+            printHeader(&painter);
+            y = 120;
+        } else {
+            y += 40;
+        }
 
 	/* Miscs */
         painter.setFont(QFont("Helvetica", 9, QFont::Bold));
@@ -535,7 +542,14 @@
 	}
 	painter.fillRect(670, y,    60, 20, c_line1);
         painter.drawText(670, y+4,  60, 20, Qt::AlignRight, QString("%1 €").arg(cost_miscs, 1, 'f', 3));
-        y += 40;
+
+	if ((y + 60 + (recipe->mashs.size() * 20)) > painter.device()->height()) {      /* Rows + header + blank */
+            printer->newPage();
+            printHeader(&painter);
+            y = 120;
+        } else {
+            y += 40;
+        }
 
 	/* Mash */
         painter.setFont(QFont("Helvetica", 9, QFont::Bold));
@@ -566,8 +580,108 @@
 	    }
 	    y += 20;
 	}
+
+	if ((y + 80 + ((recipe->w2_amount > 0) ? 40:0)) > painter.device()->height()) {      /* waters + header + blank */
+            printer->newPage();
+            printHeader(&painter);
+            y = 120;
+        } else {
+            y += 40;
+        }
+
+	/* Water */
+        painter.setFont(QFont("Helvetica", 9, QFont::Bold));
+        painter.fillRect(  0, y,   735, 20, c_header);
+        painter.drawText(  0, y+4, 135, 20, Qt::AlignLeft,  tr("Water source"));
+        painter.drawText(135, y+4,  70, 20, Qt::AlignRight, tr("Volume"));
+        painter.drawText(210, y+4,  70, 20, Qt::AlignRight, tr("Ca"));
+        painter.drawText(285, y+4,  70, 20, Qt::AlignRight, tr("Mg"));
+        painter.drawText(360, y+4,  70, 20, Qt::AlignRight, tr("CaCO3"));
+        painter.drawText(435, y+4,  70, 20, Qt::AlignRight, tr("Na"));
+        painter.drawText(510, y+4,  70, 20, Qt::AlignRight, tr("Cl"));
+        painter.drawText(585, y+4,  70, 20, Qt::AlignRight, tr("SO4"));
+        painter.drawText(660, y+4,  70, 20, Qt::AlignRight, tr("pH"));
+        y += 20;
+        painter.setFont(QFont("Helvetica", 9, QFont::Normal));
+	painter.fillRect(  0, y,   735, 20, w_line);
+	painter.drawText(  0, y+4, 135, 20, Qt::AlignLeft,  recipe->w1_name);
+	painter.drawText(135, y+4,  70, 20, Qt::AlignRight, QString("%1 L").arg(recipe->w1_amount, 1, 'f', 1));
+	painter.drawText(210, y+4,  70, 20, Qt::AlignRight, QString("%1").arg(recipe->w1_calcium, 1, 'f', 1));
+	painter.drawText(285, y+4,  70, 20, Qt::AlignRight, QString("%1").arg(recipe->w1_magnesium, 1, 'f', 1));
+	painter.drawText(360, y+4,  70, 20, Qt::AlignRight, QString("%1").arg(recipe->w1_total_alkalinity, 1, 'f', 1));
+	painter.drawText(435, y+4,  70, 20, Qt::AlignRight, QString("%1").arg(recipe->w1_sodium, 1, 'f', 1));
+	painter.drawText(510, y+4,  70, 20, Qt::AlignRight, QString("%1").arg(recipe->w1_chloride, 1, 'f', 1));
+	painter.drawText(585, y+4,  70, 20, Qt::AlignRight, QString("%1").arg(recipe->w1_sulfate, 1, 'f', 1));
+	painter.drawText(660, y+4,  70, 20, Qt::AlignRight, QString("%1").arg(recipe->w1_ph, 1, 'f', 2));
+	y += 20;
+	if (recipe->w2_amount > 0) {
+	    /*
+	     * If there is dillution water, show it and the mixed result too.
+	     */
+            painter.fillRect(  0, y,   735, 20, w_line);
+            painter.drawText(  0, y+4, 135, 20, Qt::AlignLeft,  recipe->w2_name);
+            painter.drawText(135, y+4,  70, 20, Qt::AlignRight, QString("%1 L").arg(recipe->w2_amount, 1, 'f', 1));
+            painter.drawText(210, y+4,  70, 20, Qt::AlignRight, QString("%1").arg(recipe->w2_calcium, 1, 'f', 1));
+            painter.drawText(285, y+4,  70, 20, Qt::AlignRight, QString("%1").arg(recipe->w2_magnesium, 1, 'f', 1));
+            painter.drawText(360, y+4,  70, 20, Qt::AlignRight, QString("%1").arg(recipe->w2_total_alkalinity, 1, 'f', 1));
+            painter.drawText(435, y+4,  70, 20, Qt::AlignRight, QString("%1").arg(recipe->w2_sodium, 1, 'f', 1));
+            painter.drawText(510, y+4,  70, 20, Qt::AlignRight, QString("%1").arg(recipe->w2_chloride, 1, 'f', 1));
+            painter.drawText(585, y+4,  70, 20, Qt::AlignRight, QString("%1").arg(recipe->w2_sulfate, 1, 'f', 1));
+            painter.drawText(660, y+4,  70, 20, Qt::AlignRight, QString("%1").arg(recipe->w2_ph, 1, 'f', 2));
+            y += 20;
+            painter.fillRect(  0, y,   735, 20, w_line);
+            painter.drawText(  0, y+4, 135, 20, Qt::AlignLeft,  tr("Mixed water"));
+            painter.drawText(135, y+4,  70, 20, Qt::AlignRight, QString("%1 L").arg(recipe->wg_amount, 1, 'f', 1));
+            painter.drawText(210, y+4,  70, 20, Qt::AlignRight, QString("%1").arg(recipe->wg_calcium, 1, 'f', 1));
+            painter.drawText(285, y+4,  70, 20, Qt::AlignRight, QString("%1").arg(recipe->wg_magnesium, 1, 'f', 1));
+            painter.drawText(360, y+4,  70, 20, Qt::AlignRight, QString("%1").arg(recipe->wg_total_alkalinity, 1, 'f', 1));
+            painter.drawText(435, y+4,  70, 20, Qt::AlignRight, QString("%1").arg(recipe->wg_sodium, 1, 'f', 1));
+            painter.drawText(510, y+4,  70, 20, Qt::AlignRight, QString("%1").arg(recipe->wg_chloride, 1, 'f', 1));
+            painter.drawText(585, y+4,  70, 20, Qt::AlignRight, QString("%1").arg(recipe->wg_sulfate, 1, 'f', 1));
+            painter.drawText(660, y+4,  70, 20, Qt::AlignRight, QString("%1").arg(recipe->wg_ph, 1, 'f', 2));
+            y += 20;
+	}
+	painter.fillRect(  0, y,   735, 20, w_line);
+        painter.drawText(  0, y+4, 135, 20, Qt::AlignLeft,  tr("Treated water"));
+        painter.drawText(210, y+4,  70, 20, Qt::AlignRight, QString("%1").arg(recipe->wb_calcium, 1, 'f', 1));
+        painter.drawText(285, y+4,  70, 20, Qt::AlignRight, QString("%1").arg(recipe->wb_magnesium, 1, 'f', 1));
+        painter.drawText(360, y+4,  70, 20, Qt::AlignRight, QString("%1").arg(recipe->wb_total_alkalinity, 1, 'f', 1));
+        painter.drawText(435, y+4,  70, 20, Qt::AlignRight, QString("%1").arg(recipe->wb_sodium, 1, 'f', 1));
+        painter.drawText(510, y+4,  70, 20, Qt::AlignRight, QString("%1").arg(recipe->wb_chloride, 1, 'f', 1));
+        painter.drawText(585, y+4,  70, 20, Qt::AlignRight, QString("%1").arg(recipe->wb_sulfate, 1, 'f', 1));
+        painter.drawText(660, y+4,  70, 20, Qt::AlignRight, QString("%1").arg(recipe->wb_ph, 1, 'f', 2));
+	y += 20;
     }
 
+    /*
+     * Print recipe notes if present.
+     */
+    if (recipe->notes.length()) {
+    	QStringList lines = recipe->notes.split("\n");
+
+    	if (lines.size() && recipe->notes != "") {
+            if ((y + 80 + (lines.size() * 20)) > painter.device()->height()) {
+            	printer->newPage();
+            	printHeader(&painter);
+            	y = 120;
+            } else {
+            	y += 40;
+            }
+
+	    /* Notes header */
+            painter.setFont(QFont("Helvetica", 9, QFont::Bold));
+            painter.setPen(Qt::black);
+            painter.fillRect(  0, y,   735, 20, c_header);
+            painter.drawText(  0, y+4, 735, 20, Qt::AlignCenter, tr("Recipe notes"));
+            y += 20;
+            painter.setFont(QFont("Helvetica", 9, QFont::Normal));
+	    for (int i = 0; i < lines.size(); i++) {
+            	painter.fillRect(  0, y,   735, 20, c_line1);
+	    	painter.drawText(  0, y+4, 735, 20, Qt::AlignLeft, lines[i]);
+	    	y += 20;
+	    }
+	}
+    }
 
     painter.end();
 }

mercurial