##// END OF EJS Templates
Better way to enable features to user. Do less, but expose signals to user and allow user to descide what to do.
Better way to enable features to user. Do less, but expose signals to user and allow user to descide what to do.

File last commit:

r425:85842e6c8dba
r425:85842e6c8dba
Show More
barpresenterbase.cpp
160 lines | 4.7 KiB | text/x-c | CppLexer
/ src / barchart / barpresenterbase.cpp
sauimone
added _p to private class headers
r381 #include "barpresenterbase_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
refactored barcharts. layout to derived classess other funtionality to base class
r126 #include "barlabel_p.h"
#include "separator_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
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
sauimone
Naming convention change for barcharts. QBarChartSeries is now QBarSeries etc.
r338 BarPresenterBase::BarPresenterBase(QBarSeries *series, QGraphicsItem *parent)
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 : ChartItem(parent)
,mBarDefaultWidth(20) // TODO: remove hard coding, when we have layout code ready
,mLayoutSet(false)
,mLayoutDirty(true)
sauimone
enablers for tooltip and floating values, bug fixing, updated examples. tidying up the code
r296 ,mSeparatorsEnabled(false)
sauimone
moved tooltip to presenter
r288 ,mSeries(series)
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 {
sauimone
moved tooltip to presenter
r288 connect(series,SIGNAL(showToolTip(QPoint,QString)),this,SLOT(showToolTip(QPoint,QString)));
sauimone
Better way to enable features to user. Do less, but expose signals to user and allow user to descide what to do.
r425 // connect(series,SIGNAL(separatorsEnabled(bool)),this,SLOT(enableSeparators(bool)));
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
moved tooltip to presenter
r288 BarPresenterBase::~BarPresenterBase()
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)));
delete mSeries;
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 }
sauimone
Common naming convention for barcharts
r216 void BarPresenterBase::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 {
if (!mLayoutSet) {
sauimone
Bug fix for bar presenters. It appears that order of childItems may change. Relying on order caused crash
r256 qDebug() << "BarPresenterBase::paint called without layout set. Aborting.";
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 return;
}
sauimone
model delegate for bar series. updated examples
r161 // if (mLayoutDirty) {
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 // Layout or data has changed. Need to redraw.
foreach(QGraphicsItem* i, childItems()) {
i->paint(painter,option,widget);
}
sauimone
model delegate for bar series. updated examples
r161 // }
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 }
sauimone
Common naming convention for barcharts
r216 QRectF BarPresenterBase::boundingRect() const
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 {
return QRectF(0,0,mWidth,mHeight);
}
sauimone
bug fix in bar charts. Crashed, if layout was set before data. Also integrated to test app.
r165
sauimone
Common naming convention for barcharts
r216 void BarPresenterBase::setBarWidth( int w )
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 {
mBarDefaultWidth = w;
}
sauimone
brush support for bargroups
r183
sauimone
Common naming convention for barcharts
r216 void BarPresenterBase::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
right click feature for bar series. Enables drilldown
r412 // qDebug() << "datachanged";
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 // Delete old bars
foreach (QGraphicsItem* item, childItems()) {
delete item;
}
sauimone
Bug fix for bar presenters. It appears that order of childItems may change. Relying on order caused crash
r256 mBars.clear();
mLabels.clear();
mSeparators.clear();
sauimone
Floating values to bar charts
r263 mFloatingValues.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
review fixes. countCategories() -> categoryCount(). countSets -> barsetCount()
r366 for (int c=0; c<mSeries->categoryCount(); c++) {
sauimone
Better way to enable features to user. Do less, but expose signals to user and allow user to descide what to do.
r425 QString category = mSeries->categoryName(c);
sauimone
review fixes. countCategories() -> categoryCount(). countSets -> barsetCount()
r366 for (int s=0; s<mSeries->barsetCount(); s++) {
sauimone
review fix: Removed iterator from barseries. Remove const from brush and pen. Renamed setters for tooltip, floating values and separators
r357 QBarSet *set = mSeries->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
Bug fix for bar presenters. It appears that order of childItems may change. Relying on order caused crash
r256 mBars.append(bar);
sauimone
Better way to enable features to user. Do less, but expose signals to user and allow user to descide what to do.
r425 connect(bar,SIGNAL(clicked(QString)),set,SIGNAL(clicked(QString)));
connect(bar,SIGNAL(rightClicked(QString)),set,SIGNAL(rightClicked(QString)));
sauimone
right click feature for bar series. Enables drilldown
r412 connect(bar,SIGNAL(hoverEntered(QPoint)),set,SLOT(barHoverEnterEvent(QPoint)));
connect(bar,SIGNAL(hoverLeaved()),set,SLOT(barHoverLeaveEvent()));
sauimone
signals and slots for bars and sets
r239 }
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 }
sauimone
Floating values to bar charts
r263 // Create labels
sauimone
review fixes. countCategories() -> categoryCount(). countSets -> barsetCount()
r366 int count = mSeries->categoryCount();
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 for (int i=0; i<count; i++) {
BarLabel* label = new BarLabel(this);
sauimone
right click feature for bar series. Enables drilldown
r412 label->set(mSeries->categoryName(i));
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 childItems().append(label);
sauimone
Bug fix for bar presenters. It appears that order of childItems may change. Relying on order caused crash
r256 mLabels.append(label);
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 }
sauimone
Floating values to bar charts
r263 // Create separators
sauimone
review fixes. countCategories() -> categoryCount(). countSets -> barsetCount()
r366 count = mSeries->categoryCount() - 1; // There is one less separator than columns
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 for (int i=0; i<count; i++) {
Separator* sep = new Separator(this);
sep->setColor(QColor(255,0,0,255)); // TODO: color for separations from theme
sauimone
enablers for tooltip and floating values, bug fixing, updated examples. tidying up the code
r296 sep->setVisible(mSeparatorsEnabled);
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 childItems().append(sep);
sauimone
Bug fix for bar presenters. It appears that order of childItems may change. Relying on order caused crash
r256 mSeparators.append(sep);
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 }
sauimone
Floating values to bar charts
r263 // Create floating values
sauimone
review fixes. countCategories() -> categoryCount(). countSets -> barsetCount()
r366 for (int category=0; category<mSeries->categoryCount(); category++) {
for (int s=0; s<mSeries->barsetCount(); s++) {
sauimone
review fix: Removed iterator from barseries. Remove const from brush and pen. Renamed setters for tooltip, floating values and separators
r357 QBarSet *set = mSeries->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);
mFloatingValues.append(value);
sauimone
updated barchart examples. minor fixes
r276 connect(set,SIGNAL(toggleFloatingValues()),value,SLOT(toggleVisible()));
sauimone
Floating values to bar charts
r263 }
}
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 // TODO: if (autolayout) { layoutChanged() } or something
mLayoutDirty = true;
}
Michal Klocek
Refactored for MVP...
r139 //handlers
sauimone
Common naming convention for barcharts
r216 void BarPresenterBase::handleModelChanged(int index)
Michal Klocek
Refactored for MVP...
r139 {
sauimone
Bug fix for bar presenters. It appears that order of childItems may change. Relying on order caused crash
r256 // qDebug() << "BarPresenterBase::handleModelChanged" << index;
sauimone
model delegate for bar series. updated examples
r161 dataChanged();
Michal Klocek
Refactored for MVP...
r139 }
sauimone
Common naming convention for barcharts
r216 void BarPresenterBase::handleDomainChanged(const Domain& domain)
Michal Klocek
Refactored for MVP...
r139 {
sauimone
Bug fix for bar presenters. It appears that order of childItems may change. Relying on order caused crash
r256 // qDebug() << "BarPresenterBase::handleDomainChanged";
sauimone
added labels to series, intergrated with test app. minor hack to test app
r167 // TODO: Figure out the use case for this.
// Affects the size of visible item, so layout is changed.
// layoutChanged();
Michal Klocek
Refactored for MVP...
r139 }
sauimone
Common naming convention for barcharts
r216 void BarPresenterBase::handleGeometryChanged(const QRectF& rect)
Michal Klocek
Refactored for MVP...
r139 {
mWidth = rect.width();
mHeight = rect.height();
layoutChanged();
mLayoutSet = true;
setPos(rect.topLeft());
}
sauimone
enablers for tooltip and floating values, bug fixing, updated examples. tidying up the code
r296 void BarPresenterBase::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
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
moved tooltip to presenter
r288 void BarPresenterBase::enableSeparators(bool enabled)
sauimone
barcharts: added legend to model. added signals for hover events (for tooltip). updated examples
r280 {
sauimone
enablers for tooltip and floating values, bug fixing, updated examples. tidying up the code
r296 for (int i=0; i<mSeparators.count(); i++) {
mSeparators.at(i)->setVisible(enabled);
sauimone
moved tooltip to presenter
r288 }
sauimone
enablers for tooltip and floating values, bug fixing, updated examples. tidying up the code
r296 mSeparatorsEnabled = enabled;
sauimone
barcharts: added legend to model. added signals for hover events (for tooltip). updated examples
r280 }
sauimone
added _p to private class headers
r381 #include "moc_barpresenterbase_p.cpp"
Michal Klocek
Refactored for MVP...
r139
sauimone
refactored barcharts. layout to derived classess other funtionality to base class
r126 QTCOMMERCIALCHART_END_NAMESPACE