##// END OF EJS Templates
Warnings are errors, fixed one in barvalue.cpp
Warnings are errors, fixed one in barvalue.cpp

File last commit:

r813:95eb00cb8ef8
r816:75470b1f1776
Show More
barchartitem.cpp
233 lines | 6.8 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
Floating values to bar charts
r263 #include "barvalue_p.h"
sauimone
minor fix
r240 #include "qbarset.h"
sauimone
Naming convention change for barcharts. QBarChartSeries is now QBarSeries etc.
r338 #include "qbarseries.h"
sauimone
Labels for barchart to axis
r487 #include "qchart.h"
#include "qchartaxis.h"
#include "qchartaxiscategories.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
refactored barcharts. layout to derived classess other funtionality to base class
r126 #include <QDebug>
sauimone
moved tooltip to presenter
r288 #include <QToolTip>
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 {
Tero Ahola
Code review: Fixed simple issues in Bar and Legend
r737 connect(series, SIGNAL(showToolTip(QPoint,QString)), this, SLOT(showToolTip(QPoint,QString)));
sauimone
barchart animation mechanics working. still some todo
r681 connect(series, SIGNAL(updatedBars()), this, SLOT(handleLayoutChanged()));
sauimone
Animation framework for barchart.
r671 connect(series, SIGNAL(restructuredBar(int)), this, SLOT(handleModelChanged(int)));
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
moved tooltip to presenter
r288 disconnect(this,SLOT(showToolTip(QPoint,QString)));
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
minor code review fixes, part n
r763 if (!m_layoutSet) {
sauimone
minor code review fixes
r762 qWarning() << "BarChartItem::paint called without layout set. Aborting.";
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 return;
}
Tero Ahola
Code review: Fixed simple issues in Bar and Legend
r737
foreach(QGraphicsItem* i, childItems())
sauimone
Fixed layout for barcharts
r473 i->paint(painter,option,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 {
Michal Klocek
Refactors barchart axis hadnling...
r679 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
removed barchartseriesbase. functionality is now in model
r172 // TODO: performance optimizations. Do we really need to delete and create items every time data is changed or can we reuse them?
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 // Delete old bars
Tero Ahola
Code review: Fixed simple issues in Bar and Legend
r737 foreach (QGraphicsItem *item, childItems())
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 delete item;
sauimone
minor code review fixes, part n
r763 m_bars.clear();
sauimone
values visibility handling changed in barchart
r813 m_values.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++) {
QString category = m_series->categoryName(c);
for (int s = 0; s < m_series->barsetCount(); s++) {
QBarSet *set = m_series->barsetAt(s);
sauimone
Better way to enable features to user. Do less, but expose signals to user and allow user to descide what to do.
r425 Bar *bar = new Bar(category,this);
sauimone
signals and slots for bars and sets
r239 childItems().append(bar);
sauimone
minor code review fixes, part n
r763 m_bars.append(bar);
sauimone
combined clicked and rightclicked signals in barchart
r812 connect(bar, SIGNAL(clicked(QString,Qt::MouseButtons)), set, SIGNAL(clicked(QString,Qt::MouseButtons)));
Tero Ahola
Code review: Fixed simple issues in Bar and Legend
r737 connect(bar, SIGNAL(hoverEntered(QPoint)), set, SLOT(barHoverEnterEvent(QPoint)));
connect(bar, SIGNAL(hoverLeaved()), set, SLOT(barHoverLeaveEvent()));
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
Floating values to bar charts
r263 // Create floating values
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++) {
QBarSet *set = m_series->barsetAt(s);
sauimone
toggling of floating values. still bit buggy
r267 BarValue *value = new BarValue(*set, this);
sauimone
Floating values to bar charts
r263 childItems().append(value);
sauimone
values visibility handling changed in barchart
r813 m_values.append(value);
connect(set,SIGNAL(valuesVisibleChanged(bool)),value,SLOT(valuesVisibleChanged(bool)));
sauimone
Floating values to bar charts
r263 }
}
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;
// Use temporary qreals for accurancy (we might get some compiler warnings... :)
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
build error fix after merge
r682 qreal width = geometry().width();
qreal height = geometry().height();
sauimone
minor code review fixes, part n
r763 qreal max = m_series->max();
sauimone
barchart animation mechanics working. still some todo
r681
// Domain:
sauimone
minor code review fixes, part n
r763 if (m_domainMaxY > max) {
max = m_domainMaxY;
sauimone
barchart animation mechanics working. still some todo
r681 }
Tero Ahola
Code review: Fixed simple issues in Bar and Legend
r737 qreal scale = (height / max);
qreal categoryWidth = width / categoryCount;
sauimone
build error fix after merge
r682 qreal barWidth = categoryWidth / (setCount+1);
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++) {
qreal xPos = categoryWidth * category + barWidth / 2;
sauimone
build error fix after merge
r682 qreal yPos = height;
sauimone
barchart animation mechanics working. still some todo
r681 for (int set = 0; set < setCount; set++) {
sauimone
minor code review fixes, part n
r763 qreal barHeight = m_series->valueAt(set, category) * scale;
Bar* bar = m_bars.at(itemIndex);
sauimone
barchart animation mechanics working. still some todo
r681
Tero Ahola
Code review: Fixed simple issues in Bar and Legend
r737 QRectF rect(xPos, yPos - barHeight, barWidth, barHeight);
sauimone
barchart animation mechanics working. still some todo
r681 layout.append(rect);
sauimone
minor code review fixes, part n
r763 bar->setPen(m_series->barsetAt(set)->pen());
bar->setBrush(m_series->barsetAt(set)->brush());
sauimone
barchart animation mechanics working. still some todo
r681 itemIndex++;
sauimone
build error fix after merge
r682 xPos += barWidth;
sauimone
barchart animation mechanics working. still some todo
r681 }
}
// Position floating values
itemIndex = 0;
sauimone
minor code review fixes, part n
r763 for (int category = 0; category < m_series->categoryCount(); category++) {
Michal Klocek
Fixes after merge
r683 qreal xPos = categoryWidth * category + barWidth;
sauimone
build error fix after merge
r682 qreal yPos = height;
sauimone
minor code review fixes, part n
r763 for (int set=0; set < m_series->barsetCount(); set++) {
qreal barHeight = m_series->valueAt(set, category) * scale;
sauimone
values visibility handling changed in barchart
r813 BarValue* value = m_values.at(itemIndex);
sauimone
barchart animation mechanics working. still some todo
r681
sauimone
minor code review fixes, part n
r763 QBarSet* barSet = m_series->barsetAt(set);
sauimone
barchart animation mechanics working. still some todo
r681
Jani Honkonen
Use qFuzzyIsNull to compare (in)equality of real values
r768 if (!qFuzzyIsNull(m_series->valueAt(set,category))) {
sauimone
const to getters, renamed addBarset to appendBarset
r776 value->setText(QString::number(m_series->valueAt(set, category)));
sauimone
barchart animation mechanics working. still some todo
r681 } else {
sauimone
const to getters, renamed addBarset to appendBarset
r776 value->setText(QString(""));
sauimone
barchart animation mechanics working. still some todo
r681 }
sauimone
simple text item for barvalue
r811 value->setPos(xPos, yPos-barHeight / 2);
value->setPen(barSet->floatingValuePen());
sauimone
barchart animation mechanics working. still some todo
r681 itemIndex++;
sauimone
build error fix after merge
r682 xPos += barWidth;
sauimone
barchart animation mechanics working. still some todo
r681 }
}
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();
}
sauimone
combined barpresenterbase and barpresenter. renamed barchartpresenters to barchartitems
r666
Michal Klocek
Refactored for MVP...
r139 //handlers
sauimone
combined barpresenterbase and barpresenter. renamed barchartpresenters to barchartitems
r666 void BarChartItem::handleModelChanged(int index)
Michal Klocek
Refactored for MVP...
r139 {
Tero Ahola
Squashed bunch of warnings
r611 Q_UNUSED(index)
sauimone
model delegate for bar series. updated examples
r161 dataChanged();
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 {
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 setPos(rect.topLeft());
}
sauimone
Animation framework for barchart.
r671 void BarChartItem::handleLayoutChanged()
{
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 void BarChartItem::showToolTip(QPoint pos, QString tip)
sauimone
moved tooltip to presenter
r288 {
sauimone
enablers for tooltip and floating values, bug fixing, updated examples. tidying up the code
r296 // TODO: cool tooltip instead of default
Tero Ahola
Code review: Fixed simple issues in Bar and Legend
r737 QToolTip::showText(pos, tip);
sauimone
moved tooltip to presenter
r288 }
sauimone
barcharts: added legend to model. added signals for hover events (for tooltip). updated examples
r280
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