From 5412c444e1e84520339396b83bc8fe354184c440 2012-01-25 16:19:33 From: sauimone Date: 2012-01-25 16:19:33 Subject: [PATCH] BarGroup and Bar as ChartItems instead of GraphicItems --- diff --git a/src/barchart/bar.cpp b/src/barchart/bar.cpp index 687a9bb..fff33d8 100644 --- a/src/barchart/bar.cpp +++ b/src/barchart/bar.cpp @@ -4,11 +4,23 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE -Bar::Bar(QGraphicsItem *parent) - : QGraphicsItem(parent) +Bar::Bar(ChartItem *parent) + : ChartItem(parent) { } +void Bar::setSize(const QSize& size) +{ + //mSize = size; + mWidth = size.width(); + mHeight = size.height(); +} + +void Bar::setPlotDomain(const PlotDomain& data) +{ + mPlotDomain = data; +} + void Bar::resize( int w, int h ) { mWidth = w; diff --git a/src/barchart/bar.h b/src/barchart/bar.h index a1352a0..2142035 100644 --- a/src/barchart/bar.h +++ b/src/barchart/bar.h @@ -1,16 +1,20 @@ #ifndef BAR_H #define BAR_H -#include +#include "chartitem_p.h" #include "qchartglobal.h" QTCOMMERCIALCHART_BEGIN_NAMESPACE // Single bar item of chart -class Bar : public QGraphicsItem +class Bar : public ChartItem { public: - Bar(QGraphicsItem *parent=0); + Bar(ChartItem *parent=0); + + // From ChartItem + virtual void setSize(const QSize& size); + virtual void setPlotDomain(const PlotDomain& data); // Layout Stuff void resize( int w, int h ); // Size of bar. in screen coordinates. @@ -30,6 +34,8 @@ private: qreal mXpos; qreal mYpos; QColor mColor; + + PlotDomain mPlotDomain; }; QTCOMMERCIALCHART_END_NAMESPACE diff --git a/src/barchart/barchartseries.cpp b/src/barchart/barchartseries.cpp index b3cc8a5..87913a7 100644 --- a/src/barchart/barchartseries.cpp +++ b/src/barchart/barchartseries.cpp @@ -1,5 +1,6 @@ #include #include "barchartseries.h" +#include "bargroup.h" QTCOMMERCIALCHART_BEGIN_NAMESPACE BarChartSeries::BarChartSeries(QObject *parent) @@ -12,7 +13,6 @@ bool BarChartSeries::setData(QAbstractItemModel* model) mModel = model; } - int BarChartSeries::min() { Q_ASSERT(mModel->rowCount() > 0); @@ -79,10 +79,10 @@ int BarChartSeries::valueAt(int series, int item) return mModel->data(index).toInt(); } - void BarChartSeries::chartSizeChanged(QRectF rect) { qDebug() << "barchart size changed:" << rect; +// mBarGroup->resize(rect.toRect().width(), rect.toRect().height()); } #include "moc_barchartseries.cpp" diff --git a/src/barchart/barchartseries.h b/src/barchart/barchartseries.h index 5950ab4..af012c3 100644 --- a/src/barchart/barchartseries.h +++ b/src/barchart/barchartseries.h @@ -7,6 +7,9 @@ #include "qchartseries.h" #include "qchartglobal.h" +// TODO: Can this class be combined with series? +class BarGroup; + QTCOMMERCIALCHART_BEGIN_NAMESPACE // Container for series @@ -36,8 +39,8 @@ public Q_SLOTS: private: - //QList mData; QAbstractItemModel* mModel; + BarGroup* mBarGroup; }; QTCOMMERCIALCHART_END_NAMESPACE diff --git a/src/barchart/bargroup.cpp b/src/barchart/bargroup.cpp index 949130d..c35aac2 100644 --- a/src/barchart/bargroup.cpp +++ b/src/barchart/bargroup.cpp @@ -10,8 +10,8 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE //BarGroup::BarGroup(QGraphicsItem *parent) : // QGraphicsItem(parent) // ,mSeries(series) -BarGroup::BarGroup(BarChartSeries& series, QGraphicsItem *parent) : - QGraphicsItem(parent) +BarGroup::BarGroup(BarChartSeries& series, ChartItem *parent) : + ChartItem(parent) ,mSeries(series) ,mLayoutSet(false) ,mLayoutDirty(true) diff --git a/src/barchart/bargroup.h b/src/barchart/bargroup.h index 78a55b3..23cd6b4 100644 --- a/src/barchart/bargroup.h +++ b/src/barchart/bargroup.h @@ -1,10 +1,8 @@ #ifndef QBARCHART_H #define QBARCHART_H -#include - +#include "chartitem_p.h" #include "bar.h" -//#include "qbarchartview.h" #include "barchartseries.h" QTCOMMERCIALCHART_BEGIN_NAMESPACE @@ -12,7 +10,7 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE // TODO: Better name for this? The function of this class is to know where each bar in series is laid out. //class BarGroup : public QGraphicsItemGroup -class BarGroup : public QGraphicsItem +class BarGroup : public ChartItem { /* // TODO: implement as singleton? private: @@ -29,7 +27,7 @@ public: private: */ public: - explicit BarGroup(BarChartSeries& series, QGraphicsItem *parent = 0); + explicit BarGroup(BarChartSeries& series, ChartItem *parent = 0); // Layout "api" void resize( int w, int h ); // Size for whole series. Single bars are drawn inside this area