declarativechart.h
127 lines
| 4.0 KiB
| text/x-c
|
CLexer
Jani Honkonen
|
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
|
r1 | #ifndef DECLARATIVECHART_H | ||
#define DECLARATIVECHART_H | ||||
#include <QtCore/QtGlobal> | ||||
Tero Ahola
|
r120 | #include <QDeclarativeItem> | ||
#include <qchart.h> | ||||
Tero Ahola
|
r1139 | #include <QAxis> | ||
Tero Ahola
|
r120 | |||
QTCOMMERCIALCHART_BEGIN_NAMESPACE | ||||
Tero Ahola
|
r885 | // TODO: Derive from QChart for easier definition of properties? | ||
Tero Ahola
|
r120 | class DeclarativeChart : public QDeclarativeItem | ||
// TODO: for QTQUICK2: extend QQuickPainterItem instead | ||||
//class DeclarativeChart : public QQuickPaintedItem, public Chart | ||||
Jani Honkonen
|
r1 | { | ||
Q_OBJECT | ||||
Tero Ahola
|
r1240 | Q_PROPERTY(Theme theme READ theme WRITE setTheme) | ||
Q_PROPERTY(Animation animationOptions READ animationOptions WRITE setAnimationOptions) | ||||
Tero Ahola
|
r918 | Q_PROPERTY(QString title READ title WRITE setTitle) | ||
Tero Ahola
|
r1240 | Q_PROPERTY(Legend legend READ legend WRITE setLegend) | ||
Tero Ahola
|
r1139 | Q_PROPERTY(QAxis *axisX READ axisX) | ||
Q_PROPERTY(QAxis *axisY READ axisY) | ||||
Tero Ahola
|
r1157 | // TODO: how to define axis labels? This is not very convenient | ||
Q_PROPERTY(QVariantList axisXLabels READ axisXLabels WRITE setAxisXLabels) | ||||
Tero Ahola
|
r1240 | Q_PROPERTY(int count READ count) | ||
Q_ENUMS(Animation) | ||||
Q_ENUMS(Theme) | ||||
Q_ENUMS(Legend) | ||||
Q_ENUMS(SeriesType) | ||||
Tero Ahola
|
r1095 | |||
public: | ||||
Tero Ahola
|
r1240 | // duplicating enums from QChart to make the QML api namings 1-to-1 with the C++ api | ||
enum Theme { | ||||
ChartThemeLight = 0, | ||||
ChartThemeBlueCerulean, | ||||
ChartThemeDark, | ||||
ChartThemeBrownSand, | ||||
ChartThemeBlueNcs, | ||||
ChartThemeHighContrast, | ||||
ChartThemeBlueIcy | ||||
}; | ||||
enum Animation { | ||||
NoAnimation = 0x0, | ||||
GridAxisAnimations = 0x1, | ||||
SeriesAnimations =0x2, | ||||
AllAnimations = 0x3 | ||||
}; | ||||
enum Legend { | ||||
Tero Ahola
|
r1095 | LegendDisabled = 0, | ||
LegendTop, | ||||
LegendBottom, | ||||
LegendLeft, | ||||
LegendRight | ||||
}; | ||||
Jani Honkonen
|
r1 | |||
Tero Ahola
|
r1240 | enum SeriesType { | ||
SeriesTypeLine, | ||||
SeriesTypeArea, | ||||
SeriesTypeBar, | ||||
SeriesTypeStackedBar, | ||||
SeriesTypePercentBar, | ||||
SeriesTypeGroupedBar, | ||||
SeriesTypePie, | ||||
SeriesTypeScatter, | ||||
SeriesTypeSpline | ||||
}; | ||||
Jani Honkonen
|
r1 | public: | ||
DeclarativeChart(QDeclarativeItem *parent = 0); | ||||
Tero Ahola
|
r722 | ~DeclarativeChart(); | ||
Tero Ahola
|
r120 | |||
public: // From QDeclarativeItem/QGraphicsItem | ||||
Tero Ahola
|
r1117 | void childEvent(QChildEvent *event); | ||
void componentComplete(); | ||||
Tero Ahola
|
r120 | void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry); | ||
Tero Ahola
|
r646 | void paint (QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); | ||
Tero Ahola
|
r120 | |||
public: | ||||
Tero Ahola
|
r1240 | void setTheme(DeclarativeChart::Theme theme); | ||
DeclarativeChart::Theme theme(); | ||||
void setAnimationOptions(DeclarativeChart::Animation animations); | ||||
DeclarativeChart::Animation animationOptions(); | ||||
Tero Ahola
|
r918 | void setTitle(QString title) {m_chart->setTitle(title);} | ||
QString title() { return m_chart->title();} | ||||
Tero Ahola
|
r1240 | void setLegend(DeclarativeChart::Legend legend); | ||
DeclarativeChart::Legend legend(); | ||||
Tero Ahola
|
r1139 | QAxis *axisX(); | ||
QAxis *axisY(); | ||||
Tero Ahola
|
r1157 | QVariantList axisXLabels(); | ||
void setAxisXLabels(QVariantList list); | ||||
Tero Ahola
|
r1240 | int count(); | ||
Q_INVOKABLE QAbstractSeries *series(int index); | ||||
Q_INVOKABLE QAbstractSeries *series(QString seriesName); | ||||
Q_INVOKABLE QAbstractSeries *createSeries(DeclarativeChart::SeriesType type, QString name = ""); | ||||
Tero Ahola
|
r120 | |||
public: | ||||
// Extending QChart with DeclarativeChart is not possible because QObject does not support | ||||
// multi inheritance, so we now have a QChart as a member instead | ||||
QChart *m_chart; | ||||
Tero Ahola
|
r1240 | Legend m_legend; | ||
Jani Honkonen
|
r1 | }; | ||
Tero Ahola
|
r120 | QTCOMMERCIALCHART_END_NAMESPACE | ||
Jani Honkonen
|
r1 | |||
#endif // DECLARATIVECHART_H | ||||