diff options
Diffstat (limited to 'src/charts/xychart/qxyseries.cpp')
-rw-r--r-- | src/charts/xychart/qxyseries.cpp | 55 |
1 files changed, 36 insertions, 19 deletions
diff --git a/src/charts/xychart/qxyseries.cpp b/src/charts/xychart/qxyseries.cpp index cebe08e6..05a92075 100644 --- a/src/charts/xychart/qxyseries.cpp +++ b/src/charts/xychart/qxyseries.cpp @@ -850,24 +850,8 @@ void QXYSeries::setPointConfiguration(const int index, const QXYSeries::PointCon const QVariant &value) { Q_D(QXYSeries); - QHash<QXYSeries::PointConfiguration, QVariant> conf; - if (d->m_pointsConfiguration.contains(index)) - conf = d->m_pointsConfiguration[index]; - - bool callSignal = false; - if (conf.contains(key)) { - if (conf[key] != value) - callSignal = true; - } else { - callSignal = true; - } - - conf[key] = value; - d->m_pointsConfiguration[index] = conf; - - if (callSignal) { + if (d->setPointConfiguration(index, key, value)) emit pointsConfigurationChanged(d->m_pointsConfiguration); - } } /*! @@ -939,6 +923,7 @@ void QXYSeries::sizeBy(const QList<qreal> &sourceData, const qreal minSize, cons const qreal range = max - min; const qreal sizeRange = maxSize - minSize; + bool changed = false; for (int i = 0; i < sourceData.size() && i < d->m_points.size(); ++i) { qreal pointSize = minSize; @@ -947,8 +932,12 @@ void QXYSeries::sizeBy(const QList<qreal> &sourceData, const qreal minSize, cons const qreal percentage = startValue / range; pointSize = minSize + (percentage * sizeRange); } - setPointConfiguration(i, QXYSeries::PointConfiguration::Size, pointSize); + if (d->setPointConfiguration(i, QXYSeries::PointConfiguration::Size, pointSize)) + changed = true; } + + if (changed) + emit pointsConfigurationChanged(d->m_pointsConfiguration); } /*! @@ -1019,12 +1008,18 @@ void QXYSeries::colorBy(const QList<qreal> &sourceData, const QLinearGradient &g const qreal diff = min < 0 ? qAbs(min) : 0; min += diff; + bool changed = false; + for (int i = 0; i < sourceData.size() && i < d->m_points.size(); ++i) { const qreal startValue = qMax(0.0, sourceData.at(i) + diff - min); const qreal percentage = startValue / range; QColor color = image.pixelColor(0, qMin(percentage * imgSize, imgSize - 1)); - setPointConfiguration(i, QXYSeries::PointConfiguration::Color, color); + if (d->setPointConfiguration(i, QXYSeries::PointConfiguration::Color, color)) + changed = true; } + + if (changed) + emit pointsConfigurationChanged(d->m_pointsConfiguration); } /*! @@ -2012,6 +2007,28 @@ QList<qreal> QXYSeriesPrivate::colorByData() const return m_colorByData; } +bool QXYSeriesPrivate::setPointConfiguration(const int index, + const QXYSeries::PointConfiguration key, + const QVariant &value) +{ + QHash<QXYSeries::PointConfiguration, QVariant> conf; + if (m_pointsConfiguration.contains(index)) + conf = m_pointsConfiguration[index]; + + bool changed = false; + if (conf.contains(key)) { + if (conf[key] != value) + changed = true; + } else { + changed = true; + } + + conf[key] = value; + m_pointsConfiguration[index] = conf; + + return changed; +} + QT_END_NAMESPACE #include "moc_qxyseries.cpp" |