Index: sources/gui/qml/components/RangeSlider.qml =================================================================== diff -u -r27cc308ff5113a9386899d3c8f8b29962a8498e1 -rcd4b8fbd5ea88717e74dd4cbe00dac82d9844dde --- sources/gui/qml/components/RangeSlider.qml (.../RangeSlider.qml) (revision 27cc308ff5113a9386899d3c8f8b29962a8498e1) +++ sources/gui/qml/components/RangeSlider.qml (.../RangeSlider.qml) (revision cd4b8fbd5ea88717e74dd4cbe00dac82d9844dde) @@ -165,55 +165,57 @@ /// \param x : the active slider x cordinate. /// function setValue(x) { - var value = 0 - if ( x < 0 ) { value = minimum; return value; } - if ( x > width ) { value = maximum; return value; } + let mValue = 0 + if ( x < 0 ) { mValue = minimum; return mValue; } + if ( x > width ) { mValue = maximum; return mValue; } - value = getValueOfX(x) + mValue = getValueOfX(x) - if ( step === 1 ) { return value; } + if ( step === 1 ) { return mValue; } - var start = 0 + let start = 0 if ( ! stepSnap ) start = minimum + mValue = Math.round((mValue - start) / step) * step + start - value = Math.round((value - start) / step) * step + start + let decimals = Math.round(-Math.log10(step)) + if (decimals > 0) mValue = mValue.toFixed(decimals) - if ( value < minimum ) { value = minimum; return value; } - if ( value > maximum ) { value = maximum; return value; } - return value; + if ( mValue < minimum ) { mValue = minimum; return mValue; } + if ( mValue > maximum ) { mValue = maximum; return mValue; } + return mValue; } /// /// \brief updates correct lower or upper bound value regarding the x position /// \details regarding the current mouse x position selects the correct handler and updated the bound value. /// \param x : mouse x position. function setBound(x) { - var value = setValue(x) + let mValue = setValue(x) // console.debug( maxValue - minValue, minValue, value, maxValue ) if ( maxValue - minValue <= gapValue ) { // max correction if the values get too close together less than defined gap if ( curHandler === RangeSlider.HandlerOption.Max ) maxValue = minValue + gapValue // min correction if the values get too close together less than defined gap if ( curHandler === RangeSlider.HandlerOption.Min ) minValue = maxValue - gapValue // while value is between min and max do nothing and let the value gets out of the bound and then apply value. - if ( minValue <= value && value <= maxValue ) return + if ( minValue <= mValue && mValue <= maxValue ) return } - var minDiff = Math.abs(minValue - value) - var maxDiff = Math.abs(maxValue - value) + let minDiff = Math.abs(minValue - mValue) + let maxDiff = Math.abs(maxValue - mValue) if ( minDiff === maxDiff ) { - if ( curHandler === RangeSlider.HandlerOption.Max ) checkLimitsMaxValueBounds(value) - else checkLimitsMinValueBounds(value) + if ( curHandler === RangeSlider.HandlerOption.Max ) checkLimitsMaxValueBounds(mValue) + else checkLimitsMinValueBounds(mValue) } else { // console.debug( minDiff, minValue, value, maxValue, maxDiff ) if ( minDiff < maxDiff ) { // if (minDiff > limitGap) return // not sure if it needs but kept it as an idea. - checkLimitsMinValueBounds(value) + checkLimitsMinValueBounds(mValue) } else { // if (maxDiff > limitGap) return // not sure if it needs but kept it as an idea. - checkLimitsMaxValueBounds(value) + checkLimitsMaxValueBounds(mValue) } } } Index: sources/gui/qml/components/Slider.qml =================================================================== diff -u -rd058eb89be720f349c507886dbd120fb7a775dfb -rcd4b8fbd5ea88717e74dd4cbe00dac82d9844dde --- sources/gui/qml/components/Slider.qml (.../Slider.qml) (revision d058eb89be720f349c507886dbd120fb7a775dfb) +++ sources/gui/qml/components/Slider.qml (.../Slider.qml) (revision cd4b8fbd5ea88717e74dd4cbe00dac82d9844dde) @@ -40,6 +40,8 @@ property alias diameter : _handler.diameter property bool isActive : true + property bool inActiveZero : false // if inActiveZero:true, when is not active (inActive or active:false) sets to zero instead of minimum + property alias progressRectMargin : _progressRect.margin property int tickMarksThickness : 2 @@ -66,7 +68,7 @@ onIsActiveChanged: { setActive(isActive) if (!isActive) { - value = minimum + value = inActiveZero ? 0 : minimum } activeChanged() } @@ -104,22 +106,30 @@ return ( x * ( maximum - minimum ) ) / width + minimum } + function update(vValue) { + _root.value = vValue + } + function setValue(x) { - if ( x < 0 ) { value = minimum; return; } - if ( x > width ) { value = maximum; return; } + let mValue = 0 + if ( x < 0 ) { mValue = minimum; update(mValue); return; } + if ( x > width ) { mValue = maximum; update(mValue); return; } - value = getValueOfX(x) + mValue = getValueOfX(x) - if ( step === 1 ) { value = parseInt(value); return; } + if ( step === 1 ) { mValue = parseInt(mValue); update(mValue); return; } - var start = 0 + let start = 0 if ( ! stepSnap ) start = minimum - value = Math.round((value - start) / step) * step + start + mValue = Math.round((mValue - start) / step) * step + start + let decimals = Math.round(-Math.log10(step)) - if (decimals > 0) value = value.toFixed(decimals) + if (decimals > 0) mValue = mValue.toFixed(decimals) - if ( value < minimum ) { value = minimum; return; } - if ( value > maximum ) { value = maximum; return; } + if ( mValue < minimum ) { mValue = minimum; update(mValue); return; } + if ( mValue > maximum ) { mValue = maximum; update(mValue); return; } + + update(mValue); return; } function setHandlerPosition() { Index: sources/gui/qml/components/SliderCreateTreatment.qml =================================================================== diff -u -rc75017688e992f20dd126054abf6e639883b0303 -rcd4b8fbd5ea88717e74dd4cbe00dac82d9844dde --- sources/gui/qml/components/SliderCreateTreatment.qml (.../SliderCreateTreatment.qml) (revision c75017688e992f20dd126054abf6e639883b0303) +++ sources/gui/qml/components/SliderCreateTreatment.qml (.../SliderCreateTreatment.qml) (revision cd4b8fbd5ea88717e74dd4cbe00dac82d9844dde) @@ -34,6 +34,7 @@ property alias maximum : _slider.maximum property alias value : _slider.value property alias step : _slider.step + property alias inActiveZero: _slider.inActiveZero property string zeroLabel : "" @@ -64,15 +65,15 @@ } function setValue() { - let value = "__" + let mValue = "__" let unit = " " + _root.unit if ( _root.active ) { if ( _slider.value === 0 && zeroLabel !== "" ) { return _root.zeroLabel } - value = _slider.value + mValue = _slider.value } - return value + unit + return mValue + unit } function setInteractive( vInteractive ) { Index: sources/gui/qml/pages/pretreatment/create/PreTreatmentCreate.qml =================================================================== diff -u -ra674f3fdbf0649527672e2b8259731ebb323776b -rcd4b8fbd5ea88717e74dd4cbe00dac82d9844dde --- sources/gui/qml/pages/pretreatment/create/PreTreatmentCreate.qml (.../PreTreatmentCreate.qml) (revision a674f3fdbf0649527672e2b8259731ebb323776b) +++ sources/gui/qml/pages/pretreatment/create/PreTreatmentCreate.qml (.../PreTreatmentCreate.qml) (revision cd4b8fbd5ea88717e74dd4cbe00dac82d9844dde) @@ -185,6 +185,7 @@ onPressed : vTreatmentCreate.heparinDispensingRate = value onReleased : vTreatmentCreate.heparinDispensingRate = value adjustable : _heparinDispensingRateSwitch.checked + inActiveZero: true Switch { id: _heparinDispensingRateSwitch property bool active: false @@ -193,8 +194,11 @@ active = true checked = ! checked } - _heparinDispensingRate.value = 0 - _heparinDispensingRate.active = ! checked + vTreatmentCreate.heparinDispensingRate = 0 + _heparinDispensingRate.value = 0 + _heparinDispensingRate.active = ! checked + console.debug(vTreatmentCreate.heparinDispensingRate, + _heparinDispensingRate.value ) } x : width * -2 @@ -251,6 +255,7 @@ onPressed : vTreatmentCreate.heparinBolusVolume = value onReleased : vTreatmentCreate.heparinBolusVolume = value adjustable : _heparinBolusVolumeSwitch.checked + inActiveZero: true Switch { id: _heparinBolusVolumeSwitch property bool active: false @@ -259,8 +264,10 @@ active = true checked = ! checked } - _heparinBolusVolume.value = 0 - _heparinBolusVolume.active = ! checked + vTreatmentCreate.heparinBolusVolume = 0 + _heparinBolusVolume.value = 0 + _heparinBolusVolume.active = ! checked + } x : width * -2 Index: sources/model/MAbstract.cpp =================================================================== diff -u -ra674f3fdbf0649527672e2b8259731ebb323776b -rcd4b8fbd5ea88717e74dd4cbe00dac82d9844dde --- sources/model/MAbstract.cpp (.../MAbstract.cpp) (revision a674f3fdbf0649527672e2b8259731ebb323776b) +++ sources/model/MAbstract.cpp (.../MAbstract.cpp) (revision cd4b8fbd5ea88717e74dd4cbe00dac82d9844dde) @@ -19,7 +19,7 @@ using namespace Model; -// #define ROUND_FLOATS +#define ROUND_FLOATS const QMap MAbstract::_typeText = MAbstract::_typeText_make(); const QMap MAbstract::_unitText = MAbstract::_unitText_make(); Index: sources/model/hd/adjustment/MAdjustRequestsBase.h =================================================================== diff -u -r27cc308ff5113a9386899d3c8f8b29962a8498e1 -rcd4b8fbd5ea88717e74dd4cbe00dac82d9844dde --- sources/model/hd/adjustment/MAdjustRequestsBase.h (.../MAdjustRequestsBase.h) (revision 27cc308ff5113a9386899d3c8f8b29962a8498e1) +++ sources/model/hd/adjustment/MAdjustRequestsBase.h (.../MAdjustRequestsBase.h) (revision cd4b8fbd5ea88717e74dd4cbe00dac82d9844dde) @@ -20,6 +20,9 @@ //project #include "MessageGlobals.h" + +#define ROUND_FLOATS + using namespace Gui; namespace Model { @@ -42,9 +45,22 @@ * \param vParameters - list of parameter values of the model as a comma separated string. * \return QString */ - static QString toString (const QString &vStringPrefix, const QVariant &vParameters) { - QString senderID = "UI,"; - return QString(senderID + vStringPrefix + "," + vParameters.toStringList().join(',')); + static QString toString (const QString &vStringPrefix, const QVariantList &vParameters) { + const char delimiter = ','; + quint8 precision = 3; + QString senderID = "UI,"; + QString mString = senderID + vStringPrefix; + for( const auto ¶meter : vParameters ) { + if (static_cast(parameter.type()) == QMetaType::Float) // Qt has a mixed definition of QVariant::Type and QMetaType seems like a not fixed issue. + #ifdef ROUND_FLOATS + mString += delimiter + QString("%1").arg(parameter.toFloat(),0,'f',precision); + #else + mString += _delimiter + parameter.toString(); + #endif + else + mString += delimiter + parameter.toString(); + } + return mString; } public: Index: sources/model/hd/alarm/MAlarmTriggered.cpp =================================================================== diff -u -r79a6cfcb10472261f3ec26eaf0baf6f1245cd311 -rcd4b8fbd5ea88717e74dd4cbe00dac82d9844dde --- sources/model/hd/alarm/MAlarmTriggered.cpp (.../MAlarmTriggered.cpp) (revision 79a6cfcb10472261f3ec26eaf0baf6f1245cd311) +++ sources/model/hd/alarm/MAlarmTriggered.cpp (.../MAlarmTriggered.cpp) (revision cd4b8fbd5ea88717e74dd4cbe00dac82d9844dde) @@ -90,7 +90,7 @@ GuiAlarmID alarmID = static_cast(vParameters[0].toInt(&ok)); alarmText = Model::MAlarmStatus::toText(alarmID); } - return MModel::toString("AlarmTriggered", alarmText); + return MModel::toString("AlarmTriggered", { alarmText }); } Can::Can_Id MAlarmTriggeredReq::canid() { return Can::Can_Id::eChlid_UI_Sync; }