#ifndef CHART_H #define CHART_H #include #include #include #include QTCOMMERCIALCHART_BEGIN_NAMESPACE class AxisItem; class QChartSeries; class PlotDomain; class ChartItem; class BarGroup; class QChartAxis; // TODO: We don't need to have QChart tied to QGraphicsItem: //class QTCOMMERCIALCHART_EXPORT QChart //class QTCOMMERCIALCHART_EXPORT QChartGraphicsItem : public QGraphicsItem { // public: QChartGraphicsItem(QChart &chart); /*! * TODO: define the responsibilities */ class QTCOMMERCIALCHART_EXPORT QChart : public QGraphicsObject { Q_OBJECT public: enum ChartTheme { ChartThemeVanilla = 0, ChartThemeIcy, ChartThemeGrayscale }; public: QChart(QGraphicsObject* parent = 0); ~QChart(); //from QGraphicsItem QRectF boundingRect() const; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget){}; void addSeries(QChartSeries* series); //TODO: QChartSeries* createSeries(QSeriesData *data, QChartSeries::QChartSeriesType type); // TODO: who owns the series now? maybe owned by chart and returned a reference instead... QChartSeries* createSeries(QChartSeries::QChartSeriesType type); void setSize(const QSize& size); void setMargin(int margin); int margin() const; void setTheme(QChart::ChartTheme theme); void setTitle(const QString& title); void setBackgroundColor(const QColor& color); void zoomInToRect(const QRect& rectangle); void zoomIn(); void zoomOut(); void setAxisX(QChartAxis* axis){}; void setAxisY(QChartAxis* axis){}; void setAxisY(QList axis){}; signals: //TODO chage to const QSize& size void sizeChanged(QRectF rect); void scaleChanged(qreal xscale, qreal yscale); private: Q_DISABLE_COPY(QChart) QGraphicsRectItem* m_background; QLinearGradient m_backgroundGradient; QGraphicsTextItem* m_title; AxisItem* m_axisX; AxisItem* m_axisY; QRect m_rect; QList m_series; QVector m_plotDomainList; QList m_chartItems; //TODO: remove QList m_items; int m_plotDataIndex; int m_marginSize; QList m_themeColors; }; QTCOMMERCIALCHART_END_NAMESPACE #endif