--- a/src/InventoryFermentables.cpp Sat Mar 05 10:37:09 2022 +0100 +++ b/src/InventoryFermentables.cpp Sat Mar 05 16:19:52 2022 +0100 @@ -142,6 +142,72 @@ } +void InventoryFermentables::on_exportButton_clicked() +{ + qDebug() << Q_FUNC_INFO; + + QSqlQuery query("SELECT * FROM inventory_fermentables ORDER BY supplier,name"); + const QStringList types({"Grain", "Sugar", "Extract", "Dry extract", "Adjunct"}); + const QStringList graintypes({"Base", "Roast", "Crystal", "Kilned", "Sour Malt", "Special", "No malt"}); + const QStringList added({"Mash", "Boil", "Fermentation", "Lagering", "Bottle"}); + + QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"), "", tr("Files (*.xml)")); + if (fileName == 0) { + QMessageBox::warning(this, tr("Save File"), tr("No XML file selected.")); + return; + } + + QFile file(fileName); + file.open(QIODevice::WriteOnly); + + QXmlStreamWriter *xmlWriter = new QXmlStreamWriter(&file); + xmlWriter->writeStartDocument(); + xmlWriter->setAutoFormatting(true); + xmlWriter->writeStartElement("FERMENTABLES"); + + query.first(); + for (int i = 0 ; i < query.size() ; i++ ) { + xmlWriter->writeStartElement("FERMENTABLE"); + xmlWriter->writeTextElement("VERSION", "1"); + xmlWriter->writeTextElement("NAME", query.value(1).toString()); + xmlWriter->writeTextElement("NOTES", query.value(8).toString()); + xmlWriter->writeTextElement("TYPE", types[query.value(2).toInt()]); + xmlWriter->writeTextElement("YIELD", QString::number(query.value(3).toDouble(), 'f', 5)); + xmlWriter->writeTextElement("COLOR", QString::number(Utils::ebc_to_srm(query.value(4).toDouble()), 'f', 3) ); + xmlWriter->writeTextElement("ADD_AFTER_BOIL", query.value(5).toInt() ? "TRUE":"FALSE"); + xmlWriter->writeTextElement("ORIGIN", query.value(6).toString()); + xmlWriter->writeTextElement("SUPPLIER", query.value(7).toString()); + if (query.value(9).toDouble() > 0) + xmlWriter->writeTextElement("COARSE_FINE_DIFF", QString::number(query.value(9).toDouble(), 'f', 4)); + if (query.value(10).toDouble() > 0) + xmlWriter->writeTextElement("MOISTURE", QString::number(query.value(10).toDouble(), 'f', 4)); + if (query.value(11).toDouble() > 0) + xmlWriter->writeTextElement("DIASTATIC_POWER", QString::number(query.value(11).toDouble(), 'f', 4)); + if (query.value(12).toDouble() > 0) + xmlWriter->writeTextElement("PROTEIN", QString::number(query.value(12).toDouble(), 'f', 4)); + if (query.value(14).toDouble() > 0) + xmlWriter->writeTextElement("MAX_IN_BATCH", QString::number(query.value(14).toDouble(), 'f', 3)); + xmlWriter->writeTextElement("RECOMMEND_MASH", query.value(15).toInt() ? "TRUE":"FALSE"); + xmlWriter->writeTextElement("DISPLAY_COLOR", QString("%1 EBC").arg(query.value(4).toDouble(), 1, 'f', 0)); + xmlWriter->writeTextElement("GRAINTYPE", graintypes[query.value(20).toInt()]); + xmlWriter->writeTextElement("ADDED", added[query.value(17).toInt()]); + if (query.value(18).toDouble() > 0) + xmlWriter->writeTextElement("DI_pH", QString::number(query.value(18).toDouble(), 'f', 5)); + if (query.value(19).toDouble() > 0) + xmlWriter->writeTextElement("ACID_TO_pH_5.7", QString::number(query.value(19).toDouble(), 'f', 5)); + + xmlWriter->writeEndElement(); + query.next(); + } + + xmlWriter->writeEndElement(); + xmlWriter->writeEndDocument(); + QMessageBox::warning(this, tr("Save File"), tr("XML export ready")); + + file.close(); +} + + void InventoryFermentables::on_quitButton_clicked() { emit firstWindow();