##// END OF EJS Templates
Refactors layout...
Refactors layout * adds sizeHints to layout managers * adds sizeHiint to axes * adds "..." wraping to titles * adds title for axes * adds "..." wraping to legend markers * adds logic for layouting axes vs legend vs plotArea * renames minimumMargins to margin * marings size is always keept * legend takes contentMargins into consideration during layout * charts takes contentMargins into consideration during layout * adds "..." wraping to chartvaleaxisY * adds logic to resize plotArea during scale and scroll

File last commit:

r1965:8d7d66e44a18
r1965:8d7d66e44a18
Show More
declarativechart.cpp
705 lines | 24.0 KiB | text/x-c | CppLexer
Jani Honkonen
Add/modify license headers
r830 /****************************************************************************
**
** Copyright (C) 2012 Digia Plc
** All rights reserved.
** For any questions to Digia, please use contact form at http://qt.digia.com
**
** This file is part of the Qt Commercial Charts Add-on.
**
** $QT_BEGIN_LICENSE$
** Licensees holding valid Qt Commercial licenses may use this file in
** accordance with the Qt Commercial License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia.
**
** If you have questions regarding the use of this file, please use
** contact form at http://qt.digia.com
** $QT_END_LICENSE$
**
****************************************************************************/
Jani Honkonen
First draft of project structure
r1 #include "declarativechart.h"
Jani Honkonen
Removing garbage from declarativechart
r660 #include <QPainter>
Tero Ahola
Refactored QML axis handling
r1813 #include <QDeclarativeEngine>
Tero Ahola
QML demo with dynamic data
r1240 #include "declarativelineseries.h"
#include "declarativeareaseries.h"
#include "declarativebarseries.h"
#include "declarativepieseries.h"
#include "declarativesplineseries.h"
#include "declarativescatterseries.h"
Marek Rosa
renamed QBarCategoryAxis related files
r1810 #include "qbarcategoryaxis.h"
Tero Ahola
Refactored QML axis handling
r1813 #include "qvalueaxis.h"
Marek Rosa
updated AxisType names
r1818 #include "qcategoryaxis.h"
Tero Ahola
Refactored QML axis handling
r1813 #include "qabstractseries_p.h"
Tero Ahola
Added ChartView.minimumMargins to QML properties
r1928 #include "declarativemargins.h"
Jani Honkonen
First draft of project structure
r1
Marek Rosa
Disabled QDateTimeAxis on ARM
r1867 #ifndef QT_ON_ARM
#include "qdatetimeaxis.h"
#endif
Tero Ahola
Proof-of-concept for QML api...
r120 QTCOMMERCIALCHART_BEGIN_NAMESPACE
Tero Ahola
Began documenting the QML api
r1443 /*!
\qmlclass ChartView DeclarativeChart
ChartView element is the parent that is responsible for showing different chart series types.
Tero Ahola
Documenting xy-series
r1491 The following QML shows how to create a simple chart with one pie series:
\snippet ../examples/qmlpiechart/qml/qmlpiechart/main.qml 1
\snippet ../examples/qmlpiechart/qml/qmlpiechart/main.qml 2
\snippet ../examples/qmlpiechart/qml/qmlpiechart/main.qml 3
Tero Ahola
Began documenting the QML api
r1443
\beginfloatleft
Tero Ahola
Documenting xy-series
r1491 \image examples_qmlpiechart.png
Tero Ahola
Began documenting the QML api
r1443 \endfloat
\clearfloat
*/
Tero Ahola
Minor modifications to properties of abstract, area and bar series
r1462 /*!
\qmlproperty Theme ChartView::theme
Theme defines the visual appearance of the chart, including for example colors, fonts, line
widths and chart background.
*/
/*!
\qmlproperty Animation ChartView::animation
Animation configuration of the chart. One of ChartView.NoAnimation, ChartView.GridAxisAnimations,
ChartView.SeriesAnimations or ChartView.AllAnimations.
*/
Jani Honkonen
Add qml Font properties & docs
r1517 /*!
\qmlproperty Font ChartView::titleFont
The title font of the chart
See the \l {Font} {QML Font Element} for detailed documentation.
*/
Tero Ahola
Minor modifications to properties of abstract, area and bar series
r1462 /*!
\qmlproperty string ChartView::title
The title of the chart, shown on top of the chart.
Tero Ahola
Fixed QML ChartView background color property
r1473 \sa ChartView::titleColor
Tero Ahola
Minor modifications to properties of abstract, area and bar series
r1462 */
/*!
\qmlproperty string ChartView::titleColor
The color of the title text.
*/
/*!
\qmlproperty Axis ChartView::axisX
The x-axis of the chart.
*/
/*!
\qmlproperty Axis ChartView::axisY
The default y-axis of the chart.
*/
Tero Ahola
Fixed QML ChartView background color property
r1473 /*!
\qmlproperty Legend ChartView::legend
The legend of the chart. Legend lists all the series, pie slices and bar sets added on the chart.
*/
/*!
\qmlproperty int ChartView::count
The count of series added to the chart.
*/
/*!
\qmlproperty color ChartView::backgroundColor
The color of the chart's background. By default background color is defined by chart theme.
\sa ChartView::theme
*/
/*!
\qmlproperty bool ChartView::dropShadowEnabled
The chart's border drop shadow. Set to true to enable drop shadow.
*/
Tero Ahola
Added property definitions to QChart
r1524 /*!
\qmlproperty real ChartView::topMargin
Tero Ahola
Added ChartView.minimumMargins to QML properties
r1928 Deprecated. Use minimumMargins and plotArea instead.
Tero Ahola
Added property definitions to QChart
r1524 */
/*!
\qmlproperty real ChartView::bottomMargin
Tero Ahola
Added ChartView.minimumMargins to QML properties
r1928 Deprecated. Use minimumMargins and plotArea instead.
Tero Ahola
Added property definitions to QChart
r1524 */
/*!
\qmlproperty real ChartView::leftMargin
Tero Ahola
Added ChartView.minimumMargins to QML properties
r1928 Deprecated. Use minimumMargins and plotArea instead.
Tero Ahola
Added property definitions to QChart
r1524 */
/*!
\qmlproperty real ChartView::rightMargin
Tero Ahola
Added ChartView.minimumMargins to QML properties
r1928 Deprecated. Use minimumMargins and plotArea instead.
*/
/*!
\qmlproperty Margins ChartView::minimumMargins
Tero Ahola
Added ChartView.plotArea to QML API
r1929 The minimum margins allowed between the outer bounds and the plotArea of the ChartView. Margins
area of ChartView is used for drawing title, axes and legend. Please note that setting the
properties of minimumMargins may be bigger than the defined value, depending on other ChartView
properties that affect it's layout. If you need to know the actual plotting area used at any
given time, you can check ChartView::plotArea instead.
*/
/*!
\qmlproperty rect ChartView::plotArea
The area on the ChartView that is used for drawing series. This is the ChartView rect without the
margins.
\sa ChartView::minimumMargins
Tero Ahola
Added property definitions to QChart
r1524 */
Tero Ahola
QML methods of series: several fixes and documentation
r1521 /*!
\qmlmethod AbstractSeries ChartView::series(int index)
Returns the series with \a index on the chart. This allows you to loop through the series of a chart together with
the count property of the chart.
*/
/*!
\qmlmethod AbstractSeries ChartView::series(string name)
Returns the first series on the chart with \a name. If there is no series with that name, returns null.
*/
/*!
Tero Ahola
QML: Added possibility to define axes when creating series
r1960 \qmlmethod AbstractSeries ChartView::createSeries(SeriesType type, string name, AbstractAxis axisX, AbstractAxis axisY)
Creates a series object of \a type to the chart with name \a name, optional axis \a axisX and
optional axis \a axisY. For example:
Tero Ahola
QML methods of series: several fixes and documentation
r1521 \code
Tero Ahola
QML: Added possibility to define axes when creating series
r1960 // lineSeries is a LineSeries object that has already been added to the ChartView; re-use it's axes
var myAxisX = chartView.axisX(lineSeries);
var myAxisY = chartView.axisY(lineSeries);
var scatter = chartView.createSeries(ChartView.SeriesTypeScatter, "scatter series", myAxisX, myAxisY);
Tero Ahola
QML methods of series: several fixes and documentation
r1521 \endcode
*/
Tero Ahola
Added removeSeries and removeAllSeries to QML API
r1948 /*!
\qmlmethod ChartView::removeSeries(AbstractSeries series)
Removes the \a series from the chart. The series object is also destroyed.
*/
/*!
\qmlmethod ChartView::removeAllSeries()
Removes all series from the chart. All the series objects are also destroyed.
*/
Tero Ahola
QML: Added possibility to define axes when creating series
r1960 /*!
\qmlmethod Axis ChartView::axisX(QAbstractSeries *series)
The x-axis of the series.
*/
Tero Ahola
Minor modifications to properties of abstract, area and bar series
r1462 /*!
\qmlmethod Axis ChartView::axisY(QAbstractSeries *series)
Tero Ahola
QML: Added possibility to define axes when creating series
r1960 The y-axis of the series.
Tero Ahola
QML methods of series: several fixes and documentation
r1521 */
/*!
\qmlmethod ChartView::zoomY(real factor)
Zooms in by \a factor on the center of the chart.
*/
/*!
\qmlmethod ChartView::scrollLeft(real pixels)
Scrolls to left by \a pixels. This is a convenience function that suits for example for key navigation.
Tero Ahola
Fixed minor issues in QML axes documentation
r1869 \sa ValueAxis::min, ValueAxis::max, BarCategoryAxis::min, BarCategoryAxis::max
Tero Ahola
QML methods of series: several fixes and documentation
r1521 */
/*!
\qmlmethod ChartView::scrollRight(real pixels)
Scrolls to right by \a pixels. This is a convenience function that suits for example for key navigation.
Tero Ahola
Fixed minor issues in QML axes documentation
r1869 \sa ValueAxis::min, ValueAxis::max, BarCategoryAxis::min, BarCategoryAxis::max
Tero Ahola
QML methods of series: several fixes and documentation
r1521 */
/*!
\qmlmethod ChartView::scrollUp(real pixels)
Scrolls up by \a pixels. This is a convenience function that suits for example for key navigation.
Tero Ahola
Fixed minor issues in QML axes documentation
r1869 \sa ValueAxis::min, ValueAxis::max, BarCategoryAxis::min, BarCategoryAxis::max
Tero Ahola
QML methods of series: several fixes and documentation
r1521 */
/*!
\qmlmethod ChartView::scrollDown(real pixels)
Scrolls down by \a pixels. This is a convenience function that suits for example for key navigation.
Tero Ahola
Fixed minor issues in QML axes documentation
r1869 \sa ValueAxis::min, ValueAxis::max, BarCategoryAxis::min, BarCategoryAxis::max
Tero Ahola
Minor modifications to properties of abstract, area and bar series
r1462 */
Tero Ahola
QML signals documentation
r1531 /*!
Tero Ahola
Improved ChartView.minimuMargins implementation
r1946 \qmlsignal ChartView::onPlotAreaChanged(rect plotArea)
The plot area of the chart has changed. This may happen for example, if you modify minimumMargins
or if you resize the chart, or if you modify font size related properties of the legend or chart
title.
Tero Ahola
QML signals documentation
r1531 */
Jani Honkonen
First draft of project structure
r1 DeclarativeChart::DeclarativeChart(QDeclarativeItem *parent)
Tero Ahola
Proof-of-concept for QML api...
r120 : QDeclarativeItem(parent),
Tero Ahola
Qml ChartView properties; legend to use Qt alignments
r1357 m_chart(new QChart(this))
Jani Honkonen
First draft of project structure
r1 {
setFlag(QGraphicsItem::ItemHasNoContents, false);
Tero Ahola
Added ChartView.minimumMargins to QML properties
r1928 m_minMargins = new DeclarativeMargins(this);
Tero Ahola
Improved ChartView.minimuMargins implementation
r1946 connect(m_minMargins, SIGNAL(topChanged(int, int, int, int)), this, SLOT(changeMinimumMargins(int, int, int, int)));
connect(m_minMargins, SIGNAL(bottomChanged(int, int, int, int)), this, SLOT(changeMinimumMargins(int, int, int, int)));
connect(m_minMargins, SIGNAL(leftChanged(int, int, int, int)), this, SLOT(changeMinimumMargins(int, int, int, int)));
connect(m_minMargins, SIGNAL(rightChanged(int, int, int, int)), this, SLOT(changeMinimumMargins(int, int, int, int)));
Tero Ahola
Added property definitions to QChart
r1524 }
Tero Ahola
Added ChartView.minimumMargins to QML properties
r1928 void DeclarativeChart::changeMinimumMargins(int top, int bottom, int left, int right)
Tero Ahola
Added property definitions to QChart
r1524 {
Michal Klocek
Refactors layout...
r1965 m_chart->setMargins(QMargins(left, top, right, bottom));
Tero Ahola
Improved ChartView.minimuMargins implementation
r1946 emit minimumMarginsChanged();
emit plotAreaChanged(m_chart->plotArea());
Jani Honkonen
First draft of project structure
r1 }
Tero Ahola
d
r722 DeclarativeChart::~DeclarativeChart()
{
delete m_chart;
}
Tero Ahola
Simplified declarative implementation
r1117 void DeclarativeChart::childEvent(QChildEvent *event)
{
if (event->type() == QEvent::ChildAdded) {
if (qobject_cast<QAbstractSeries *>(event->child())) {
m_chart->addSeries(qobject_cast<QAbstractSeries *>(event->child()));
}
}
}
void DeclarativeChart::componentComplete()
{
foreach(QObject *child, children()) {
if (qobject_cast<QAbstractSeries *>(child)) {
Tero Ahola
Switched order of add series/set axis in declarative chart
r1903 // Add series to the chart
QAbstractSeries *series = qobject_cast<QAbstractSeries *>(child);
m_chart->addSeries(series);
Tero Ahola
Fixed a bug in setting axes dynamically via QML API
r1947 // Set optional user defined axes for the series and connect axis related signals
Tero Ahola
Refactored QML axis handling
r1813 if (qobject_cast<DeclarativeLineSeries *>(child)) {
DeclarativeLineSeries *s = qobject_cast<DeclarativeLineSeries *>(child);
Jani Honkonen
Normalize signal and slot signatures
r1937 connect(s, SIGNAL(axisXChanged(QAbstractAxis*)), this, SLOT(handleAxisXSet(QAbstractAxis*)));
connect(s, SIGNAL(axisYChanged(QAbstractAxis*)), this, SLOT(handleAxisYSet(QAbstractAxis*)));
Tero Ahola
Refactored QML axis handling
r1813 setAxisX(s->axisX(), s);
setAxisY(s->axisY(), s);
} else if (qobject_cast<DeclarativeSplineSeries *>(child)) {
DeclarativeSplineSeries *s = qobject_cast<DeclarativeSplineSeries *>(child);
Jani Honkonen
Normalize signal and slot signatures
r1937 connect(s, SIGNAL(axisXChanged(QAbstractAxis*)), this, SLOT(handleAxisXSet(QAbstractAxis*)));
connect(s, SIGNAL(axisYChanged(QAbstractAxis*)), this, SLOT(handleAxisYSet(QAbstractAxis*)));
Tero Ahola
Refactored QML axis handling
r1813 setAxisX(s->axisX(), s);
setAxisY(s->axisY(), s);
} else if (qobject_cast<DeclarativeScatterSeries *>(child)) {
DeclarativeScatterSeries *s = qobject_cast<DeclarativeScatterSeries *>(child);
Jani Honkonen
Normalize signal and slot signatures
r1937 connect(s, SIGNAL(axisXChanged(QAbstractAxis*)), this, SLOT(handleAxisXSet(QAbstractAxis*)));
connect(s, SIGNAL(axisYChanged(QAbstractAxis*)), this, SLOT(handleAxisYSet(QAbstractAxis*)));
Tero Ahola
Refactored QML axis handling
r1813 setAxisX(s->axisX(), s);
setAxisY(s->axisY(), s);
} else if (qobject_cast<DeclarativeAreaSeries *>(child)) {
DeclarativeAreaSeries *s = qobject_cast<DeclarativeAreaSeries *>(child);
Jani Honkonen
Normalize signal and slot signatures
r1937 connect(s, SIGNAL(axisXChanged(QAbstractAxis*)), this, SLOT(handleAxisXSet(QAbstractAxis*)));
connect(s, SIGNAL(axisYChanged(QAbstractAxis*)), this, SLOT(handleAxisYSet(QAbstractAxis*)));
Tero Ahola
Refactored QML axis handling
r1813 setAxisX(s->axisX(), s);
setAxisY(s->axisY(), s);
} else if (qobject_cast<DeclarativeBarSeries *>(child)) {
DeclarativeBarSeries *s = qobject_cast<DeclarativeBarSeries *>(child);
Jani Honkonen
Normalize signal and slot signatures
r1937 connect(s, SIGNAL(axisXChanged(QAbstractAxis*)), this, SLOT(handleAxisXSet(QAbstractAxis*)));
connect(s, SIGNAL(axisYChanged(QAbstractAxis*)), this, SLOT(handleAxisYSet(QAbstractAxis*)));
Tero Ahola
Refactored QML axis handling
r1813 setAxisX(s->axisX(), s);
setAxisY(s->axisY(), s);
} else if (qobject_cast<DeclarativeStackedBarSeries *>(child)) {
DeclarativeStackedBarSeries *s = qobject_cast<DeclarativeStackedBarSeries *>(child);
Jani Honkonen
Normalize signal and slot signatures
r1937 connect(s, SIGNAL(axisXChanged(QAbstractAxis*)), this, SLOT(handleAxisXSet(QAbstractAxis*)));
connect(s, SIGNAL(axisYChanged(QAbstractAxis*)), this, SLOT(handleAxisYSet(QAbstractAxis*)));
Tero Ahola
Refactored QML axis handling
r1813 setAxisX(s->axisX(), s);
setAxisY(s->axisY(), s);
} else if (qobject_cast<DeclarativePercentBarSeries *>(child)) {
DeclarativePercentBarSeries *s = qobject_cast<DeclarativePercentBarSeries *>(child);
Jani Honkonen
Normalize signal and slot signatures
r1937 connect(s, SIGNAL(axisXChanged(QAbstractAxis*)), this, SLOT(handleAxisXSet(QAbstractAxis*)));
connect(s, SIGNAL(axisYChanged(QAbstractAxis*)), this, SLOT(handleAxisYSet(QAbstractAxis*)));
Tero Ahola
Refactored QML axis handling
r1813 setAxisX(s->axisX(), s);
setAxisY(s->axisY(), s);
} else if (qobject_cast<DeclarativeHorizontalBarSeries *>(child)) {
DeclarativeHorizontalBarSeries *s = qobject_cast<DeclarativeHorizontalBarSeries *>(child);
Jani Honkonen
Normalize signal and slot signatures
r1937 connect(s, SIGNAL(axisXChanged(QAbstractAxis*)), this, SLOT(handleAxisXSet(QAbstractAxis*)));
connect(s, SIGNAL(axisYChanged(QAbstractAxis*)), this, SLOT(handleAxisYSet(QAbstractAxis*)));
Tero Ahola
Refactored QML axis handling
r1813 setAxisX(s->axisX(), s);
setAxisY(s->axisY(), s);
} else if (qobject_cast<DeclarativeHorizontalStackedBarSeries *>(child)) {
DeclarativeHorizontalStackedBarSeries *s = qobject_cast<DeclarativeHorizontalStackedBarSeries *>(child);
Jani Honkonen
Normalize signal and slot signatures
r1937 connect(s, SIGNAL(axisXChanged(QAbstractAxis*)), this, SLOT(handleAxisXSet(QAbstractAxis*)));
connect(s, SIGNAL(axisYChanged(QAbstractAxis*)), this, SLOT(handleAxisYSet(QAbstractAxis*)));
Tero Ahola
Refactored QML axis handling
r1813 setAxisX(s->axisX(), s);
setAxisY(s->axisY(), s);
} else if (qobject_cast<DeclarativeHorizontalPercentBarSeries *>(child)) {
DeclarativeHorizontalPercentBarSeries *s = qobject_cast<DeclarativeHorizontalPercentBarSeries *>(child);
Jani Honkonen
Normalize signal and slot signatures
r1937 connect(s, SIGNAL(axisXChanged(QAbstractAxis*)), this, SLOT(handleAxisXSet(QAbstractAxis*)));
connect(s, SIGNAL(axisYChanged(QAbstractAxis*)), this, SLOT(handleAxisYSet(QAbstractAxis*)));
Tero Ahola
Refactored QML axis handling
r1813 setAxisX(s->axisX(), s);
setAxisY(s->axisY(), s);
}
Tero Ahola
Simplified declarative implementation
r1117 }
}
Tero Ahola
Refactored QML axis handling
r1813
Tero Ahola
Fixed a bug in setting axes dynamically via QML API
r1947 // Create the missing axes for the series that cannot be painted without axes
foreach (QAbstractSeries *chartSeries, m_chart->series())
createDefaultAxes(chartSeries);
Tero Ahola
Simplified declarative implementation
r1117 QDeclarativeItem::componentComplete();
}
Tero Ahola
Refactored QML axis handling
r1813 void DeclarativeChart::handleAxisXSet(QAbstractAxis* axis)
{
// qDebug() << "DeclarativeChart::handleAxisXSet" << sender() << axis;
Tero Ahola
Fixed a bug in setting axes dynamically via QML API
r1947 if (axis && qobject_cast<QAbstractSeries *>(sender()))
m_chart->setAxisX(axis, qobject_cast<QAbstractSeries *>(sender()));
else
qWarning() << "Trying to set axisX to null.";
Tero Ahola
Refactored QML axis handling
r1813 }
void DeclarativeChart::handleAxisYSet(QAbstractAxis* axis)
{
// qDebug() << "DeclarativeChart::handleAxisYSet" << sender() << axis;
Tero Ahola
Fixed a bug in setting axes dynamically via QML API
r1947 if (axis && qobject_cast<QAbstractSeries *>(sender()))
m_chart->setAxisY(axis, qobject_cast<QAbstractSeries *>(sender()));
else
qWarning() << "Trying to set axisY to null.";
Tero Ahola
Refactored QML axis handling
r1813 }
Tero Ahola
Proof-of-concept for QML api...
r120 void DeclarativeChart::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry)
Jani Honkonen
First draft of project structure
r1 {
Tero Ahola
Draft for QML demo that shows weather forecasts
r1139 // qDebug() << "DeclarativeChart::geometryChanged" << newGeometry.width() << newGeometry.height();
Tero Ahola
Set margins to 30 on QML impl
r200 if (newGeometry.isValid()) {
if (newGeometry.width() > 0 && newGeometry.height() > 0) {
Tero Ahola
Fixed build issue with margin related funcs
r642 m_chart->resize(newGeometry.width(), newGeometry.height());
Tero Ahola
Set margins to 30 on QML impl
r200 }
}
Tero Ahola
Added test app for testing QML properties
r1298 QDeclarativeItem::geometryChanged(newGeometry, oldGeometry);
Tero Ahola
Improved ChartView.minimuMargins implementation
r1946
// It would be better to trigger the plotAreaChanged signal from QChart::plotAreaChanged or
// similar. Since that kind of a signal is not clearly needed in the C++ API the work-around is
// to implement it here for the QML API purposes.
emit plotAreaChanged(m_chart->plotArea());
Jani Honkonen
First draft of project structure
r1 }
Tero Ahola
QML demo with dynamic data
r1240 void DeclarativeChart::setTheme(DeclarativeChart::Theme theme)
Tero Ahola
Added animation configuration to QML chart api
r1094 {
Tero Ahola
Qml ChartView properties; legend to use Qt alignments
r1357 QChart::ChartTheme chartTheme = (QChart::ChartTheme) theme;
Tero Ahola
color and borderColor properties to XY charts; removed unnecessary signals
r1481 if (chartTheme != m_chart->theme())
Tero Ahola
Qml ChartView properties; legend to use Qt alignments
r1357 m_chart->setTheme(chartTheme);
Tero Ahola
Added animation configuration to QML chart api
r1094 }
Tero Ahola
QML demo with dynamic data
r1240 DeclarativeChart::Theme DeclarativeChart::theme()
{
return (DeclarativeChart::Theme) m_chart->theme();
}
void DeclarativeChart::setAnimationOptions(DeclarativeChart::Animation animations)
{
Tero Ahola
Qml ChartView properties; legend to use Qt alignments
r1357 QChart::AnimationOption animationOptions = (QChart::AnimationOption) animations;
Tero Ahola
color and borderColor properties to XY charts; removed unnecessary signals
r1481 if (animationOptions != m_chart->animationOptions())
Tero Ahola
Qml ChartView properties; legend to use Qt alignments
r1357 m_chart->setAnimationOptions(animationOptions);
Tero Ahola
QML demo with dynamic data
r1240 }
DeclarativeChart::Animation DeclarativeChart::animationOptions()
Tero Ahola
Added animation configuration to QML chart api
r1094 {
if (m_chart->animationOptions().testFlag(QChart::AllAnimations))
Tero Ahola
QML demo with dynamic data
r1240 return DeclarativeChart::AllAnimations;
Tero Ahola
Added animation configuration to QML chart api
r1094 else if (m_chart->animationOptions().testFlag(QChart::GridAxisAnimations))
Tero Ahola
QML demo with dynamic data
r1240 return DeclarativeChart::GridAxisAnimations;
Tero Ahola
Added animation configuration to QML chart api
r1094 else if (m_chart->animationOptions().testFlag(QChart::SeriesAnimations))
Tero Ahola
QML demo with dynamic data
r1240 return DeclarativeChart::SeriesAnimations;
Tero Ahola
Added animation configuration to QML chart api
r1094 else
Tero Ahola
QML demo with dynamic data
r1240 return DeclarativeChart::NoAnimation;
Tero Ahola
Added animation configuration to QML chart api
r1094 }
Tero Ahola
Qml ChartView properties; legend to use Qt alignments
r1357 void DeclarativeChart::setTitle(QString title)
{
Tero Ahola
color and borderColor properties to XY charts; removed unnecessary signals
r1481 if (title != m_chart->title())
Tero Ahola
Qml ChartView properties; legend to use Qt alignments
r1357 m_chart->setTitle(title);
Tero Ahola
Legend to QML API
r1095 }
Tero Ahola
Qml ChartView properties; legend to use Qt alignments
r1357 QString DeclarativeChart::title()
Tero Ahola
Legend to QML API
r1095 {
Tero Ahola
Qml ChartView properties; legend to use Qt alignments
r1357 return m_chart->title();
Tero Ahola
Legend to QML API
r1095 }
Tero Ahola
Added value and category axis to QML api
r1550 QAbstractAxis *DeclarativeChart::axisX(QAbstractSeries *series)
Tero Ahola
Draft for QML demo that shows weather forecasts
r1139 {
Tero Ahola
Added value and category axis to QML api
r1550 return m_chart->axisX(series);
Tero Ahola
Draft for QML demo that shows weather forecasts
r1139 }
Michal Klocek
Refactors QAxis to QAbstractAxis...
r1541 QAbstractAxis *DeclarativeChart::axisY(QAbstractSeries *series)
Tero Ahola
Draft for QML demo that shows weather forecasts
r1139 {
Tero Ahola
Minor modifications to properties of abstract, area and bar series
r1462 return m_chart->axisY(series);
Tero Ahola
Draft for QML demo that shows weather forecasts
r1139 }
Tero Ahola
Qml ChartView properties; legend to use Qt alignments
r1357 QLegend *DeclarativeChart::legend()
{
return m_chart->legend();
}
void DeclarativeChart::setTitleColor(QColor color)
{
QBrush b = m_chart->titleBrush();
if (color != b.color()) {
b.setColor(color);
m_chart->setTitleBrush(b);
Tero Ahola
Added property definitions to QChart
r1524 emit titleColorChanged(color);
Tero Ahola
Qml ChartView properties; legend to use Qt alignments
r1357 }
}
Jani Honkonen
Add qml Font properties & docs
r1517 QFont DeclarativeChart::titleFont() const
{
return m_chart->titleFont();
}
void DeclarativeChart::setTitleFont(const QFont& font)
{
m_chart->setTitleFont(font);
}
Tero Ahola
Qml ChartView properties; legend to use Qt alignments
r1357 QColor DeclarativeChart::titleColor()
{
return m_chart->titleBrush().color();
}
void DeclarativeChart::setBackgroundColor(QColor color)
{
QBrush b = m_chart->backgroundBrush();
Tero Ahola
Fixed QML ChartView background color property
r1473 if (b.style() != Qt::SolidPattern || color != b.color()) {
b.setStyle(Qt::SolidPattern);
Tero Ahola
Qml ChartView properties; legend to use Qt alignments
r1357 b.setColor(color);
m_chart->setBackgroundBrush(b);
emit backgroundColorChanged();
}
}
QColor DeclarativeChart::backgroundColor()
{
return m_chart->backgroundBrush().color();
Tero Ahola
Initial support for x-axis labels in QML api
r1157 }
Tero Ahola
QML demo with dynamic data
r1240 int DeclarativeChart::count()
{
return m_chart->series().count();
}
Tero Ahola
QML ChartView scrolling, zooming, drop shadow
r1461 void DeclarativeChart::setDropShadowEnabled(bool enabled)
{
Tero Ahola
Minor modifications to properties of abstract, area and bar series
r1462 if (enabled != m_chart->isDropShadowEnabled()) {
m_chart->setDropShadowEnabled(enabled);
Tero Ahola
QML ChartView scrolling, zooming, drop shadow
r1461 dropShadowEnabledChanged(enabled);
}
}
bool DeclarativeChart::dropShadowEnabled()
{
Tero Ahola
Minor modifications to properties of abstract, area and bar series
r1462 return m_chart->isDropShadowEnabled();
Tero Ahola
QML ChartView scrolling, zooming, drop shadow
r1461 }
Tero Ahola
Added property definitions to QChart
r1524 qreal DeclarativeChart::topMargin()
{
Tero Ahola
Added ChartView.minimumMargins to QML properties
r1928 qWarning() << "ChartView.topMargin is deprecated. Use minimumMargins and plotArea instead.";
return m_chart->plotArea().top();
Tero Ahola
Added property definitions to QChart
r1524 }
qreal DeclarativeChart::bottomMargin()
{
Michal Klocek
Refactors layout...
r1965
Tero Ahola
Added ChartView.minimumMargins to QML properties
r1928 qWarning() << "ChartView.bottomMargin is deprecated. Use minimumMargins and plotArea instead.";
return m_chart->plotArea().bottom();
Tero Ahola
Added property definitions to QChart
r1524 }
qreal DeclarativeChart::leftMargin()
{
Tero Ahola
Added ChartView.minimumMargins to QML properties
r1928 qWarning() << "ChartView.leftMargin is deprecated. Use minimumMargins and plotArea instead.";
return m_chart->plotArea().left();
Tero Ahola
Added property definitions to QChart
r1524 }
qreal DeclarativeChart::rightMargin()
{
Tero Ahola
Added ChartView.minimumMargins to QML properties
r1928 qWarning() << "ChartView.rightMargin is deprecated. Use minimumMargins and plotArea instead.";
return m_chart->plotArea().right();
Tero Ahola
Added property definitions to QChart
r1524 }
Tero Ahola
QML ChartView scrolling, zooming, drop shadow
r1461 void DeclarativeChart::zoom(qreal factor)
{
m_chart->zoom(factor);
}
void DeclarativeChart::scrollLeft(qreal pixels)
{
Tero Ahola
Fixed scrolling left/right mixed up in QML ChartView
r1955 m_chart->scroll(-pixels, 0);
Tero Ahola
QML ChartView scrolling, zooming, drop shadow
r1461 }
void DeclarativeChart::scrollRight(qreal pixels)
{
Tero Ahola
Fixed scrolling left/right mixed up in QML ChartView
r1955 m_chart->scroll(pixels, 0);
Tero Ahola
QML ChartView scrolling, zooming, drop shadow
r1461 }
void DeclarativeChart::scrollUp(qreal pixels)
{
Michal Klocek
Changes to qchart qabstractseries API
r1553 m_chart->scroll(0, pixels);
Tero Ahola
QML ChartView scrolling, zooming, drop shadow
r1461 }
void DeclarativeChart::scrollDown(qreal pixels)
{
Michal Klocek
Changes to qchart qabstractseries API
r1553 m_chart->scroll(0, -pixels);
Tero Ahola
QML ChartView scrolling, zooming, drop shadow
r1461 }
Tero Ahola
QML demo with dynamic data
r1240 QAbstractSeries *DeclarativeChart::series(int index)
{
if (index < m_chart->series().count()) {
return m_chart->series().at(index);
}
return 0;
}
QAbstractSeries *DeclarativeChart::series(QString seriesName)
{
foreach(QAbstractSeries *series, m_chart->series()) {
if (series->name() == seriesName)
return series;
}
return 0;
}
QAbstractSeries *DeclarativeChart::createSeries(DeclarativeChart::SeriesType type, QString name)
Tero Ahola
QML: Added possibility to define axes when creating series
r1960 {
return createSeries(type, name, 0, 0);
}
QAbstractSeries *DeclarativeChart::createSeries(DeclarativeChart::SeriesType type, QString name, QAbstractAxis *axisX, QAbstractAxis *axisY)
Tero Ahola
QML demo with dynamic data
r1240 {
QAbstractSeries *series = 0;
Tero Ahola
Refactored QML axis handling
r1813
Tero Ahola
QML demo with dynamic data
r1240 switch (type) {
case DeclarativeChart::SeriesTypeLine:
series = new DeclarativeLineSeries();
break;
case DeclarativeChart::SeriesTypeArea:
series = new DeclarativeAreaSeries();
break;
case DeclarativeChart::SeriesTypeStackedBar:
sauimone
added stacked and percent bar series creation to declarativechart
r1690 series = new DeclarativeStackedBarSeries();
Tero Ahola
QML demo with dynamic data
r1240 break;
case DeclarativeChart::SeriesTypePercentBar:
sauimone
added stacked and percent bar series creation to declarativechart
r1690 series = new DeclarativePercentBarSeries();
Tero Ahola
QML demo with dynamic data
r1240 break;
sauimone
GroupedBarSeries to BarSeries
r1594 case DeclarativeChart::SeriesTypeBar:
series = new DeclarativeBarSeries();
Tero Ahola
QML demo with dynamic data
r1240 break;
sauimone
added horizontal barcharts to qmlchart demo
r1811 case DeclarativeChart::SeriesTypeHorizontalBar:
series = new DeclarativeHorizontalBarSeries();
break;
case DeclarativeChart::SeriesTypeHorizontalPercentBar:
series = new DeclarativeHorizontalPercentBarSeries();
break;
case DeclarativeChart::SeriesTypeHorizontalStackedBar:
series = new DeclarativeHorizontalStackedBarSeries();
break;
Tero Ahola
QML demo with dynamic data
r1240 case DeclarativeChart::SeriesTypePie:
series = new DeclarativePieSeries();
break;
case DeclarativeChart::SeriesTypeScatter:
series = new DeclarativeScatterSeries();
break;
case DeclarativeChart::SeriesTypeSpline:
series = new DeclarativeSplineSeries();
break;
default:
qWarning() << "Illegal series type";
}
Tero Ahola
Refactored QML axis handling
r1813
if (series) {
series->setName(name);
m_chart->addSeries(series);
Tero Ahola
QML: Added possibility to define axes when creating series
r1960 // Set possible user defined axes
setAxisX(axisX, series);
setAxisY(axisY, series);
// Then create the missing axes
Tero Ahola
Refactored QML axis handling
r1813 createDefaultAxes(series);
}
Tero Ahola
QML demo with dynamic data
r1240 return series;
}
Tero Ahola
Refactored QML axis handling
r1813 void DeclarativeChart::setAxisX(QAbstractAxis *axis, QAbstractSeries *series)
Michal Klocek
Adds axis to qml...
r1604 {
Tero Ahola
Refactored QML axis handling
r1813 if (axis)
m_chart->setAxisX(axis, series);
Michal Klocek
Adds axis to qml...
r1604 }
Tero Ahola
Refactored QML axis handling
r1813 void DeclarativeChart::setAxisY(QAbstractAxis *axis, QAbstractSeries *series)
Michal Klocek
Adds axis to qml...
r1604 {
Tero Ahola
Refactored QML axis handling
r1813 if (axis)
m_chart->setAxisY(axis, series);
Michal Klocek
Adds axis to qml...
r1604 }
void DeclarativeChart::createDefaultAxes()
{
Tero Ahola
Refactored QML axis handling
r1813 qWarning() << "ChartView.createDefaultAxes() is deprecated. Axes are created automatically.";
}
void DeclarativeChart::createDefaultAxes(QAbstractSeries* series)
{
foreach (QAbstractSeries *s, m_chart->series()) {
// If there is already an x axis of the correct type, re-use it
if (!m_chart->axisX(series) && s != series && m_chart->axisX(s)
&& m_chart->axisX(s)->type() == series->d_ptr->defaultAxisType(Qt::Horizontal))
m_chart->setAxisX(m_chart->axisX(s), series);
// If there is already a y axis of the correct type, re-use it
if (!m_chart->axisY(series) && s != series && m_chart->axisY(s)
&& m_chart->axisY(s)->type() == series->d_ptr->defaultAxisType(Qt::Vertical))
m_chart->setAxisY(m_chart->axisY(s), series);
}
// If no x axis of correct type was found, create a new x axis based of default axis type
if (!m_chart->axisX(series)) {
switch (series->d_ptr->defaultAxisType(Qt::Horizontal)) {
Marek Rosa
updated AxisType names
r1818 case QAbstractAxis::AxisTypeValue:
Tero Ahola
Refactored QML axis handling
r1813 m_chart->setAxisX(new QValueAxis(this), series);
break;
Marek Rosa
updated AxisType names
r1818 case QAbstractAxis::AxisTypeBarCategory:
Tero Ahola
Refactored QML axis handling
r1813 m_chart->setAxisX(new QBarCategoryAxis(this), series);
break;
Marek Rosa
updated AxisType names
r1818 case QAbstractAxis::AxisTypeCategory:
m_chart->setAxisX(new QCategoryAxis(this), series);
Tero Ahola
Refactored QML axis handling
r1813 break;
Marek Rosa
Disabled QDateTimeAxis on ARM
r1867 #ifndef QT_ON_ARM
Tero Ahola
Refactored QML axis handling
r1813 case QAbstractAxis::AxisTypeDateTime:
m_chart->setAxisX(new QDateTimeAxis(this), series);
break;
Marek Rosa
Disabled QDateTimeAxis on ARM
r1867 #endif
Tero Ahola
Refactored QML axis handling
r1813 default:
// Do nothing, assume AxisTypeNoAxis
break;
}
}
// If no y axis of correct type was found, create a new y axis based of default axis type
if (!m_chart->axisY(series)) {
switch (series->d_ptr->defaultAxisType(Qt::Vertical)) {
Marek Rosa
updated AxisType names
r1818 case QAbstractAxis::AxisTypeValue:
Tero Ahola
Refactored QML axis handling
r1813 m_chart->setAxisY(new QValueAxis(this), series);
break;
Marek Rosa
updated AxisType names
r1818 case QAbstractAxis::AxisTypeBarCategory:
Tero Ahola
Refactored QML axis handling
r1813 m_chart->setAxisY(new QBarCategoryAxis(this), series);
break;
Marek Rosa
updated AxisType names
r1818 case QAbstractAxis::AxisTypeCategory:
m_chart->setAxisY(new QCategoryAxis(this), series);
Tero Ahola
Refactored QML axis handling
r1813 break;
Marek Rosa
Disabled QDateTimeAxis on ARM
r1867 #ifndef QT_ON_ARM
Tero Ahola
Refactored QML axis handling
r1813 case QAbstractAxis::AxisTypeDateTime:
m_chart->setAxisY(new QDateTimeAxis(this), series);
break;
Marek Rosa
Disabled QDateTimeAxis on ARM
r1867 #endif
Tero Ahola
Refactored QML axis handling
r1813 default:
// Do nothing, assume AxisTypeNoAxis
break;
}
}
//qDebug() << "axis for series" << series << "x:" << m_chart->axisX(series) << "y:" << m_chart->axisY(series);
Michal Klocek
Adds axis to qml...
r1604 }
Tero Ahola
Proof-of-concept for QML api...
r120 #include "moc_declarativechart.cpp"
QTCOMMERCIALCHART_END_NAMESPACE