From d93f5f3b64fdb52cc150232f6b6d80ffdb57db78 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Tue, 10 Sep 2013 16:26:11 +0300 Subject: QBarDataProxy now has list of row and column labels MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Category axes use those labels if no explicit labels are set to them. + Other misc fixes Task-number: QTRD-2252 Change-Id: Idc15e0cc1cdeb08195b2e2baeead9cfef2533e04 Reviewed-by: Tomi Korpipää --- tests/barstest/chart.cpp | 65 +++++++++++++++++++++++++++++++++--------------- tests/barstest/chart.h | 2 ++ tests/barstest/main.cpp | 40 ++++++++++++++++++++--------- 3 files changed, 75 insertions(+), 32 deletions(-) (limited to 'tests') diff --git a/tests/barstest/chart.cpp b/tests/barstest/chart.cpp index 08ce4d94..e2d4bda4 100644 --- a/tests/barstest/chart.cpp +++ b/tests/barstest/chart.cpp @@ -53,16 +53,8 @@ ChartModifier::ChartModifier(Q3DBars *barchart) m_genericData(new QBarDataProxy), m_currentAxis(m_fixedRangeAxis) { - // Don't set any styles or specifications, start from defaults // Generate generic labels - QStringList genericRowLabels; QStringList genericColumnLabels; - for (int i = 0; i < 200; i++) { - if (i % 5) - genericRowLabels << QString(); - else - genericRowLabels << QStringLiteral("Row %1").arg(i); - } for (int i = 0; i < 200; i++) { if (i % 5) genericColumnLabels << QString(); @@ -89,7 +81,6 @@ ChartModifier::ChartModifier(Q3DBars *barchart) m_fixedRangeAxis->setRange(0.0, 100.0); m_genericRowAxis->setTitle("Generic Row"); - m_genericRowAxis->setCategoryLabels(genericRowLabels); m_genericColumnAxis->setTitle("Generic Column"); m_genericColumnAxis->setCategoryLabels(genericColumnLabels); @@ -101,10 +92,8 @@ ChartModifier::ChartModifier(Q3DBars *barchart) m_temperatureAxis->setLabelFormat(QString(QStringLiteral("%d ") + celsiusString)); m_yearAxis->setTitle("Year"); - m_yearAxis->setCategoryLabels(m_years); m_monthAxis->setTitle("Month"); - m_monthAxis->setCategoryLabels(m_months); m_chart->addAxis(m_autoAdjustingAxis); m_chart->addAxis(m_fixedRangeAxis); @@ -249,38 +238,71 @@ void ChartModifier::resetTemperatureData() // Add data to chart (chart assumes ownership) - m_temperatureData->resetArray(dataSet); + m_temperatureData->resetArray(dataSet, m_years, m_months); } + +static int addCounter = 0; +static int insertCounter = 0; +static int changeCounter = 0; + void ChartModifier::addRow() { QBarDataRow *dataRow = new QBarDataRow(m_columnCount); - for (float i = 0; i < m_columnCount; i++) { + 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()); + + // TODO Needs to be changed to account for data window offset once it is implemented. + QString label = QStringLiteral("Add %1").arg(addCounter++); + m_chart->activeDataProxy()->addRow(dataRow, label); +} + +void ChartModifier::addRows() +{ + QBarDataArray dataArray; + QStringList labels; + 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->activeDataProxy()->rowCount())); + dataArray.append(dataRow); + labels.append(QStringLiteral("Add %1").arg(addCounter++)); } + // TODO Needs to be changed to account for data window offset once it is implemented. + m_chart->activeDataProxy()->addRows(dataArray, labels); +} + +void ChartModifier::insertRow() +{ + 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)); + // TODO Needs to be changed to account for data window offset once it is implemented. int row = qMax(m_selectedBarPos.x(), 0); - m_chart->activeDataProxy()->insertRow(row, dataRow); + QString label = QStringLiteral("Insert %1").arg(insertCounter++); + m_chart->activeDataProxy()->insertRow(row, dataRow, label); } -void ChartModifier::addRows() +void ChartModifier::insertRows() { QTime timer; timer.start(); QBarDataArray dataArray; + QStringList labels; 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->activeDataProxy()->rowCount())); dataArray.append(dataRow); + labels.append(QStringLiteral("Insert %1").arg(insertCounter++)); } // TODO Needs to be changed to account for data window offset once it is implemented. int row = qMax(m_selectedBarPos.x(), 0); - m_chart->activeDataProxy()->insertRows(row, dataArray); - qDebug() << "Added" << m_rowCount << "rows, time:" << timer.elapsed(); + m_chart->activeDataProxy()->insertRows(row, dataArray, labels); + qDebug() << "Inserted" << m_rowCount << "rows, time:" << timer.elapsed(); } void ChartModifier::changeItem() @@ -302,7 +324,8 @@ void ChartModifier::changeRow() QBarDataRow *newRow = new QBarDataRow(m_chart->activeDataProxy()->rowAt(row)->size()); for (int i = 0; i < newRow->size(); i++) (*newRow)[i].setValue(qreal(rand() % 100)); - m_chart->activeDataProxy()->setRow(row, newRow); + QString label = QStringLiteral("Change %1").arg(changeCounter++); + m_chart->activeDataProxy()->setRow(row, newRow, label); } } @@ -313,13 +336,15 @@ void ChartModifier::changeRows() if (row >= 0) { int startRow = qMax(row - 2, 0); QBarDataArray newArray; + QStringList labels; for (int i = startRow; i <= row; i++ ) { QBarDataRow *newRow = new QBarDataRow(m_chart->activeDataProxy()->rowAt(i)->size()); for (int j = 0; j < newRow->size(); j++) (*newRow)[j].setValue(qreal(rand() % 100)); newArray.append(newRow); + labels.append(QStringLiteral("Change %1").arg(changeCounter++)); } - m_chart->activeDataProxy()->setRows(startRow, newArray); + m_chart->activeDataProxy()->setRows(startRow, newArray, labels); } } diff --git a/tests/barstest/chart.h b/tests/barstest/chart.h index bd601021..fcd861b7 100644 --- a/tests/barstest/chart.h +++ b/tests/barstest/chart.h @@ -38,6 +38,8 @@ public: void resetTemperatureData(); void addRow(); void addRows(); + void insertRow(); + void insertRows(); void changeItem(); void changeRow(); void changeRows(); diff --git a/tests/barstest/main.cpp b/tests/barstest/main.cpp index b5225d4c..39341471 100644 --- a/tests/barstest/main.cpp +++ b/tests/barstest/main.cpp @@ -54,13 +54,21 @@ int main(int argc, char **argv) hLayout->addLayout(vLayout); hLayout->addLayout(vLayout2); - QPushButton *dataButton = new QPushButton(widget); - dataButton->setText(QStringLiteral("Insert a row of data")); - dataButton->setEnabled(false); + QPushButton *addDataButton = new QPushButton(widget); + addDataButton->setText(QStringLiteral("Add a row of data")); + addDataButton->setEnabled(false); - QPushButton *multiDataButton = new QPushButton(widget); - multiDataButton->setText(QStringLiteral("Insert many rows of data")); - multiDataButton->setEnabled(false); + QPushButton *addMultiDataButton = new QPushButton(widget); + addMultiDataButton->setText(QStringLiteral("Add many rows of data")); + addMultiDataButton->setEnabled(false); + + QPushButton *insertDataButton = new QPushButton(widget); + insertDataButton->setText(QStringLiteral("Insert a row of data")); + insertDataButton->setEnabled(false); + + QPushButton *insertMultiDataButton = new QPushButton(widget); + insertMultiDataButton->setText(QStringLiteral("Insert many rows of data")); + insertMultiDataButton->setEnabled(false); QPushButton *changeSingleDataButton = new QPushButton(widget); changeSingleDataButton->setText(QStringLiteral("Change selected bar value")); @@ -188,8 +196,10 @@ int main(int argc, char **argv) shadowQuality->addItem(QStringLiteral("High Soft")); shadowQuality->setCurrentIndex(5); - vLayout->addWidget(dataButton, 0, Qt::AlignTop); - vLayout->addWidget(multiDataButton, 0, Qt::AlignTop); + vLayout->addWidget(addDataButton, 0, Qt::AlignTop); + vLayout->addWidget(addMultiDataButton, 0, Qt::AlignTop); + vLayout->addWidget(insertDataButton, 0, Qt::AlignTop); + vLayout->addWidget(insertMultiDataButton, 0, Qt::AlignTop); vLayout->addWidget(changeSingleDataButton, 0, Qt::AlignTop); vLayout->addWidget(changeRowButton, 0, Qt::AlignTop); vLayout->addWidget(changeRowsButton, 0, Qt::AlignTop); @@ -264,8 +274,10 @@ 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::addRow); - QObject::connect(multiDataButton, &QPushButton::clicked, modifier, &ChartModifier::addRows); + QObject::connect(addDataButton, &QPushButton::clicked, modifier, &ChartModifier::addRow); + QObject::connect(addMultiDataButton, &QPushButton::clicked, modifier, &ChartModifier::addRows); + QObject::connect(insertDataButton, &QPushButton::clicked, modifier, &ChartModifier::insertRow); + QObject::connect(insertMultiDataButton, &QPushButton::clicked, modifier, &ChartModifier::insertRows); QObject::connect(changeSingleDataButton, &QPushButton::clicked, modifier, &ChartModifier::changeItem); QObject::connect(changeRowButton, &QPushButton::clicked, modifier, &ChartModifier::changeRow); QObject::connect(changeRowsButton, &QPushButton::clicked, modifier, &ChartModifier::changeRows); @@ -299,9 +311,13 @@ int main(int argc, char **argv) QObject::connect(rotationCheckBox, &QCheckBox::stateChanged, rotationSliderY, &QSlider::setValue); - QObject::connect(staticCheckBox, &QCheckBox::stateChanged, dataButton, + QObject::connect(staticCheckBox, &QCheckBox::stateChanged, addDataButton, + &QPushButton::setEnabled); + QObject::connect(staticCheckBox, &QCheckBox::stateChanged, addMultiDataButton, + &QPushButton::setEnabled); + QObject::connect(staticCheckBox, &QCheckBox::stateChanged, insertDataButton, &QPushButton::setEnabled); - QObject::connect(staticCheckBox, &QCheckBox::stateChanged, multiDataButton, + QObject::connect(staticCheckBox, &QCheckBox::stateChanged, insertMultiDataButton, &QPushButton::setEnabled); QObject::connect(staticCheckBox, &QCheckBox::stateChanged, changeSingleDataButton, &QPushButton::setEnabled); -- cgit v1.2.3