@@ -74,6 +74,7 void QPieModelMapper::reset() | |||
|
74 | 74 | m_orientation = Qt::Vertical; |
|
75 | 75 | m_mapValues = -1; |
|
76 | 76 | m_mapLabels = -1; |
|
77 | emit updated(); | |
|
77 | 78 | } |
|
78 | 79 | |
|
79 | 80 | #include "moc_qpiemodelmapper.cpp" |
@@ -722,6 +722,10 void QPieSeriesPrivate::initializePieFromModel() | |||
|
722 | 722 | // clear current content |
|
723 | 723 | q->clear(); |
|
724 | 724 | |
|
725 | // check if mappings are set | |
|
726 | if (m_mapper->mapValues() == -1 || m_mapper->mapLabels() == -1) | |
|
727 | return; | |
|
728 | ||
|
725 | 729 | // create the initial slices set |
|
726 | 730 | if (m_mapper->orientation() == Qt::Vertical) { |
|
727 | 731 | if (m_mapper->mapValues() >= m_model->columnCount() || m_mapper->mapLabels() >= m_model->columnCount()) |
@@ -23,6 +23,8 | |||
|
23 | 23 | #include <qchart.h> |
|
24 | 24 | #include <qpieseries.h> |
|
25 | 25 | #include <qpieslice.h> |
|
26 | #include <qpiemodelmapper.h> | |
|
27 | #include <QStandardItemModel> | |
|
26 | 28 | #include <tst_definitions.h> |
|
27 | 29 | |
|
28 | 30 | QTCOMMERCIALCHART_USE_NAMESPACE |
@@ -47,6 +49,8 private slots: | |||
|
47 | 49 | void calculatedValues(); |
|
48 | 50 | void clickedSignal(); |
|
49 | 51 | void hoverSignal(); |
|
52 | void model(); | |
|
53 | void modelCustomMap(); | |
|
50 | 54 | |
|
51 | 55 | private: |
|
52 | 56 | void verifyCalculatedData(const QPieSeries &series, bool *ok); |
@@ -320,6 +324,74 void tst_qpieseries::hoverSignal() | |||
|
320 | 324 | QCOMPARE(qvariant_cast<bool>(hoverSpy.at(1).at(1)), false); |
|
321 | 325 | } |
|
322 | 326 | |
|
327 | void tst_qpieseries::model() | |
|
328 | { | |
|
329 | QPieSeries *series = new QPieSeries; | |
|
330 | QStandardItemModel *stdModel = new QStandardItemModel(0, 2); | |
|
331 | series->setModel(stdModel); | |
|
332 | QVERIFY2((series->model()) == stdModel, "Model should be stdModel"); | |
|
333 | ||
|
334 | int rowCount = 3; | |
|
335 | for (int row = 0; row < rowCount; ++row) { | |
|
336 | for (int column = 0; column < 2; column++) { | |
|
337 | QStandardItem *item = new QStandardItem(row * column); | |
|
338 | stdModel->setItem(row, column, item); | |
|
339 | } | |
|
340 | } | |
|
341 | ||
|
342 | // data has been added to the model, but mapper is not set the number of slices should still be 0 | |
|
343 | QVERIFY2(series->slices().count() == 0, "Mapper has not been set, so the number of slices should be 0"); | |
|
344 | ||
|
345 | // set the mapper | |
|
346 | QPieModelMapper *mapper = new QPieModelMapper; | |
|
347 | mapper->setMapValues(0); | |
|
348 | mapper->setMapLabels(0); | |
|
349 | series->setModelMapper(mapper); // this should cause the Pie to get initialized from the model, since there is now both the model and the mapper defined | |
|
350 | QCOMPARE(series->slices().count(), rowCount); | |
|
351 | ||
|
352 | // reset the mappings | |
|
353 | mapper->reset(); | |
|
354 | QCOMPARE(series->slices().count(), 0); // Mappings have been reset and are invalid, so the number of slices should be 0 | |
|
355 | ||
|
356 | // unset the model and the mapper | |
|
357 | series->setModel(0); | |
|
358 | series->setModelMapper(0); | |
|
359 | QVERIFY(series->model() == 0); // Model should be unset | |
|
360 | QVERIFY(series->modelMapper() == 0); // Model mapper should be unset | |
|
361 | } | |
|
362 | ||
|
363 | void tst_qpieseries::modelCustomMap() | |
|
364 | { | |
|
365 | int rowCount = 12; | |
|
366 | QStandardItemModel *stdModel = new QStandardItemModel(0, 2); | |
|
367 | for (int row = 0; row < rowCount; ++row) { | |
|
368 | for (int column = 0; column < 2; column++) { | |
|
369 | QStandardItem *item = new QStandardItem(row * column); | |
|
370 | stdModel->setItem(row, column, item); | |
|
371 | } | |
|
372 | } | |
|
373 | ||
|
374 | QPieSeries *series = new QPieSeries; | |
|
375 | series->setModel(stdModel); | |
|
376 | ||
|
377 | QPieModelMapper *mapper = new QPieModelMapper; | |
|
378 | mapper->setMapValues(0); | |
|
379 | mapper->setMapLabels(0); | |
|
380 | series->setModelMapper(mapper); | |
|
381 | QCOMPARE(series->slices().count(), rowCount); | |
|
382 | ||
|
383 | // lets customize the mapping | |
|
384 | int first = 3; | |
|
385 | mapper->setFirst(first); | |
|
386 | QCOMPARE(series->slices().count(), rowCount - first); | |
|
387 | int count = 7; | |
|
388 | mapper->setCount(count); | |
|
389 | QCOMPARE(series->slices().count(), count); | |
|
390 | first = 9; | |
|
391 | mapper->setFirst(first); | |
|
392 | QCOMPARE(series->slices().count(), qMin(count, rowCount - first)); | |
|
393 | } | |
|
394 | ||
|
323 | 395 | QTEST_MAIN(tst_qpieseries) |
|
324 | 396 | |
|
325 | 397 | #include "tst_qpieseries.moc" |
General Comments 0
You need to be logged in to leave comments.
Login now