##// END OF EJS Templates
Fix pie autotests...
Fix pie autotests Legend is now on by default which broke some tests.

File last commit:

r1172:b52057d7bcdc
r1192:28f90ff1c65f
Show More
barchartitem.cpp
210 lines | 6.3 KiB | text/x-c | CppLexer
Jani Honkonen
Add license headers
r794 /****************************************************************************
**
** Copyright (C) 2012 Digia Plc
** All rights reserved.
** For any questions to Digia, please use contact form at http://qt.digia.com
**
** This file is part of the Qt Commercial Charts Add-on.
**
** $QT_BEGIN_LICENSE$
** Licensees holding valid Qt Commercial licenses may use this file in
** accordance with the Qt Commercial License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia.
**
** If you have questions regarding the use of this file, please use
** contact form at http://qt.digia.com
** $QT_END_LICENSE$
**
****************************************************************************/
sauimone
combined barpresenterbase and barpresenter. renamed barchartpresenters to barchartitems
r666 #include "barchartitem_p.h"
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 #include "bar_p.h"
sauimone
renamed barchart floating values with labels to be consistent with piechart
r820 #include "barlabel_p.h"
sauimone
minor fix
r240 #include "qbarset.h"
sauimone
barchart PIMPL part 2. Cleaning up leftovers in public api
r962 #include "qbarset_p.h"
sauimone
Naming convention change for barcharts. QBarChartSeries is now QBarSeries etc.
r338 #include "qbarseries.h"
sauimone
barchart PIMPL part 2. Cleaning up leftovers in public api
r962 #include "qbarseries_p.h"
sauimone
Labels for barchart to axis
r487 #include "qchart.h"
sauimone
barhcart zvalue added
r594 #include "chartpresenter_p.h"
sauimone
Animation framework for barchart.
r671 #include "chartanimator_p.h"
Michal Klocek
Refactors barchart axis hadnling...
r679 #include "chartdataset_p.h"
sauimone
fixed clipping in barcharts
r839 #include <QPainter>
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126
QTCOMMERCIALCHART_BEGIN_NAMESPACE
Michal Klocek
Refactors chartitem...
r677 BarChartItem::BarChartItem(QBarSeries *series, ChartPresenter *presenter) :
ChartItem(presenter),
sauimone
minor code review fixes, part n
r763 m_layoutSet(false),
m_series(series)
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 {
sauimone
barchart mouse event fix
r852 setFlag(ItemClipsChildrenToShape);
sauimone
barchart PIMPL part 2. Cleaning up leftovers in public api
r962 connect(series->d_func(), SIGNAL(updatedBars()), this, SLOT(handleLayoutChanged()));
connect(series->d_func(), SIGNAL(restructuredBars()), this, SLOT(handleModelChanged()));
sauimone
barhcart zvalue added
r594 setZValue(ChartPresenter::BarSeriesZValue);
sauimone
added labels to series, intergrated with test app. minor hack to test app
r167 dataChanged();
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 }
sauimone
combined barpresenterbase and barpresenter. renamed barchartpresenters to barchartitems
r666 BarChartItem::~BarChartItem()
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 {
}
sauimone
combined barpresenterbase and barpresenter. renamed barchartpresenters to barchartitems
r666 void BarChartItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 {
sauimone
barchart mouse event fix
r852 Q_UNUSED(painter);
Q_UNUSED(option);
Q_UNUSED(widget);
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 }
sauimone
combined barpresenterbase and barpresenter. renamed barchartpresenters to barchartitems
r666 QRectF BarChartItem::boundingRect() const
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 {
sauimone
barchart: layout calculation fix
r976 return m_rect;
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 }
sauimone
bug fix in bar charts. Crashed, if layout was set before data. Also integrated to test app.
r165
sauimone
combined barpresenterbase and barpresenter. renamed barchartpresenters to barchartitems
r666 void BarChartItem::dataChanged()
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 {
sauimone
barchart mouse event fix
r852 foreach(QGraphicsItem *item, childItems()) {
delete item;
}
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126
sauimone
minor code review fixes, part n
r763 m_bars.clear();
sauimone
renamed barchart floating values with labels to be consistent with piechart
r820 m_labels.clear();
sauimone
minor code review fixes, part n
r763 m_layout.clear();
sauimone
Bug fix for bar presenters. It appears that order of childItems may change. Relying on order caused crash
r256
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 // Create new graphic items for bars
sauimone
minor code review fixes, part n
r763 for (int c = 0; c < m_series->categoryCount(); c++) {
sauimone
barchart PIMPL part 2. Cleaning up leftovers in public api
r962 QString category = m_series->d_func()->categoryName(c);
sauimone
minor code review fixes, part n
r763 for (int s = 0; s < m_series->barsetCount(); s++) {
sauimone
barchart PIMPL part 2. Cleaning up leftovers in public api
r962 QBarSet *set = m_series->d_func()->barsetAt(s);
sauimone
fixed barchart signals with pimpl. drilldown works now
r968 Bar *bar = new Bar(set,category,this);
sauimone
minor code review fixes, part n
r763 m_bars.append(bar);
sauimone
barchart: removed mousebuttons from clicked signal. removed selected signal. unified internal signal naming in barset and barseries private
r1008 connect(bar, SIGNAL(clicked(QString)), set, SIGNAL(clicked(QString)));
connect(bar, SIGNAL(clicked(QBarSet*,QString)), m_series, SIGNAL(clicked(QBarSet*,QString)));
sauimone
barchart: removed tooltip. hoverEntered and hoverLeaved signals combined to hovered(bool) signal
r975 connect(bar, SIGNAL(hovered(bool)), set, SIGNAL(hovered(bool)));
connect(bar, SIGNAL(hovered(QBarSet*,bool)), m_series, SIGNAL(hovered(QBarSet*,bool)));
sauimone
minor code review fixes, part n
r763 m_layout.append(QRectF(0, 0, 0, 0));
sauimone
signals and slots for bars and sets
r239 }
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 }
sauimone
cleanup on barseries. removed old commented out separator code
r654
sauimone
renamed barchart floating values with labels to be consistent with piechart
r820 // Create labels
sauimone
minor code review fixes, part n
r763 for (int category = 0; category < m_series->categoryCount(); category++) {
for (int s = 0; s < m_series->barsetCount(); s++) {
sauimone
barchart PIMPL part 2. Cleaning up leftovers in public api
r962 QBarSet *set = m_series->d_func()->barsetAt(s);
sauimone
barchart mouse event fix
r852 BarLabel *value = new BarLabel(*set, this);
sauimone
renamed barchart floating values with labels to be consistent with piechart
r820 m_labels.append(value);
sauimone
fixed barchart signals with pimpl. drilldown works now
r968 connect(set->d_ptr.data(),SIGNAL(labelsVisibleChanged(bool)),value,SLOT(labelsVisibleChanged(bool)));
sauimone
Floating values to bar charts
r263 }
Marek Rosa
Refactored model related methods in PieSeries
r1063 }
// TODO: Is this the right place to call it?
// presenter()->chartTheme()->decorate(m_series, presenter()->dataSet()->seriesIndex(m_series));
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 }
sauimone
split legend layout to vertical and horizontal functions
r810
sauimone
barchart animation mechanics working. still some todo
r681 QVector<QRectF> BarChartItem::calculateLayout()
sauimone
Animation framework for barchart.
r671 {
sauimone
barchart animation mechanics working. still some todo
r681 QVector<QRectF> layout;
sauimone
percent barchart layout fix. signal fix
r850 // Use temporary qreals for accurancy
sauimone
minor code review fixes, part n
r763 qreal categoryCount = m_series->categoryCount();
qreal setCount = m_series->barsetCount();
sauimone
barchart animation mechanics working. still some todo
r681
sauimone
percent barchart layout fix. signal fix
r850 // Domain:
sauimone
build error fix after merge
r682 qreal width = geometry().width();
qreal height = geometry().height();
sauimone
new series: groupedbarseries
r1167 qreal rangeY = m_domainMaxY - m_domainMinY;
qreal rangeX = m_domainMaxX - m_domainMinX;
qreal scaleY = (height / rangeY);
qreal scaleX = (width / rangeX);
Tero Ahola
Code review: Fixed simple issues in Bar and Legend
r737 qreal categoryWidth = width / categoryCount;
sauimone
layout fix with barchart. bars were way too wide.
r1172 qreal barWidth = categoryWidth / setCount - categoryWidth * m_series->d_func()->barMargin();
sauimone
barchart animation mechanics working. still some todo
r681
int itemIndex(0);
Tero Ahola
Code review: Fixed simple issues in Bar and Legend
r737 for (int category = 0; category < categoryCount; category++) {
sauimone
new series: groupedbarseries
r1167 qreal yPos = height + scaleY * m_domainMinY + geometry().topLeft().y();
sauimone
barchart animation mechanics working. still some todo
r681 for (int set = 0; set < setCount; set++) {
sauimone
barchart PIMPL part 2. Cleaning up leftovers in public api
r962 QBarSet* barSet = m_series->d_func()->barsetAt(set);
sauimone
new series: groupedbarseries
r1167 qreal xPos = (barSet->at(category).x() - m_domainMinX) * scaleX + m_rect.left() - barWidth/2;
qreal barHeight = barSet->at(category).y() * scaleY;
sauimone
Barchart value layout fix
r817
sauimone
minor code review fixes, part n
r763 Bar* bar = m_bars.at(itemIndex);
Tero Ahola
Code review: Fixed simple issues in Bar and Legend
r737 QRectF rect(xPos, yPos - barHeight, barWidth, barHeight);
sauimone
new series: groupedbarseries
r1167
sauimone
barchart animation mechanics working. still some todo
r681 layout.append(rect);
sauimone
Barchart value layout fix
r817 bar->setPen(barSet->pen());
bar->setBrush(barSet->brush());
sauimone
barchart animation mechanics working. still some todo
r681
sauimone
renamed barchart floating values with labels to be consistent with piechart
r820 BarLabel* label = m_labels.at(itemIndex);
sauimone
barchart animation mechanics working. still some todo
r681
sauimone
new series: groupedbarseries
r1167 if (!qFuzzyIsNull(barSet->at(category).y())) {
label->setText(QString::number(barSet->at(category).y()));
sauimone
barchart animation mechanics working. still some todo
r681 } else {
sauimone
renamed barchart floating values with labels to be consistent with piechart
r820 label->setText(QString(""));
sauimone
barchart animation mechanics working. still some todo
r681 }
sauimone
renamed barchart floating values with labels to be consistent with piechart
r820 label->setPos(xPos + (rect.width()/2 - label->boundingRect().width()/2)
,yPos - barHeight/2 - label->boundingRect().height()/2);
sauimone
fixed clipping in barcharts
r839 label->setFont(barSet->labelFont());
sauimone
simple text item for barvalue
r811
sauimone
barchart animation mechanics working. still some todo
r681 itemIndex++;
}
}
sauimone
new series: groupedbarseries
r1167
sauimone
Animation framework for barchart.
r671 return layout;
}
sauimone
barchart animation mechanics working. still some todo
r681 void BarChartItem::applyLayout(const QVector<QRectF> &layout)
sauimone
Animation framework for barchart.
r671 {
Michal Klocek
Refactors barchart axis hadnling...
r679 if (animator())
sauimone
minor code review fixes, part n
r763 animator()->updateLayout(this, m_layout, layout);
sauimone
Animation framework for barchart.
r671 else
setLayout(layout);
}
sauimone
barchart animation mechanics working. still some todo
r681 void BarChartItem::setLayout(const QVector<QRectF> &layout)
sauimone
Animation framework for barchart.
r671 {
sauimone
minor code review fixes, part n
r763 m_layout = layout;
sauimone
barchart animation mechanics working. still some todo
r681
sauimone
minor code review fixes, part n
r763 for (int i=0; i < m_bars.count(); i++)
m_bars.at(i)->setRect(layout.at(i));
sauimone
barchart animation mechanics working. still some todo
r681
sauimone
Animation framework for barchart.
r671 update();
}
Michal Klocek
Refactored for MVP...
r139 //handlers
sauimone
barchart item handleModelChanged slot fix
r865 void BarChartItem::handleModelChanged()
Michal Klocek
Refactored for MVP...
r139 {
Marek Rosa
Refactored model related methods in PieSeries
r1063 // dataChanged();
presenter()->resetAllElements();
Michal Klocek
Refactored for MVP...
r139 }
sauimone
combined barpresenterbase and barpresenter. renamed barchartpresenters to barchartitems
r666 void BarChartItem::handleDomainChanged(qreal minX, qreal maxX, qreal minY, qreal maxY)
Michal Klocek
Refactored for MVP...
r139 {
sauimone
minor code review fixes, part n
r763 m_domainMinX = minX;
m_domainMaxX = maxX;
m_domainMinY = minY;
m_domainMaxY = maxY;
sauimone
barchart animation mechanics working. still some todo
r681 handleLayoutChanged();
Michal Klocek
Refactored for MVP...
r139 }
Tero Ahola
Code review: Fixed simple issues in Bar and Legend
r737 void BarChartItem::handleGeometryChanged(const QRectF &rect)
Michal Klocek
Refactored for MVP...
r139 {
sauimone
percent barchart layout fix. signal fix
r850 prepareGeometryChange();
Tero Ahola
Code review: Fixed simple issues in Bar and Legend
r737 m_rect = rect;
sauimone
build error fix after merge
r682 handleLayoutChanged();
sauimone
minor code review fixes, part n
r763 m_layoutSet = true;
Michal Klocek
Refactored for MVP...
r139 }
sauimone
Animation framework for barchart.
r671 void BarChartItem::handleLayoutChanged()
{
sauimone
percent barchart layout fix. signal fix
r850 if ((m_rect.width() <= 0) || (m_rect.height() <= 0)) {
// rect size zero.
return;
}
sauimone
barchart animation mechanics working. still some todo
r681 QVector<QRectF> layout = calculateLayout();
sauimone
Animation framework for barchart.
r671 applyLayout(layout);
update();
}
sauimone
combined barpresenterbase and barpresenter. renamed barchartpresenters to barchartitems
r666 #include "moc_barchartitem_p.cpp"
Michal Klocek
Refactored for MVP...
r139
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 QTCOMMERCIALCHART_END_NAMESPACE