declarativechart.h
183 lines
| 6.8 KiB
| text/x-c
|
CLexer
Jani Honkonen
|
r830 | /**************************************************************************** | ||
** | ||||
Miikka Heikkinen
|
r2433 | ** Copyright (C) 2013 Digia Plc | ||
Jani Honkonen
|
r830 | ** 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> | ||||
Jani Honkonen
|
r2247 | #include <QtDeclarative/QDeclarativeItem> | ||
Tero Ahola
|
r1831 | #include "qchart.h" | ||
Tero Ahola
|
r120 | |||
QTCOMMERCIALCHART_BEGIN_NAMESPACE | ||||
Tero Ahola
|
r1928 | class DeclarativeMargins; | ||
Tero Ahola
|
r2296 | class Domain; | ||
class DeclarativeAxes; | ||||
Tero Ahola
|
r1928 | |||
Tero Ahola
|
r120 | class DeclarativeChart : public QDeclarativeItem | ||
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
|
r1357 | Q_PROPERTY(QLegend *legend READ legend) | ||
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
|
r1946 | Q_PROPERTY(qreal topMargin READ topMargin) | ||
Q_PROPERTY(qreal bottomMargin READ bottomMargin) | ||||
Q_PROPERTY(qreal leftMargin READ leftMargin) | ||||
Q_PROPERTY(qreal rightMargin READ rightMargin) | ||||
Q_PROPERTY(DeclarativeMargins *minimumMargins READ minimumMargins NOTIFY minimumMarginsChanged REVISION 1) | ||||
Michal Klocek
|
r2090 | Q_PROPERTY(DeclarativeMargins *margins READ margins NOTIFY marginsChanged REVISION 2) | ||
Tero Ahola
|
r1929 | Q_PROPERTY(QRectF plotArea READ plotArea NOTIFY plotAreaChanged REVISION 1) | ||
Tero Ahola
|
r2296 | Q_PROPERTY(QDeclarativeListProperty<QAbstractAxis> axes READ axes REVISION 2) | ||
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, | ||||
Jani Honkonen
|
r2101 | SeriesAnimations = 0x2, | ||
Tero Ahola
|
r1240 | AllAnimations = 0x3 | ||
}; | ||||
enum SeriesType { | ||||
SeriesTypeLine, | ||||
SeriesTypeArea, | ||||
SeriesTypeBar, | ||||
SeriesTypeStackedBar, | ||||
SeriesTypePercentBar, | ||||
SeriesTypePie, | ||||
SeriesTypeScatter, | ||||
sauimone
|
r1811 | SeriesTypeSpline, | ||
SeriesTypeHorizontalBar, | ||||
SeriesTypeHorizontalStackedBar, | ||||
SeriesTypeHorizontalPercentBar | ||||
Tero Ahola
|
r1240 | }; | ||
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); | ||
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(); | ||||
QLegend *legend(); | ||||
Jani Honkonen
|
r1517 | QFont titleFont() const; | ||
Jani Honkonen
|
r2101 | 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
|
r2300 | |||
// Margins & plotArea | ||||
Tero Ahola
|
r1524 | qreal topMargin(); | ||
qreal bottomMargin(); | ||||
qreal leftMargin(); | ||||
qreal rightMargin(); | ||||
Michal Klocek
|
r2090 | DeclarativeMargins *minimumMargins() { return m_margins; } | ||
Q_REVISION(2) DeclarativeMargins *margins() { return m_margins; } | ||||
Tero Ahola
|
r1929 | QRectF plotArea() { return m_chart->plotArea(); } | ||
Michal Klocek
|
r1604 | |||
Tero Ahola
|
r2300 | // Axis handling | ||
QAbstractAxis *defaultAxis(Qt::Orientation orientation, QAbstractSeries *series); | ||||
void initializeAxes(QAbstractSeries *series); | ||||
void doInitializeAxes(QAbstractSeries *series, DeclarativeAxes *axes); | ||||
Tero Ahola
|
r2296 | QDeclarativeListProperty<QAbstractAxis> axes(); | ||
static void axesAppendFunc(QDeclarativeListProperty<QAbstractAxis> *list, QAbstractAxis *element); | ||||
static int axesCountFunc(QDeclarativeListProperty<QAbstractAxis> *list); | ||||
static QAbstractAxis *axesAtFunc(QDeclarativeListProperty<QAbstractAxis> *list, int index); | ||||
Tero Ahola
|
r1521 | public: | ||
Q_INVOKABLE QAbstractSeries *series(int index); | ||||
Q_INVOKABLE QAbstractSeries *series(QString seriesName); | ||||
Tero Ahola
|
r2389 | Q_INVOKABLE QAbstractSeries *createSeries(int type, QString name = "", QAbstractAxis *axisX = 0, QAbstractAxis *axisY = 0); | ||
Tero Ahola
|
r2068 | Q_INVOKABLE void removeSeries(QAbstractSeries *series); | ||
Tero Ahola
|
r1948 | Q_INVOKABLE void removeAllSeries() { m_chart->removeAllSeries(); } | ||
Tero Ahola
|
r1813 | Q_INVOKABLE void setAxisX(QAbstractAxis *axis, QAbstractSeries *series = 0); | ||
Q_INVOKABLE void setAxisY(QAbstractAxis *axis, QAbstractSeries *series = 0); | ||||
Michal Klocek
|
r1604 | Q_INVOKABLE void createDefaultAxes(); | ||
Michal Klocek
|
r1643 | Q_INVOKABLE QAbstractAxis *axisX(QAbstractSeries *series = 0); | ||
Q_INVOKABLE QAbstractAxis *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
|
r1946 | void minimumMarginsChanged(); | ||
Michal Klocek
|
r2090 | Q_REVISION(2) void marginsChanged(); | ||
Tero Ahola
|
r1929 | void plotAreaChanged(QRectF plotArea); | ||
Jani Honkonen
|
r2101 | void seriesAdded(QAbstractSeries *series); | ||
void seriesRemoved(QAbstractSeries *series); | ||||
Tero Ahola
|
r1357 | |||
Tero Ahola
|
r2296 | private Q_SLOTS: | ||
Tero Ahola
|
r1928 | void changeMinimumMargins(int top, int bottom, int left, int right); | ||
Tero Ahola
|
r1813 | void handleAxisXSet(QAbstractAxis *axis); | ||
void handleAxisYSet(QAbstractAxis *axis); | ||||
Tero Ahola
|
r2296 | void handleAxisXTopSet(QAbstractAxis *axis); | ||
void handleAxisYRightSet(QAbstractAxis *axis); | ||||
Jani Honkonen
|
r2277 | void handleSeriesAdded(QAbstractSeries *series); | ||
Tero Ahola
|
r1524 | |||
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
|
r1928 | //QMargins m_chartMargins; | ||
Michal Klocek
|
r2090 | DeclarativeMargins *m_margins; | ||
Jani Honkonen
|
r1 | }; | ||
Tero Ahola
|
r120 | QTCOMMERCIALCHART_END_NAMESPACE | ||
Jani Honkonen
|
r1 | |||
#endif // DECLARATIVECHART_H | ||||