diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-07-08 15:11:06 +0300 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-07-09 07:40:05 +0300 |
commit | 24275c551f0a10df022f037962d1678b7213ef09 (patch) | |
tree | 310a339c2c1582d68618881c905fd32dd64f2f5e /examples | |
parent | d9267977b3f5bb8ab5573c29f0721a07397e5b82 (diff) |
Refactor data item
Data items do not need to know about rendering related stuff,
so separated that to render items. Renderer will maintain
array of render items equal to the sample space.
Change-Id: I61c0db96f115b7c667e37ea92aa5ae6b8583c61a
Reviewed-by: Mika Salmela <mika.salmela@digia.com>
Diffstat (limited to 'examples')
-rw-r--r-- | examples/barchart/main.cpp | 2 | ||||
-rw-r--r-- | examples/rainfall/main.cpp | 2 | ||||
-rw-r--r-- | examples/widget/chart.cpp | 37 | ||||
-rw-r--r-- | examples/widget/chart.h | 3 | ||||
-rw-r--r-- | examples/widget/main.cpp | 10 |
5 files changed, 43 insertions, 11 deletions
diff --git a/examples/barchart/main.cpp b/examples/barchart/main.cpp index 040be325..03c8b5db 100644 --- a/examples/barchart/main.cpp +++ b/examples/barchart/main.cpp @@ -256,6 +256,8 @@ void ChartDataGenerator::addDataSet() m_chart->setupSampleSpace(weeks.size(), days.size()); // Add data to chart + // TODO QDataSet reverses the data in rows and columns when you add it, so results are now mirrored. + qWarning() << "Example broken! QDataSet mirrors data, rows and columns will not be correct!"; static_cast<QOldDataProxy *>(m_chart->dataProxy())->addDataSet(dataSet); #endif } diff --git a/examples/rainfall/main.cpp b/examples/rainfall/main.cpp index be1b120f..a13e91f9 100644 --- a/examples/rainfall/main.cpp +++ b/examples/rainfall/main.cpp @@ -326,6 +326,8 @@ void RainfallChart::addDataSet() data.append(row); row.clear(); + // TODO QDataSet reverses the data in rows and columns when you add it, so results are now mirrored. + qWarning() << "Example broken! QDataSet mirrors data, rows and columns will not be correct!"; QOldDataProxy *proxy = new QOldDataProxy; m_chart->setDataProxy(proxy); static_cast<QOldDataProxy *>(m_chart->dataProxy())->addDataSet(data); diff --git a/examples/widget/chart.cpp b/examples/widget/chart.cpp index 3ab19017..8d6c5f99 100644 --- a/examples/widget/chart.cpp +++ b/examples/widget/chart.cpp @@ -42,6 +42,7 @@ #include "qcategoryaxis.h" #include "qvalueaxis.h" #include "qbardataproxy.h" +#include <QTime> QT_DATAVIS3D_USE_NAMESPACE @@ -94,7 +95,7 @@ void ChartModifier::restart(bool dynamicData) m_chart->setFont(QFont("Times Roman", 20)); m_chart->setTickCount(m_ticks, m_tickStep, m_minval); } else { - m_chart->dataProxy()->resetArray(0, 0); + m_chart->dataProxy()->resetArray(0); // Set up sample space m_chart->setupSampleSpace(m_rowCount, m_columnCount); // Set selection mode to full @@ -151,11 +152,11 @@ void ChartModifier::addDataSet() dataSet->reserve(years.size()); for (int year = 0; year < years.size(); year++) { - dataRow = new QBarDataRow; + dataRow = new QBarDataRow(months.size()); // Create data items for (int month = 0; month < months.size(); month++) { // Add data to rows - dataRow->append(new QBarDataItem(temp[year][month])); + (*dataRow)[month].setValue(temp[year][month]); } // Add row to set dataSet->append(dataRow); @@ -173,17 +174,36 @@ void ChartModifier::addDataSet() proxy->resetArray(dataSet); } -void ChartModifier::addBars() +void ChartModifier::addRow() { - QBarDataRow *dataRow = new QBarDataRow; - for (float i = 0; i < m_columnCount; i++) - dataRow->append(new QBarDataItem(i + m_chart->dataProxy()->rowCount())); - //dataRow->append(new QBarDataItem(((i + 1) / (float)m_columnCount) * (float)(rand() % 100))); + QBarDataRow *dataRow = new QBarDataRow(m_columnCount); + for (float i = 0; i < m_columnCount; i++) { + (*dataRow)[i].setValue(((i + 1) / (float)m_columnCount) * (float)(rand() % 100)); + //(*dataRow)[i].setValue(i + m_chart->dataProxy()->rowCount()); + } m_chart->dataProxy()->insertRow(0, dataRow); if (m_chart->dataProxy()->rowCount() <= m_rowCount) m_chart->rowAxis()->setLabels(m_genericRowLabels.mid(0, m_chart->dataProxy()->rowCount())); } +void ChartModifier::addRows() +{ + QTime timer; + timer.start(); + int oldCount = m_chart->dataProxy()->rowCount(); + QBarDataArray *dataArray = new QBarDataArray(); + for (int i = 0; i < m_rowCount; i++) { + QBarDataRow *dataRow = new QBarDataRow(m_columnCount); + for (int j = 0; j < m_columnCount; j++) + (*dataRow)[j].setValue(qreal(j + i + m_chart->dataProxy()->rowCount())); + dataArray->append(dataRow); + } + m_chart->dataProxy()->insertRows(0, dataArray); + if (oldCount < m_rowCount) + m_chart->rowAxis()->setLabels(m_genericRowLabels.mid(0, m_rowCount)); + qDebug() << "Added" << m_rowCount << "rows, time:" << timer.elapsed(); +} + void ChartModifier::changeStyle() { static int model = 0; @@ -365,7 +385,6 @@ void ChartModifier::setSampleCountX(int samples) { m_columnCount = samples; m_chart->setupSampleSpace(m_rowCount, m_columnCount); - m_chart->dataProxy()->setColumnCount(m_columnCount); } void ChartModifier::setSampleCountZ(int samples) diff --git a/examples/widget/chart.h b/examples/widget/chart.h index 3c943588..8b7aaa39 100644 --- a/examples/widget/chart.h +++ b/examples/widget/chart.h @@ -57,7 +57,8 @@ public: ~ChartModifier(); void addDataSet(); - void addBars(); + void addRow(); + void addRows(); void changeStyle(); void changePresetCamera(); void changeTheme(); diff --git a/examples/widget/main.cpp b/examples/widget/main.cpp index d2c9b63f..9614cc0f 100644 --- a/examples/widget/main.cpp +++ b/examples/widget/main.cpp @@ -78,6 +78,10 @@ int main(int argc, char **argv) dataButton->setText(QStringLiteral("Insert a row of data")); dataButton->setEnabled(false); + QPushButton *multiDataButton = new QPushButton(widget); + multiDataButton->setText(QStringLiteral("Insert many rows of data")); + multiDataButton->setEnabled(false); + QPushButton *themeButton = new QPushButton(widget); themeButton->setText(QStringLiteral("Change theme")); @@ -185,6 +189,7 @@ int main(int argc, char **argv) vLayout->addWidget(sampleSliderX, 0, Qt::AlignTop); vLayout->addWidget(sampleSliderZ, 1, Qt::AlignTop); vLayout->addWidget(dataButton, 0, Qt::AlignTop); + vLayout->addWidget(multiDataButton, 0, Qt::AlignTop); vLayout->addWidget(themeButton, 0, Qt::AlignTop); vLayout->addWidget(labelButton, 0, Qt::AlignTop); vLayout->addWidget(styleButton, 0, Qt::AlignTop); @@ -236,7 +241,8 @@ int main(int argc, char **argv) QObject::connect(themeButton, &QPushButton::clicked, modifier, &ChartModifier::changeTheme); QObject::connect(labelButton, &QPushButton::clicked, modifier, &ChartModifier::changeTransparency); - QObject::connect(dataButton, &QPushButton::clicked, modifier, &ChartModifier::addBars); + QObject::connect(dataButton, &QPushButton::clicked, modifier, &ChartModifier::addRow); + QObject::connect(multiDataButton, &QPushButton::clicked, modifier, &ChartModifier::addRows); QObject::connect(selectionButton, &QPushButton::clicked, modifier, &ChartModifier::changeSelectionMode); @@ -259,6 +265,8 @@ int main(int argc, char **argv) QObject::connect(staticCheckBox, &QCheckBox::stateChanged, dataButton, &QPushButton::setEnabled); + QObject::connect(staticCheckBox, &QCheckBox::stateChanged, multiDataButton, + &QPushButton::setEnabled); QObject::connect(staticCheckBox, &QCheckBox::stateChanged, sampleSliderX, &QSlider::setEnabled); QObject::connect(staticCheckBox, &QCheckBox::stateChanged, sampleSliderZ, |