diff options
Diffstat (limited to 'tests/barstest')
-rw-r--r-- | tests/barstest/chart.cpp | 465 | ||||
-rw-r--r-- | tests/barstest/chart.h | 19 | ||||
-rw-r--r-- | tests/barstest/main.cpp | 68 |
3 files changed, 520 insertions, 32 deletions
diff --git a/tests/barstest/chart.cpp b/tests/barstest/chart.cpp index e7a0e2ca..d3c38d85 100644 --- a/tests/barstest/chart.cpp +++ b/tests/barstest/chart.cpp @@ -20,12 +20,14 @@ #include "custominputhandler.h" #include <QtDataVisualization/qcategory3daxis.h> #include <QtDataVisualization/qvalue3daxis.h> +#include <QtDataVisualization/qlogvalue3daxisformatter.h> #include <QtDataVisualization/qbardataproxy.h> #include <QtDataVisualization/q3dscene.h> #include <QtDataVisualization/q3dcamera.h> #include <QtDataVisualization/q3dtheme.h> #include <QtDataVisualization/q3dinputhandler.h> -#include <QTime> +#include <QtCore/QTime> +#include <QtCore/qmath.h> using namespace QtDataVisualization; @@ -42,7 +44,7 @@ GraphModifier::GraphModifier(Q3DBars *barchart, QColorDialog *colorDialog) m_barSpacingX(0.1f), m_barSpacingZ(0.1f), m_fontSize(20), - m_segments(4), + m_segments(10), m_subSegments(3), m_minval(-16.0f), m_maxval(20.0f), @@ -69,7 +71,8 @@ GraphModifier::GraphModifier(Q3DBars *barchart, QColorDialog *colorDialog) m_defaultInputHandler(0), m_ownTheme(0), m_builtinTheme(new Q3DTheme(Q3DTheme::ThemeStoneMoss)), - m_customInputHandler(new CustomInputHandler) + m_customInputHandler(new CustomInputHandler), + m_extraSeries(0) { m_temperatureData->setObjectName("m_temperatureData"); m_temperatureData2->setObjectName("m_temperatureData2"); @@ -143,7 +146,7 @@ GraphModifier::GraphModifier(Q3DBars *barchart, QColorDialog *colorDialog) m_dummyData4->setName("Dummy 4"); m_dummyData5->setName("Dummy 5"); - m_temperatureData->setItemLabelFormat(QStringLiteral("@seriesName: @valueTitle for @colLabel @rowLabel: @valueLabel")); + m_temperatureData->setItemLabelFormat(QStringLiteral("@seriesName: @valueTitle for @colLabel @rowLabel: @valueLabel ~ %.4f")); m_temperatureData2->setItemLabelFormat(QStringLiteral("@seriesName: @valueTitle for @colLabel @rowLabel: @valueLabel")); m_genericData->setItemLabelFormat(QStringLiteral("@seriesName: @valueTitle for (@rowIdx, @colIdx): @valueLabel")); @@ -221,6 +224,8 @@ GraphModifier::GraphModifier(Q3DBars *barchart, QColorDialog *colorDialog) &GraphModifier::handleValueAxisChanged); QObject::connect(m_graph, &Q3DBars::primarySeriesChanged, this, &GraphModifier::handlePrimarySeriesChanged); + QObject::connect(m_temperatureAxis, &QAbstract3DAxis::labelsChanged, this, + &GraphModifier::handleValueAxisLabelsChanged); QObject::connect(&m_insertRemoveTimer, &QTimer::timeout, this, &GraphModifier::insertRemoveTimerTimeout); @@ -233,6 +238,10 @@ GraphModifier::GraphModifier(Q3DBars *barchart, QColorDialog *colorDialog) QObject::connect(&m_rotationTimer, &QTimer::timeout, this, &GraphModifier::triggerRotation); + QObject::connect(m_graph, &QAbstract3DGraph::currentFpsChanged, this, + &GraphModifier::handleFpsChange); + + resetTemperatureData(); } @@ -304,7 +313,7 @@ void GraphModifier::swapAxis() void GraphModifier::releaseAxes() { - // Releases all axes - results in default axes for all dimensions. + // Releases all axes we have created - results in default axes for all dimensions. // Axes reset when the graph is switched as set*Axis calls are made, which // implicitly add axes. m_graph->releaseAxis(m_autoAdjustingAxis); @@ -316,23 +325,10 @@ void GraphModifier::releaseAxes() m_graph->releaseAxis(m_genericColumnAxis); } -void GraphModifier::releaseProxies() +void GraphModifier::releaseSeries() { - // Releases all series/add all series toggle - if (m_graph->seriesList().size() > 0) { - m_graph->removeSeries(m_temperatureData); - m_graph->removeSeries(m_temperatureData2); - m_graph->removeSeries(m_genericData); - m_graph->removeSeries(m_dummyData); - m_graph->removeSeries(m_dummyData2); - m_graph->removeSeries(m_dummyData3); - m_graph->removeSeries(m_dummyData4); - m_graph->removeSeries(m_dummyData5); - } else { - m_graph->addSeries(m_temperatureData); - m_graph->addSeries(m_temperatureData2); - m_graph->addSeries(m_genericData); - } + foreach (QBar3DSeries *series, m_graph->seriesList()) + m_graph->removeSeries(series); } void GraphModifier::flipViews() @@ -762,7 +758,7 @@ void GraphModifier::changeShadowQuality(int quality) void GraphModifier::showFiveSeries() { - releaseProxies(); + releaseSeries(); releaseAxes(); m_graph->setSelectionMode(QAbstract3DGraph::SelectionItemRowAndColumn | QAbstract3DGraph::SelectionMultiSeries); @@ -829,7 +825,7 @@ void GraphModifier::primarySeriesTest() case 0: { qDebug() << "Step 0 - Init:"; m_graph->addSeries(m_dummyData); // Add one series to enforce release in releaseProxies() - releaseProxies(); + releaseSeries(); releaseAxes(); m_dummyData->dataProxy()->resetArray(makeDummyData(), testLabels, @@ -1008,8 +1004,6 @@ void GraphModifier::primarySeriesTest() nextStep = 0; break; } - - } void GraphModifier::insertRemoveTestToggle() @@ -1019,11 +1013,11 @@ void GraphModifier::insertRemoveTestToggle() m_selectionTimer.stop(); m_graph->removeSeries(m_dummyData); m_graph->removeSeries(m_dummyData2); - releaseProxies(); + releaseSeries(); releaseAxes(); m_graph->setActiveInputHandler(m_defaultInputHandler); } else { - releaseProxies(); + releaseSeries(); releaseAxes(); m_graph->rowAxis()->setRange(0, 32); m_graph->columnAxis()->setRange(0, 10); @@ -1044,6 +1038,381 @@ void GraphModifier::toggleRotation() m_rotationTimer.start(20); } +void GraphModifier::useLogAxis() +{ + static int counter = -1; + static QLogValue3DAxisFormatter *logFormatter = 0; + static float minRange = 1.0f; + counter++; + + switch (counter) { + case 0: { + qDebug() << "Case" << counter << ": Default log axis"; + logFormatter = new QLogValue3DAxisFormatter; + m_graph->valueAxis()->setFormatter(logFormatter); + m_graph->valueAxis()->setRange(minRange, 1200.0f); + m_graph->valueAxis()->setLabelFormat(QStringLiteral("%.3f")); + break; + } + case 1: { + qDebug() << "Case" << counter << ": Hide max label"; + logFormatter->setShowEdgeLabels(false); + break; + } + case 2: { + qDebug() << "Case" << counter << ": Try to hide subgrid unsuccessfully"; + m_graph->valueAxis()->setSubSegmentCount(1); + break; + } + case 3: { + qDebug() << "Case" << counter << ": Hide subgrid property"; + logFormatter->setAutoSubGrid(false); + m_graph->valueAxis()->setSubSegmentCount(1); + break; + } + case 4: { + qDebug() << "Case" << counter << ": Different base: 2"; + logFormatter->setBase(2.0f); + logFormatter->setAutoSubGrid(true); + break; + } + case 5: { + qDebug() << "Case" << counter << ": Different base: 16"; + logFormatter->setBase(16.0f); + break; + } + case 6: { + qDebug() << "Case" << counter << ": Invalid bases"; + logFormatter->setBase(-1.0f); + logFormatter->setBase(1.0f); + break; + } + case 7: { + qDebug() << "Case" << counter << ": Zero base"; + logFormatter->setBase(0.0f); + break; + } + case 8: { + qDebug() << "Case" << counter << ": Explicit ranges and segments"; + int segmentCount = 6; + int base = 4; + m_graph->valueAxis()->setSegmentCount(segmentCount); + m_graph->valueAxis()->setSubSegmentCount(base - 1); + m_graph->valueAxis()->setRange(1.0f / float(base * base), qPow(base, segmentCount - 2)); + break; + } + case 9: { + qDebug() << "Case" << counter << ": Negative range"; + m_graph->valueAxis()->setRange(-20.0f, 50.0f); + break; + } + case 10: { + qDebug() << "Case" << counter << ": Non-integer base"; + logFormatter->setBase(3.3f); + logFormatter->setAutoSubGrid(true); + break; + } + default: + qDebug() << "Resetting logaxis test"; + minRange++; + counter = -1; + break; + } +} + +void GraphModifier::changeValueAxisFormat(const QString & text) +{ + m_graph->valueAxis()->setLabelFormat(text); +} + +void GraphModifier::changeLogBase(const QString &text) +{ + QLogValue3DAxisFormatter *formatter = + qobject_cast<QLogValue3DAxisFormatter *>(m_graph->valueAxis()->formatter()); + if (formatter) + formatter->setBase(qreal(text.toDouble())); +} + +void GraphModifier::addRemoveSeries() +{ + static int counter = 0; + + switch (counter) { + case 0: { + qDebug() << __FUNCTION__ << counter << "New series"; + m_extraSeries = new QBar3DSeries; + m_graph->addSeries(m_extraSeries); + QObject::connect(m_extraSeries, &QBar3DSeries::selectedBarChanged, this, + &GraphModifier::handleSelectionChange); + } + break; + case 1: { + qDebug() << __FUNCTION__ << counter << "Add data to series"; + QBarDataArray *array = new QBarDataArray; + array->reserve(5); + for (int i = 0; i < 5; i++) { + array->append(new QBarDataRow(10)); + for (int j = 0; j < 10; j++) + (*array->at(i))[j].setValue(i * j); + } + m_extraSeries->dataProxy()->resetArray(array); + } + break; + case 2: { + qDebug() << __FUNCTION__ << counter << "Hide series"; + m_extraSeries->setVisible(false); + } + break; + case 3: { + qDebug() << __FUNCTION__ << counter << "Modify data when hidden"; + QBarDataArray array; + array.reserve(5); + for (int i = 0; i < 5; i++) { + array.append(new QBarDataRow(10)); + for (int j = 0; j < 10; j++) + (*array.at(i))[j].setValue(2 * i * j); + } + m_extraSeries->dataProxy()->addRows(array); + } + break; + case 4: { + qDebug() << __FUNCTION__ << counter << "Show series again"; + m_extraSeries->setVisible(true); + } + break; + case 5: { + qDebug() << __FUNCTION__ << counter << "Remove series"; + m_graph->removeSeries(m_extraSeries); + delete m_extraSeries; + m_extraSeries = 0; + } + break; + default: + qDebug() << __FUNCTION__ << "Resetting test"; + counter = -1; + } + counter++; +} + +void GraphModifier::testItemAndRowChanges() +{ + static int counter = 0; + const int rowCount = 12; + const int colCount = 10; + const float flatValue = 10.0f; + static QBar3DSeries *series0 = 0; + static QBar3DSeries *series1 = 0; + static QBar3DSeries *series2 = 0; + QBarDataItem item25; + QBarDataItem item50; + QBarDataItem item75; + item25.setValue(25); + item50.setValue(50); + item75.setValue(75); + + switch (counter) { + case 0: { + qDebug() << __FUNCTION__ << counter << "Setup test"; + releaseSeries(); + releaseAxes(); + delete series0; + delete series1; + delete series2; + series0 = new QBar3DSeries; + series1 = new QBar3DSeries; + series2 = new QBar3DSeries; + populateFlatSeries(series0, rowCount, colCount, flatValue); + populateFlatSeries(series1, rowCount, colCount, flatValue); + populateFlatSeries(series2, rowCount, colCount, flatValue); + m_graph->rowAxis()->setRange(4.0f, 8.0f); + m_graph->columnAxis()->setRange(3.0f, 6.0f); + m_graph->valueAxis()->setRange(0.0f, 100.0f); + m_graph->addSeries(series0); + m_graph->addSeries(series1); + m_graph->addSeries(series2); + //counter = 11; // skip single item tests + } + break; + case 1: { + qDebug() << __FUNCTION__ << counter << "Change single item, unselected"; + series0->dataProxy()->setItem(4, 3, item50); + } + break; + case 2: { + qDebug() << __FUNCTION__ << counter << "Change single item, selected"; + series1->setSelectedBar(QPoint(4, 5)); + series1->dataProxy()->setItem(4, 5, item25); + } + break; + case 3: { + qDebug() << __FUNCTION__ << counter << "Change item outside visible area"; + series1->dataProxy()->setItem(0, 3, item25); + } + break; + case 4: { + qDebug() << __FUNCTION__ << counter << "Change single item from two series, unselected"; + series0->dataProxy()->setItem(5, 3, item25); + series1->dataProxy()->setItem(5, 3, item75); + } + break; + case 5: { + qDebug() << __FUNCTION__ << counter << "Change single item from two series, one selected"; + series0->dataProxy()->setItem(5, 4, item25); + series1->dataProxy()->setItem(4, 5, item75); + } + break; + case 6: { + qDebug() << __FUNCTION__ << counter << "Change single item from two series, one outside range"; + series0->dataProxy()->setItem(1, 2, item25); + series1->dataProxy()->setItem(6, 6, item75); + } + break; + case 7: { + qDebug() << __FUNCTION__ << counter << "Change single item from two series, both outside range"; + series0->dataProxy()->setItem(1, 2, item25); + series1->dataProxy()->setItem(8, 8, item75); + } + break; + case 8: { + qDebug() << __FUNCTION__ << counter << "Change item to same value"; + series1->dataProxy()->setItem(6, 6, item75); + } + break; + case 9: { + qDebug() << __FUNCTION__ << counter << "Change 3 items on each series"; + series0->dataProxy()->setItem(7, 3, item25); + series0->dataProxy()->setItem(7, 4, item50); + series0->dataProxy()->setItem(7, 5, item75); + series1->dataProxy()->setItem(6, 3, item25); + series1->dataProxy()->setItem(6, 4, item50); + series1->dataProxy()->setItem(6, 5, item75); + } + break; + case 10: { + qDebug() << __FUNCTION__ << counter << "Level the field single item at a time"; + QBarDataItem item; + item.setValue(15.0f); + for (int i = 0; i < rowCount; i++) { + for (int j = 0; j < colCount; j++) { + series0->dataProxy()->setItem(i, j, item); + series1->dataProxy()->setItem(i, j, item); + series2->dataProxy()->setItem(i, j, item); + } + } + } + break; + case 11: { + qDebug() << __FUNCTION__ << counter << "Change same items multiple times"; + series0->dataProxy()->setItem(7, 3, item25); + series1->dataProxy()->setItem(7, 3, item25); + series0->dataProxy()->setItem(7, 3, item50); + series1->dataProxy()->setItem(7, 3, item50); + series0->dataProxy()->setItem(7, 3, item75); + series1->dataProxy()->setItem(7, 3, item75); + } + break; + case 12: { + qDebug() << __FUNCTION__ << counter << "Change row"; + series0->dataProxy()->setRow(5, createFlatRow(colCount, 50.0f)); + } + break; + case 13: { + qDebug() << __FUNCTION__ << counter << "Change row with selected item"; + series1->setSelectedBar(QPoint(6, 6)); + series1->dataProxy()->setRow(6, createFlatRow(colCount, 40.0f)); + } + break; + case 14: { + qDebug() << __FUNCTION__ << counter << "Change hidden row"; + series1->dataProxy()->setRow(9, createFlatRow(colCount, 50.0f)); + } + break; + case 15: { + qDebug() << __FUNCTION__ << counter << "Change multiple rows singly"; + series0->dataProxy()->setRow(6, createFlatRow(colCount, 70.0f)); + series1->dataProxy()->setRow(6, createFlatRow(colCount, 80.0f)); + series2->dataProxy()->setRow(6, createFlatRow(colCount, 90.0f)); + } + break; + case 16: { + qDebug() << __FUNCTION__ << counter << "Change multiple rows many at a time"; + QBarDataArray newRows; + newRows.reserve(4); + newRows.append(createFlatRow(colCount, 26.0f)); + newRows.append(createFlatRow(colCount, 30.0f)); + newRows.append(createFlatRow(colCount, 34.0f)); + newRows.append(createFlatRow(colCount, 38.0f)); + series0->dataProxy()->setRows(2, newRows); + newRows[0] = createFlatRow(colCount, 26.0f); + newRows[1] = createFlatRow(colCount, 30.0f); + newRows[2] = createFlatRow(colCount, 34.0f); + newRows[3] = createFlatRow(colCount, 38.0f); + series1->dataProxy()->setRows(3, newRows); + newRows[0] = createFlatRow(colCount, 26.0f); + newRows[1] = createFlatRow(colCount, 30.0f); + newRows[2] = createFlatRow(colCount, 34.0f); + newRows[3] = createFlatRow(colCount, 38.0f); + series2->dataProxy()->setRows(4, newRows); + } + break; + case 17: { + qDebug() << __FUNCTION__ << counter << "Change same rows multiple times"; + QBarDataArray newRows; + newRows.reserve(4); + newRows.append(createFlatRow(colCount, 65.0f)); + newRows.append(createFlatRow(colCount, 65.0f)); + newRows.append(createFlatRow(colCount, 65.0f)); + newRows.append(createFlatRow(colCount, 65.0f)); + series0->dataProxy()->setRows(4, newRows); + newRows[0] = createFlatRow(colCount, 65.0f); + newRows[1] = createFlatRow(colCount, 65.0f); + newRows[2] = createFlatRow(colCount, 65.0f); + newRows[3] = createFlatRow(colCount, 65.0f); + series1->dataProxy()->setRows(4, newRows); + newRows[0] = createFlatRow(colCount, 65.0f); + newRows[1] = createFlatRow(colCount, 65.0f); + newRows[2] = createFlatRow(colCount, 65.0f); + newRows[3] = createFlatRow(colCount, 65.0f); + series2->dataProxy()->setRows(4, newRows); + series0->dataProxy()->setRow(6, createFlatRow(colCount, 20.0f)); + series1->dataProxy()->setRow(6, createFlatRow(colCount, 20.0f)); + series2->dataProxy()->setRow(6, createFlatRow(colCount, 20.0f)); + series0->dataProxy()->setRow(6, createFlatRow(colCount, 90.0f)); + series1->dataProxy()->setRow(6, createFlatRow(colCount, 90.0f)); + series2->dataProxy()->setRow(6, createFlatRow(colCount, 90.0f)); + } + break; + case 18: { + qDebug() << __FUNCTION__ << counter << "Change row to different length"; + series0->dataProxy()->setRow(4, createFlatRow(5, 20.0f)); + series1->dataProxy()->setRow(4, createFlatRow(0, 20.0f)); + series2->dataProxy()->setRow(4, 0); + } + break; + case 19: { + qDebug() << __FUNCTION__ << counter << "Change selected row shorter so that selected item is no longer valid"; + series1->dataProxy()->setRow(6, createFlatRow(6, 20.0f)); + } + break; + default: + qDebug() << __FUNCTION__ << "Resetting test"; + counter = -1; + } + counter++; +} + +void GraphModifier::reverseValueAxis(int enabled) +{ + m_graph->valueAxis()->setReversed(enabled); +} + +void GraphModifier::changeValueAxisSegments(int value) +{ + qDebug() << __FUNCTION__ << value; + m_segments = value; + m_graph->valueAxis()->setSegmentCount(m_segments); +} + void GraphModifier::insertRemoveTimerTimeout() { if (m_insertRemoveStep < 32) { @@ -1100,6 +1469,43 @@ void GraphModifier::triggerRotation() } } +void GraphModifier::handleValueAxisLabelsChanged() +{ + qDebug() << __FUNCTION__; +} + +void GraphModifier::handleFpsChange(qreal fps) +{ + static const QString fpsPrefix(QStringLiteral("FPS: ")); + m_fpsLabel->setText(fpsPrefix + QString::number(qRound(fps))); +} + +void GraphModifier::populateFlatSeries(QBar3DSeries *series, int rows, int columns, float value) +{ + QBarDataArray *dataArray = new QBarDataArray; + dataArray->reserve(rows); + for (int i = 0; i < rows; i++) { + QBarDataRow *dataRow = new QBarDataRow(columns); + for (int j = 0; j < columns; j++) + (*dataRow)[j].setValue(value); + dataArray->append(dataRow); + } + QStringList axisLabels; + int count = qMax(rows, columns); + for (int i = 0; i < count; i++) + axisLabels << QString::number(i); + + series->dataProxy()->resetArray(dataArray, axisLabels, axisLabels); +} + +QBarDataRow *GraphModifier::createFlatRow(int columns, float value) +{ + QBarDataRow *dataRow = new QBarDataRow(columns); + for (int j = 0; j < columns; j++) + (*dataRow)[j].setValue(value); + return dataRow; +} + void GraphModifier::setBackgroundEnabled(int enabled) { m_graph->activeTheme()->setBackgroundEnabled(bool(enabled)); @@ -1122,6 +1528,11 @@ void GraphModifier::rotateY(int rotation) m_graph->scene()->activeCamera()->setCameraPosition(m_xRotation, m_yRotation); } +void GraphModifier::setFpsMeasurement(bool enable) +{ + m_graph->setMeasureFps(enable); +} + void GraphModifier::setSpecsRatio(int barwidth) { m_graph->setBarThickness((float)barwidth / 30.0f); diff --git a/tests/barstest/chart.h b/tests/barstest/chart.h index 5758262c..47d29c25 100644 --- a/tests/barstest/chart.h +++ b/tests/barstest/chart.h @@ -29,6 +29,7 @@ #include <QPointer> #include <QColorDialog> #include <QTimer> +#include <QLabel> using namespace QtDataVisualization; @@ -58,6 +59,7 @@ public: void changeFontSize(int fontsize); void rotateX(int rotation); void rotateY(int rotation); + void setFpsMeasurement(bool enable); void setBackgroundEnabled(int enabled); void setGridEnabled(int enabled); void setSpecsRatio(int barwidth); @@ -75,7 +77,7 @@ public: void selectBar(); void swapAxis(); void releaseAxes(); - void releaseProxies(); + void releaseSeries(); void createMassiveArray(); void useOwnTheme(); void changeBaseColor(const QColor &color); @@ -85,6 +87,13 @@ public: void primarySeriesTest(); void insertRemoveTestToggle(); void toggleRotation(); + void useLogAxis(); + void changeValueAxisFormat(const QString & text); + void changeLogBase(const QString & text); + void setFpsLabel(QLabel *fpsLabel) { m_fpsLabel = fpsLabel; } + void addRemoveSeries(); + void testItemAndRowChanges(); + void reverseValueAxis(int enabled); public slots: void flipViews(); @@ -94,6 +103,7 @@ public slots: void shadowQualityUpdatedByVisual(QAbstract3DGraph::ShadowQuality shadowQuality); void handleSelectionChange(const QPoint &position); void setUseNullInputHandler(bool useNull); + void changeValueAxisSegments(int value); void handleRowAxisChanged(QCategory3DAxis *axis); void handleColumnAxisChanged(QCategory3DAxis *axis); @@ -103,11 +113,16 @@ public slots: void insertRemoveTimerTimeout(); void triggerSelection(); void triggerRotation(); + void handleValueAxisLabelsChanged(); + void handleFpsChange(qreal fps); signals: void shadowQualityChanged(int quality); private: + void populateFlatSeries(QBar3DSeries *series, int rows, int columns, float value); + QBarDataRow *createFlatRow(int columns, float value); + Q3DBars *m_graph; QColorDialog *m_colorDialog; int m_columnCount; @@ -152,6 +167,8 @@ private: QAbstract3DInputHandler *m_customInputHandler; QTimer m_selectionTimer; QTimer m_rotationTimer; + QLabel *m_fpsLabel; + QBar3DSeries *m_extraSeries; }; #endif diff --git a/tests/barstest/main.cpp b/tests/barstest/main.cpp index 8189f917..5ecf63a4 100644 --- a/tests/barstest/main.cpp +++ b/tests/barstest/main.cpp @@ -32,6 +32,8 @@ #include <QLinearGradient> #include <QPainter> #include <QColorDialog> +#include <QLineEdit> +#include <QSpinBox> int main(int argc, char **argv) { @@ -53,7 +55,7 @@ int main(int argc, char **argv) QSize screenSize = widgetchart->screen()->size(); QWidget *container = QWidget::createWindowContainer(widgetchart); - container->setMinimumSize(QSize(screenSize.width() / 2, screenSize.height() / 2)); + container->setMinimumSize(QSize(screenSize.width() / 3, screenSize.height() / 3)); container->setMaximumSize(screenSize); container->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); container->setFocusPolicy(Qt::StrongFocus); @@ -64,6 +66,10 @@ int main(int argc, char **argv) hLayout->addLayout(vLayout); hLayout->addLayout(vLayout2); + QPushButton *addSeriesButton = new QPushButton(widget); + addSeriesButton->setText(QStringLiteral("Add / Remove a series")); + addSeriesButton->setEnabled(true); + QPushButton *addDataButton = new QPushButton(widget); addDataButton->setText(QStringLiteral("Add a row of data")); addDataButton->setEnabled(false); @@ -165,6 +171,14 @@ int main(int argc, char **argv) toggleRotationButton->setText(QStringLiteral("Toggle rotation")); toggleRotationButton->setEnabled(true); + QPushButton *logAxisButton = new QPushButton(widget); + logAxisButton->setText(QStringLiteral("Use Log Axis")); + logAxisButton->setEnabled(true); + + QPushButton *testItemAndRowChangesButton = new QPushButton(widget); + testItemAndRowChangesButton->setText(QStringLiteral("Test Item/Row changing")); + testItemAndRowChangesButton->setEnabled(true); + QColorDialog *colorDialog = new QColorDialog(widget); QLinearGradient grBtoY(0, 0, 100, 0); @@ -181,6 +195,16 @@ int main(int argc, char **argv) gradientBtoYPB->setIcon(QIcon(pm)); gradientBtoYPB->setIconSize(QSize(100, 24)); + QLabel *fpsLabel = new QLabel(QStringLiteral("")); + + QCheckBox *fpsCheckBox = new QCheckBox(widget); + fpsCheckBox->setText(QStringLiteral("Measure Fps")); + fpsCheckBox->setChecked(false); + + QCheckBox *reverseValueAxisCheckBox = new QCheckBox(widget); + reverseValueAxisCheckBox->setText(QStringLiteral("Reverse value axis")); + reverseValueAxisCheckBox->setChecked(false); + QCheckBox *backgroundCheckBox = new QCheckBox(widget); backgroundCheckBox->setText(QStringLiteral("Show background")); backgroundCheckBox->setChecked(true); @@ -286,6 +310,14 @@ int main(int argc, char **argv) shadowQuality->addItem(QStringLiteral("High Soft")); shadowQuality->setCurrentIndex(5); + QLineEdit *valueAxisFormatEdit = new QLineEdit(widget); + QLineEdit *logBaseEdit = new QLineEdit(widget); + QSpinBox *valueAxisSegmentsSpin = new QSpinBox(widget); + valueAxisSegmentsSpin->setMinimum(1); + valueAxisSegmentsSpin->setMaximum(100); + valueAxisSegmentsSpin->setValue(10); + + vLayout->addWidget(addSeriesButton, 0, Qt::AlignTop); vLayout->addWidget(addDataButton, 0, Qt::AlignTop); vLayout->addWidget(addMultiDataButton, 0, Qt::AlignTop); vLayout->addWidget(insertDataButton, 0, Qt::AlignTop); @@ -313,7 +345,9 @@ int main(int argc, char **argv) vLayout->addWidget(ownThemeButton, 0, Qt::AlignTop); vLayout->addWidget(primarySeriesTestsButton, 0, Qt::AlignTop); vLayout->addWidget(toggleRotationButton, 0, Qt::AlignTop); - vLayout->addWidget(gradientBtoYPB, 1, Qt::AlignTop); + vLayout->addWidget(gradientBtoYPB, 0, Qt::AlignTop); + vLayout->addWidget(logAxisButton, 0, Qt::AlignTop); + vLayout->addWidget(testItemAndRowChangesButton, 1, Qt::AlignTop); vLayout2->addWidget(staticCheckBox, 0, Qt::AlignTop); vLayout2->addWidget(rotationCheckBox, 0, Qt::AlignTop); @@ -332,6 +366,9 @@ int main(int argc, char **argv) vLayout2->addWidget(minSliderZ, 0, Qt::AlignTop); vLayout2->addWidget(minSliderY, 0, Qt::AlignTop); vLayout2->addWidget(maxSliderY, 0, Qt::AlignTop); + vLayout2->addWidget(fpsLabel, 0, Qt::AlignTop); + vLayout2->addWidget(fpsCheckBox, 0, Qt::AlignTop); + vLayout2->addWidget(reverseValueAxisCheckBox, 0, Qt::AlignTop); vLayout2->addWidget(backgroundCheckBox, 0, Qt::AlignTop); vLayout2->addWidget(gridCheckBox, 0, Qt::AlignTop); vLayout2->addWidget(new QLabel(QStringLiteral("Adjust shadow quality")), 0, Qt::AlignTop); @@ -339,7 +376,13 @@ int main(int argc, char **argv) vLayout2->addWidget(new QLabel(QStringLiteral("Change font")), 0, Qt::AlignTop); vLayout2->addWidget(fontList, 0, Qt::AlignTop); vLayout2->addWidget(new QLabel(QStringLiteral("Adjust font size")), 0, Qt::AlignTop); - vLayout2->addWidget(fontSizeSlider, 1, Qt::AlignTop); + vLayout2->addWidget(fontSizeSlider, 0, Qt::AlignTop); + vLayout2->addWidget(new QLabel(QStringLiteral("Value axis format")), 0, Qt::AlignTop); + vLayout2->addWidget(valueAxisFormatEdit, 0, Qt::AlignTop); + vLayout2->addWidget(new QLabel(QStringLiteral("Log axis base")), 0, Qt::AlignTop); + vLayout2->addWidget(logBaseEdit, 0, Qt::AlignTop); + vLayout2->addWidget(new QLabel(QStringLiteral("Value axis segments")), 0, Qt::AlignTop); + vLayout2->addWidget(valueAxisSegmentsSpin, 0, Qt::AlignTop); // TODO: Add example for setMeshFileName widget->show(); @@ -375,6 +418,12 @@ int main(int argc, char **argv) &QComboBox::setCurrentIndex); QObject::connect(fontSizeSlider, &QSlider::valueChanged, modifier, &GraphModifier::changeFontSize); + QObject::connect(valueAxisFormatEdit, &QLineEdit::textEdited, modifier, + &GraphModifier::changeValueAxisFormat); + QObject::connect(logBaseEdit, &QLineEdit::textEdited, modifier, + &GraphModifier::changeLogBase); + QObject::connect(valueAxisSegmentsSpin, SIGNAL(valueChanged(int)), modifier, + SLOT(changeValueAxisSegments(int))); QObject::connect(multiScaleButton, &QPushButton::clicked, modifier, &GraphModifier::toggleMultiseriesScaling); @@ -385,6 +434,7 @@ int main(int argc, char **argv) QObject::connect(labelButton, &QPushButton::clicked, modifier, &GraphModifier::changeLabelStyle); QObject::connect(addDataButton, &QPushButton::clicked, modifier, &GraphModifier::addRow); + QObject::connect(addSeriesButton, &QPushButton::clicked, modifier, &GraphModifier::addRemoveSeries); QObject::connect(addMultiDataButton, &QPushButton::clicked, modifier, &GraphModifier::addRows); QObject::connect(insertDataButton, &QPushButton::clicked, modifier, &GraphModifier::insertRow); QObject::connect(insertMultiDataButton, &QPushButton::clicked, modifier, &GraphModifier::insertRows); @@ -406,7 +456,7 @@ int main(int argc, char **argv) QObject::connect(releaseAxesButton, &QPushButton::clicked, modifier, &GraphModifier::releaseAxes); QObject::connect(releaseProxiesButton, &QPushButton::clicked, modifier, - &GraphModifier::releaseProxies); + &GraphModifier::releaseSeries); QObject::connect(flipViewsButton, &QPushButton::clicked, modifier, &GraphModifier::flipViews); @@ -418,6 +468,10 @@ int main(int argc, char **argv) &GraphModifier::primarySeriesTest); QObject::connect(toggleRotationButton, &QPushButton::clicked, modifier, &GraphModifier::toggleRotation); + QObject::connect(logAxisButton, &QPushButton::clicked, modifier, + &GraphModifier::useLogAxis); + QObject::connect(testItemAndRowChangesButton, &QPushButton::clicked, modifier, + &GraphModifier::testItemAndRowChanges); QObject::connect(colorDialog, &QColorDialog::currentColorChanged, modifier, &GraphModifier::changeBaseColor); QObject::connect(gradientBtoYPB, &QPushButton::clicked, modifier, @@ -426,6 +480,10 @@ int main(int argc, char **argv) QObject::connect(fontList, &QFontComboBox::currentFontChanged, modifier, &GraphModifier::changeFont); + QObject::connect(fpsCheckBox, &QCheckBox::stateChanged, modifier, + &GraphModifier::setFpsMeasurement); + QObject::connect(reverseValueAxisCheckBox, &QCheckBox::stateChanged, modifier, + &GraphModifier::reverseValueAxis); QObject::connect(backgroundCheckBox, &QCheckBox::stateChanged, modifier, &GraphModifier::setBackgroundEnabled); QObject::connect(gridCheckBox, &QCheckBox::stateChanged, modifier, @@ -479,6 +537,8 @@ int main(int argc, char **argv) &QSlider::setEnabled); QObject::connect(staticCheckBox, &QCheckBox::stateChanged, modifier, &GraphModifier::restart); + modifier->setFpsLabel(fpsLabel); + modifier->start(); return app.exec(); |