##// END OF EJS Templates
added labels to series, intergrated with test app. minor hack to test app
added labels to series, intergrated with test app. minor hack to test app

File last commit:

r165:2ff4f264aa68
r167:023d2c8150a8
Show More
percentbargroup.cpp
77 lines | 2.4 KiB | text/x-c | CppLexer
/ src / barchart / percentbargroup.cpp
sauimone
percent bar chart
r101 #include "percentbargroup.h"
sauimone
renamed bar.h to bar_p.h
r118 #include "bar_p.h"
sauimone
added labels to barcharts
r114 #include "barlabel_p.h"
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 #include "separator_p.h"
sauimone
percent bar chart
r101 #include <QDebug>
QTCOMMERCIALCHART_BEGIN_NAMESPACE
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 PercentBarGroup::PercentBarGroup(PercentBarChartSeries& series, QGraphicsItem *parent) :
BarGroupBase(series, parent)
sauimone
percent bar chart
r101 {
}
sauimone
fixed naming mixup with percent and stacked groups
r105 void PercentBarGroup::layoutChanged()
sauimone
percent bar chart
r101 {
// Scale bars to new layout
// Layout for bars:
sauimone
model delegate for bar series. updated examples
r161 if (mModel.countRows() <= 0) {
sauimone
percent bar chart
r101 // Nothing to do.
return;
}
sauimone
bug fix in bar charts. Crashed, if layout was set before data. Also integrated to test app.
r165 if (childItems().count() == 0) {
qDebug() << "WARNING: PercentBarGroup::layoutChanged called before graphics items are created!";
return;
}
sauimone
percent bar chart
r101 // TODO: better way to auto-layout
// Use reals for accurancy (we might get some compiler warnings... :)
sauimone
model delegate for bar series. updated examples
r161 int count = mModel.countColumns();
sauimone
percent bar chart
r101 int itemIndex(0);
qreal tW = mWidth;
qreal tC = count+1;
qreal xStep = (tW/tC);
sauimone
added labels to barcharts
r114 qreal xPos = ((tW/tC) - mBarDefaultWidth / 2);
sauimone
model delegate for bar series. updated examples
r161 int labelIndex = mModel.countColumns() * mModel.countRows();
sauimone
percent bar chart
r101
sauimone
model delegate for bar series. updated examples
r161 for (int column = 0; column < mModel.countColumns(); column++) {
qreal colSum = mModel.columnSum(column);
sauimone
fixed naming mixup with percent and stacked groups
r105 qreal h = mHeight;
qreal scale = (h / colSum);
sauimone
percent bar chart
r101 qreal yPos = h;
sauimone
model delegate for bar series. updated examples
r161 for (int row=0; row < mModel.countRows(); row++) {
qreal barHeight = mModel.valueAt(row, column) * scale;
sauimone
percent bar chart
r101 Bar* bar = reinterpret_cast<Bar*> (childItems().at(itemIndex));
// TODO: width settable per bar?
bar->resize(mBarDefaultWidth, barHeight);
bar->setColor(mColors.at(row));
sauimone
theme interface to barcharts. some minor fixes
r113 bar->setPos(xPos, yPos-barHeight);
sauimone
percent bar chart
r101 itemIndex++;
yPos -= barHeight;
}
sauimone
added labels to barcharts
r114
// TODO: Layout for labels, remove magic number
BarLabel* label = reinterpret_cast<BarLabel*> (childItems().at(labelIndex));
label->setPos(xPos, mHeight + 20);
labelIndex++;
sauimone
percent bar chart
r101 xPos += xStep;
}
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126
// Position separators
int separatorIndex = labelIndex; // Separators are after labels in childItems(). TODO: better way to store these?
xPos = xStep + xStep/2; // Initial position is between first and second group. ie one and half steps from left.
sauimone
model delegate for bar series. updated examples
r161 for (int s=0; s < mModel.countColumns() - 1; s++) {
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 Separator* sep = reinterpret_cast<Separator*> (childItems().at(separatorIndex));
sep->setPos(xPos,0);
sep->setSize(QSizeF(1,mHeight));
xPos += xStep;
separatorIndex++;
}
sauimone
model delegate for bar series. updated examples
r161
sauimone
percent bar chart
r101 mLayoutDirty = true;
}
QTCOMMERCIALCHART_END_NAMESPACE