diff -r 26910c149073 -r 5a9a159c2d34 src/InventoryYeasts.cpp --- a/src/InventoryYeasts.cpp Sat Mar 05 16:55:38 2022 +0100 +++ b/src/InventoryYeasts.cpp Sat Mar 05 21:15:59 2022 +0100 @@ -181,6 +181,67 @@ } +void InventoryYeasts::on_exportButton_clicked() +{ + qDebug() << Q_FUNC_INFO; + + QSqlQuery query("SELECT * FROM inventory_yeasts ORDER BY laboratory,product_id,name"); + const QStringList types({ "Lager", "Ale", "Wheat", "Wine", "Champagne", "Other", "Other", "Other" }); + /* "Lager", "Ale", "Wheat", "Wine", "Champagne", "Brett", "Kveik", "Hybrid" */ + /* We use more yeat forms then beerxml knows about, so we send known names */ + /* instead of what we internally use. */ + const QStringList forms({ "Liquid", "Dry", "Slant", "Culture", "Culture", "Culture", "Dry" }); + /* "Liquid", "Dry", "Slant", "Culture", "Frozen", "Bottle", "Dried" */ + const QStringList flocs({ "Low", "Medium", "High", "Very high" }); + + QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"), QDir::homePath() + "/yeasts.xml", 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->setAutoFormattingIndent(1); + xmlWriter->writeStartElement("YEASTS"); + + query.first(); + for (int i = 0 ; i < query.size() ; i++ ) { + xmlWriter->writeStartElement("YEAST"); + xmlWriter->writeTextElement("VERSION", "1"); + xmlWriter->writeTextElement("NAME", query.value(1).toString()); + xmlWriter->writeTextElement("TYPE", types[query.value(2).toInt()]); + xmlWriter->writeTextElement("FORM", forms[query.value(3).toInt()]); + xmlWriter->writeTextElement("AMOUNT_IS_WEIGHT", (query.value(3).toInt() == 1 || query.value(3).toInt() == 6) ? "TRUE":"FALSE"); + xmlWriter->writeTextElement("LABORATORY", query.value(4).toString()); + if (query.value(5).toString().length()) + xmlWriter->writeTextElement("PRODUCT_ID", query.value(5).toString()); + xmlWriter->writeTextElement("MIN_TEMPERATURE", QString::number(query.value(6).toDouble(), 'f', 4)); + xmlWriter->writeTextElement("MAX_TEMPERATURE", QString::number(query.value(7).toDouble(), 'f', 4)); + xmlWriter->writeTextElement("ATTENUATION", QString::number(query.value(9).toDouble(), 'f', 4)); + xmlWriter->writeTextElement("ADD_TO_SECONDARY", "FALSE"); + xmlWriter->writeTextElement("FLOCCULATION", flocs[query.value(8).toInt()]); + xmlWriter->writeTextElement("MAX_REUSE", QString::number(query.value(13).toInt())); + if (query.value(15).toDouble() > 0) + xmlWriter->writeTextElement("COST", QString::number(query.value(15).toDouble(), 'f', 5)); + if (query.value(11).toString().length()) + xmlWriter->writeTextElement("NOTES", query.value(11).toString()); + xmlWriter->writeEndElement(); + query.next(); + } + + xmlWriter->writeEndElement(); + xmlWriter->writeEndDocument(); + QMessageBox::information(this, tr("Save File"), tr("XML export ready")); + + file.close(); +} + + void InventoryYeasts::on_quitButton_clicked() { emit firstWindow();