diff --git a/src/app/tape/tmainwindow.cpp b/src/app/tape/tmainwindow.cpp index de3ec5aca..7c7c673a7 100644 --- a/src/app/tape/tmainwindow.cpp +++ b/src/app/tape/tmainwindow.cpp @@ -4000,77 +4000,27 @@ void TMainWindow::SetCurrentDimensionValues() //--------------------------------------------------------------------------------------------------------------------- QVector TMainWindow::DimensionRestrictedValues(int index, const MeasurementDimension_p &dimension) { + QPair restriction; + if (index == 0) { return dimension->ValidBases(); } - - if (dimension->Type() == MeasurementDimension::X) + else if (index == 1) { + restriction = m->Restriction(currentDimensionA); + } + else + { + restriction = m->Restriction(currentDimensionA, currentDimensionB); + } + + if (restriction.first < dimension->MinValue() || restriction.second > dimension->MaxValue()) + { // invalid restriction return dimension->ValidBases(); } - else if (dimension->Type() == MeasurementDimension::Y) - { - const QPair restriction = m->Restriction(currentDimensionA); - VYMeasurementDimension restricted(dimension->Units(), restriction.first, restriction.second, dimension->Step()); - restricted.SetCircumference(dimension->IsCircumference()); - if (restriction.first < dimension->MinValue() || restriction.second > dimension->MaxValue() - || not restricted.IsValid()) - { // invalid restriction - return dimension->ValidBases(); - } - - return restricted.ValidBases(); - } - else if (dimension->Type() == MeasurementDimension::W) - { - QPair restriction; - - if (index == 1) - { - restriction = m->Restriction(currentDimensionA); - } - else - { - restriction = m->Restriction(currentDimensionA, currentDimensionB); - } - - VWMeasurementDimension restricted(dimension->Units(), restriction.first, restriction.second, dimension->Step()); - - if (restriction.first < dimension->MinValue() || restriction.second > dimension->MaxValue() - || not restricted.IsValid()) - { // invalid restriction - return dimension->ValidBases(); - } - - return restricted.ValidBases(); - } - else if (dimension->Type() == MeasurementDimension::Z) - { - QPair restriction; - - if (index == 1) - { - restriction = m->Restriction(currentDimensionA); - } - else - { - restriction = m->Restriction(currentDimensionA, currentDimensionB); - } - - VZMeasurementDimension restricted(dimension->Units(), restriction.first, restriction.second, dimension->Step()); - - if (restriction.first < dimension->MinValue() || restriction.second > dimension->MaxValue() - || not restricted.IsValid()) - { // invalid restriction - return dimension->ValidBases(); - } - - return restricted.ValidBases(); - } - - return QVector(); + return VAbstartMeasurementDimension::ValidBases(restriction.first, restriction.second, dimension->Step()); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vformat/vdimensions.cpp b/src/libs/vformat/vdimensions.cpp index 4c5bbdbec..1063c5216 100644 --- a/src/libs/vformat/vdimensions.cpp +++ b/src/libs/vformat/vdimensions.cpp @@ -78,24 +78,7 @@ QVector VAbstartMeasurementDimension::ValidSteps() const //--------------------------------------------------------------------------------------------------------------------- QVector VAbstartMeasurementDimension::ValidBases() const { - QVector validBases; - int step = Step(); - - if (step < 0) - { - return validBases; - } - else if (step == 0) - { - step = 1; - } - - for (int value = MinValue(); value <= MaxValue(); value += step) - { - validBases.append(value); - } - - return validBases; + return VAbstartMeasurementDimension::ValidBases(m_minValue, m_maxValue, m_step); } //--------------------------------------------------------------------------------------------------------------------- @@ -111,6 +94,28 @@ QStringList VAbstartMeasurementDimension::ValidBasesList() const } +//--------------------------------------------------------------------------------------------------------------------- +QVector VAbstartMeasurementDimension::ValidBases(int min, int max, int step) +{ + QVector validBases; + + if (step < 0) + { + return validBases; + } + else if (step == 0) + { + step = 1; + } + + for (int value = min; value <= max; value += step) + { + validBases.append(value); + } + + return validBases; +} + //--------------------------------------------------------------------------------------------------------------------- bool VAbstartMeasurementDimension::IsRangeValid() { diff --git a/src/libs/vformat/vdimensions.h b/src/libs/vformat/vdimensions.h index fad7934bb..65873a0c6 100644 --- a/src/libs/vformat/vdimensions.h +++ b/src/libs/vformat/vdimensions.h @@ -83,6 +83,7 @@ public: QVector ValidBases() const; QStringList ValidBasesList() const; + static QVector ValidBases(int min, int max, int step); static QString DimensionName(MeasurementDimension type); static QString DimensionToolTip(MeasurementDimension type, bool circumference, bool fc);