summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2013-07-08 15:11:06 +0300
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2013-07-09 07:40:05 +0300
commit24275c551f0a10df022f037962d1678b7213ef09 (patch)
tree310a339c2c1582d68618881c905fd32dd64f2f5e /examples
parentd9267977b3f5bb8ab5573c29f0721a07397e5b82 (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.cpp2
-rw-r--r--examples/rainfall/main.cpp2
-rw-r--r--examples/widget/chart.cpp37
-rw-r--r--examples/widget/chart.h3
-rw-r--r--examples/widget/main.cpp10
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,