#ifndef CHART_H #define CHART_H #include #include #include #include #include class QGraphicsSceneResizeEvent; QTCOMMERCIALCHART_BEGIN_NAMESPACE class AxisItem; class QChartSeries; class PlotDomain; class BarGroup; class QChartAxis; class ChartTheme; class ChartItem; class ChartDataSet; class ChartPresenter; // 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 QGraphicsWidget { Q_OBJECT public: enum ChartTheme { /*! The default theme follows the GUI style of the Operating System */ ChartThemeDefault, ChartThemeVanilla, ChartThemeIcy, ChartThemeGrayscale, ChartThemeScientific, //ChartThemeUnnamed1 }; public: QChart(QGraphicsItem *parent = 0, Qt::WindowFlags wFlags = 0); ~QChart(); 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 setMargin(int margin); int margin() const; void setChartTheme(QChart::ChartTheme theme); QChart::ChartTheme chartTheme() const; void setTitle(const QString& title,const QFont& font = QFont()); void setChartBackgroundBrush(const QBrush& brush); void setChartBackgroundPen(const QPen& pen); void zoomInToRect(const QRectF& rectangle); void zoomIn(); void zoomOut(); void zoomReset(); void setAxisX(QChartAxis* axis); void addAxisY(QChartAxis* axis); protected: void resizeEvent(QGraphicsSceneResizeEvent *event); private: void setAxis(AxisItem *item, const QChartAxis& axis); private: Q_DISABLE_COPY(QChart) QGraphicsRectItem* m_backgroundItem; QGraphicsTextItem* m_titleItem; QRectF m_rect; ChartDataSet *m_dataset; ChartPresenter *m_presenter; }; QTCOMMERCIALCHART_END_NAMESPACE #endif