diff --git a/src/barchart/barchartseries.cpp b/src/barchart/barchartseries.cpp index 97b0ce5..a5011da 100644 --- a/src/barchart/barchartseries.cpp +++ b/src/barchart/barchartseries.cpp @@ -20,13 +20,11 @@ int BarChartSeries::min() // TODO: make min and max members and update them when data changes. // This is slower since they are checked every time, even if data is same since previous call. - QModelIndex modelIndex = mModel->index(0,0); - int min = mModel->data(modelIndex).toInt(); + int min = INT_MAX; for (int i=0; i rowCount(); i++) { for(int j=0; jcolumnCount(); j++) { - modelIndex = mModel->index(i,j); - int temp = mModel->data(modelIndex).toInt(); + int temp = mModel->data(mModel->index(i,j)).toInt(); if (temp < min) { min = temp; } @@ -42,13 +40,11 @@ int BarChartSeries::max() // TODO: make min and max members and update them when data changes. // This is slower since they are checked every time, even if data is same since previous call. - QModelIndex modelIndex = mModel->index(0,0); - int max = mModel->data(modelIndex).toInt(); + int max = INT_MIN; for (int i=0; i rowCount(); i++) { for(int j=0; jcolumnCount(); j++) { - modelIndex = mModel->index(i,j); - int temp = mModel->data(modelIndex).toInt(); + int temp = mModel->data(mModel->index(i,j)).toInt(); if (temp > max) { max = temp; } @@ -63,7 +59,7 @@ int BarChartSeries::countSeries() return mModel->rowCount(); } -int BarChartSeries::countItemsInSeries() +int BarChartSeries::countColumns() { return mModel->columnCount(); } @@ -73,19 +69,11 @@ int BarChartSeries::countTotalItems() return mModel->rowCount() * mModel->columnCount(); } -int BarChartSeries::valueAt(int series, int item) +int BarChartSeries::valueAt(int row, int column) { - QModelIndex index = mModel->index(series,item); - return mModel->data(index).toInt(); + return mModel->data(mModel->index(row,column)).toInt(); } -/* -void BarChartSeries::chartSizeChanged(QRectF rect) -{ - qDebug() << "barchart size changed:" << rect; -// mBarGroup->resize(rect.toRect().width(), rect.toRect().height()); -} -*/ #include "moc_barchartseries.cpp" QTCOMMERCIALCHART_END_NAMESPACE diff --git a/src/barchart/barchartseries.h b/src/barchart/barchartseries.h index 42a97e4..6ca8d7d 100644 --- a/src/barchart/barchartseries.h +++ b/src/barchart/barchartseries.h @@ -2,7 +2,7 @@ #define BARCHARTSERIES_H #include -#include +//#include #include #include "qchartseries.h" #include "qchartglobal.h" @@ -29,9 +29,9 @@ public: int min(); int max(); int countSeries(); - int countItemsInSeries(); // Count items in one series. + int countColumns(); // Count items in one series. int countTotalItems(); - int valueAt(int series, int item); + int valueAt(int row, int column); public Q_SLOTS: diff --git a/src/barchart/bargroup.cpp b/src/barchart/bargroup.cpp index 88eab42..7d191f3 100644 --- a/src/barchart/bargroup.cpp +++ b/src/barchart/bargroup.cpp @@ -4,12 +4,6 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE -// TODO: singleton? -//BarGroup* BarGroup::mBarGroupInstance = NULL; - -//BarGroup::BarGroup(QGraphicsItem *parent) : -// QGraphicsItem(parent) -// ,mSeries(series) BarGroup::BarGroup(BarChartSeries& series, QGraphicsItem *parent) : ChartItem(parent) ,mSeries(series) @@ -107,7 +101,7 @@ void BarGroup::layoutChanged() } // TODO: better way to auto-layout - int count = mSeries.countItemsInSeries(); + int count = mSeries.countColumns(); int posStep = (mWidth / (count+1)); int startPos = (mWidth / (count+1)) - mSeries.countSeries() * mBarDefaultWidth /2; qDebug() << "startpos" << startPos; @@ -115,7 +109,7 @@ void BarGroup::layoutChanged() // Scaling. int itemIndex(0); for (int series = 0; series < mSeries.countSeries(); series++) { - for (int item=0; item < mSeries.countItemsInSeries(); item++) { + for (int item=0; item < mSeries.countColumns(); item++) { qDebug() << itemIndex; int barHeight = mSeries.valueAt(series, item) * mHeight / mMax; Bar* bar = reinterpret_cast (childItems().at(itemIndex)); diff --git a/src/barchart/bargroup.h b/src/barchart/bargroup.h index 808ad8f..f630c7a 100644 --- a/src/barchart/bargroup.h +++ b/src/barchart/bargroup.h @@ -1,5 +1,5 @@ -#ifndef QBARCHART_H -#define QBARCHART_H +#ifndef QBARGROUP_H +#define QBARGROUP_H #include "chartitem_p.h" #include "bar.h" @@ -7,25 +7,8 @@ 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 ChartItem { -/* // TODO: implement as singleton? -private: - static BarGroup* mBarGroupInstance; - -public: - static BarGroup* instance() - { - if (mBarGroupInstance == NULL) { - mBarGroupInstance = new BarGroup(); - } - return mBarGroupInstance; - } -private: -*/ public: explicit BarGroup(BarChartSeries& series, QGraphicsItem *parent = 0); @@ -68,4 +51,4 @@ private: QTCOMMERCIALCHART_END_NAMESPACE -#endif // QBARCHART_H +#endif // QBARGROUP_H diff --git a/src/qchartseries.h b/src/qchartseries.h index 86d033c..9677140 100644 --- a/src/qchartseries.h +++ b/src/qchartseries.h @@ -15,6 +15,7 @@ public: SeriesTypeLine = 0, // SeriesTypeArea, SeriesTypeBar, + SeriesTypeStackedBar, SeriesTypePie, SeriesTypeScatter // SeriesTypeSpline diff --git a/src/src.pro b/src/src.pro index 302527b..0345e1c 100644 --- a/src/src.pro +++ b/src/src.pro @@ -26,7 +26,9 @@ SOURCES += \ pieslice.cpp \ qchartview.cpp \ qchartseries.cpp \ - qchartaxis.cpp + qchartaxis.cpp \ + barchart/stackedbarchartseries.cpp \ + barchart/stackedbargroup.cpp PRIVATE_HEADERS += \ xylinechart/xylinechartitem_p.h \ @@ -49,7 +51,9 @@ PUBLIC_HEADERS += \ qchartview.h \ qchartaxis.h -HEADERS += $$PUBLIC_HEADERS +HEADERS += $$PUBLIC_HEADERS \ + barchart/stackedbarchartseries.h \ + barchart/stackedbargroup.h HEADERS += $$PRIVATE_HEADERS INCLUDEPATH += xylinechart \