##// END OF EJS Templates
Bugfix missing parent intialization in axis animations
Michal Klocek -
r303:281730f0b1cb
parent child
Show More
@@ -1,70 +1,71
1 #include "axisanimationitem_p.h"
1 #include "axisanimationitem_p.h"
2 #include <QPropertyAnimation>
2 #include <QPropertyAnimation>
3
3
4 Q_DECLARE_METATYPE(QVector<qreal>)
4 Q_DECLARE_METATYPE(QVector<qreal>)
5
5
6 QTCOMMERCIALCHART_BEGIN_NAMESPACE
6 QTCOMMERCIALCHART_BEGIN_NAMESPACE
7
7
8 const static int duration = 500;
8 const static int duration = 500;
9
9
10 AxisAnimationItem::AxisAnimationItem(AxisType type,QGraphicsItem* parent) :
10 AxisAnimationItem::AxisAnimationItem(AxisType type,QGraphicsItem* parent) :
11 AxisItem(type,parent)
11 AxisItem(type,parent)
12 {
12 {
13 }
13 }
14
14
15 AxisAnimationItem::~AxisAnimationItem()
15 AxisAnimationItem::~AxisAnimationItem()
16 {
16 {
17 }
17 }
18
18
19 void AxisAnimationItem::updateItems(QVector<qreal>& vector1)
19 void AxisAnimationItem::updateItems(QVector<qreal>& vector1)
20 {
20 {
21 QVector<qreal> vector0 = vector1;
21 QVector<qreal> vector0 = vector1;
22 calculateLayout(vector1);
22 calculateLayout(vector1);
23 if(vector1.count()==0) return;
23 if(vector1.count()==0) return;
24 vector0.resize(vector1.size());
24 vector0.resize(vector1.size());
25
25
26 AxisAnimator *animation = new AxisAnimator(this);
26 AxisAnimator *animation = new AxisAnimator(this,this);
27 animation->setDuration(duration);
27 animation->setDuration(duration);
28 animation->setEasingCurve(QEasingCurve::InOutBack);
28 animation->setEasingCurve(QEasingCurve::InOutBack);
29 animation->setKeyValueAt(0.0, qVariantFromValue(vector0));
29 animation->setKeyValueAt(0.0, qVariantFromValue(vector0));
30 animation->setKeyValueAt(1.0, qVariantFromValue(vector1));
30 animation->setKeyValueAt(1.0, qVariantFromValue(vector1));
31 animation->start(QAbstractAnimation::DeleteWhenStopped);
31 animation->start(QAbstractAnimation::DeleteWhenStopped);
32 }
32 }
33
33
34 void AxisAnimationItem::setLabelsAngle(int angle)
34 void AxisAnimationItem::setLabelsAngle(int angle)
35 {
35 {
36 AxisItem::setLabelsAngle(angle);
36 AxisItem::setLabelsAngle(angle);
37 }
37 }
38
38
39 AxisAnimator::AxisAnimator(AxisItem *axis): m_axis(axis)
39 AxisAnimator::AxisAnimator(AxisItem *axis,QObject *parent): QVariantAnimation(parent),
40 m_axis(axis)
40 {
41 {
41 }
42 }
42
43
43 AxisAnimator::~AxisAnimator()
44 AxisAnimator::~AxisAnimator()
44 {
45 {
45 }
46 }
46
47
47 QVariant AxisAnimator::interpolated(const QVariant &start, const QVariant & end, qreal progress ) const
48 QVariant AxisAnimator::interpolated(const QVariant &start, const QVariant & end, qreal progress ) const
48 {
49 {
49 QVector<qreal> startVector = qVariantValue<QVector<qreal> >(start);
50 QVector<qreal> startVector = qVariantValue<QVector<qreal> >(start);
50 QVector<qreal> endVecotr = qVariantValue<QVector<qreal> >(end);
51 QVector<qreal> endVecotr = qVariantValue<QVector<qreal> >(end);
51 QVector<qreal> result;
52 QVector<qreal> result;
52 Q_ASSERT(startVector.count() == endVecotr.count());
53 Q_ASSERT(startVector.count() == endVecotr.count());
53
54
54 for(int i =0 ;i< startVector.count();i++){
55 for(int i =0 ;i< startVector.count();i++){
55 qreal value = startVector[i] + ((endVecotr[i]- startVector[i]) * progress);//qBound(0.0, progress, 1.0));
56 qreal value = startVector[i] + ((endVecotr[i]- startVector[i]) * progress);//qBound(0.0, progress, 1.0));
56 result << value;
57 result << value;
57 }
58 }
58 return qVariantFromValue(result);
59 return qVariantFromValue(result);
59 }
60 }
60
61
61
62
62 void AxisAnimator::updateCurrentValue (const QVariant & value )
63 void AxisAnimator::updateCurrentValue (const QVariant & value )
63 {
64 {
64 QVector<qreal> vector = qVariantValue<QVector<qreal> >(value);
65 QVector<qreal> vector = qVariantValue<QVector<qreal> >(value);
65 m_axis->applyLayout(vector);
66 m_axis->applyLayout(vector);
66 }
67 }
67
68
68 #include "moc_axisanimationitem_p.cpp"
69 #include "moc_axisanimationitem_p.cpp"
69
70
70 QTCOMMERCIALCHART_END_NAMESPACE
71 QTCOMMERCIALCHART_END_NAMESPACE
@@ -1,44 +1,44
1 #ifndef AXISANIMATIONITEM_H_
1 #ifndef AXISANIMATIONITEM_H_
2 #define AXISANIMATIONITEM_H_
2 #define AXISANIMATIONITEM_H_
3
3
4 #include "domain_p.h"
4 #include "domain_p.h"
5 #include "axisitem_p.h"
5 #include "axisitem_p.h"
6 #include <QGraphicsItem>
6 #include <QGraphicsItem>
7 #include <QVariantAnimation>
7 #include <QVariantAnimation>
8
8
9 QTCOMMERCIALCHART_BEGIN_NAMESPACE
9 QTCOMMERCIALCHART_BEGIN_NAMESPACE
10
10
11 class QChartAxis;
11 class QChartAxis;
12
12
13 class AxisAnimationItem : public AxisItem
13 class AxisAnimationItem : public AxisItem
14 {
14 {
15 Q_OBJECT
15 Q_OBJECT
16
16
17 public:
17 public:
18 AxisAnimationItem(AxisType type = X_AXIS,QGraphicsItem* parent = 0);
18 AxisAnimationItem(AxisType type = X_AXIS,QGraphicsItem* parent = 0);
19 ~AxisAnimationItem();
19 ~AxisAnimationItem();
20
20
21 void setLabelsAngle(int angle);
21 void setLabelsAngle(int angle);
22
22
23 protected:
23 protected:
24 void updateItems(QVector<qreal>& vector);
24 void updateItems(QVector<qreal>& vector);
25
25
26 };
26 };
27
27
28 class AxisAnimator: public QVariantAnimation
28 class AxisAnimator: public QVariantAnimation
29 {
29 {
30 public:
30 public:
31 AxisAnimator(AxisItem *axis);
31 AxisAnimator(AxisItem *axis,QObject *parent = 0);
32 virtual ~AxisAnimator();
32 virtual ~AxisAnimator();
33 protected:
33 protected:
34 virtual QVariant interpolated (const QVariant & from, const QVariant & to, qreal progress ) const;
34 virtual QVariant interpolated (const QVariant & from, const QVariant & to, qreal progress ) const;
35 virtual void updateCurrentValue (const QVariant & value );
35 virtual void updateCurrentValue (const QVariant & value );
36 private:
36 private:
37 AxisItem* m_axis;
37 AxisItem* m_axis;
38 };
38 };
39
39
40 QTCOMMERCIALCHART_END_NAMESPACE
40 QTCOMMERCIALCHART_END_NAMESPACE
41
41
42
42
43
43
44 #endif /* AXISITEM_H_ */
44 #endif /* AXISITEM_H_ */
General Comments 0
You need to be logged in to leave comments. Login now