# HG changeset patch # User Michiel Broek # Date 1650881418 -7200 # Node ID 2b62a032079f7c69f45d3d375e1caeb5079de6f2 # Parent 231f5c8002e3f8678ae262a70b704d91c632d342 Completed print recipe. diff -r 231f5c8002e3 -r 2b62a032079f src/PrinterDialog.cpp --- 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(); }