Fix updating dimension labels in Valentina app.

This commit is contained in:
Roman Telezhynskyi 2022-07-23 10:47:52 +03:00
parent 22d21a867a
commit 57dd27cec0
3 changed files with 58 additions and 42 deletions

View file

@ -11,6 +11,7 @@
- Tape app. "Export from existing ..." now supports multisize measurements.
- Fix main path validation. False positive double curve.
- Fix Setup multisize measurements dialog. Improved handling Height dimension.
- Fix updating dimension labels in Valentina app.
# Valentina 0.7.51 April 18, 2022
- Z value change for a layout piece.

View file

@ -2815,11 +2815,12 @@ void TMainWindow::InitDimensionGradation(int index, const MeasurementDimension_p
}
else
{
control->addItem(QString("%1 %2").arg(base).arg(unit), base);
control->addItem(QStringLiteral("%1 %2").arg(base).arg(unit), base);
}
}
}
else if (dimension->Type() == MeasurementDimension::Y)
else if (dimension->Type() == MeasurementDimension::Y || dimension->Type() == MeasurementDimension::W ||
dimension->Type() == MeasurementDimension::Z)
{
for(auto base : bases)
{
@ -2831,7 +2832,7 @@ void TMainWindow::InitDimensionGradation(int index, const MeasurementDimension_p
{
if (dimension->IsBodyMeasurement())
{
control->addItem(QString("%1 %2").arg(fc ? base*2 : base).arg(unit), base);
control->addItem(QStringLiteral("%1 %2").arg(fc ? base*2 : base).arg(unit), base);
}
else
{
@ -2840,20 +2841,6 @@ void TMainWindow::InitDimensionGradation(int index, const MeasurementDimension_p
}
}
}
else if (dimension->Type() == MeasurementDimension::W || dimension->Type() == MeasurementDimension::Z)
{
for(auto base : bases)
{
if (labels.contains(base) && not labels.value(base).isEmpty())
{
control->addItem(labels.value(base), base);
}
else
{
control->addItem(QString("%1 %2").arg(fc ? base*2 : base).arg(unit), base);
}
}
}
// after initialization the current index is 0. The signal for changing the index will not be triggered if not make
// it invalid first
@ -2878,7 +2865,7 @@ void TMainWindow::InitDimensionControls()
const QList<MeasurementDimension_p> dimensions = m->Dimensions().values();
const QString unit = UnitsToStr(m->Units(), true);
auto InitControl = [this, dimensions, unit](int index, QLabel *&name, QComboBox *&control)
auto InitControl = [this, dimensions](int index, QLabel *&name, QComboBox *&control)
{
if (dimensions.size() > index)
{

View file

@ -592,7 +592,8 @@ bool MainWindow::UpdateMeasurements(const QString &path, qreal baseA, qreal base
}
//---------------------------------------------------------------------------------------------------------------------
bool MainWindow::UpdateMeasurements(const QSharedPointer<VMeasurements> &mFile, qreal baseA, qreal baseB, qreal baseC)
auto MainWindow::UpdateMeasurements(const QSharedPointer<VMeasurements> &mFile, qreal baseA, qreal baseB,
qreal baseC) -> bool
{
m = mFile;
@ -606,7 +607,7 @@ bool MainWindow::UpdateMeasurements(const QSharedPointer<VMeasurements> &mFile,
qCCritical(vMainWindow, "%s", qUtf8Printable(tr("Measurement files types have not match.")));
if (not VApplication::IsGUIMode())
{
qApp->exit(V_EX_DATAERR);
QCoreApplication::exit(V_EX_DATAERR);
}
return false;
}
@ -617,8 +618,50 @@ bool MainWindow::UpdateMeasurements(const QSharedPointer<VMeasurements> &mFile,
if (not m->Dimensions().isEmpty())
{
InitDimensionGradation(0, m->Dimensions().values().at(0), dimensionA);
DimensionABaseChanged();
const QList<MeasurementDimension_p> dimensions = m->Dimensions().values();
auto InitDimensionLabel = [this, dimensions](const MeasurementDimension_p& dimension,
QPointer<QLabel> &name, QPointer<QComboBox> &control)
{
if (dimension.isNull())
{
return;
}
if (name == nullptr)
{
name = new QLabel(dimension->Name()+QChar(':'));
}
else
{
name->setText(dimension->Name()+QChar(':'));
}
name->setToolTip(VAbstartMeasurementDimension::DimensionToolTip(dimension, m->IsFullCircumference()));
if (control == nullptr)
{
control = new QComboBox;
control->setSizeAdjustPolicy(QComboBox::AdjustToContents);
}
};
MeasurementDimension_p dimension = dimensions.at(0);
InitDimensionLabel(dimension, dimensionALabel, dimensionA);
InitDimensionGradation(0, dimension, dimensionA);
if (dimensions.size() > 1)
{
dimension = dimensions.at(1);
InitDimensionLabel(dimension, dimensionBLabel, dimensionB);
InitDimensionGradation(1, dimension, dimensionB);
if (dimensions.size() > 2)
{
dimension = dimensions.at(2);
InitDimensionLabel(dimension, dimensionCLabel, dimensionC);
InitDimensionGradation(2, dimension, dimensionC);
}
}
}
m->StoreNames(false);
@ -636,13 +679,11 @@ bool MainWindow::UpdateMeasurements(const QSharedPointer<VMeasurements> &mFile,
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
if (not VApplication::IsGUIMode())
{
qApp->exit(V_EX_NOINPUT);
QCoreApplication::exit(V_EX_NOINPUT);
}
return false;
}
return true;
}
@ -4600,11 +4641,12 @@ void MainWindow::InitDimensionGradation(int index, const MeasurementDimension_p
}
else
{
control->addItem(QString("%1 %2").arg(base).arg(unit), base);
control->addItem(QStringLiteral("%1 %2").arg(base).arg(unit), base);
}
}
}
else if (dimension->Type() == MeasurementDimension::Y)
else if (dimension->Type() == MeasurementDimension::Y || dimension->Type() == MeasurementDimension::W ||
dimension->Type() == MeasurementDimension::Z)
{
for(auto base : bases)
{
@ -4616,7 +4658,7 @@ void MainWindow::InitDimensionGradation(int index, const MeasurementDimension_p
{
if (dimension->IsBodyMeasurement())
{
control->addItem(QString("%1 %2").arg(fc ? base*2 : base).arg(unit), base);
control->addItem(QStringLiteral("%1 %2").arg(fc ? base*2 : base).arg(unit), base);
}
else
{
@ -4625,20 +4667,6 @@ void MainWindow::InitDimensionGradation(int index, const MeasurementDimension_p
}
}
}
else if (dimension->Type() == MeasurementDimension::W || dimension->Type() == MeasurementDimension::Z)
{
for(auto base : bases)
{
if (labels.contains(base) && not labels.value(base).isEmpty())
{
control->addItem(labels.value(base), base);
}
else
{
control->addItem(QString("%1 %2").arg(fc ? base*2 : base).arg(unit), base);
}
}
}
// after initialization the current index is 0. The signal for changing the index will not be triggered if not make
// it invalid first