##// END OF EJS Templates
fixed crash in barseries with empty sets
fixed crash in barseries with empty sets

File last commit:

r1339:495016ed1794
r1339:495016ed1794
Show More
barchartitem.cpp
211 lines | 6.2 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
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_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()));
sauimone
fixed crash in barseries with empty sets
r1339 connect(series->d_func(), SIGNAL(labelsVisibleChanged(bool)), this, SLOT(handleLabelsVisibleChanged(bool)));
connect(series->d_func(), SIGNAL(restructuredBars()), this, SLOT(handleDataStructureChanged()));
sauimone
barhcart zvalue added
r594 setZValue(ChartPresenter::BarSeriesZValue);
sauimone
fixed crash in barseries with empty sets
r1339 handleDataStructureChanged();
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
fixed crash in barseries with empty sets
r1339 void BarChartItem::handleDataStructureChanged()
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
removed barlabel. label visibility control is now per series instead of per set
r1246 bool labelsVisible = m_series->isLabelsVisible();
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 // Create new graphic items for bars
sauimone
removed categories from barseries. categories are now only on axis
r1321 for (int c = 0; c < m_series->d_func()->categoryCount(); 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
removed barlabel. label visibility control is now per series instead of per set
r1246
// Bars
sauimone
removed categories from barseries. categories are now only on axis
r1321 Bar *bar = new Bar(set,c,this);
sauimone
minor code review fixes, part n
r763 m_bars.append(bar);
sauimone
removed categories from barseries. categories are now only on axis
r1321 connect(bar, SIGNAL(clicked(QBarSet*,int)), m_series, SIGNAL(clicked(QBarSet*,int)));
sauimone
barchart: removed tooltip. hoverEntered and hoverLeaved signals combined to hovered(bool) signal
r975 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
cleanup on barseries. removed old commented out separator code
r654
sauimone
removed barlabel. label visibility control is now per series instead of per set
r1246 // Labels
QGraphicsSimpleTextItem *label = new QGraphicsSimpleTextItem(this);
label->setVisible(labelsVisible);
m_labels.append(label);
sauimone
Floating values to bar charts
r263 }
sauimone
removed barlabel. label visibility control is now per series instead of per set
r1246 }
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
fixed crash in barseries with empty sets
r1339 handleLayoutChanged();
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
removed categories from barseries. categories are now only on axis
r1321 // Use temporary qreals for accuracy
qreal categoryCount = m_series->d_func()->categoryCount();
sauimone
minor code review fixes, part n
r763 qreal setCount = m_series->barsetCount();
sauimone
visible property to barseries
r1284 bool barsVisible = m_series->isVisible();
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);
sauimone
barseries bar scaling change
r1326 qreal barWidth = scaleX - scaleX * 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
visible property to barseries
r1284 bar->setVisible(barsVisible);
sauimone
barchart animation mechanics working. still some todo
r681
sauimone
removed barlabel. label visibility control is now per series instead of per set
r1246 QGraphicsSimpleTextItem* 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());
Tero Ahola
Fixed a bug with QBarSet::setLabelBrush
r1306 label->setBrush(barSet->labelBrush());
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 {
sauimone
fixed crash in barseries with empty sets
r1339 if (animator()) {
sauimone
minor code review fixes, part n
r763 animator()->updateLayout(this, m_layout, layout);
sauimone
fixed crash in barseries with empty sets
r1339 } else {
sauimone
Animation framework for barchart.
r671 setLayout(layout);
sauimone
fixed crash in barseries with empty sets
r1339 }
sauimone
Animation framework for barchart.
r671 }
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
fixed crash in barseries with empty sets
r1339 for (int i=0; i < m_bars.count(); i++) {
sauimone
minor code review fixes, part n
r763 m_bars.at(i)->setRect(layout.at(i));
sauimone
fixed crash in barseries with empty sets
r1339 }
sauimone
barchart animation mechanics working. still some todo
r681
sauimone
Animation framework for barchart.
r671 update();
}
Michal Klocek
Refactored for MVP...
r139 //handlers
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();
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
fixed crash in barseries with empty sets
r1339 void BarChartItem::handleLabelsVisibleChanged(bool visible)
sauimone
removed barlabel. label visibility control is now per series instead of per set
r1246 {
foreach (QGraphicsSimpleTextItem* label, m_labels) {
label->setVisible(visible);
}
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