5#include <QtCore/QtMath>
10 : QAbstractListModel(parent)
16FactValueSliderListModel::~FactValueSliderListModel()
21int FactValueSliderListModel::resetInitialValue()
25 beginRemoveRows(QModelIndex(), 0, _cValues - 1);
30 _initialValue = _fact.cookedValue().toDouble();
31 _initialValueAtPrecision = _valueAtPrecision(_initialValue);
32 if (qRound(_fact.rawIncrement()) == _fact.rawIncrement()) {
33 _increment = qRound(_fact.cookedIncrement());
35 _increment = _fact.cookedIncrement();
37 _cPrevValues = qMin((_initialValue - _fact.cookedMin().toDouble()) / _increment, 100.0);
38 _cNextValues = qMin((_fact.cookedMax().toDouble() - _initialValue) / _increment, 100.0);
39 _initialValueIndex = _cPrevValues;
41 const int totalValueCount = _cPrevValues + 1 + _cNextValues;
42 beginInsertRows(QModelIndex(), 0, totalValueCount - 1);
43 _cValues = totalValueCount;
48 return _initialValueIndex;
51QVariant FactValueSliderListModel::data(
const QModelIndex &index,
int role)
const
55 if (!index.isValid()) {
59 const int valueIndex = index.row();
60 if (valueIndex >= _cValues) {
64 if (role == _valueRole) {
66 const int cIncrementCount = valueIndex - _initialValueIndex;
67 if (cIncrementCount == 0) {
68 value = _initialValue;
70 value = initialValueAtPrecision() + (cIncrementCount * _increment);
72 return QVariant(_valueAtPrecision(value));
73 }
else if (role == _valueIndexRole) {
74 return QVariant::fromValue(valueIndex);
80QHash<int, QByteArray> FactValueSliderListModel::roleNames()
const
82 QHash<int, QByteArray> hash;
84 hash[_valueRole] =
"value";
85 hash[_valueIndexRole] =
"valueIndex";
90double FactValueSliderListModel::valueAtModelIndex(
int index)
const
92 return data(createIndex(index, 0), _valueRole).toDouble();
95int FactValueSliderListModel::valueIndexAtModelIndex(
int index)
const
97 return data(createIndex(index, 0), _valueIndexRole).toInt();
100double FactValueSliderListModel::_valueAtPrecision(
double value)
const
102 const double precision = qPow(10, _fact.decimalPlaces());
103 return (qRound(value * precision) / precision);
#define QGC_LOGGING_CATEGORY(name, categoryStr)
Provides a list model of values for incrementing/decrementing the value of a Fact.
void initialValueAtPrecisionChanged()
A Fact is used to hold a single value within the system.