##// END OF EJS Templates
barchart PIMPL part 2. Cleaning up leftovers in public api
sauimone -
r962:95a77193fc29
parent child
Show More
@@ -22,7 +22,9
22 #include "bar_p.h"
22 #include "bar_p.h"
23 #include "barlabel_p.h"
23 #include "barlabel_p.h"
24 #include "qbarset.h"
24 #include "qbarset.h"
25 #include "qbarset_p.h"
25 #include "qbarseries.h"
26 #include "qbarseries.h"
27 #include "qbarseries_p.h"
26 #include "qchart.h"
28 #include "qchart.h"
27 #include "qchartaxis.h"
29 #include "qchartaxis.h"
28 #include "qchartaxiscategories.h"
30 #include "qchartaxiscategories.h"
@@ -40,9 +42,9 BarChartItem::BarChartItem(QBarSeries *series, ChartPresenter *presenter) :
40 m_series(series)
42 m_series(series)
41 {
43 {
42 setFlag(ItemClipsChildrenToShape);
44 setFlag(ItemClipsChildrenToShape);
43 connect(series, SIGNAL(showToolTip(QPoint,QString)), this, SLOT(showToolTip(QPoint,QString)));
45 connect(series->d_func(), SIGNAL(showToolTip(QPoint,QString)), this, SLOT(showToolTip(QPoint,QString)));
44 connect(series, SIGNAL(updatedBars()), this, SLOT(handleLayoutChanged()));
46 connect(series->d_func(), SIGNAL(updatedBars()), this, SLOT(handleLayoutChanged()));
45 connect(series, SIGNAL(restructuredBars()), this, SLOT(handleModelChanged()));
47 connect(series->d_func(), SIGNAL(restructuredBars()), this, SLOT(handleModelChanged()));
46 setZValue(ChartPresenter::BarSeriesZValue);
48 setZValue(ChartPresenter::BarSeriesZValue);
47 dataChanged();
49 dataChanged();
48 }
50 }
@@ -77,14 +79,14 void BarChartItem::dataChanged()
77
79
78 // Create new graphic items for bars
80 // Create new graphic items for bars
79 for (int c = 0; c < m_series->categoryCount(); c++) {
81 for (int c = 0; c < m_series->categoryCount(); c++) {
80 QString category = m_series->categoryName(c);
82 QString category = m_series->d_func()->categoryName(c);
81 for (int s = 0; s < m_series->barsetCount(); s++) {
83 for (int s = 0; s < m_series->barsetCount(); s++) {
82 QBarSet *set = m_series->barsetAt(s);
84 QBarSet *set = m_series->d_func()->barsetAt(s);
83 Bar *bar = new Bar(category,this);
85 Bar *bar = new Bar(category,this);
84 m_bars.append(bar);
86 m_bars.append(bar);
85 connect(bar, SIGNAL(clicked(QString,Qt::MouseButtons)), set, SIGNAL(clicked(QString,Qt::MouseButtons)));
87 connect(bar, SIGNAL(clicked(QString,Qt::MouseButtons)), set, SIGNAL(clicked(QString,Qt::MouseButtons)));
86 connect(bar, SIGNAL(hoverEntered(QPoint)), set, SLOT(barHoverEnterEvent(QPoint)));
88 connect(bar, SIGNAL(hoverEntered(QPoint)), set->d_ptr.data(), SLOT(barHoverEnterEvent(QPoint)));
87 connect(bar, SIGNAL(hoverLeaved()), set, SLOT(barHoverLeaveEvent()));
89 connect(bar, SIGNAL(hoverLeaved()), set->d_ptr.data(), SLOT(barHoverLeaveEvent()));
88 m_layout.append(QRectF(0, 0, 0, 0));
90 m_layout.append(QRectF(0, 0, 0, 0));
89 }
91 }
90 }
92 }
@@ -92,7 +94,7 void BarChartItem::dataChanged()
92 // Create labels
94 // Create labels
93 for (int category = 0; category < m_series->categoryCount(); category++) {
95 for (int category = 0; category < m_series->categoryCount(); category++) {
94 for (int s = 0; s < m_series->barsetCount(); s++) {
96 for (int s = 0; s < m_series->barsetCount(); s++) {
95 QBarSet *set = m_series->barsetAt(s);
97 QBarSet *set = m_series->d_func()->barsetAt(s);
96 BarLabel *value = new BarLabel(*set, this);
98 BarLabel *value = new BarLabel(*set, this);
97 m_labels.append(value);
99 m_labels.append(value);
98 connect(set,SIGNAL(labelsVisibleChanged(bool)),value,SLOT(labelsVisibleChanged(bool)));
100 connect(set,SIGNAL(labelsVisibleChanged(bool)),value,SLOT(labelsVisibleChanged(bool)));
@@ -121,7 +123,7 QVector<QRectF> BarChartItem::calculateLayout()
121 qreal xPos = categoryWidth * category + barWidth / 2;
123 qreal xPos = categoryWidth * category + barWidth / 2;
122 qreal yPos = height + scale * m_domainMinY;
124 qreal yPos = height + scale * m_domainMinY;
123 for (int set = 0; set < setCount; set++) {
125 for (int set = 0; set < setCount; set++) {
124 QBarSet* barSet = m_series->barsetAt(set);
126 QBarSet* barSet = m_series->d_func()->barsetAt(set);
125
127
126 qreal barHeight = barSet->valueAt(category) * scale;
128 qreal barHeight = barSet->valueAt(category) * scale;
127 Bar* bar = m_bars.at(itemIndex);
129 Bar* bar = m_bars.at(itemIndex);
@@ -21,6 +21,7
21 #include "percentbarchartitem_p.h"
21 #include "percentbarchartitem_p.h"
22 #include "bar_p.h"
22 #include "bar_p.h"
23 #include "barlabel_p.h"
23 #include "barlabel_p.h"
24 #include "qbarseries_p.h"
24 #include "qbarset.h"
25 #include "qbarset.h"
25 #include <QDebug>
26 #include <QDebug>
26
27
@@ -49,11 +50,11 QVector<QRectF> PercentBarChartItem::calculateLayout()
49
50
50 int itemIndex(0);
51 int itemIndex(0);
51 for (int category = 0; category < categoryCount; category++) {
52 for (int category = 0; category < categoryCount; category++) {
52 qreal colSum = m_series->categorySum(category);
53 qreal colSum = m_series->d_func()->categorySum(category);
53 qreal percentage = (100 / colSum);
54 qreal percentage = (100 / colSum);
54 qreal yPos = height + domainScale * m_domainMinY;
55 qreal yPos = height + domainScale * m_domainMinY;
55 for (int set=0; set < m_series->barsetCount(); set++) {
56 for (int set=0; set < m_series->barsetCount(); set++) {
56 QBarSet* barSet = m_series->barsetAt(set);
57 QBarSet* barSet = m_series->d_func()->barsetAt(set);
57 qreal barHeight = barSet->valueAt(category) * percentage * domainScale;
58 qreal barHeight = barSet->valueAt(category) * percentage * domainScale;
58 Bar* bar = m_bars.at(itemIndex);
59 Bar* bar = m_bars.at(itemIndex);
59 bar->setPen(barSet->pen());
60 bar->setPen(barSet->pen());
@@ -63,8 +64,8 QVector<QRectF> PercentBarChartItem::calculateLayout()
63
64
64 BarLabel* label = m_labels.at(itemIndex);
65 BarLabel* label = m_labels.at(itemIndex);
65
66
66 if (!qFuzzyIsNull(m_series->valueAt(set,category))) {
67 if (!qFuzzyIsNull(m_series->d_func()->valueAt(set,category))) {
67 int p = m_series->percentageAt(set,category) * 100;
68 int p = m_series->d_func()->percentageAt(set,category) * 100;
68 QString vString(QString::number(p));
69 QString vString(QString::number(p));
69 vString.truncate(3);
70 vString.truncate(3);
70 vString.append("%");
71 vString.append("%");
@@ -176,12 +176,6 void QBarSeries::removeCategory(int i)
176 int QBarSeries::barsetCount() const
176 int QBarSeries::barsetCount() const
177 {
177 {
178 Q_D(const QBarSeries);
178 Q_D(const QBarSeries);
179 /*
180 // if(m_model)
181 // return m_mapBarTop - m_mapBarBottom;
182 // else
183
184 */
185 return d->m_internalModel->barsetCount();
179 return d->m_internalModel->barsetCount();
186 }
180 }
187
181
@@ -204,26 +198,6 QList<QBarSet*> QBarSeries::barSets() const
204 }
198 }
205
199
206 /*!
200 /*!
207 \internal \a index
208 */
209 QBarSet* QBarSeries::barsetAt(int index)
210 {
211 Q_D(QBarSeries);
212 return d->barsetAt(index);
213 // return m_internalModel->barsetAt(index);
214 }
215
216 /*!
217 \internal \a category
218 */
219 QString QBarSeries::categoryName(int category)
220 {
221 Q_D(QBarSeries);
222 return d->categoryName(category);
223 // return m_internalModel->categoryName(category);
224 }
225
226 /*!
227 Enables or disables tooltip depending on parameter \a enabled.
201 Enables or disables tooltip depending on parameter \a enabled.
228 Tooltip shows the name of set, when mouse is hovering on top of bar.
202 Tooltip shows the name of set, when mouse is hovering on top of bar.
229 Calling without parameter \a enabled, enables the tooltip
203 Calling without parameter \a enabled, enables the tooltip
@@ -232,111 +206,6 void QBarSeries::setToolTipEnabled(bool enabled)
232 {
206 {
233 Q_D(QBarSeries);
207 Q_D(QBarSeries);
234 d->setToolTipEnabled(enabled);
208 d->setToolTipEnabled(enabled);
235 /*
236 // TODO: what if we add sets after call to this function? Those sets won't have tooltip enabled.
237 if (enabled) {
238 for (int i=0; i<m_internalModel->barsetCount(); i++) {
239 QBarSet *set = m_internalModel->barsetAt(i);
240 connect(set, SIGNAL(showToolTip(QPoint,QString)), this, SIGNAL(showToolTip(QPoint,QString)));
241 }
242 } else {
243 for (int i=0; i<m_internalModel->barsetCount(); i++) {
244 QBarSet *set = m_internalModel->barsetAt(i);
245 disconnect(set, SIGNAL(showToolTip(QPoint,QString)), this, SIGNAL(showToolTip(QPoint,QString)));
246 }
247 }
248 */
249 }
250
251
252 /*!
253 \internal \a category
254 */
255 void QBarSeries::barsetClicked(QString category, Qt::MouseButtons button)
256 {
257 Q_D(QBarSeries);
258 d->barsetClicked(category,button);
259 // emit clicked(qobject_cast<QBarSet*>(sender()), category, button);
260 }
261
262 /*!
263 \internal
264 */
265 qreal QBarSeries::min()
266 {
267 Q_D(QBarSeries);
268 return d->min();
269 //return m_internalModel->min();
270 }
271
272 /*!
273 \internal
274 */
275 qreal QBarSeries::max()
276 {
277 Q_D(QBarSeries);
278 return d->max();
279 // return m_internalModel->max();
280 }
281
282 /*!
283 \internal \a set \a category
284 */
285 qreal QBarSeries::valueAt(int set, int category)
286 {
287 Q_D(QBarSeries);
288 return d->valueAt(set,category);
289 // return m_internalModel->valueAt(set, category);
290 }
291
292 /*!
293 \internal \a set \a category
294 */
295 qreal QBarSeries::percentageAt(int set, int category)
296 {
297 Q_D(QBarSeries);
298 return d->percentageAt(set,category);
299 // return m_internalModel->percentageAt(set, category);
300 }
301
302 /*!
303 \internal \a category
304 */
305 qreal QBarSeries::categorySum(int category)
306 {
307 Q_D(QBarSeries);
308 return d->categorySum(category);
309 // return m_internalModel->categorySum(category);
310 }
311
312 /*!
313 \internal \a category
314 */
315 qreal QBarSeries::absoluteCategorySum(int category)
316 {
317 Q_D(QBarSeries);
318 return d->absoluteCategorySum(category);
319 // return m_internalModel->absoluteCategorySum(category);
320 }
321
322 /*!
323 \internal
324 */
325 qreal QBarSeries::maxCategorySum()
326 {
327 Q_D(QBarSeries);
328 return d->maxCategorySum();
329 // return m_internalModel->maxCategorySum();
330 }
331
332 /*!
333 \internal
334 */
335 BarChartModel& QBarSeries::modelInternal()
336 {
337 Q_D(QBarSeries);
338 return d->modelInternal();
339 // return *m_internalModel;
340 }
209 }
341
210
342 /*!
211 /*!
@@ -347,31 +216,6 bool QBarSeries::setModel(QAbstractItemModel *model)
347 {
216 {
348 Q_D(QBarSeries);
217 Q_D(QBarSeries);
349 return d->setModel(model);
218 return d->setModel(model);
350 /*
351 // disconnect signals from old model
352 if(m_model)
353 {
354 disconnect(m_model, 0, this, 0);
355 m_mapCategories = -1;
356 m_mapBarBottom = -1;
357 m_mapBarTop = -1;
358 m_mapFirst = 0;
359 m_mapCount = 0;
360 m_mapOrientation = Qt::Vertical;
361 }
362
363 // set new model
364 if(model)
365 {
366 m_model = model;
367 return true;
368 }
369 else
370 {
371 m_model = 0;
372 return false;
373 }
374 */
375 }
219 }
376
220
377 /*!
221 /*!
@@ -386,138 +230,6 void QBarSeries::setModelMapping(int categories, int bottomBoundary, int topBoun
386 {
230 {
387 Q_D(QBarSeries);
231 Q_D(QBarSeries);
388 d->setModelMapping(categories,bottomBoundary,topBoundary,orientation);
232 d->setModelMapping(categories,bottomBoundary,topBoundary,orientation);
389 /*
390 if (!m_model)
391 return;
392
393 m_mapCategories = categories;
394 m_mapBarBottom = bottomBoundry;
395 m_mapBarTop = topBoundry;
396 // m_mapFirst = 1;
397 m_mapOrientation = orientation;
398
399 // connect the signals
400 if (m_mapOrientation == Qt::Vertical) {
401 m_mapCount = m_model->rowCount() - m_mapFirst;
402 connect(m_model,SIGNAL(dataChanged(QModelIndex,QModelIndex)),
403 this, SLOT(modelUpdated(QModelIndex, QModelIndex)));
404 connect(m_model,SIGNAL(rowsInserted(QModelIndex, int, int)),
405 this, SLOT(modelDataAdded(QModelIndex,int,int)));
406 connect(m_model, SIGNAL(rowsRemoved(QModelIndex, int, int)),
407 this, SLOT(modelDataRemoved(QModelIndex,int,int)));
408 } else {
409 m_mapCount = m_model->columnCount() - m_mapFirst;
410 connect(m_model,SIGNAL(dataChanged(QModelIndex,QModelIndex)),
411 this, SLOT(modelUpdated(QModelIndex, QModelIndex)));
412 connect(m_model,SIGNAL(columnsInserted(QModelIndex, int, int)),
413 this, SLOT(modelDataAdded(QModelIndex,int,int)));
414 connect(m_model, SIGNAL(columnsRemoved(QModelIndex, int, int)),
415 this, SLOT(modelDataRemoved(QModelIndex,int,int)));
416 }
417
418 // create the initial bars
419 delete m_internalModel;
420 if (m_mapOrientation == Qt::Vertical) {
421 QStringList categories;
422 for (int k = m_mapFirst; k < m_mapFirst + m_mapCount; k++)
423 categories << m_model->data(m_model->index(k, m_mapCategories), Qt::DisplayRole).toString();
424 m_internalModel = new BarChartModel(categories, this);
425
426 for (int i = m_mapBarBottom; i <= m_mapBarTop; i++) {
427 QBarSet* barSet = new QBarSet(QString("Column: %1").arg(i + 1));
428 for(int m = m_mapFirst; m < m_mapFirst + m_mapCount; m++)
429 *barSet << m_model->data(m_model->index(m, i), Qt::DisplayRole).toDouble();
430 appendBarSet(barSet);
431 }
432 } else {
433 QStringList categories;
434 for (int k = m_mapFirst; k < m_mapFirst + m_mapCount; k++)
435 categories << m_model->data(m_model->index(m_mapCategories, k), Qt::DisplayRole).toString();
436 m_internalModel = new BarChartModel(categories, this);
437
438 for (int i = m_mapBarBottom; i <= m_mapBarTop; i++) {
439 QBarSet* barSet = new QBarSet(QString("Row: %1").arg(i + 1));
440 for(int m = m_mapFirst; m < m_mapFirst + m_mapCount; m++)
441 *barSet << m_model->data(m_model->index(i, m), Qt::DisplayRole).toDouble();
442 appendBarSet(barSet);
443 }
444 }
445 */
446 }
447
448 /*!
449 \internal
450 */
451 void QBarSeries::modelUpdated(QModelIndex topLeft, QModelIndex bottomRight)
452 {
453 Q_D(QBarSeries);
454 d->modelUpdated(topLeft,bottomRight);
455 /*
456 Q_UNUSED(bottomRight)
457
458 if (m_mapOrientation == Qt::Vertical)
459 {
460 // model update is relevant to BarSeries if the change was made to the part of the model that was mapped to BarSeries
461 if (topLeft.column() >= m_mapBarBottom && topLeft.column() <= m_mapBarTop && topLeft.row() >= m_mapFirst && topLeft.row() < m_mapFirst + m_mapCount)
462 barsetAt(topLeft.column() - m_mapBarBottom)->setValue(topLeft.row() - m_mapFirst, m_model->data(topLeft, Qt::DisplayRole).toDouble());
463 }
464 else
465 {
466 // model update is relevant to BarSeries if the change was made to the part of the model that was mapped to BarSeries
467 if (topLeft.row() >= m_mapBarBottom && topLeft.row() <= m_mapBarTop && topLeft.column() >= m_mapFirst && topLeft.column() < m_mapFirst + m_mapCount)
468 barsetAt(topLeft.row() - m_mapBarBottom)->setValue(topLeft.column() - m_mapFirst, m_model->data(topLeft, Qt::DisplayRole).toDouble());
469 }
470 */
471 }
472
473 /*!
474 \internal
475 */
476 void QBarSeries::modelDataAdded(QModelIndex parent, int start, int end)
477 {
478 Q_D(QBarSeries);
479 d->modelDataAdded(parent,start,end);
480 /*
481 if (m_mapOrientation == Qt::Vertical) {
482 insertCategory(start - m_mapFirst, QString("Row: %1").arg(start + 1));
483 for (int i = 0; i <= m_mapBarTop - m_mapBarBottom; i++) {
484 barsetAt(i)->insertValue(start - m_mapFirst, m_model->data(m_model->index(start, i), Qt::DisplayRole).toDouble());
485 }
486 } else {
487 insertCategory(start - m_mapFirst, QString("Column: %1").arg(start + 1));
488 for (int i = 0; i <= m_mapBarTop - m_mapBarBottom; i++) {
489 barsetAt(i)->insertValue(start - m_mapFirst, m_model->data(m_model->index(i, start), Qt::DisplayRole).toDouble());
490 }
491 }
492 emit restructuredBars();
493 */
494 }
495
496 /*!
497 \internal
498 */
499 void QBarSeries::modelDataRemoved(QModelIndex parent, int start, int end)
500 {
501 Q_D(QBarSeries);
502 d->modelDataRemoved(parent,start,end);
503 /*
504 Q_UNUSED(parent)
505 Q_UNUSED(end)
506
507 removeCategory(start - m_mapFirst);
508 for (int i = 0; i <= m_mapBarTop - m_mapBarBottom; i++)
509 {
510 barsetAt(i)->removeValue(start - m_mapFirst);
511 }
512 emit restructuredBars();
513 */
514 }
515
516 void QBarSeries::barsetChanged()
517 {
518 Q_D(QBarSeries);
519 d->barsetChanged();
520 // emit updatedBars();
521 }
233 }
522
234
523 QBarCategories QBarSeries::categories() const
235 QBarCategories QBarSeries::categories() const
@@ -773,7 +485,6 void QBarSeriesPrivate::barsetChanged()
773
485
774 void QBarSeriesPrivate::scaleDomain(Domain& domain)
486 void QBarSeriesPrivate::scaleDomain(Domain& domain)
775 {
487 {
776 Q_Q(QBarSeries);
777 qreal minX(domain.minX());
488 qreal minX(domain.minX());
778 qreal minY(domain.minY());
489 qreal minY(domain.minY());
779 qreal maxX(domain.maxX());
490 qreal maxX(domain.maxX());
@@ -781,8 +492,8 void QBarSeriesPrivate::scaleDomain(Domain& domain)
781 int tickXCount(domain.tickXCount());
492 int tickXCount(domain.tickXCount());
782 int tickYCount(domain.tickYCount());
493 int tickYCount(domain.tickYCount());
783
494
784 qreal x = q->categoryCount();
495 qreal x = m_internalModel->categoryCount();
785 qreal y = q->max();
496 qreal y = max();
786 minX = qMin(minX, x);
497 minX = qMin(minX, x);
787 minY = qMin(minY, y);
498 minY = qMin(minY, y);
788 maxX = qMax(maxX, x);
499 maxX = qMax(maxX, x);
@@ -61,65 +61,21 public:
61 bool setModel(QAbstractItemModel *model);
61 bool setModel(QAbstractItemModel *model);
62 void setModelMapping(int categories, int bottomBoundary, int topBoundary, Qt::Orientation orientation = Qt::Vertical);
62 void setModelMapping(int categories, int bottomBoundary, int topBoundary, Qt::Orientation orientation = Qt::Vertical);
63
63
64 public:
65 // TODO: Functions below this are not part of api and will be moved
66 // to private implementation, when we start using it
67 // TODO: TO PIMPL --->
68 QBarSet* barsetAt(int index);
69 QString categoryName(int category);
70 qreal min();
71 qreal max();
72 qreal valueAt(int set, int category);
73 qreal percentageAt(int set, int category);
74 qreal categorySum(int category);
75 qreal absoluteCategorySum(int category);
76 qreal maxCategorySum();
77 BarChartModel& modelInternal();
78 // <--- TO PIMPL
79
80 protected:
64 protected:
81 explicit QBarSeries(QBarSeriesPrivate &d,QObject *parent = 0);
65 explicit QBarSeries(QBarSeriesPrivate &d,QObject *parent = 0);
82
66
83 Q_SIGNALS:
67 Q_SIGNALS:
84 void clicked(QBarSet *barset, QString category, Qt::MouseButtons button); // Up to user of api, what to do with these signals
68 void clicked(QBarSet *barset, QString category, Qt::MouseButtons button);
85 void selected();
69 void selected();
86 //
87 void updatedBars();
88 void restructuredBars();
89
90 // TODO: internal signals, these to private implementation.
91 // TODO: TO PIMPL --->
92 // void showToolTip(QPoint pos, QString tip);
93 // <--- TO PIMPL
94
70
95 public Q_SLOTS:
71 public Q_SLOTS:
96 void setToolTipEnabled(bool enabled = true); // enables tooltips
72 void setToolTipEnabled(bool enabled = true); // enables tooltips
97
73
98 // TODO: TO PIMPL --->
99 void barsetClicked(QString category, Qt::MouseButtons button);
100 // <--- TO PIMPL
101
102 private Q_SLOTS:
103 // slots for updating bars when data in model changes
104 void modelUpdated(QModelIndex topLeft, QModelIndex bottomRight);
105 void modelDataAdded(QModelIndex parent, int start, int end);
106 void modelDataRemoved(QModelIndex parent, int start, int end);
107 void barsetChanged();
108
109 protected:
74 protected:
110 Q_DECLARE_PRIVATE(QBarSeries)
75 Q_DECLARE_PRIVATE(QBarSeries)
111
76 friend class BarChartItem;
112 /*
77 friend class PercentBarChartItem;
113 BarChartModel *m_internalModel; // TODO: this may change... current "2 models" situation doesn't look good.
78 friend class StackedBarChartItem;
114
115 // QAbstractItemModel* m_model;
116 int m_mapCategories;
117 int m_mapBarBottom;
118 int m_mapBarTop;
119 int m_mapFirst;
120 int m_mapCount;
121 Qt::Orientation m_mapOrientation;
122 */
123 };
79 };
124
80
125 QTCOMMERCIALCHART_END_NAMESPACE
81 QTCOMMERCIALCHART_END_NAMESPACE
@@ -73,6 +73,7 private:
73 Q_DISABLE_COPY(QBarSet)
73 Q_DISABLE_COPY(QBarSet)
74 friend class QBarSeries;
74 friend class QBarSeries;
75 friend class BarLegendMarker;
75 friend class BarLegendMarker;
76 friend class BarChartItem;
76 };
77 };
77
78
78 QTCOMMERCIALCHART_END_NAMESPACE
79 QTCOMMERCIALCHART_END_NAMESPACE
@@ -21,6 +21,7
21 #include "qstackedbarseries.h"
21 #include "qstackedbarseries.h"
22 #include "qstackedbarseries_p.h"
22 #include "qstackedbarseries_p.h"
23 #include "stackedbarchartitem_p.h"
23 #include "stackedbarchartitem_p.h"
24 #include "barchartmodel_p.h"
24 #include "chartdataset_p.h"
25 #include "chartdataset_p.h"
25 #include "charttheme_p.h"
26 #include "charttheme_p.h"
26 #include "chartanimator_p.h"
27 #include "chartanimator_p.h"
@@ -69,7 +70,6 QStackedBarSeriesPrivate::QStackedBarSeriesPrivate(QBarCategories categories, QS
69
70
70 void QStackedBarSeriesPrivate::scaleDomain(Domain& domain)
71 void QStackedBarSeriesPrivate::scaleDomain(Domain& domain)
71 {
72 {
72 Q_Q(QStackedBarSeries);
73 qreal minX(domain.minX());
73 qreal minX(domain.minX());
74 qreal minY(domain.minY());
74 qreal minY(domain.minY());
75 qreal maxX(domain.maxX());
75 qreal maxX(domain.maxX());
@@ -77,8 +77,8 void QStackedBarSeriesPrivate::scaleDomain(Domain& domain)
77 int tickXCount(domain.tickXCount());
77 int tickXCount(domain.tickXCount());
78 int tickYCount(domain.tickYCount());
78 int tickYCount(domain.tickYCount());
79
79
80 qreal x = q->categoryCount();
80 qreal x = m_internalModel->categoryCount();
81 qreal y = q->maxCategorySum();
81 qreal y = maxCategorySum();
82 minX = qMin(minX, x);
82 minX = qMin(minX, x);
83 minY = qMin(minY, y);
83 minY = qMin(minY, y);
84 maxX = qMax(maxX, x);
84 maxX = qMax(maxX, x);
@@ -21,6 +21,8
21 #include "stackedbarchartitem_p.h"
21 #include "stackedbarchartitem_p.h"
22 #include "bar_p.h"
22 #include "bar_p.h"
23 #include "barlabel_p.h"
23 #include "barlabel_p.h"
24 #include "qbarset_p.h"
25 #include "qbarseries_p.h"
24 #include "qbarset.h"
26 #include "qbarset.h"
25
27
26 QTCOMMERCIALCHART_BEGIN_NAMESPACE
28 QTCOMMERCIALCHART_BEGIN_NAMESPACE
@@ -49,7 +51,7 QVector<QRectF> StackedBarChartItem::calculateLayout()
49 for (int category = 0; category < categotyCount; category++) {
51 for (int category = 0; category < categotyCount; category++) {
50 qreal yPos = height + scale * m_domainMinY;
52 qreal yPos = height + scale * m_domainMinY;
51 for (int set=0; set < m_series->barsetCount(); set++) {
53 for (int set=0; set < m_series->barsetCount(); set++) {
52 QBarSet* barSet = m_series->barsetAt(set);
54 QBarSet* barSet = m_series->d_func()->barsetAt(set);
53
55
54 qreal barHeight = barSet->valueAt(category) * scale;
56 qreal barHeight = barSet->valueAt(category) * scale;
55 Bar* bar = m_bars.at(itemIndex);
57 Bar* bar = m_bars.at(itemIndex);
@@ -314,8 +314,9 void TableWidget::updateChartType(bool toggle)
314 barSeries->setModelMapping(5, 2, 4, Qt::Vertical);
314 barSeries->setModelMapping(5, 2, 4, Qt::Vertical);
315 barSeries->setToolTipEnabled(true);
315 barSeries->setToolTipEnabled(true);
316 m_chart->addSeries(barSeries);
316 m_chart->addSeries(barSeries);
317 for (int i = 0; i < barSeries->barsetCount(); i++) {
317 QList<QBarSet*> barsets = barSeries->barSets();
318 seriesColorHex = "#" + QString::number(barSeries->barsetAt(i)->brush().color().rgb(), 16).right(6).toUpper();
318 for (int i = 0; i < barsets.count(); i++) {
319 seriesColorHex = "#" + QString::number(barsets.at(i)->brush().color().rgb(), 16).right(6).toUpper();
319 m_model->addMapping(seriesColorHex, QRect(2 + i, 0, 1, 1000));
320 m_model->addMapping(seriesColorHex, QRect(2 + i, 0, 1, 1000));
320 }
321 }
321 }
322 }
General Comments 0
You need to be logged in to leave comments. Login now