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) ...@@ -27,7 +27,7 @@ FactValueSliderListModel::FactValueSliderListModel(Fact& fact, QObject* parent)
, _cPrevValues (0) , _cPrevValues (0)
, _cNextValues (0) , _cNextValues (0)
, _initialValue (0) , _initialValue (0)
, _initialValueRounded (0) , _initialValueAtPrecision (0)
, _increment (0) , _increment (0)
{ {
QQmlEngine::setObjectOwnership(this, QQmlEngine::CppOwnership); QQmlEngine::setObjectOwnership(this, QQmlEngine::CppOwnership);
...@@ -47,14 +47,14 @@ int FactValueSliderListModel::resetInitialValue(void) ...@@ -47,14 +47,14 @@ int FactValueSliderListModel::resetInitialValue(void)
} }
_initialValue = _fact.cookedValue().toDouble(); _initialValue = _fact.cookedValue().toDouble();
_initialValueRounded = qRound(_initialValue); _initialValueAtPrecision = _valueAtPrecision(_initialValue);
if (qRound(_fact.rawIncrement()) == _fact.rawIncrement()) { if (qRound(_fact.rawIncrement()) == _fact.rawIncrement()) {
_increment = qRound(_fact.cookedIncrement()); _increment = qRound(_fact.cookedIncrement());
} else { } else {
_increment = _fact.cookedIncrement(); _increment = _fact.cookedIncrement();
} }
_cPrevValues = qMin((_initialValue - _fact.cookedMin().toDouble()), 100.0) / _increment; _cPrevValues = qMin((_initialValue - _fact.cookedMin().toDouble()) / _increment, 100.0);
_cNextValues = qMin((_fact.cookedMax().toDouble() - _initialValue), 100.0) / _increment; _cNextValues = qMin((_fact.cookedMax().toDouble() - _initialValue) / _increment, 100.0);
_initialValueIndex = _cPrevValues; _initialValueIndex = _cPrevValues;
int totalValueCount = _cPrevValues + 1 + _cNextValues; int totalValueCount = _cPrevValues + 1 + _cNextValues;
...@@ -93,12 +93,9 @@ QVariant FactValueSliderListModel::data(const QModelIndex &index, int role) cons ...@@ -93,12 +93,9 @@ QVariant FactValueSliderListModel::data(const QModelIndex &index, int role) cons
if (cIncrementCount == 0) { if (cIncrementCount == 0) {
value = _initialValue; value = _initialValue;
} else { } else {
value = _initialValueRounded + (cIncrementCount * _increment); value = initialValueAtPrecision() + (cIncrementCount * _increment);
} }
double precision = qPow(10, _fact.decimalPlaces()); return QVariant(_valueAtPrecision(value));
double atPrecision = qRound(value * precision) / precision;
//qDebug() << value << precision << atPrecision << _fact.decimalPlaces() << _fact.name();
return QVariant(atPrecision);
} else if (role == _valueIndexRole) { } else if (role == _valueIndexRole) {
return QVariant::fromValue(valueIndex); return QVariant::fromValue(valueIndex);
} else { } else {
...@@ -129,8 +126,8 @@ int FactValueSliderListModel::valueIndexAtModelIndex(int index) ...@@ -129,8 +126,8 @@ int FactValueSliderListModel::valueIndexAtModelIndex(int index)
return data(createIndex(index, 0), _valueIndexRole).toInt(); return data(createIndex(index, 0), _valueIndexRole).toInt();
} }
double FactValueSliderListModel::initialValueAtPrecision(void) double FactValueSliderListModel::_valueAtPrecision(double value) const
{ {
double precision = qPow(10, _fact.decimalPlaces()); double precision = qPow(10, _fact.decimalPlaces());
return qRound(_initialValue * precision) / precision; return qRound(value * precision) / precision;
} }
...@@ -25,7 +25,7 @@ public: ...@@ -25,7 +25,7 @@ public:
/// The initial value of the Fact at the meta data specified decimal place precision /// The initial value of the Fact at the meta data specified decimal place precision
Q_PROPERTY(double initialValueAtPrecision READ initialValueAtPrecision NOTIFY initialValueAtPrecisionChanged) Q_PROPERTY(double initialValueAtPrecision READ initialValueAtPrecision NOTIFY initialValueAtPrecisionChanged)
double initialValueAtPrecision(void); double initialValueAtPrecision(void) const { return _initialValueAtPrecision; }
Q_INVOKABLE int resetInitialValue(void); Q_INVOKABLE int resetInitialValue(void);
Q_INVOKABLE double valueAtModelIndex(int index); Q_INVOKABLE double valueAtModelIndex(int index);
...@@ -35,6 +35,8 @@ signals: ...@@ -35,6 +35,8 @@ signals:
void initialValueAtPrecisionChanged(void); void initialValueAtPrecisionChanged(void);
private: private:
double _valueAtPrecision(double value) const;
// Overrides from QAbstractListModel // Overrides from QAbstractListModel
int rowCount(const QModelIndex & parent = QModelIndex()) const override; int rowCount(const QModelIndex & parent = QModelIndex()) const override;
QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const override; QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const override;
...@@ -48,7 +50,7 @@ private: ...@@ -48,7 +50,7 @@ private:
int _cNextValues; int _cNextValues;
int _windowSize; int _windowSize;
double _initialValue; double _initialValue;
double _initialValueRounded; double _initialValueAtPrecision;
double _increment; double _increment;
static const int _valueRole; static const int _valueRole;
......
...@@ -20,9 +20,16 @@ import QGroundControl.Palette 1.0 ...@@ -20,9 +20,16 @@ import QGroundControl.Palette 1.0
QGCViewDialog { QGCViewDialog {
property string message property string message
QGCLabel { QGCFlickable {
anchors.fill: parent anchors.fill: parent
wrapMode: Text.WordWrap contentHeight: label.contentHeight
text: message
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