declarativechart.h
157 lines
| 5.5 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
|
r1481 | Q_PROPERTY(Theme theme READ theme WRITE setTheme) | ||
Q_PROPERTY(Animation animationOptions READ animationOptions WRITE setAnimationOptions) | ||||
Q_PROPERTY(QString title READ title WRITE setTitle) | ||||
Jani Honkonen
|
r1517 | Q_PROPERTY(QFont titleFont READ titleFont WRITE setTitleFont) | ||
Tero Ahola
|
r1461 | Q_PROPERTY(QColor titleColor READ titleColor WRITE setTitleColor NOTIFY titleColorChanged) | ||
Tero Ahola
|
r1139 | Q_PROPERTY(QAxis *axisX READ axisX) | ||
Q_PROPERTY(QAxis *axisY READ axisY) | ||||
Tero Ahola
|
r1357 | Q_PROPERTY(QLegend *legend READ legend) | ||
Tero Ahola
|
r1157 | // TODO: how to define axis labels? This is not very convenient | ||
Tero Ahola
|
r1357 | Q_PROPERTY(QVariantList axisXLabels READ axisXLabels WRITE setAxisXLabels NOTIFY axisLabelsChanged) | ||
Tero Ahola
|
r1240 | Q_PROPERTY(int count READ count) | ||
Tero Ahola
|
r1357 | Q_PROPERTY(QColor backgroundColor READ backgroundColor WRITE setBackgroundColor NOTIFY backgroundColorChanged) | ||
Tero Ahola
|
r1461 | Q_PROPERTY(bool dropShadowEnabled READ dropShadowEnabled WRITE setDropShadowEnabled NOTIFY dropShadowEnabledChanged) | ||
Tero Ahola
|
r1524 | Q_PROPERTY(qreal topMargin READ topMargin NOTIFY topMarginChanged) | ||
Q_PROPERTY(qreal bottomMargin READ bottomMargin NOTIFY bottomMarginChanged) | ||||
Q_PROPERTY(qreal leftMargin READ leftMargin NOTIFY leftMarginChanged) | ||||
Q_PROPERTY(qreal rightMargin READ rightMargin NOTIFY rightMarginChanged) | ||||
Tero Ahola
|
r1240 | Q_ENUMS(Animation) | ||
Q_ENUMS(Theme) | ||||
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 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
|
r1357 | void setTitle(QString title); | ||
QString title(); | ||||
Tero Ahola
|
r1139 | QAxis *axisX(); | ||
Tero Ahola
|
r1357 | QLegend *legend(); | ||
Tero Ahola
|
r1157 | QVariantList axisXLabels(); | ||
void setAxisXLabels(QVariantList list); | ||||
Jani Honkonen
|
r1517 | QFont titleFont() const; | ||
void setTitleFont(const QFont& font); | ||||
Tero Ahola
|
r1357 | void setTitleColor(QColor color); | ||
QColor titleColor(); | ||||
void setBackgroundColor(QColor color); | ||||
QColor backgroundColor(); | ||||
Tero Ahola
|
r1240 | int count(); | ||
Tero Ahola
|
r1461 | void setDropShadowEnabled(bool enabled); | ||
bool dropShadowEnabled(); | ||||
Tero Ahola
|
r1524 | qreal topMargin(); | ||
qreal bottomMargin(); | ||||
qreal leftMargin(); | ||||
qreal rightMargin(); | ||||
Tero Ahola
|
r1521 | |||
public: | ||||
Q_INVOKABLE QAbstractSeries *series(int index); | ||||
Q_INVOKABLE QAbstractSeries *series(QString seriesName); | ||||
Q_INVOKABLE QAbstractSeries *createSeries(DeclarativeChart::SeriesType type, QString name = ""); | ||||
Q_INVOKABLE QAxis *axisY(QAbstractSeries *series = 0); | ||||
Tero Ahola
|
r1461 | Q_INVOKABLE void zoom(qreal factor); | ||
Q_INVOKABLE void scrollLeft(qreal pixels); | ||||
Q_INVOKABLE void scrollRight(qreal pixels); | ||||
Q_INVOKABLE void scrollUp(qreal pixels); | ||||
Q_INVOKABLE void scrollDown(qreal pixels); | ||||
Tero Ahola
|
r120 | |||
Tero Ahola
|
r1357 | Q_SIGNALS: | ||
void axisLabelsChanged(); | ||||
Tero Ahola
|
r1524 | void titleColorChanged(QColor color); | ||
Tero Ahola
|
r1357 | void backgroundColorChanged(); | ||
Tero Ahola
|
r1461 | void dropShadowEnabledChanged(bool enabled); | ||
Tero Ahola
|
r1524 | void topMarginChanged(qreal margin); | ||
void bottomMarginChanged(qreal margin); | ||||
void leftMarginChanged(qreal margin); | ||||
void rightMarginChanged(qreal margin); | ||||
Tero Ahola
|
r1357 | |||
Tero Ahola
|
r1524 | public Q_SLOTS: | ||
void handleMarginsChanged(QRectF newMargins); | ||||
private: | ||||
Tero Ahola
|
r120 | // 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
|
r1524 | QRectF m_chartMargins; | ||
Jani Honkonen
|
r1 | }; | ||
Tero Ahola
|
r120 | QTCOMMERCIALCHART_END_NAMESPACE | ||
Jani Honkonen
|
r1 | |||
#endif // DECLARATIVECHART_H | ||||