summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTitta Heikkala <titta.heikkala@theqtcompany.com>2015-09-11 08:50:08 +0300
committerTitta Heikkala <titta.heikkala@theqtcompany.com>2015-09-11 08:34:27 +0000
commit97642714ab1ee0484993593ad2de67a2053a9a57 (patch)
tree0043ba93314b41a2d4785c1afe0ceef258b15969
parent6ae307b421c60b7d0e4dde871451f670479b072b (diff)
Added possibility to set duration and easing curve for chart animation
Changed the animation API so that it's possible to change the duration and easing curve of the chart animation. Change-Id: I2ab3e0664a7f30bc2bb7085daa1d97181edb90ba Task-number: QTRD-3496 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@theqtcompany.com>
-rw-r--r--src/charts/animations/axisanimation.cpp6
-rw-r--r--src/charts/animations/axisanimation_p.h2
-rw-r--r--src/charts/animations/baranimation.cpp6
-rw-r--r--src/charts/animations/baranimation_p.h2
-rw-r--r--src/charts/animations/boxplotanimation.cpp9
-rw-r--r--src/charts/animations/boxplotanimation_p.h4
-rw-r--r--src/charts/animations/boxwhiskersanimation.cpp7
-rw-r--r--src/charts/animations/boxwhiskersanimation_p.h3
-rw-r--r--src/charts/animations/pieanimation.cpp16
-rw-r--r--src/charts/animations/pieanimation_p.h4
-rw-r--r--src/charts/animations/scatteranimation.cpp4
-rw-r--r--src/charts/animations/scatteranimation_p.h2
-rw-r--r--src/charts/animations/splineanimation.cpp4
-rw-r--r--src/charts/animations/splineanimation_p.h2
-rw-r--r--src/charts/animations/xyanimation.cpp6
-rw-r--r--src/charts/animations/xyanimation_p.h2
-rw-r--r--src/charts/areachart/qareaseries.cpp11
-rw-r--r--src/charts/areachart/qareaseries_p.h3
-rw-r--r--src/charts/axis/qabstractaxis.cpp5
-rw-r--r--src/charts/axis/qabstractaxis_p.h3
-rw-r--r--src/charts/barchart/qabstractbarseries.cpp7
-rw-r--r--src/charts/barchart/qabstractbarseries_p.h2
-rw-r--r--src/charts/boxplotchart/qboxplotseries.cpp10
-rw-r--r--src/charts/boxplotchart/qboxplotseries_p.h2
-rw-r--r--src/charts/chartpresenter.cpp35
-rw-r--r--src/charts/chartpresenter_p.h6
-rw-r--r--src/charts/piechart/qpieseries.cpp7
-rw-r--r--src/charts/piechart/qpieseries_p.h3
-rw-r--r--src/charts/qabstractseries.cpp5
-rw-r--r--src/charts/qabstractseries_p.h3
-rw-r--r--src/charts/qchart.cpp30
-rw-r--r--src/charts/qchart.h7
-rw-r--r--src/charts/scatterchart/qscatterseries.cpp7
-rw-r--r--src/charts/scatterchart/qscatterseries_p.h3
-rw-r--r--src/charts/splinechart/qsplineseries.cpp7
-rw-r--r--src/charts/splinechart/qsplineseries_p.h3
-rw-r--r--src/charts/xychart/qxyseries.cpp7
-rw-r--r--src/charts/xychart/qxyseries_p.h3
-rw-r--r--src/chartsqml2/declarativechart.cpp35
-rw-r--r--src/chartsqml2/declarativechart.h8
-rw-r--r--src/chartsqml2/plugins.qmltypes12
-rw-r--r--tests/auto/qchart/tst_qchart.cpp29
-rw-r--r--tests/auto/qml-qtquicktest/tst_chartview.qml2
-rw-r--r--tests/manual/qmlchartproperties/qml/qmlchartproperties/Chart.qml8
-rw-r--r--tests/manual/qmlchartproperties/qml/qmlchartproperties/ChartEditorProperties.qml20
45 files changed, 287 insertions, 75 deletions
diff --git a/src/charts/animations/axisanimation.cpp b/src/charts/animations/axisanimation.cpp
index 1be6becd..a9900aa6 100644
--- a/src/charts/animations/axisanimation.cpp
+++ b/src/charts/animations/axisanimation.cpp
@@ -25,13 +25,13 @@ Q_DECLARE_METATYPE(QVector<qreal>)
QT_CHARTS_BEGIN_NAMESPACE
-AxisAnimation::AxisAnimation(ChartAxisElement *axis)
+AxisAnimation::AxisAnimation(ChartAxisElement *axis, int duration, QEasingCurve &curve)
: ChartAnimation(axis),
m_axis(axis),
m_type(DefaultAnimation)
{
- setDuration(ChartAnimationDuration);
- setEasingCurve(QEasingCurve::OutQuart);
+ setDuration(duration);
+ setEasingCurve(curve);
}
AxisAnimation::~AxisAnimation()
diff --git a/src/charts/animations/axisanimation_p.h b/src/charts/animations/axisanimation_p.h
index 263de3a4..54b7346f 100644
--- a/src/charts/animations/axisanimation_p.h
+++ b/src/charts/animations/axisanimation_p.h
@@ -39,7 +39,7 @@ class AxisAnimation: public ChartAnimation
{
public:
enum Animation { DefaultAnimation, ZoomOutAnimation, ZoomInAnimation, MoveForwardAnimation, MoveBackwordAnimation};
- AxisAnimation(ChartAxisElement *axis);
+ AxisAnimation(ChartAxisElement *axis, int duration, QEasingCurve &curve);
~AxisAnimation();
void setAnimationType(Animation type);
void setAnimationPoint(const QPointF &point);
diff --git a/src/charts/animations/baranimation.cpp b/src/charts/animations/baranimation.cpp
index cd5764c6..a49210ce 100644
--- a/src/charts/animations/baranimation.cpp
+++ b/src/charts/animations/baranimation.cpp
@@ -23,12 +23,12 @@ Q_DECLARE_METATYPE(QVector<QRectF>)
QT_CHARTS_BEGIN_NAMESPACE
-BarAnimation::BarAnimation(AbstractBarChartItem *item)
+BarAnimation::BarAnimation(AbstractBarChartItem *item, int duration, QEasingCurve &curve)
: ChartAnimation(item),
m_item(item)
{
- setDuration(ChartAnimationDuration);
- setEasingCurve(QEasingCurve::OutQuart);
+ setDuration(duration);
+ setEasingCurve(curve);
}
BarAnimation::~BarAnimation()
diff --git a/src/charts/animations/baranimation_p.h b/src/charts/animations/baranimation_p.h
index 9fd79911..3b054165 100644
--- a/src/charts/animations/baranimation_p.h
+++ b/src/charts/animations/baranimation_p.h
@@ -39,7 +39,7 @@ class BarAnimation : public ChartAnimation
Q_OBJECT
public:
- BarAnimation(AbstractBarChartItem *item);
+ BarAnimation(AbstractBarChartItem *item, int duration, QEasingCurve &curve);
~BarAnimation();
public: // from QVariantAnimation
diff --git a/src/charts/animations/boxplotanimation.cpp b/src/charts/animations/boxplotanimation.cpp
index 7d8e692d..c68ad029 100644
--- a/src/charts/animations/boxplotanimation.cpp
+++ b/src/charts/animations/boxplotanimation.cpp
@@ -23,9 +23,11 @@
QT_CHARTS_BEGIN_NAMESPACE
-BoxPlotAnimation::BoxPlotAnimation(BoxPlotChartItem *item)
+BoxPlotAnimation::BoxPlotAnimation(BoxPlotChartItem *item, int duration, QEasingCurve &curve)
: QObject(item),
- m_item(item)
+ m_item(item),
+ m_animationDuration(duration),
+ m_animationCurve(curve)
{
}
@@ -37,7 +39,7 @@ void BoxPlotAnimation::addBox(BoxWhiskers *box)
{
BoxWhiskersAnimation *animation = m_animations.value(box);
if (!animation) {
- animation = new BoxWhiskersAnimation(box, this);
+ animation = new BoxWhiskersAnimation(box, this, m_animationDuration, m_animationCurve);
m_animations.insert(box, animation);
BoxWhiskersData start;
start.m_lowerExtreme = box->m_data.m_median;
@@ -46,6 +48,7 @@ void BoxPlotAnimation::addBox(BoxWhiskers *box)
start.m_upperQuartile = box->m_data.m_median;
start.m_upperExtreme = box->m_data.m_median;
animation->setup(start, box->m_data);
+
} else {
animation->stop();
animation->setEndData(box->m_data);
diff --git a/src/charts/animations/boxplotanimation_p.h b/src/charts/animations/boxplotanimation_p.h
index f2866f8d..b9630f3f 100644
--- a/src/charts/animations/boxplotanimation_p.h
+++ b/src/charts/animations/boxplotanimation_p.h
@@ -41,7 +41,7 @@ class BoxPlotAnimation : public QObject
{
Q_OBJECT
public:
- BoxPlotAnimation(BoxPlotChartItem *item);
+ BoxPlotAnimation(BoxPlotChartItem *item, int duration, QEasingCurve &curve);
~BoxPlotAnimation();
void addBox(BoxWhiskers *box);
@@ -55,6 +55,8 @@ public:
protected:
BoxPlotChartItem *m_item;
QHash<BoxWhiskers *, BoxWhiskersAnimation *> m_animations;
+ int m_animationDuration;
+ QEasingCurve m_animationCurve;
};
QT_CHARTS_END_NAMESPACE
diff --git a/src/charts/animations/boxwhiskersanimation.cpp b/src/charts/animations/boxwhiskersanimation.cpp
index 24369d8d..d1774671 100644
--- a/src/charts/animations/boxwhiskersanimation.cpp
+++ b/src/charts/animations/boxwhiskersanimation.cpp
@@ -27,14 +27,15 @@ Q_DECLARE_METATYPE(qreal)
QT_CHARTS_BEGIN_NAMESPACE
-BoxWhiskersAnimation::BoxWhiskersAnimation(BoxWhiskers *box, BoxPlotAnimation *boxPlotAnimation)
+BoxWhiskersAnimation::BoxWhiskersAnimation(BoxWhiskers *box, BoxPlotAnimation *boxPlotAnimation,
+ int duration, QEasingCurve &curve)
: ChartAnimation(box),
m_box(box),
m_changeAnimation(false),
m_boxPlotAnimation(boxPlotAnimation)
{
- setDuration(ChartAnimationDuration);
- setEasingCurve(QEasingCurve::OutQuart);
+ setDuration(duration);
+ setEasingCurve(curve);
}
BoxWhiskersAnimation::~BoxWhiskersAnimation()
diff --git a/src/charts/animations/boxwhiskersanimation_p.h b/src/charts/animations/boxwhiskersanimation_p.h
index 9cebe20e..4231afde 100644
--- a/src/charts/animations/boxwhiskersanimation_p.h
+++ b/src/charts/animations/boxwhiskersanimation_p.h
@@ -42,7 +42,8 @@ class BoxWhiskersAnimation : public ChartAnimation
Q_OBJECT
public:
- BoxWhiskersAnimation(BoxWhiskers *box, BoxPlotAnimation *boxPlotAnimation);
+ BoxWhiskersAnimation(BoxWhiskers *box, BoxPlotAnimation *boxPlotAnimation, int duration,
+ QEasingCurve &curve);
~BoxWhiskersAnimation();
public: // from QVariantAnimation
diff --git a/src/charts/animations/pieanimation.cpp b/src/charts/animations/pieanimation.cpp
index c513a663..5b974d88 100644
--- a/src/charts/animations/pieanimation.cpp
+++ b/src/charts/animations/pieanimation.cpp
@@ -22,9 +22,11 @@
QT_CHARTS_BEGIN_NAMESPACE
-PieAnimation::PieAnimation(PieChartItem *item)
+PieAnimation::PieAnimation(PieChartItem *item, int duration, QEasingCurve &curve)
: ChartAnimation(item),
- m_item(item)
+ m_item(item),
+ m_animationDuration(duration),
+ m_animationCurve(curve)
{
}
@@ -37,14 +39,14 @@ ChartAnimation *PieAnimation::updateValue(PieSliceItem *sliceItem, const PieSlic
PieSliceAnimation *animation = m_animations.value(sliceItem);
if (!animation) {
animation = new PieSliceAnimation(sliceItem);
+ animation->setDuration(m_animationDuration);
+ animation->setEasingCurve(m_animationCurve);
m_animations.insert(sliceItem, animation);
} else {
animation->stop();
}
animation->updateValue(sliceData);
- animation->setDuration(ChartAnimationDuration);
- animation->setEasingCurve(QEasingCurve::OutQuart);
return animation;
}
@@ -52,6 +54,8 @@ ChartAnimation *PieAnimation::updateValue(PieSliceItem *sliceItem, const PieSlic
ChartAnimation *PieAnimation::addSlice(PieSliceItem *sliceItem, const PieSliceData &sliceData, bool startupAnimation)
{
PieSliceAnimation *animation = new PieSliceAnimation(sliceItem);
+ animation->setDuration(m_animationDuration);
+ animation->setEasingCurve(m_animationCurve);
m_animations.insert(sliceItem, animation);
PieSliceData startValue = sliceData;
@@ -66,8 +70,6 @@ ChartAnimation *PieAnimation::addSlice(PieSliceItem *sliceItem, const PieSliceDa
startValue.m_radius = sliceData.m_holeRadius;
animation->setValue(startValue, sliceData);
- animation->setDuration(ChartAnimationDuration);
- animation->setEasingCurve(QEasingCurve::OutQuart);
return animation;
}
@@ -88,8 +90,6 @@ ChartAnimation *PieAnimation::removeSlice(PieSliceItem *sliceItem)
endValue.m_isLabelVisible = false;
animation->updateValue(endValue);
- animation->setDuration(ChartAnimationDuration);
- animation->setEasingCurve(QEasingCurve::OutQuart);
// PieSliceItem is the parent of PieSliceAnimation so the animation will be deleted as well..
connect(animation, SIGNAL(finished()), sliceItem, SLOT(deleteLater()));
diff --git a/src/charts/animations/pieanimation_p.h b/src/charts/animations/pieanimation_p.h
index e0da8f1e..02ea881f 100644
--- a/src/charts/animations/pieanimation_p.h
+++ b/src/charts/animations/pieanimation_p.h
@@ -41,7 +41,7 @@ class PieAnimation : public ChartAnimation
Q_OBJECT
public:
- PieAnimation(PieChartItem *item);
+ PieAnimation(PieChartItem *item, int duration, QEasingCurve &curve);
~PieAnimation();
ChartAnimation *updateValue(PieSliceItem *sliceItem, const PieSliceData &newValue);
ChartAnimation *addSlice(PieSliceItem *sliceItem, const PieSliceData &endValue, bool startupAnimation);
@@ -53,6 +53,8 @@ public: // from QVariantAnimation
private:
PieChartItem *m_item;
QHash<PieSliceItem *, PieSliceAnimation *> m_animations;
+ int m_animationDuration;
+ QEasingCurve m_animationCurve;
};
QT_CHARTS_END_NAMESPACE
diff --git a/src/charts/animations/scatteranimation.cpp b/src/charts/animations/scatteranimation.cpp
index 134ef1ef..3a9dc445 100644
--- a/src/charts/animations/scatteranimation.cpp
+++ b/src/charts/animations/scatteranimation.cpp
@@ -22,8 +22,8 @@
QT_CHARTS_BEGIN_NAMESPACE
-ScatterAnimation::ScatterAnimation(ScatterChartItem *item)
- : XYAnimation(item)
+ScatterAnimation::ScatterAnimation(ScatterChartItem *item, int duration, QEasingCurve &curve)
+ : XYAnimation(item, duration, curve)
{
}
diff --git a/src/charts/animations/scatteranimation_p.h b/src/charts/animations/scatteranimation_p.h
index d6edebbd..4d19c9fd 100644
--- a/src/charts/animations/scatteranimation_p.h
+++ b/src/charts/animations/scatteranimation_p.h
@@ -36,7 +36,7 @@ class ScatterChartItem;
class ScatterAnimation : public XYAnimation
{
public:
- ScatterAnimation(ScatterChartItem *item);
+ ScatterAnimation(ScatterChartItem *item, int duration, QEasingCurve &curve);
~ScatterAnimation();
protected:
diff --git a/src/charts/animations/splineanimation.cpp b/src/charts/animations/splineanimation.cpp
index 30cc4388..298d926a 100644
--- a/src/charts/animations/splineanimation.cpp
+++ b/src/charts/animations/splineanimation.cpp
@@ -25,8 +25,8 @@ Q_DECLARE_METATYPE(SplineVector)
QT_CHARTS_BEGIN_NAMESPACE
-SplineAnimation::SplineAnimation(SplineChartItem *item)
- : XYAnimation(item),
+SplineAnimation::SplineAnimation(SplineChartItem *item, int duration, QEasingCurve &curve)
+ : XYAnimation(item, duration, curve),
m_item(item),
m_valid(false)
{
diff --git a/src/charts/animations/splineanimation_p.h b/src/charts/animations/splineanimation_p.h
index 26aacb8a..7ea3492b 100644
--- a/src/charts/animations/splineanimation_p.h
+++ b/src/charts/animations/splineanimation_p.h
@@ -39,7 +39,7 @@ class SplineChartItem;
class SplineAnimation : public XYAnimation
{
public:
- SplineAnimation(SplineChartItem *item);
+ SplineAnimation(SplineChartItem *item, int duration, QEasingCurve &curve);
~SplineAnimation();
void setup(QVector<QPointF> &oldPoints, QVector<QPointF> &newPoints, QVector<QPointF> &oldContorlPoints, QVector<QPointF> &newControlPoints, int index = -1);
diff --git a/src/charts/animations/xyanimation.cpp b/src/charts/animations/xyanimation.cpp
index f7399567..6f422d19 100644
--- a/src/charts/animations/xyanimation.cpp
+++ b/src/charts/animations/xyanimation.cpp
@@ -24,15 +24,15 @@ Q_DECLARE_METATYPE(QVector<QPointF>)
QT_CHARTS_BEGIN_NAMESPACE
-XYAnimation::XYAnimation(XYChart *item)
+XYAnimation::XYAnimation(XYChart *item, int duration, QEasingCurve &curve)
: ChartAnimation(item),
m_type(NewAnimation),
m_dirty(false),
m_index(-1),
m_item(item)
{
- setDuration(ChartAnimationDuration);
- setEasingCurve(QEasingCurve::OutQuart);
+ setDuration(duration);
+ setEasingCurve(curve);
}
XYAnimation::~XYAnimation()
diff --git a/src/charts/animations/xyanimation_p.h b/src/charts/animations/xyanimation_p.h
index dd93bd97..09006e0a 100644
--- a/src/charts/animations/xyanimation_p.h
+++ b/src/charts/animations/xyanimation_p.h
@@ -40,7 +40,7 @@ class XYAnimation : public ChartAnimation
protected:
enum Animation { AddPointAnimation, RemovePointAnimation, ReplacePointAnimation, NewAnimation };
public:
- XYAnimation(XYChart *item);
+ XYAnimation(XYChart *item, int duration, QEasingCurve &curve);
~XYAnimation();
void setup(const QVector<QPointF> &oldPoints, const QVector<QPointF> &newPoints, int index = -1);
Animation animationType() const { return m_type; };
diff --git a/src/charts/areachart/qareaseries.cpp b/src/charts/areachart/qareaseries.cpp
index 9684ceaa..4d08087f 100644
--- a/src/charts/areachart/qareaseries.cpp
+++ b/src/charts/areachart/qareaseries.cpp
@@ -620,7 +620,8 @@ void QAreaSeriesPrivate::initializeGraphics(QGraphicsItem* parent)
m_item.reset(area);
QAbstractSeriesPrivate::initializeGraphics(parent);
}
-void QAreaSeriesPrivate::initializeAnimations(QChart::AnimationOptions options)
+void QAreaSeriesPrivate::initializeAnimations(QChart::AnimationOptions options, int duration,
+ QEasingCurve &curve)
{
Q_Q(QAreaSeries);
AreaChartItem *area = static_cast<AreaChartItem *>(m_item.data());
@@ -631,16 +632,18 @@ void QAreaSeriesPrivate::initializeAnimations(QChart::AnimationOptions options)
area->lowerLineItem()->animation()->stopAndDestroyLater();
if (options.testFlag(QChart::SeriesAnimations)) {
- area->upperLineItem()->setAnimation(new XYAnimation(area->upperLineItem()));
+ area->upperLineItem()->setAnimation(new XYAnimation(area->upperLineItem(), duration,
+ curve));
if (q->lowerSeries())
- area->lowerLineItem()->setAnimation(new XYAnimation(area->lowerLineItem()));
+ area->lowerLineItem()->setAnimation(new XYAnimation(area->lowerLineItem(), duration,
+ curve));
} else {
if (q->upperSeries())
area->upperLineItem()->setAnimation(0);
if (q->lowerSeries())
area->lowerLineItem()->setAnimation(0);
}
- QAbstractSeriesPrivate::initializeAnimations(options);
+ QAbstractSeriesPrivate::initializeAnimations(options, duration, curve);
}
QList<QLegendMarker*> QAreaSeriesPrivate::createLegendMarkers(QLegend* legend)
diff --git a/src/charts/areachart/qareaseries_p.h b/src/charts/areachart/qareaseries_p.h
index edfde51f..185267d7 100644
--- a/src/charts/areachart/qareaseries_p.h
+++ b/src/charts/areachart/qareaseries_p.h
@@ -46,7 +46,8 @@ public:
void initializeAxes();
void initializeGraphics(QGraphicsItem* parent);
void initializeTheme(int index, ChartTheme* theme, bool forced = false);
- void initializeAnimations(QChart::AnimationOptions options);
+ void initializeAnimations(QChart::AnimationOptions options, int duration,
+ QEasingCurve &curve);
QList<QLegendMarker *> createLegendMarkers(QLegend *legend);
diff --git a/src/charts/axis/qabstractaxis.cpp b/src/charts/axis/qabstractaxis.cpp
index 17cdfa94..eab95cd5 100644
--- a/src/charts/axis/qabstractaxis.cpp
+++ b/src/charts/axis/qabstractaxis.cpp
@@ -1018,7 +1018,8 @@ void QAbstractAxisPrivate::initializeGraphics(QGraphicsItem* parent)
Q_UNUSED(parent);
}
-void QAbstractAxisPrivate::initializeAnimations(QChart::AnimationOptions options)
+void QAbstractAxisPrivate::initializeAnimations(QChart::AnimationOptions options, int duration,
+ QEasingCurve &curve)
{
ChartAxisElement *axis = m_item.data();
Q_ASSERT(axis);
@@ -1026,7 +1027,7 @@ void QAbstractAxisPrivate::initializeAnimations(QChart::AnimationOptions options
axis->animation()->stopAndDestroyLater();
if (options.testFlag(QChart::GridAxisAnimations))
- axis->setAnimation(new AxisAnimation(axis));
+ axis->setAnimation(new AxisAnimation(axis, duration, curve));
else
axis->setAnimation(0);
}
diff --git a/src/charts/axis/qabstractaxis_p.h b/src/charts/axis/qabstractaxis_p.h
index 208b467e..41188fe3 100644
--- a/src/charts/axis/qabstractaxis_p.h
+++ b/src/charts/axis/qabstractaxis_p.h
@@ -61,7 +61,8 @@ public:
virtual void initializeDomain(AbstractDomain *domain) = 0;
virtual void initializeGraphics(QGraphicsItem *parent) = 0;
virtual void initializeTheme(ChartTheme* theme, bool forced = false);
- virtual void initializeAnimations(QChart::AnimationOptions options);
+ virtual void initializeAnimations(QChart::AnimationOptions options, int duration,
+ QEasingCurve &curve);
//interface for manipulating range form base class
virtual void setMin(const QVariant &min) = 0;
diff --git a/src/charts/barchart/qabstractbarseries.cpp b/src/charts/barchart/qabstractbarseries.cpp
index 26674e13..c914e2d7 100644
--- a/src/charts/barchart/qabstractbarseries.cpp
+++ b/src/charts/barchart/qabstractbarseries.cpp
@@ -1072,7 +1072,8 @@ void QAbstractBarSeriesPrivate::initializeTheme(int index, ChartTheme* theme, bo
emit updatedBars();
}
-void QAbstractBarSeriesPrivate::initializeAnimations(QChart::AnimationOptions options)
+void QAbstractBarSeriesPrivate::initializeAnimations(QChart::AnimationOptions options, int duration,
+ QEasingCurve &curve)
{
AbstractBarChartItem *bar = static_cast<AbstractBarChartItem *>(m_item.data());
Q_ASSERT(bar);
@@ -1080,10 +1081,10 @@ void QAbstractBarSeriesPrivate::initializeAnimations(QChart::AnimationOptions op
bar->animation()->stopAndDestroyLater();
if (options.testFlag(QChart::SeriesAnimations))
- bar->setAnimation(new BarAnimation(bar));
+ bar->setAnimation(new BarAnimation(bar, duration, curve));
else
bar->setAnimation(0);
- QAbstractSeriesPrivate::initializeAnimations(options);
+ QAbstractSeriesPrivate::initializeAnimations(options, duration, curve);
}
#include "moc_qabstractbarseries.cpp"
diff --git a/src/charts/barchart/qabstractbarseries_p.h b/src/charts/barchart/qabstractbarseries_p.h
index 7e1e94e9..e1a7e253 100644
--- a/src/charts/barchart/qabstractbarseries_p.h
+++ b/src/charts/barchart/qabstractbarseries_p.h
@@ -54,7 +54,7 @@ public:
void initializeDomain();
void initializeAxes();
- void initializeAnimations(QChart::AnimationOptions options);
+ void initializeAnimations(QChart::AnimationOptions options, int duration, QEasingCurve &curve);
void initializeTheme(int index, ChartTheme* theme, bool forced = false);
QList<QLegendMarker*> createLegendMarkers(QLegend *legend);
diff --git a/src/charts/boxplotchart/qboxplotseries.cpp b/src/charts/boxplotchart/qboxplotseries.cpp
index 8bf39c23..5e67130a 100644
--- a/src/charts/boxplotchart/qboxplotseries.cpp
+++ b/src/charts/boxplotchart/qboxplotseries.cpp
@@ -485,7 +485,8 @@ void QBoxPlotSeriesPrivate::initializeTheme(int index, ChartTheme* theme, bool f
}
}
-void QBoxPlotSeriesPrivate::initializeAnimations(QChart::AnimationOptions options)
+void QBoxPlotSeriesPrivate::initializeAnimations(QChart::AnimationOptions options, int duration,
+ QEasingCurve &curve)
{
BoxPlotChartItem *item = static_cast<BoxPlotChartItem *>(m_item.data());
Q_ASSERT(item);
@@ -493,12 +494,15 @@ void QBoxPlotSeriesPrivate::initializeAnimations(QChart::AnimationOptions option
item->animation()->stopAndDestroyLater();
if (options.testFlag(QChart::SeriesAnimations))
- m_animation = new BoxPlotAnimation(item);
+ m_animation = new BoxPlotAnimation(item, duration, curve);
else
m_animation = 0;
item->setAnimation(m_animation);
- QAbstractSeriesPrivate::initializeAnimations(options);
+ QAbstractSeriesPrivate::initializeAnimations(options, duration, curve);
+
+ // Make BoxPlotChartItem to instantiate box & whisker items
+ item->handleDataStructureChanged();
}
QList<QLegendMarker*> QBoxPlotSeriesPrivate::createLegendMarkers(QLegend *legend)
diff --git a/src/charts/boxplotchart/qboxplotseries_p.h b/src/charts/boxplotchart/qboxplotseries_p.h
index 2fcd473e..802ac1ed 100644
--- a/src/charts/boxplotchart/qboxplotseries_p.h
+++ b/src/charts/boxplotchart/qboxplotseries_p.h
@@ -48,7 +48,7 @@ public:
void initializeGraphics(QGraphicsItem *parent);
void initializeDomain();
void initializeAxes();
- void initializeAnimations(QChart::AnimationOptions options);
+ void initializeAnimations(QChart::AnimationOptions options, int duration, QEasingCurve &curve);
void initializeTheme(int index, ChartTheme *theme, bool forced = false);
QList<QLegendMarker*> createLegendMarkers(QLegend *legend);
diff --git a/src/charts/chartpresenter.cpp b/src/charts/chartpresenter.cpp
index 41fe1094..df66c01b 100644
--- a/src/charts/chartpresenter.cpp
+++ b/src/charts/chartpresenter.cpp
@@ -39,6 +39,8 @@ ChartPresenter::ChartPresenter(QChart *chart, QChart::ChartType type)
: QObject(chart),
m_chart(chart),
m_options(QChart::NoAnimation),
+ m_animationDuration(ChartAnimationDuration),
+ m_animationCurve(QEasingCurve::OutQuart),
m_state(ShowState),
m_background(0),
m_plotAreaBackground(0),
@@ -77,7 +79,7 @@ QRectF ChartPresenter::geometry() const
void ChartPresenter::handleAxisAdded(QAbstractAxis *axis)
{
axis->d_ptr->initializeGraphics(rootItem());
- axis->d_ptr->initializeAnimations(m_options);
+ axis->d_ptr->initializeAnimations(m_options, m_animationDuration, m_animationCurve);
ChartAxisElement *item = axis->d_ptr->axisItem();
item->setPresenter(this);
item->setThemeManager(m_chart->d_ptr->m_themeManager);
@@ -101,7 +103,7 @@ void ChartPresenter::handleAxisRemoved(QAbstractAxis *axis)
void ChartPresenter::handleSeriesAdded(QAbstractSeries *series)
{
series->d_ptr->initializeGraphics(rootItem());
- series->d_ptr->initializeAnimations(m_options);
+ series->d_ptr->initializeAnimations(m_options, m_animationDuration, m_animationCurve);
series->d_ptr->setPresenter(this);
ChartItem *chart = series->d_ptr->chartItem();
chart->setPresenter(this);
@@ -134,16 +136,41 @@ void ChartPresenter::setAnimationOptions(QChart::AnimationOptions options)
m_options = options;
if (options.testFlag(QChart::SeriesAnimations) != oldOptions.testFlag(QChart::SeriesAnimations)) {
foreach (QAbstractSeries *series, m_series)
- series->d_ptr->initializeAnimations(m_options);
+ series->d_ptr->initializeAnimations(m_options, m_animationDuration,
+ m_animationCurve);
}
if (options.testFlag(QChart::GridAxisAnimations) != oldOptions.testFlag(QChart::GridAxisAnimations)) {
foreach (QAbstractAxis *axis, m_axes)
- axis->d_ptr->initializeAnimations(m_options);
+ axis->d_ptr->initializeAnimations(m_options, m_animationDuration, m_animationCurve);
}
m_layout->invalidate(); // So that existing animations don't just stop halfway
}
}
+void ChartPresenter::setAnimationDuration(int msecs)
+{
+ if (m_animationDuration != msecs) {
+ m_animationDuration = msecs;
+ foreach (QAbstractSeries *series, m_series)
+ series->d_ptr->initializeAnimations(m_options, m_animationDuration, m_animationCurve);
+ foreach (QAbstractAxis *axis, m_axes)
+ axis->d_ptr->initializeAnimations(m_options, m_animationDuration, m_animationCurve);
+ m_layout->invalidate(); // So that existing animations don't just stop halfway
+ }
+}
+
+void ChartPresenter::setAnimationEasingCurve(const QEasingCurve &curve)
+{
+ if (m_animationCurve != curve) {
+ m_animationCurve = curve;
+ foreach (QAbstractSeries *series, m_series)
+ series->d_ptr->initializeAnimations(m_options, m_animationDuration, m_animationCurve);
+ foreach (QAbstractAxis *axis, m_axes)
+ axis->d_ptr->initializeAnimations(m_options, m_animationDuration, m_animationCurve);
+ m_layout->invalidate(); // So that existing animations don't just stop halfway
+ }
+}
+
void ChartPresenter::setState(State state,QPointF point)
{
m_state=state;
diff --git a/src/charts/chartpresenter_p.h b/src/charts/chartpresenter_p.h
index 7ec5d656..db61d65c 100644
--- a/src/charts/chartpresenter_p.h
+++ b/src/charts/chartpresenter_p.h
@@ -137,6 +137,10 @@ public:
void setAnimationOptions(QChart::AnimationOptions options);
QChart::AnimationOptions animationOptions() const;
+ void setAnimationDuration(int msecs);
+ int animationDuration() const { return m_animationDuration; }
+ void setAnimationEasingCurve(const QEasingCurve &curve);
+ QEasingCurve animationEasingCurve() const { return m_animationCurve; }
void startAnimation(ChartAnimation *animation);
@@ -177,6 +181,8 @@ private:
QList<QAbstractSeries *> m_series;
QList<QAbstractAxis *> m_axes;
QChart::AnimationOptions m_options;
+ int m_animationDuration;
+ QEasingCurve m_animationCurve;
State m_state;
QPointF m_statePoint;
AbstractChartLayout *m_layout;
diff --git a/src/charts/piechart/qpieseries.cpp b/src/charts/piechart/qpieseries.cpp
index c680865a..08705254 100644
--- a/src/charts/piechart/qpieseries.cpp
+++ b/src/charts/piechart/qpieseries.cpp
@@ -932,7 +932,8 @@ void QPieSeriesPrivate::initializeGraphics(QGraphicsItem* parent)
QAbstractSeriesPrivate::initializeGraphics(parent);
}
-void QPieSeriesPrivate::initializeAnimations(QtCharts::QChart::AnimationOptions options)
+void QPieSeriesPrivate::initializeAnimations(QtCharts::QChart::AnimationOptions options,
+ int duration, QEasingCurve &curve)
{
PieChartItem *item = static_cast<PieChartItem *>(m_item.data());
Q_ASSERT(item);
@@ -940,10 +941,10 @@ void QPieSeriesPrivate::initializeAnimations(QtCharts::QChart::AnimationOptions
item->animation()->stopAndDestroyLater();
if (options.testFlag(QChart::SeriesAnimations))
- item->setAnimation(new PieAnimation(item));
+ item->setAnimation(new PieAnimation(item, duration, curve));
else
item->setAnimation(0);
- QAbstractSeriesPrivate::initializeAnimations(options);
+ QAbstractSeriesPrivate::initializeAnimations(options, duration, curve);
}
QList<QLegendMarker*> QPieSeriesPrivate::createLegendMarkers(QLegend* legend)
diff --git a/src/charts/piechart/qpieseries_p.h b/src/charts/piechart/qpieseries_p.h
index 9c113d0b..08eb7d04 100644
--- a/src/charts/piechart/qpieseries_p.h
+++ b/src/charts/piechart/qpieseries_p.h
@@ -45,7 +45,8 @@ public:
void initializeDomain();
void initializeAxes();
void initializeGraphics(QGraphicsItem* parent);
- void initializeAnimations(QtCharts::QChart::AnimationOptions options);
+ void initializeAnimations(QtCharts::QChart::AnimationOptions options, int duration,
+ QEasingCurve &curve);
void initializeTheme(int index, ChartTheme* theme, bool forced = false);
QList<QLegendMarker *> createLegendMarkers(QLegend *legend);
diff --git a/src/charts/qabstractseries.cpp b/src/charts/qabstractseries.cpp
index 220dfacd..cb3c7c5a 100644
--- a/src/charts/qabstractseries.cpp
+++ b/src/charts/qabstractseries.cpp
@@ -312,9 +312,12 @@ void QAbstractSeriesPrivate::initializeGraphics(QGraphicsItem* parent)
QObject::connect(m_domain.data(), SIGNAL(updated()),m_item.data(), SLOT(handleDomainUpdated()));
}
-void QAbstractSeriesPrivate::initializeAnimations(QChart::AnimationOptions options)
+void QAbstractSeriesPrivate::initializeAnimations(QChart::AnimationOptions options, int duration,
+ QEasingCurve &curve)
{
Q_UNUSED(options);
+ Q_UNUSED(duration);
+ Q_UNUSED(curve);
}
bool QAbstractSeriesPrivate::reverseXAxis()
diff --git a/src/charts/qabstractseries_p.h b/src/charts/qabstractseries_p.h
index 4394cb4d..6a5e1340 100644
--- a/src/charts/qabstractseries_p.h
+++ b/src/charts/qabstractseries_p.h
@@ -61,7 +61,8 @@ public:
virtual void initializeAxes() = 0;
virtual void initializeTheme(int index, ChartTheme* theme, bool forced = false) = 0;
virtual void initializeGraphics(QGraphicsItem* parent) = 0;
- virtual void initializeAnimations(QChart::AnimationOptions options) = 0;
+ virtual void initializeAnimations(QChart::AnimationOptions options, int duration,
+ QEasingCurve &curve) = 0;
virtual QList<QLegendMarker*> createLegendMarkers(QLegend* legend) = 0;
diff --git a/src/charts/qchart.cpp b/src/charts/qchart.cpp
index 7ac9d552..cca9b166 100644
--- a/src/charts/qchart.cpp
+++ b/src/charts/qchart.cpp
@@ -85,6 +85,16 @@ QT_CHARTS_BEGIN_NAMESPACE
*/
/*!
+ \property QChart::animationDuration
+ The duration of the animation for the chart.
+ */
+
+/*!
+ \property QChart::animationEasingCurve
+ The easing curve of the animation for the chart.
+ */
+
+/*!
\property QChart::backgroundVisible
Specifies whether the chart background is visible or not.
\sa setBackgroundBrush(), setBackgroundPen(), plotAreaBackgroundVisible
@@ -595,6 +605,26 @@ QChart::AnimationOptions QChart::animationOptions() const
return d_ptr->m_presenter->animationOptions();
}
+void QChart::setAnimationDuration(int msecs)
+{
+ d_ptr->m_presenter->setAnimationDuration(msecs);
+}
+
+int QChart::animationDuration() const
+{
+ return d_ptr->m_presenter->animationDuration();
+}
+
+void QChart::setAnimationEasingCurve(const QEasingCurve &curve)
+{
+ d_ptr->m_presenter->setAnimationEasingCurve(curve);
+}
+
+QEasingCurve QChart::animationEasingCurve() const
+{
+ return d_ptr->m_presenter->animationEasingCurve();
+}
+
/*!
Scrolls the visible area of the chart by the distance defined in the \a dx and \a dy.
diff --git a/src/charts/qchart.h b/src/charts/qchart.h
index e2d1171e..c95dfb2b 100644
--- a/src/charts/qchart.h
+++ b/src/charts/qchart.h
@@ -45,6 +45,8 @@ class QT_CHARTS_EXPORT QChart : public QGraphicsWidget
Q_PROPERTY(bool dropShadowEnabled READ isDropShadowEnabled WRITE setDropShadowEnabled)
Q_PROPERTY(qreal backgroundRoundness READ backgroundRoundness WRITE setBackgroundRoundness)
Q_PROPERTY(QChart::AnimationOptions animationOptions READ animationOptions WRITE setAnimationOptions)
+ Q_PROPERTY(int animationDuration READ animationDuration WRITE setAnimationDuration)
+ Q_PROPERTY(QEasingCurve animationEasingCurve READ animationEasingCurve WRITE setAnimationEasingCurve)
Q_PROPERTY(QMargins margins READ margins WRITE setMargins)
Q_PROPERTY(QChart::ChartType chartType READ chartType)
Q_PROPERTY(bool plotAreaBackgroundVisible READ isPlotAreaBackgroundVisible WRITE setPlotAreaBackgroundVisible)
@@ -125,8 +127,13 @@ public:
bool isDropShadowEnabled() const;
void setBackgroundRoundness(qreal diameter);
qreal backgroundRoundness() const;
+
void setAnimationOptions(AnimationOptions options);
AnimationOptions animationOptions() const;
+ void setAnimationDuration(int msecs);
+ int animationDuration() const;
+ void setAnimationEasingCurve(const QEasingCurve &curve);
+ QEasingCurve animationEasingCurve() const;
void zoomIn();
void zoomOut();
diff --git a/src/charts/scatterchart/qscatterseries.cpp b/src/charts/scatterchart/qscatterseries.cpp
index a3008f1b..25e685cc 100644
--- a/src/charts/scatterchart/qscatterseries.cpp
+++ b/src/charts/scatterchart/qscatterseries.cpp
@@ -311,7 +311,8 @@ void QScatterSeriesPrivate::initializeTheme(int index, ChartTheme* theme, bool f
}
}
-void QScatterSeriesPrivate::initializeAnimations(QChart::AnimationOptions options)
+void QScatterSeriesPrivate::initializeAnimations(QChart::AnimationOptions options, int duration,
+ QEasingCurve &curve)
{
ScatterChartItem *item = static_cast<ScatterChartItem *>(m_item.data());
Q_ASSERT(item);
@@ -320,11 +321,11 @@ void QScatterSeriesPrivate::initializeAnimations(QChart::AnimationOptions option
item->animation()->stopAndDestroyLater();
if (options.testFlag(QChart::SeriesAnimations))
- item->setAnimation(new ScatterAnimation(item));
+ item->setAnimation(new ScatterAnimation(item, duration, curve));
else
item->setAnimation(0);
- QAbstractSeriesPrivate::initializeAnimations(options);
+ QAbstractSeriesPrivate::initializeAnimations(options, duration, curve);
}
#include "moc_qscatterseries.cpp"
diff --git a/src/charts/scatterchart/qscatterseries_p.h b/src/charts/scatterchart/qscatterseries_p.h
index 6d3117a0..baa58620 100644
--- a/src/charts/scatterchart/qscatterseries_p.h
+++ b/src/charts/scatterchart/qscatterseries_p.h
@@ -38,7 +38,8 @@ public:
QScatterSeriesPrivate(QScatterSeries *q);
void initializeGraphics(QGraphicsItem* parent);
void initializeTheme(int index, ChartTheme* theme, bool forced = false);
- void initializeAnimations(QtCharts::QChart::AnimationOptions options);
+ void initializeAnimations(QtCharts::QChart::AnimationOptions options, int duration,
+ QEasingCurve &curve);
private:
QScatterSeries::MarkerShape m_shape;
diff --git a/src/charts/splinechart/qsplineseries.cpp b/src/charts/splinechart/qsplineseries.cpp
index 989139b6..b33864da 100644
--- a/src/charts/splinechart/qsplineseries.cpp
+++ b/src/charts/splinechart/qsplineseries.cpp
@@ -143,7 +143,8 @@ void QSplineSeriesPrivate::initializeTheme(int index, ChartTheme* theme, bool fo
}
}
-void QSplineSeriesPrivate::initializeAnimations(QtCharts::QChart::AnimationOptions options)
+void QSplineSeriesPrivate::initializeAnimations(QtCharts::QChart::AnimationOptions options,
+ int duration, QEasingCurve &curve)
{
SplineChartItem *item = static_cast<SplineChartItem *>(m_item.data());
Q_ASSERT(item);
@@ -151,10 +152,10 @@ void QSplineSeriesPrivate::initializeAnimations(QtCharts::QChart::AnimationOptio
item->animation()->stopAndDestroyLater();
if (options.testFlag(QChart::SeriesAnimations))
- item->setAnimation(new SplineAnimation(item));
+ item->setAnimation(new SplineAnimation(item, duration, curve));
else
item->setAnimation(0);
- QAbstractSeriesPrivate::initializeAnimations(options);
+ QAbstractSeriesPrivate::initializeAnimations(options, duration, curve);
}
#include "moc_qsplineseries.cpp"
diff --git a/src/charts/splinechart/qsplineseries_p.h b/src/charts/splinechart/qsplineseries_p.h
index fed9e20f..628b5058 100644
--- a/src/charts/splinechart/qsplineseries_p.h
+++ b/src/charts/splinechart/qsplineseries_p.h
@@ -41,7 +41,8 @@ public:
void initializeTheme(int index, ChartTheme* theme, bool forced = false);
void initializeGraphics(QGraphicsItem* parent);
- void initializeAnimations(QtCharts::QChart::AnimationOptions options);
+ void initializeAnimations(QtCharts::QChart::AnimationOptions options, int duration,
+ QEasingCurve &curve);
private:
Q_DECLARE_PUBLIC(QSplineSeries)
diff --git a/src/charts/xychart/qxyseries.cpp b/src/charts/xychart/qxyseries.cpp
index e97421c2..1ddaf859 100644
--- a/src/charts/xychart/qxyseries.cpp
+++ b/src/charts/xychart/qxyseries.cpp
@@ -830,7 +830,8 @@ QAbstractAxis* QXYSeriesPrivate::createDefaultAxis(Qt::Orientation orientation)
return new QValueAxis;
}
-void QXYSeriesPrivate::initializeAnimations(QtCharts::QChart::AnimationOptions options)
+void QXYSeriesPrivate::initializeAnimations(QtCharts::QChart::AnimationOptions options,
+ int duration, QEasingCurve &curve)
{
XYChart *item = static_cast<XYChart *>(m_item.data());
Q_ASSERT(item);
@@ -838,10 +839,10 @@ void QXYSeriesPrivate::initializeAnimations(QtCharts::QChart::AnimationOptions o
item->animation()->stopAndDestroyLater();
if (options.testFlag(QChart::SeriesAnimations))
- item->setAnimation(new XYAnimation(item));
+ item->setAnimation(new XYAnimation(item, duration, curve));
else
item->setAnimation(0);
- QAbstractSeriesPrivate::initializeAnimations(options);
+ QAbstractSeriesPrivate::initializeAnimations(options, duration, curve);
}
void QXYSeriesPrivate::drawSeriesPointLabels(QPainter *painter, const QVector<QPointF> &points,
diff --git a/src/charts/xychart/qxyseries_p.h b/src/charts/xychart/qxyseries_p.h
index 2803a8e9..d11da9c3 100644
--- a/src/charts/xychart/qxyseries_p.h
+++ b/src/charts/xychart/qxyseries_p.h
@@ -44,7 +44,8 @@ public:
void initializeDomain();
void initializeAxes();
- void initializeAnimations(QtCharts::QChart::AnimationOptions options);
+ void initializeAnimations(QtCharts::QChart::AnimationOptions options, int duration,
+ QEasingCurve &curve);
QList<QLegendMarker*> createLegendMarkers(QLegend* legend);
diff --git a/src/chartsqml2/declarativechart.cpp b/src/chartsqml2/declarativechart.cpp
index 44af74fd..51cdba37 100644
--- a/src/chartsqml2/declarativechart.cpp
+++ b/src/chartsqml2/declarativechart.cpp
@@ -81,6 +81,15 @@ QT_CHARTS_BEGIN_NAMESPACE
*/
/*!
+ \qmlproperty int ChartView::animationDuration
+ The duration of the animation for the chart.
+ */
+
+/*!
+ \qmlproperty easing ChartView::animationEasingCurve
+ The easing curve of the animation for the chart.
+
+/*!
\qmlproperty Font ChartView::titleFont
The title font of the chart.
@@ -673,6 +682,32 @@ DeclarativeChart::Animation DeclarativeChart::animationOptions()
return DeclarativeChart::NoAnimation;
}
+void DeclarativeChart::setAnimationDuration(int msecs)
+{
+ if (msecs != m_chart->animationDuration()) {
+ m_chart->setAnimationDuration(msecs);
+ emit animationDurationChanged(msecs);
+ }
+}
+
+int DeclarativeChart::animationDuration() const
+{
+ return m_chart->animationDuration();
+}
+
+void DeclarativeChart::setAnimationEasingCurve(const QEasingCurve &curve)
+{
+ if (curve != m_chart->animationEasingCurve()) {
+ m_chart->setAnimationEasingCurve(curve);
+ emit animationEasingCurveChanged(curve);
+ }
+}
+
+QEasingCurve DeclarativeChart::animationEasingCurve() const
+{
+ return m_chart->animationEasingCurve();
+}
+
void DeclarativeChart::setTitle(QString title)
{
if (title != m_chart->title())
diff --git a/src/chartsqml2/declarativechart.h b/src/chartsqml2/declarativechart.h
index c57386fe..397061a4 100644
--- a/src/chartsqml2/declarativechart.h
+++ b/src/chartsqml2/declarativechart.h
@@ -39,6 +39,8 @@ class DeclarativeChart : public QQuickPaintedItem
Q_OBJECT
Q_PROPERTY(Theme theme READ theme WRITE setTheme)
Q_PROPERTY(Animation animationOptions READ animationOptions WRITE setAnimationOptions)
+ Q_PROPERTY(int animationDuration READ animationDuration WRITE setAnimationDuration NOTIFY animationDurationChanged REVISION 5)
+ Q_PROPERTY(QEasingCurve animationEasingCurve READ animationEasingCurve WRITE setAnimationEasingCurve NOTIFY animationEasingCurveChanged REVISION 5)
Q_PROPERTY(QString title READ title WRITE setTitle)
Q_PROPERTY(QFont titleFont READ titleFont WRITE setTitleFont)
Q_PROPERTY(QColor titleColor READ titleColor WRITE setTitleColor NOTIFY titleColorChanged)
@@ -116,6 +118,10 @@ public:
DeclarativeChart::Theme theme();
void setAnimationOptions(DeclarativeChart::Animation animations);
DeclarativeChart::Animation animationOptions();
+ void setAnimationDuration(int msecs);
+ int animationDuration() const;
+ void setAnimationEasingCurve(const QEasingCurve &curve);
+ QEasingCurve animationEasingCurve() const;
void setTitle(QString title);
QString title();
QLegend *legend();
@@ -190,6 +196,8 @@ Q_SIGNALS:
Q_REVISION(3) void backgroundRoundnessChanged(qreal diameter);
Q_REVISION(4) void localizeNumbersChanged();
Q_REVISION(4) void localeChanged();
+ Q_REVISION(5) void animationDurationChanged(int msecs);
+ Q_REVISION(5) void animationEasingCurveChanged(QEasingCurve curve);
private Q_SLOTS:
void changeMargins(int top, int bottom, int left, int right);
diff --git a/src/chartsqml2/plugins.qmltypes b/src/chartsqml2/plugins.qmltypes
index d361739e..de666968 100644
--- a/src/chartsqml2/plugins.qmltypes
+++ b/src/chartsqml2/plugins.qmltypes
@@ -994,6 +994,8 @@ Module {
Property { name: "axes"; revision: 2; type: "QAbstractAxis"; isList: true; isReadonly: true }
Property { name: "localizeNumbers"; revision: 4; type: "bool" }
Property { name: "locale"; revision: 4; type: "QLocale" }
+ Property { name: "animationDuration"; revision: 5; type: "int" }
+ Property { name: "animationEasingCurve"; revision: 5; type: "QEasingCurve" }
Signal { name: "axisLabelsChanged" }
Signal {
name: "titleColorChanged"
@@ -1024,6 +1026,16 @@ Module {
}
Signal { name: "localizeNumbersChanged"; revision: 4 }
Signal { name: "localeChanged"; revision: 4 }
+ Signal {
+ name: "animationDurationChanged"
+ revision: 5
+ Parameter { name: "msecs"; type: "int" }
+ }
+ Signal {
+ name: "animationEasingCurveChanged"
+ revision: 5
+ Parameter { name: "curve"; type: "QEasingCurve" }
+ }
Method {
name: "series"
type: "QAbstractSeries*"
diff --git a/tests/auto/qchart/tst_qchart.cpp b/tests/auto/qchart/tst_qchart.cpp
index e0c5a49a..1e502d5a 100644
--- a/tests/auto/qchart/tst_qchart.cpp
+++ b/tests/auto/qchart/tst_qchart.cpp
@@ -59,6 +59,9 @@ private slots:
void addSeries();
void animationOptions_data();
void animationOptions();
+ void animationDuration();
+ void animationCurve_data();
+ void animationCurve();
void axisX_data();
void axisX();
void axisY_data();
@@ -160,6 +163,8 @@ void tst_QChart::qchart()
QVERIFY(m_chart->legend()->isVisible());
QCOMPARE(m_chart->animationOptions(), QChart::NoAnimation);
+ QCOMPARE(m_chart->animationDuration(), 1000);
+ QCOMPARE(m_chart->animationEasingCurve(), QEasingCurve(QEasingCurve::OutQuart));
QVERIFY(!m_chart->axisX());
QVERIFY(!m_chart->axisY());
QVERIFY(m_chart->backgroundBrush()!=QBrush());
@@ -258,6 +263,30 @@ void tst_QChart::animationOptions()
QCOMPARE(m_chart->animationOptions(), animationOptions);
}
+void tst_QChart::animationDuration()
+{
+ createTestData();
+ m_chart->setAnimationDuration(2000);
+ QVERIFY(m_chart->animationDuration() == 2000);
+}
+
+void tst_QChart::animationCurve_data()
+{
+ QTest::addColumn<QEasingCurve>("animationCurve");
+ QTest::newRow("Linear") << QEasingCurve(QEasingCurve::Linear);
+ QTest::newRow("InCubic") << QEasingCurve(QEasingCurve::InCubic);
+ QTest::newRow("OutSine") << QEasingCurve(QEasingCurve::OutSine);
+ QTest::newRow("OutInBack") << QEasingCurve(QEasingCurve::OutInBack);
+}
+
+void tst_QChart::animationCurve()
+{
+ createTestData();
+ QFETCH(QEasingCurve, animationCurve);
+ m_chart->setAnimationEasingCurve(animationCurve);
+ QCOMPARE(m_chart->animationEasingCurve(), animationCurve);
+}
+
void tst_QChart::axisX_data()
{
diff --git a/tests/auto/qml-qtquicktest/tst_chartview.qml b/tests/auto/qml-qtquicktest/tst_chartview.qml
index 67b9155a..a80b1d3f 100644
--- a/tests/auto/qml-qtquicktest/tst_chartview.qml
+++ b/tests/auto/qml-qtquicktest/tst_chartview.qml
@@ -31,6 +31,8 @@ Rectangle {
function test_chartViewProperties() {
compare(chartView.animationOptions, ChartView.NoAnimation, "ChartView.animationOptions");
+ compare(chartView.animationDuration, 1000, "ChartView.animationDuration");
+ compare(chartView.animationEasingCurve.type, Easing.OutQuart, "ChartView.animationEasingCurve");
verify(chartView.backgroundColor != undefined);
verify(chartView.margins.bottom > 0, "ChartView.margins.bottom");
verify(chartView.margins.top > 0, "ChartView.margins.top");
diff --git a/tests/manual/qmlchartproperties/qml/qmlchartproperties/Chart.qml b/tests/manual/qmlchartproperties/qml/qmlchartproperties/Chart.qml
index d813e1cb..5d103467 100644
--- a/tests/manual/qmlchartproperties/qml/qmlchartproperties/Chart.qml
+++ b/tests/manual/qmlchartproperties/qml/qmlchartproperties/Chart.qml
@@ -17,7 +17,7 @@
****************************************************************************/
import QtQuick 2.0
-import QtCharts 2.0
+import QtCharts 2.1
ChartView {
id: chartView
@@ -45,7 +45,11 @@ ChartView {
onBackgroundRoundnessChanged: console.log("chart.onBackgroundRoundnessChanged: " + diameter);
onSeriesAdded: console.log("chart.onSeriesAdded: " + series.name);
onSeriesRemoved: console.log("chart.onSeriesRemoved: " + series.name);
- onPlotAreaColorChanged: console.log("chart.plotAreaColorChanged: " + chart.plotAreaColor);
+ onPlotAreaColorChanged: console.log("chart.onPlotAreaColorChanged: " + chart.plotAreaColor);
+ onAnimationDurationChanged: console.log("chart.onAnimationDurationChanged: "
+ + chart.animationDuration);
+ onAnimationEasingCurveChanged: console.log("chart.onAnimationEasingCurveChanged: "
+ + chart.animationEasingCurve.type);
legend.onVisibleChanged: console.log("legend.onVisibleChanged: " + chart.legend.visible);
legend.onBackgroundVisibleChanged: console.log("legend.onBackgroundVisibleChanged: " + visible);
diff --git a/tests/manual/qmlchartproperties/qml/qmlchartproperties/ChartEditorProperties.qml b/tests/manual/qmlchartproperties/qml/qmlchartproperties/ChartEditorProperties.qml
index 9b0633c5..49fd4bd7 100644
--- a/tests/manual/qmlchartproperties/qml/qmlchartproperties/ChartEditorProperties.qml
+++ b/tests/manual/qmlchartproperties/qml/qmlchartproperties/ChartEditorProperties.qml
@@ -21,8 +21,16 @@ import QtQuick 2.0
Flow {
anchors.fill: parent
property variant chart
+ property variant easingTypes: [Easing.Linear, Easing.InCubic, Easing.OutSine, Easing.OutInBack]
+ property int easingTypeIndex: 0
flow: Flow.TopToBottom
spacing: 5
+
+ function nextEasingType() {
+ easingTypeIndex++;
+ return easingTypes[easingTypeIndex % easingTypes.length];
+ }
+
Button {
text: "visible"
onClicked: chart.visible = !chart.visible;
@@ -44,6 +52,18 @@ Flow {
onClicked: chart.animationOptions--;
}
Button {
+ text: "animation duration +"
+ onClicked: chart.animationDuration = chart.animationDuration + 1000;
+ }
+ Button {
+ text: "animation duration -"
+ onClicked: chart.animationDuration = chart.animationDuration - 1000;
+ }
+ Button {
+ text: "animation curve"
+ onClicked: chart.animationEasingCurve.type = nextEasingType();
+ }
+ Button {
text: "background color"
onClicked: chart.backgroundColor = main.nextColor();
}