diff --git a/src/axis/qabstractaxis.cpp b/src/axis/qabstractaxis.cpp index cb5ab69..ca38fec 100644 --- a/src/axis/qabstractaxis.cpp +++ b/src/axis/qabstractaxis.cpp @@ -544,15 +544,15 @@ void QAbstractAxis::hide() } -void QAbstractAxis::setMin(const qreal min) +void QAbstractAxis::setMin(const QVariant &min) { d_ptr->setMin(min); } -void QAbstractAxis::setMax(const qreal max) +void QAbstractAxis::setMax(const QVariant &max) { d_ptr->setMax(max); } -void QAbstractAxis::setRange(const qreal min, const qreal max) +void QAbstractAxis::setRange(const QVariant &min, const QVariant &max) { d_ptr->setRange(min,max); } diff --git a/src/axis/qabstractaxis.h b/src/axis/qabstractaxis.h index 56b07d6..55c4016 100644 --- a/src/axis/qabstractaxis.h +++ b/src/axis/qabstractaxis.h @@ -101,9 +101,9 @@ public: QColor shadesBorderColor() const; //range handling - void setMin(const qreal min); - void setMax(const qreal max); - void setRange(const qreal min, const qreal max); + void setMin(const QVariant &min); + void setMax(const QVariant &max); + void setRange(const QVariant &min, const QVariant &max); void show(); void hide(); diff --git a/src/axis/qabstractaxis_p.h b/src/axis/qabstractaxis_p.h index c51db87..33cf781 100644 --- a/src/axis/qabstractaxis_p.h +++ b/src/axis/qabstractaxis_p.h @@ -52,9 +52,9 @@ public: virtual void updateRange() = 0; protected: - virtual void setMin(const qreal min) = 0; - virtual void setMax(const qreal max) = 0; - virtual void setRange(const qreal min, const qreal max, bool force = false) = 0; + virtual void setMin(const QVariant &min) = 0; + virtual void setMax(const QVariant &max) = 0; + virtual void setRange(const QVariant &min, const QVariant &max, bool force = false) = 0; virtual int ticksCount() const = 0; public: diff --git a/src/axis/qcategoriesaxis.cpp b/src/axis/qcategoriesaxis.cpp index cff7386..57f7a7e 100644 --- a/src/axis/qcategoriesaxis.cpp +++ b/src/axis/qcategoriesaxis.cpp @@ -233,18 +233,23 @@ void QCategoriesAxisPrivate::setRangeCategory(const QString& minCategory, const setRange(minIndex -0.5, maxIndex + 0.5); } -void QCategoriesAxisPrivate::setMin(const qreal min) +void QCategoriesAxisPrivate::setMin(const QVariant &min) { setRange(min,m_max); } -void QCategoriesAxisPrivate::setMax(const qreal max) +void QCategoriesAxisPrivate::setMax(const QVariant &max) { setRange(m_min,max); } -void QCategoriesAxisPrivate::setRange(const qreal min, const qreal max, bool force) +void QCategoriesAxisPrivate::setRange(const QVariant &min, const QVariant &max, bool force) { + Q_UNUSED(min); + Q_UNUSED(max); + Q_UNUSED(force); + // TODO: refactor +/* if (max <= min) { // max must be greater than min return; @@ -265,6 +270,7 @@ void QCategoriesAxisPrivate::setRange(const qreal min, const qreal max, bool for emit this->changed(m_min, m_max, qCeil(m_max) -qCeil(m_min) +1, false); emit q->categoriesChanged(); } +*/ } int QCategoriesAxisPrivate::ticksCount() const diff --git a/src/axis/qcategoriesaxis.h b/src/axis/qcategoriesaxis.h index 87f9e98..7f99931 100644 --- a/src/axis/qcategoriesaxis.h +++ b/src/axis/qcategoriesaxis.h @@ -59,6 +59,10 @@ public: QString maxCategory() const; void setCategoryRange(const QString& minCategory, const QString& maxCategory); + void setMin(const QVariant &min); + void setMax(const QVariant &max); + void setRange(const QVariant &min, const QVariant &max); + Q_SIGNALS: void categoriesChanged(); diff --git a/src/axis/qcategoriesaxis_p.h b/src/axis/qcategoriesaxis_p.h index 5a4247c..c940b9f 100644 --- a/src/axis/qcategoriesaxis_p.h +++ b/src/axis/qcategoriesaxis_p.h @@ -53,9 +53,9 @@ private: void setRangeCategory(const QString& minCategory, const QString& maxCategory); //range handling - void setMin(const qreal min); - void setMax(const qreal max); - void setRange(const qreal min, const qreal max, bool force = false); + void setMin(const QVariant &min); + void setMax(const QVariant &max); + void setRange(const QVariant &min, const QVariant &max, bool force = false); int ticksCount() const; Q_SIGNALS: diff --git a/src/axis/qvaluesaxis.cpp b/src/axis/qvaluesaxis.cpp index 328b04c..24f656c 100644 --- a/src/axis/qvaluesaxis.cpp +++ b/src/axis/qvaluesaxis.cpp @@ -151,6 +151,23 @@ qreal QValuesAxis::max() const void QValuesAxis::setRange(qreal min, qreal max) { Q_D(QValuesAxis); + bool changed = false; + if (!qFuzzyIsNull(d->m_min - min)) { + d->m_min = min; + changed = true; + emit minChanged(min); + } + + if (!qFuzzyIsNull(d->m_max - max)) { + d->m_max = max; + changed = true; + emit maxChanged(max); + } + + if (changed) { + emit rangeChanged(d->m_min,d->m_max); + emit d->changed(d->m_min, d->m_max, d->m_ticksCount, d->m_niceNumbers); + } d->setRange(min,max); } @@ -218,36 +235,31 @@ void QValuesAxisPrivate::handleAxisRangeChanged(qreal min, qreal max,int count) } -void QValuesAxisPrivate::setMin(const qreal min) +void QValuesAxisPrivate::setMin(const QVariant &min) { - setRange(min,m_max); + Q_Q(QValuesAxis); + bool ok; + qreal value = min.toReal(&ok); + if(ok) q->setMin(value); } -void QValuesAxisPrivate::setMax(const qreal max) +void QValuesAxisPrivate::setMax(const QVariant &max) { - setRange(m_min,max); + Q_Q(QValuesAxis); + bool ok; + qreal value = max.toReal(&ok); + if(ok) q->setMax(value); } -void QValuesAxisPrivate::setRange(const qreal min, const qreal max, bool force) +void QValuesAxisPrivate::setRange(const QVariant &min, const QVariant &max, bool force) { + Q_UNUSED(force); // TODO: use this Q_Q(QValuesAxis); - bool changed = false; - if (!qFuzzyIsNull(m_min - min)) { - m_min = min; - changed = true; - emit q->minChanged(min); - } - - if (!qFuzzyIsNull(m_max - max)) { - m_max = max; - changed = true; - emit q->maxChanged(max); - } - - if ((changed) ||(force)) { - emit q->rangeChanged(m_min,m_max); - emit this->changed(m_min, m_max, m_ticksCount, m_niceNumbers); - } + bool ok1; + bool ok2; + qreal value1 = min.toReal(&ok1); + qreal value2 = max.toReal(&ok2); + if(ok1&&ok2) q->setRange(value1,value2); } int QValuesAxisPrivate::ticksCount() const diff --git a/src/axis/qvaluesaxis_p.h b/src/axis/qvaluesaxis_p.h index 6442d3f..9ffb1dd 100644 --- a/src/axis/qvaluesaxis_p.h +++ b/src/axis/qvaluesaxis_p.h @@ -53,9 +53,9 @@ public: void updateRange(); protected: - void setMin(const qreal min); - void setMax(const qreal max); - void setRange(const qreal min, const qreal max, bool force = false); + void setMin(const QVariant &min); + void setMax(const QVariant &max); + void setRange(const QVariant &min, const QVariant &max, bool force = false); int ticksCount() const; private: