@@ -57,6 +57,11 void AxisAnimation::setValues(QVector<qreal> &oldLayout, QVector<qreal> &newLayo | |||||
57 | { |
|
57 | { | |
58 | if (state() != QAbstractAnimation::Stopped) stop(); |
|
58 | if (state() != QAbstractAnimation::Stopped) stop(); | |
59 |
|
59 | |||
|
60 | // TODO: cannot return even if layout is empty | |||
|
61 | // New layout is not set properly without it (crash) | |||
|
62 | // if (newLayout.count() == 0) | |||
|
63 | // return; | |||
|
64 | ||||
60 | switch (m_type) { |
|
65 | switch (m_type) { | |
61 | case ZoomOutAnimation: { |
|
66 | case ZoomOutAnimation: { | |
62 | QRectF rect = m_axis->gridGeometry(); |
|
67 | QRectF rect = m_axis->gridGeometry(); | |
@@ -125,6 +130,7 void AxisAnimation::updateCurrentValue(const QVariant &value) | |||||
125 | { |
|
130 | { | |
126 | if (state() != QAbstractAnimation::Stopped) { //workaround |
|
131 | if (state() != QAbstractAnimation::Stopped) { //workaround | |
127 | QVector<qreal> vector = qvariant_cast<QVector<qreal> >(value); |
|
132 | QVector<qreal> vector = qvariant_cast<QVector<qreal> >(value); | |
|
133 | // Q_ASSERT(vector.count() != 0); | |||
128 | m_axis->setLayout(vector); |
|
134 | m_axis->setLayout(vector); | |
129 | m_axis->updateGeometry(); |
|
135 | m_axis->updateGeometry(); | |
130 | } |
|
136 | } |
@@ -31,6 +31,8 | |||||
31 |
|
31 | |||
32 | QTCOMMERCIALCHART_BEGIN_NAMESPACE |
|
32 | QTCOMMERCIALCHART_BEGIN_NAMESPACE | |
33 |
|
33 | |||
|
34 | //TODO: optimize : remove points which are not visible | |||
|
35 | ||||
34 | AreaChartItem::AreaChartItem(QAreaSeries *areaSeries, QGraphicsItem* item) |
|
36 | AreaChartItem::AreaChartItem(QAreaSeries *areaSeries, QGraphicsItem* item) | |
35 | : ChartItem(areaSeries->d_func(),item), |
|
37 | : ChartItem(areaSeries->d_func(),item), | |
36 | m_series(areaSeries), |
|
38 | m_series(areaSeries), |
@@ -248,6 +248,7 void QBarCategoryAxis::remove(const QString &category) | |||||
248 | setRange(d->m_minCategory, d->m_categories.last()); |
|
248 | setRange(d->m_minCategory, d->m_categories.last()); | |
249 | } else { |
|
249 | } else { | |
250 | d->updateCategoryDomain(); |
|
250 | d->updateCategoryDomain(); | |
|
251 | //TODO:: d->emitUpdated(); | |||
251 | } |
|
252 | } | |
252 | } else { |
|
253 | } else { | |
253 | setRange(QString::null, QString::null); |
|
254 | setRange(QString::null, QString::null); | |
@@ -281,6 +282,7 void QBarCategoryAxis::insert(int index, const QString &category) | |||||
281 | setRange(d->m_minCategory, d->m_categories.last()); |
|
282 | setRange(d->m_minCategory, d->m_categories.last()); | |
282 | } else { |
|
283 | } else { | |
283 | d->updateCategoryDomain(); |
|
284 | d->updateCategoryDomain(); | |
|
285 | //TODO:: d->emitUpdated(); | |||
284 | } |
|
286 | } | |
285 |
|
287 | |||
286 | emit categoriesChanged(); |
|
288 | emit categoriesChanged(); | |
@@ -304,6 +306,8 void QBarCategoryAxis::replace(const QString &oldCategory, const QString &newCat | |||||
304 | setRange(newCategory, d->m_maxCategory); |
|
306 | setRange(newCategory, d->m_maxCategory); | |
305 | } else if (d->m_maxCategory == oldCategory) { |
|
307 | } else if (d->m_maxCategory == oldCategory) { | |
306 | setRange(d->m_minCategory, newCategory); |
|
308 | setRange(d->m_minCategory, newCategory); | |
|
309 | } else { | |||
|
310 | //TODO:: d->emitUpdated(); | |||
307 | } |
|
311 | } | |
308 | emit categoriesChanged(); |
|
312 | emit categoriesChanged(); | |
309 | emit countChanged(); |
|
313 | emit countChanged(); |
@@ -67,6 +67,7 QVector<qreal> ChartCategoryAxisX::calculateLayout() const | |||||
67 |
|
67 | |||
68 | void ChartCategoryAxisX::updateGeometry() |
|
68 | void ChartCategoryAxisX::updateGeometry() | |
69 | { |
|
69 | { | |
|
70 | //TODO: this is not optimal when many categories :( , create only visible lables | |||
70 | setLabels(m_axis->categoriesLabels() << ""); |
|
71 | setLabels(m_axis->categoriesLabels() << ""); | |
71 | HorizontalAxis::updateGeometry(); |
|
72 | HorizontalAxis::updateGeometry(); | |
72 | } |
|
73 | } |
@@ -227,6 +227,7 void QCategoryAxis::remove(const QString &categoryLabel) | |||||
227 | d->m_categoriesMap.insert(label, range); |
|
227 | d->m_categoriesMap.insert(label, range); | |
228 | } |
|
228 | } | |
229 | } |
|
229 | } | |
|
230 | //TODO:: d->emitUpdated(); | |||
230 | } |
|
231 | } | |
231 | } |
|
232 | } | |
232 |
|
233 | |||
@@ -250,6 +251,7 void QCategoryAxis::replaceLabel(const QString &oldLabel, const QString &newLabe | |||||
250 | Range range = d->m_categoriesMap.value(oldLabel); |
|
251 | Range range = d->m_categoriesMap.value(oldLabel); | |
251 | d->m_categoriesMap.remove(oldLabel); |
|
252 | d->m_categoriesMap.remove(oldLabel); | |
252 | d->m_categoriesMap.insert(newLabel, range); |
|
253 | d->m_categoriesMap.insert(newLabel, range); | |
|
254 | //TODO:: d->emitUpdated(); | |||
253 | } |
|
255 | } | |
254 | } |
|
256 | } | |
255 |
|
257 |
@@ -468,6 +468,7 QPen QAbstractAxis::linePen() const | |||||
468 | return d_ptr->m_axisPen; |
|
468 | return d_ptr->m_axisPen; | |
469 | } |
|
469 | } | |
470 |
|
470 | |||
|
471 | //TODO: remove me 2.0 | |||
471 | void QAbstractAxis::setLinePenColor(QColor color) |
|
472 | void QAbstractAxis::setLinePenColor(QColor color) | |
472 | { |
|
473 | { | |
473 | QPen p = d_ptr->m_axisPen; |
|
474 | QPen p = d_ptr->m_axisPen; | |
@@ -613,6 +614,7 int QAbstractAxis::labelsAngle() const | |||||
613 | { |
|
614 | { | |
614 | return d_ptr->m_labelsAngle; |
|
615 | return d_ptr->m_labelsAngle; | |
615 | } |
|
616 | } | |
|
617 | //TODO: remove me 2.0 | |||
616 | void QAbstractAxis::setLabelsColor(QColor color) |
|
618 | void QAbstractAxis::setLabelsColor(QColor color) | |
617 | { |
|
619 | { | |
618 | QBrush b = d_ptr->m_labelsBrush; |
|
620 | QBrush b = d_ptr->m_labelsBrush; | |
@@ -861,6 +863,8 void QAbstractAxis::setRange(const QVariant &min, const QVariant &max) | |||||
861 | /*! |
|
863 | /*! | |
862 | Returns the orientation in which the axis is being used (Vertical or Horizontal) |
|
864 | Returns the orientation in which the axis is being used (Vertical or Horizontal) | |
863 | */ |
|
865 | */ | |
|
866 | // NOTE: should have const but it breaks BC: | |||
|
867 | // http://techbase.kde.org/Policies/Binary_Compatibility_Examples#Change_the_CV-qualifiers_of_a_member_function | |||
864 | Qt::Orientation QAbstractAxis::orientation() |
|
868 | Qt::Orientation QAbstractAxis::orientation() | |
865 | { |
|
869 | { | |
866 | return d_ptr->orientation(); |
|
870 | return d_ptr->orientation(); | |
@@ -922,6 +926,7 void QAbstractAxisPrivate::initializeTheme(ChartTheme* theme, bool forced) | |||||
922 |
|
926 | |||
923 | bool axisX = m_orientation == Qt::Horizontal; |
|
927 | bool axisX = m_orientation == Qt::Horizontal; | |
924 |
|
928 | |||
|
929 | //TODO: introduce axis brush | |||
925 | if (m_visible) { |
|
930 | if (m_visible) { | |
926 | if (m_arrowVisible) { |
|
931 | if (m_arrowVisible) { | |
927 | if (forced || pen == m_axisPen) { |
|
932 | if (forced || pen == m_axisPen) { |
@@ -145,7 +145,7 public: | |||||
145 | void setShadesBorderColor(QColor color); |
|
145 | void setShadesBorderColor(QColor color); | |
146 | QColor shadesBorderColor() const; |
|
146 | QColor shadesBorderColor() const; | |
147 |
|
147 | |||
148 | Qt::Orientation orientation(); |
|
148 | Qt::Orientation orientation(); //TODO: missing const <- BC (2.0) | |
149 | Qt::Alignment alignment() const; |
|
149 | Qt::Alignment alignment() const; | |
150 |
|
150 | |||
151 | //range handling |
|
151 | //range handling |
@@ -60,6 +60,7 public: | |||||
60 | void setLabelFormat(const QString &format); |
|
60 | void setLabelFormat(const QString &format); | |
61 | QString labelFormat() const; |
|
61 | QString labelFormat() const; | |
62 |
|
62 | |||
|
63 | //TODO: deprecated! (2.0) | |||
63 | void setNiceNumbersEnabled(bool enable = true); |
|
64 | void setNiceNumbersEnabled(bool enable = true); | |
64 | bool niceNumbersEnabled() const; |
|
65 | bool niceNumbersEnabled() const; | |
65 |
|
66 |
@@ -61,7 +61,7 private: | |||||
61 | int m_tickCount; |
|
61 | int m_tickCount; | |
62 | QString m_format; |
|
62 | QString m_format; | |
63 | bool m_applying; |
|
63 | bool m_applying; | |
64 | bool m_niceNumbersEnabled; |
|
64 | bool m_niceNumbersEnabled; //TODO: this deprecated (2.0) | |
65 | Q_DECLARE_PUBLIC(QValueAxis) |
|
65 | Q_DECLARE_PUBLIC(QValueAxis) | |
66 | }; |
|
66 | }; | |
67 |
|
67 |
@@ -124,6 +124,7 public: | |||||
124 |
|
124 | |||
125 | void startAnimation(ChartAnimation *animation); |
|
125 | void startAnimation(ChartAnimation *animation); | |
126 |
|
126 | |||
|
127 | //TODO refactor | |||
127 | void setState(State state,QPointF point); |
|
128 | void setState(State state,QPointF point); | |
128 | State state() const { return m_state; } |
|
129 | State state() const { return m_state; } | |
129 | QPointF statePoint() const { return m_statePoint; } |
|
130 | QPointF statePoint() const { return m_statePoint; } |
@@ -183,6 +183,9 QList<QGradient> ChartThemeManager::generateSeriesGradients(const QList<QColor>& | |||||
183 | qreal h = color.hsvHueF(); |
|
183 | qreal h = color.hsvHueF(); | |
184 | qreal s = color.hsvSaturationF(); |
|
184 | qreal s = color.hsvSaturationF(); | |
185 |
|
185 | |||
|
186 | // TODO: tune the algorithm to give nice results with most base colors defined in | |||
|
187 | // most themes. The rest of the gradients we can define manually in theme specific | |||
|
188 | // implementation. | |||
186 | QColor start = color; |
|
189 | QColor start = color; | |
187 | start.setHsvF(h, 0.0, 1.0); |
|
190 | start.setHsvF(h, 0.0, 1.0); | |
188 | g.setColorAt(0.0, start); |
|
191 | g.setColorAt(0.0, start); |
@@ -39,6 +39,7 | |||||
39 |
|
39 | |||
40 | QTCOMMERCIALCHART_BEGIN_NAMESPACE |
|
40 | QTCOMMERCIALCHART_BEGIN_NAMESPACE | |
41 |
|
41 | |||
|
42 | // TODO: check these | |||
42 | class QAbstractSeries; |
|
43 | class QAbstractSeries; | |
43 | class QAreaSeries; |
|
44 | class QAreaSeries; | |
44 | class QXYSeries; |
|
45 | class QXYSeries; |
@@ -447,6 +447,15 QRectF QChart::plotArea() const | |||||
447 | return d_ptr->m_presenter->geometry(); |
|
447 | return d_ptr->m_presenter->geometry(); | |
448 | } |
|
448 | } | |
449 |
|
449 | |||
|
450 | ///*! | |||
|
451 | // TODO: Dummy. | |||
|
452 | // Adjust the ranges of the axes so that all the data of the specified \a series is visible | |||
|
453 | // */ | |||
|
454 | //void QChart::adjustViewToSeries(QAbstractSeries* series) | |||
|
455 | //{ | |||
|
456 | // // | |||
|
457 | //} | |||
|
458 | ||||
450 | /*! |
|
459 | /*! | |
451 | Sets animation \a options for the chart |
|
460 | Sets animation \a options for the chart | |
452 | */ |
|
461 | */ |
@@ -177,6 +177,7 void ScatterChartItem::handleUpdated() | |||||
177 | setOpacity(m_series->opacity()); |
|
177 | setOpacity(m_series->opacity()); | |
178 |
|
178 | |||
179 | if (recreate) { |
|
179 | if (recreate) { | |
|
180 | // TODO: optimize handleUpdate to recreate points only in case shape changed | |||
180 | deletePoints(count); |
|
181 | deletePoints(count); | |
181 | createPoints(count); |
|
182 | createPoints(count); | |
182 |
|
183 |
@@ -30,6 +30,8 | |||||
30 |
|
30 | |||
31 | QTCOMMERCIALCHART_BEGIN_NAMESPACE |
|
31 | QTCOMMERCIALCHART_BEGIN_NAMESPACE | |
32 |
|
32 | |||
|
33 | //TODO: optimize : remove points which are not visible | |||
|
34 | ||||
33 | XYChart::XYChart(QXYSeries *series,QGraphicsItem* item): |
|
35 | XYChart::XYChart(QXYSeries *series,QGraphicsItem* item): | |
34 | ChartItem(series->d_func(),item), |
|
36 | ChartItem(series->d_func(),item), | |
35 | m_series(series), |
|
37 | m_series(series), |
General Comments 0
You need to be logged in to leave comments.
Login now