Unverified Commit 7ea4afbf authored by Don Gagne's avatar Don Gagne Committed by GitHub

Merge pull request #6744 from DonLakeFlyer/FactValueSliderFixes

Fix FactValueSlider initial value calcs
parents 048ff809 1f68cdcf
......@@ -27,7 +27,7 @@ FactValueSliderListModel::FactValueSliderListModel(Fact& fact, QObject* parent)
, _cPrevValues (0)
, _cNextValues (0)
, _initialValue (0)
, _initialValueRounded (0)
, _initialValueAtPrecision (0)
, _increment (0)
{
QQmlEngine::setObjectOwnership(this, QQmlEngine::CppOwnership);
......@@ -47,14 +47,14 @@ int FactValueSliderListModel::resetInitialValue(void)
}
_initialValue = _fact.cookedValue().toDouble();
_initialValueRounded = qRound(_initialValue);
_initialValueAtPrecision = _valueAtPrecision(_initialValue);
if (qRound(_fact.rawIncrement()) == _fact.rawIncrement()) {
_increment = qRound(_fact.cookedIncrement());
} else {
_increment = _fact.cookedIncrement();
}
_cPrevValues = qMin((_initialValue - _fact.cookedMin().toDouble()), 100.0) / _increment;
_cNextValues = qMin((_fact.cookedMax().toDouble() - _initialValue), 100.0) / _increment;
_cPrevValues = qMin((_initialValue - _fact.cookedMin().toDouble()) / _increment, 100.0);
_cNextValues = qMin((_fact.cookedMax().toDouble() - _initialValue) / _increment, 100.0);
_initialValueIndex = _cPrevValues;
int totalValueCount = _cPrevValues + 1 + _cNextValues;
......@@ -93,12 +93,9 @@ QVariant FactValueSliderListModel::data(const QModelIndex &index, int role) cons
if (cIncrementCount == 0) {
value = _initialValue;
} else {
value = _initialValueRounded + (cIncrementCount * _increment);
value = initialValueAtPrecision() + (cIncrementCount * _increment);
}
double precision = qPow(10, _fact.decimalPlaces());
double atPrecision = qRound(value * precision) / precision;
//qDebug() << value << precision << atPrecision << _fact.decimalPlaces() << _fact.name();
return QVariant(atPrecision);
return QVariant(_valueAtPrecision(value));
} else if (role == _valueIndexRole) {
return QVariant::fromValue(valueIndex);
} else {
......@@ -129,8 +126,8 @@ int FactValueSliderListModel::valueIndexAtModelIndex(int index)
return data(createIndex(index, 0), _valueIndexRole).toInt();
}
double FactValueSliderListModel::initialValueAtPrecision(void)
double FactValueSliderListModel::_valueAtPrecision(double value) const
{
double precision = qPow(10, _fact.decimalPlaces());
return qRound(_initialValue * precision) / precision;
return qRound(value * precision) / precision;
}
......@@ -25,7 +25,7 @@ public:
/// The initial value of the Fact at the meta data specified decimal place precision
Q_PROPERTY(double initialValueAtPrecision READ initialValueAtPrecision NOTIFY initialValueAtPrecisionChanged)
double initialValueAtPrecision(void);
double initialValueAtPrecision(void) const { return _initialValueAtPrecision; }
Q_INVOKABLE int resetInitialValue(void);
Q_INVOKABLE double valueAtModelIndex(int index);
......@@ -35,6 +35,8 @@ signals:
void initialValueAtPrecisionChanged(void);
private:
double _valueAtPrecision(double value) const;
// Overrides from QAbstractListModel
int rowCount(const QModelIndex & parent = QModelIndex()) const override;
QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const override;
......@@ -48,7 +50,7 @@ private:
int _cNextValues;
int _windowSize;
double _initialValue;
double _initialValueRounded;
double _initialValueAtPrecision;
double _increment;
static const int _valueRole;
......
......@@ -20,9 +20,16 @@ import QGroundControl.Palette 1.0
QGCViewDialog {
property string message
QGCLabel {
QGCFlickable {
anchors.fill: parent
wrapMode: Text.WordWrap
text: message
contentHeight: label.contentHeight
QGCLabel {
id: label
anchors.left: parent.left
anchors.right: parent.right
wrapMode: Text.WordWrap
text: message
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment