summaryrefslogtreecommitdiffstats
path: root/plugins
diff options
context:
space:
mode:
authorTero Ahola <tero.ahola@digia.com>2012-09-18 10:53:14 +0300
committerTero Ahola <tero.ahola@digia.com>2012-09-19 14:25:06 +0300
commite2171111cf472ca107ae86bec7543ff3c3e1265e (patch)
tree8d3a6745e63a179b7a177ec6a800ddd6e0873302 /plugins
parent7d9cfff99e14f8e23565e1a9d4ad3f55d81a47a8 (diff)
CategoryRange objects no longer need to be in a specific order
Diffstat (limited to 'plugins')
-rw-r--r--plugins/declarative/declarativecategoryaxis.cpp13
-rw-r--r--plugins/declarative/declarativecategoryaxis.h3
2 files changed, 15 insertions, 1 deletions
diff --git a/plugins/declarative/declarativecategoryaxis.cpp b/plugins/declarative/declarativecategoryaxis.cpp
index b898204e..f9ec64b9 100644
--- a/plugins/declarative/declarativecategoryaxis.cpp
+++ b/plugins/declarative/declarativecategoryaxis.cpp
@@ -47,12 +47,23 @@ void DeclarativeCategoryAxis::classBegin()
void DeclarativeCategoryAxis::componentComplete()
{
+ QList<QPair<QString, qreal> > ranges;
foreach(QObject *child, children()) {
if (qobject_cast<DeclarativeCategoryRange *>(child)) {
DeclarativeCategoryRange *range = qobject_cast<DeclarativeCategoryRange *>(child);
- append(range->label(), range->endValue());
+ ranges.append(QPair<QString, qreal>(range->label(), range->endValue()));
}
}
+
+ // Sort and append the range objects according to end value
+ qSort(ranges.begin(), ranges.end(), endValueLessThan);
+ for (int i(0); i < ranges.count(); i++)
+ append(ranges.at(i).first, ranges.at(i).second);
+}
+
+bool DeclarativeCategoryAxis::endValueLessThan(const QPair<QString, qreal> &value1, const QPair<QString, qreal> &value2)
+{
+ return value1.second < value2.second;
}
QDeclarativeListProperty<QObject> DeclarativeCategoryAxis::axisChildren()
diff --git a/plugins/declarative/declarativecategoryaxis.h b/plugins/declarative/declarativecategoryaxis.h
index f720c976..84aeb253 100644
--- a/plugins/declarative/declarativecategoryaxis.h
+++ b/plugins/declarative/declarativecategoryaxis.h
@@ -70,6 +70,9 @@ public Q_SLOTS:
Q_INVOKABLE void remove(const QString &label);
Q_INVOKABLE void replace(const QString& oldLabel, const QString& newLabel);
static void appendAxisChildren(QDeclarativeListProperty<QObject> *list, QObject *element);
+
+private:
+ static bool endValueLessThan(const QPair<QString, qreal> &value1, const QPair<QString, qreal> &value2);
};
QTCOMMERCIALCHART_END_NAMESPACE