#ifndef CHART_H #define CHART_H #include #include #include #include #include QTCOMMERCIALCHART_BEGIN_NAMESPACE class AxisItem; class QChartSeries; class PlotDomain; class BarGroup; class QChartAxis; class ChartTheme; class ChartItem; // 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 GradientOrientation { HorizonatlGradientOrientation, VerticalGradientOrientation }; enum ChartThemeId { ChartThemeInvalid = -1, /*! The default theme follows the GUI style of the Operating System */ ChartThemeDefault, ChartThemeVanilla, ChartThemeIcy, ChartThemeGrayscale, //ChartThemeScientific, ChartThemeUnnamed1 }; 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::ChartThemeId theme); void setTitle(const QString& title,const QFont& font = QFont()); void setBackground(const QColor& startColor, const QColor& endColor = Qt::white, GradientOrientation orientation = VerticalGradientOrientation); void zoomInToRect(const QRect& rectangle); void zoomIn(); void zoomOut(); void zoomReset(); void setAxisX(const QChartAxis& axis); void setAxisY(const QChartAxis& axis); void setAxisY(const QList& axis); private: void setAxis(AxisItem *item, const QChartAxis& axis); private: Q_DISABLE_COPY(QChart) QGraphicsRectItem* m_backgroundItem; QLinearGradient m_backgroundGradient; GradientOrientation m_bacgroundOrinetation; QGraphicsTextItem* m_titleItem; AxisItem* m_axisXItem; QList m_axisYItem; QRect m_rect; QList m_chartSeries; QList m_chartItems; QVector m_plotDomainList; int m_plotDataIndex; int m_marginSize; ChartTheme *m_chartTheme; }; QTCOMMERCIALCHART_END_NAMESPACE #endif