diff --git a/src/app/valentina/mainwindow.cpp b/src/app/valentina/mainwindow.cpp index e15949234..9ed9b9aba 100644 --- a/src/app/valentina/mainwindow.cpp +++ b/src/app/valentina/mainwindow.cpp @@ -400,19 +400,7 @@ QSharedPointer MainWindow::OpenMeasurementFile(const QString &pat throw e; } - const QSet match = doc->ListMeasurements().toSet().subtract(m->ListAll().toSet()); - if (not match.isEmpty()) - { - QList list = match.toList(); - for (int i = 0; i < list.size(); ++i) - { - list[i] = qApp->TrVars()->MToUser(list.at(i)); - } - - VException e(tr("Measurement file doesn't include all required measurements.")); - e.AddMoreInformation(tr("Please, additionaly provide: %1").arg(QStringList(list).join(", "))); - throw e; - } + CheckRequiredMeasurements(m.data()); if (m->Type() == MeasurementsType::Standard) { @@ -529,6 +517,24 @@ bool MainWindow::UpdateMeasurements(const QString &path, int size, int height) return true; } +//--------------------------------------------------------------------------------------------------------------------- +void MainWindow::CheckRequiredMeasurements(const VMeasurements *m) +{ + const QSet match = doc->ListMeasurements().toSet().subtract(m->ListAll().toSet()); + if (not match.isEmpty()) + { + QList list = match.toList(); + for (int i = 0; i < list.size(); ++i) + { + list[i] = qApp->TrVars()->MToUser(list.at(i)); + } + + VException e(tr("Measurement file doesn't include all required measurements.")); + e.AddMoreInformation(tr("Please, additionaly provide: %1").arg(QStringList(list).join(", "))); + throw e; + } +} + //--------------------------------------------------------------------------------------------------------------------- /** * @brief SetToolButton set tool and show dialog. @@ -4279,7 +4285,7 @@ QString MainWindow::CheckPathToMeasurements(const QString &patternPath, const QS } else { - VMeasurements *m = new VMeasurements(pattern); + QScopedPointer m(new VMeasurements(pattern)); m->setXMLContent(mPath); patternType = m->Type(); @@ -4313,19 +4319,7 @@ QString MainWindow::CheckPathToMeasurements(const QString &patternPath, const QS throw e; } - const QStringList mList = m->ListAll(); - const QStringList pList = doc->ListMeasurements(); - - delete m; - - const QSet match = pList.toSet().subtract(mList.toSet()); - if (not match.isEmpty()) - { - VException e(tr("Measurement file doesn't include all required measurements.")); - e.AddMoreInformation(tr("Please, additionaly provide: %1") - .arg(QStringList(match.toList()).join(", "))); - throw e; - } + CheckRequiredMeasurements(m.data()); doc->SetPath(RelativeMPath(patternPath, mPath)); PatternChangesWereSaved(false); diff --git a/src/app/valentina/mainwindow.h b/src/app/valentina/mainwindow.h index 7b6277533..61e5999f1 100644 --- a/src/app/valentina/mainwindow.h +++ b/src/app/valentina/mainwindow.h @@ -339,6 +339,7 @@ private: QSharedPointer OpenMeasurementFile(const QString &path); bool LoadMeasurements(const QString &path); bool UpdateMeasurements(const QString &path, int size, int height); + void CheckRequiredMeasurements(const VMeasurements *m); void ReopenFilesAfterCrash(QStringList &args); void DoExport(const VCommandLinePtr& expParams);