@@ -26,7 +26,8 | |||
|
26 | 26 | QTCOMMERCIALCHART_BEGIN_NAMESPACE |
|
27 | 27 | |
|
28 | 28 | BoxPlotAnimation::BoxPlotAnimation(BoxPlotChartItem *item) |
|
29 |
|
|
|
29 | : QObject(item), | |
|
30 | m_item(item) | |
|
30 | 31 | { |
|
31 | 32 | } |
|
32 | 33 | |
@@ -73,6 +74,12 void BoxPlotAnimation::setAnimationStart(BoxWhiskers *box) | |||
|
73 | 74 | animation->setStartData(box->m_data); |
|
74 | 75 | } |
|
75 | 76 | |
|
77 | void BoxPlotAnimation::stopAll() | |
|
78 | { | |
|
79 | foreach (BoxWhiskersAnimation *animation, m_animations.values()) | |
|
80 | animation->stopAndDestroyLater(); | |
|
81 | } | |
|
82 | ||
|
76 | 83 | //#include "moc_boxplotanimation_p.cpp" |
|
77 | 84 | |
|
78 | 85 | QTCOMMERCIALCHART_END_NAMESPACE |
@@ -39,8 +39,9 QTCOMMERCIALCHART_BEGIN_NAMESPACE | |||
|
39 | 39 | |
|
40 | 40 | class BoxPlotChartItem; |
|
41 | 41 | |
|
42 | class BoxPlotAnimation | |
|
42 | class BoxPlotAnimation : public QObject | |
|
43 | 43 | { |
|
44 | Q_OBJECT | |
|
44 | 45 | public: |
|
45 | 46 | BoxPlotAnimation(BoxPlotChartItem *item); |
|
46 | 47 | ~BoxPlotAnimation(); |
@@ -50,6 +51,7 public: | |||
|
50 | 51 | ChartAnimation *boxChangeAnimation(BoxWhiskers *box); |
|
51 | 52 | |
|
52 | 53 | void setAnimationStart(BoxWhiskers *box); |
|
54 | void stopAll(); | |
|
53 | 55 | |
|
54 | 56 | protected: |
|
55 | 57 | BoxPlotChartItem *m_item; |
@@ -58,9 +58,7 public: // from QVariantAnimation | |||
|
58 | 58 | |
|
59 | 59 | protected: |
|
60 | 60 | friend class BoxPlotAnimation; |
|
61 | BoxPlotChartItem *m_item; | |
|
62 | 61 | BoxWhiskers *m_box; |
|
63 | BoxWhiskersData *m_boxData; | |
|
64 | 62 | bool m_moveMedianLine; |
|
65 | 63 | }; |
|
66 | 64 |
@@ -32,8 +32,7 QTCOMMERCIALCHART_BEGIN_NAMESPACE | |||
|
32 | 32 | BoxPlotChartItem::BoxPlotChartItem(QBoxPlotSeries *series, QGraphicsItem *item) : |
|
33 | 33 | ChartItem(series->d_func(), item), |
|
34 | 34 | m_series(series), |
|
35 |
m_animation(0) |
|
|
36 | m_animate(0) | |
|
35 | m_animation(0) | |
|
37 | 36 | { |
|
38 | 37 | connect(series, SIGNAL(boxsetsRemoved(QList<QBoxSet *>)), this, SLOT(handleBoxsetRemove(QList<QBoxSet *>))); |
|
39 | 38 | connect(series->d_func(), SIGNAL(restructuredBoxes()), this, SLOT(handleDataStructureChanged())); |
@@ -75,7 +75,6 protected: | |||
|
75 | 75 | int m_seriesCount; |
|
76 | 76 | |
|
77 | 77 | BoxPlotAnimation *m_animation; |
|
78 | bool m_animate; | |
|
79 | 78 | |
|
80 | 79 | QRectF m_boundingRect; |
|
81 | 80 | }; |
@@ -488,9 +488,11 void QBoxPlotSeriesPrivate::initializeAnimations(QChart::AnimationOptions option | |||
|
488 | 488 | item->animation()->stopAndDestroyLater(); |
|
489 | 489 | |
|
490 | 490 | if (options.testFlag(QChart::SeriesAnimations)) |
|
491 |
|
|
|
491 | m_animation = new BoxPlotAnimation(item); | |
|
492 | 492 | else |
|
493 |
|
|
|
493 | m_animation = 0; | |
|
494 | item->setAnimation(m_animation); | |
|
495 | ||
|
494 | 496 | QAbstractSeriesPrivate::initializeAnimations(options); |
|
495 | 497 | } |
|
496 | 498 | |
@@ -506,7 +508,11 void QBoxPlotSeriesPrivate::handleSeriesRemove(QAbstractSeries *series) | |||
|
506 | 508 | Q_Q(QBoxPlotSeries); |
|
507 | 509 | |
|
508 | 510 | QBoxPlotSeries *removedSeries = static_cast<QBoxPlotSeries *>(series); |
|
511 | ||
|
512 | if (q == removedSeries && m_animation) { | |
|
513 | m_animation->stopAll(); | |
|
509 | 514 | QObject::disconnect(m_chart->d_ptr->m_dataset, 0, removedSeries->d_func(), 0); |
|
515 | } | |
|
510 | 516 | |
|
511 | 517 | // Test if series removed is me, then don't do anything |
|
512 | 518 | if (q != removedSeries) { |
@@ -37,6 +37,8 | |||
|
37 | 37 | |
|
38 | 38 | QTCOMMERCIALCHART_BEGIN_NAMESPACE |
|
39 | 39 | |
|
40 | class BoxPlotAnimation; | |
|
41 | ||
|
40 | 42 | class QBoxPlotSeriesPrivate : public QAbstractSeriesPrivate |
|
41 | 43 | { |
|
42 | 44 | Q_OBJECT |
@@ -85,6 +87,7 protected: | |||
|
85 | 87 | QPen m_pen; |
|
86 | 88 | QBrush m_brush; |
|
87 | 89 | int m_index; |
|
90 | BoxPlotAnimation *m_animation; | |
|
88 | 91 | |
|
89 | 92 | private: |
|
90 | 93 | Q_DECLARE_PUBLIC(QBoxPlotSeries) |
General Comments 0
You need to be logged in to leave comments.
Login now