From 4caab9a479bb1beaafb214d601a435a060733f0f Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Wed, 27 Sep 2017 11:53:17 +0300 Subject: [PATCH] Fix export increments and preview calculations. Separate both types. First write increments then preview calculations. --HG-- branch : feature --- src/app/valentina/mainwindow.cpp | 50 ++++++++++++-------- src/libs/vpatterndb/variables/vincrement.cpp | 3 +- 2 files changed, 33 insertions(+), 20 deletions(-) diff --git a/src/app/valentina/mainwindow.cpp b/src/app/valentina/mainwindow.cpp index 691d4f427..6ba2aff97 100644 --- a/src/app/valentina/mainwindow.cpp +++ b/src/app/valentina/mainwindow.cpp @@ -1499,30 +1499,42 @@ void MainWindow::ExportToCSVData(const QString &fileName, const DialogExportToCS } const QMap > increments = pattern->DataIncrements(); - QMap >::const_iterator i; - QMap map; - //Sorting QHash by id - for (i = increments.constBegin(); i != increments.constEnd(); ++i) - { - QSharedPointer incr = i.value(); - map.insert(incr->getIndex(), i.key()); - } qint32 currentRow = -1; - QMapIterator iMap(map); - while (iMap.hasNext()) + + auto SavePreviewCalculation = [¤tRow, &csv, increments](bool save) { - iMap.next(); - QSharedPointer incr = increments.value(iMap.value()); - currentRow++; + QMap >::const_iterator i; + QMap map; + //Sorting QHash by id + for (i = increments.constBegin(); i != increments.constEnd(); ++i) + { + const QSharedPointer incr = i.value(); + if (incr->IsPreviewCalculation() == save) + { + map.insert(incr->getIndex(), i.key()); + } + } - csv.insertRow(currentRow); - csv.setText(currentRow, 0, incr->GetName()); // name - csv.setText(currentRow, 1, qApp->LocaleToString(*incr->GetValue())); // calculated value + QMapIterator iMap(map); + while (iMap.hasNext()) + { + iMap.next(); + QSharedPointer incr = increments.value(iMap.value()); + currentRow++; - QString formula = VTranslateVars::TryFormulaToUser(incr->GetFormula(), qApp->Settings()->GetOsSeparator()); - csv.setText(currentRow, 2, formula); // formula - } + csv.insertRow(currentRow); + csv.setText(currentRow, 0, incr->GetName()); // name + csv.setText(currentRow, 1, qApp->LocaleToString(*incr->GetValue())); // calculated value + + QString formula = VTranslateVars::TryFormulaToUser(incr->GetFormula(), + qApp->Settings()->GetOsSeparator()); + csv.setText(currentRow, 2, formula); // formula + } + }; + + SavePreviewCalculation(false); + SavePreviewCalculation(true); csv.toCSV(fileName, dialog.WithHeader(), dialog.Separator(), QTextCodec::codecForMib(dialog.SelectedMib())); } diff --git a/src/libs/vpatterndb/variables/vincrement.cpp b/src/libs/vpatterndb/variables/vincrement.cpp index 211a21763..eb1a4981d 100644 --- a/src/libs/vpatterndb/variables/vincrement.cpp +++ b/src/libs/vpatterndb/variables/vincrement.cpp @@ -80,7 +80,8 @@ VIncrement::~VIncrement() //--------------------------------------------------------------------------------------------------------------------- /** - * @brief getIndex return index of row + * @brief getIndex return index of row. Row index for increments and preview calucalations is unique. Check type before + * using. * @return index */ quint32 VIncrement::getIndex() const