diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2014-03-25 15:07:06 +0200 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2014-03-26 12:25:18 +0200 |
commit | b36b9eb7c65e3a4f6972d2f2145722470d1ad29b (patch) | |
tree | 1d2225a3a107d0a786482c57dab8c50177a16149 /tests | |
parent | b16a964d0ed24b720e4e71da03cea87e35db7806 (diff) |
Implement QLogValue3DAxisFormatter
Task-number: QTRD-2787
Change-Id: I6ecff5c3d2047a2c566051951bf237bf3e68ffab
Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Reviewed-by: Mika Salmela <mika.salmela@digia.com>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/barstest/chart.cpp | 113 | ||||
-rw-r--r-- | tests/barstest/chart.h | 3 | ||||
-rw-r--r-- | tests/barstest/main.cpp | 18 |
3 files changed, 122 insertions, 12 deletions
diff --git a/tests/barstest/chart.cpp b/tests/barstest/chart.cpp index cf044a45..c6c7678d 100644 --- a/tests/barstest/chart.cpp +++ b/tests/barstest/chart.cpp @@ -20,13 +20,14 @@ #include "custominputhandler.h" #include <QtDataVisualization/qcategory3daxis.h> #include <QtDataVisualization/qvalue3daxis.h> -#include <QtDataVisualization/qvalue3daxisformatter.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; @@ -43,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), @@ -222,6 +223,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); @@ -1047,15 +1050,85 @@ void GraphModifier::toggleRotation() void GraphModifier::useLogAxis() { - // TODO proper log axis test + static int counter = -1; + static QLogValue3DAxisFormatter *logFormatter = new QLogValue3DAxisFormatter; + + counter++; + + switch (counter) { + case 0: { + qDebug() << "Case" << counter << ": Default log axis"; + logFormatter = new QLogValue3DAxisFormatter; + m_graph->valueAxis()->setFormatter(logFormatter); + m_graph->valueAxis()->setRange(1.0f, 1200.0f); + m_graph->valueAxis()->setLabelFormat(QStringLiteral("%.3f")); + break; + } + case 1: { + qDebug() << "Case" << counter << ": Hide max label"; + logFormatter->setShowMaxLabel(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"; + counter = -1; + break; + } -// // Change y-axis to log axis -// QValue3DAxis *logAxis = new QValue3DAxis; -// logAxis->formatter()->setBase(10); -// logAxis->setSegmentCount(5); -// logAxis->setRange(1, 100000); - // m_graph->setValueAxis(logAxis); } void GraphModifier::changeValueAxisFormat(const QString & text) @@ -1063,6 +1136,21 @@ 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::changeValueAxisSegments(int value) +{ + qDebug() << __FUNCTION__ << value; + m_segments = value; + m_graph->valueAxis()->setSegmentCount(m_segments); +} + void GraphModifier::insertRemoveTimerTimeout() { if (m_insertRemoveStep < 32) { @@ -1119,6 +1207,11 @@ void GraphModifier::triggerRotation() } } +void GraphModifier::handleValueAxisLabelsChanged() +{ + qDebug() << __FUNCTION__; +} + void GraphModifier::setBackgroundEnabled(int enabled) { m_graph->activeTheme()->setBackgroundEnabled(bool(enabled)); diff --git a/tests/barstest/chart.h b/tests/barstest/chart.h index 304103cd..52c46a8c 100644 --- a/tests/barstest/chart.h +++ b/tests/barstest/chart.h @@ -87,6 +87,7 @@ public: void toggleRotation(); void useLogAxis(); void changeValueAxisFormat(const QString & text); + void changeLogBase(const QString & text); public slots: void flipViews(); @@ -96,6 +97,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); @@ -105,6 +107,7 @@ public slots: void insertRemoveTimerTimeout(); void triggerSelection(); void triggerRotation(); + void handleValueAxisLabelsChanged(); signals: void shadowQualityChanged(int quality); diff --git a/tests/barstest/main.cpp b/tests/barstest/main.cpp index edf61e2e..f4cd02f7 100644 --- a/tests/barstest/main.cpp +++ b/tests/barstest/main.cpp @@ -33,6 +33,7 @@ #include <QPainter> #include <QColorDialog> #include <QLineEdit> +#include <QSpinBox> int main(int argc, char **argv) { @@ -292,6 +293,11 @@ int main(int argc, char **argv) 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(addDataButton, 0, Qt::AlignTop); vLayout->addWidget(addMultiDataButton, 0, Qt::AlignTop); @@ -320,7 +326,6 @@ 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(logAxisButton, 0, Qt::AlignTop); vLayout->addWidget(gradientBtoYPB, 1, Qt::AlignTop); vLayout2->addWidget(staticCheckBox, 0, Qt::AlignTop); @@ -349,7 +354,12 @@ int main(int argc, char **argv) vLayout2->addWidget(new QLabel(QStringLiteral("Adjust font size")), 0, Qt::AlignTop); vLayout2->addWidget(fontSizeSlider, 0, Qt::AlignTop); vLayout2->addWidget(new QLabel(QStringLiteral("Value axis format")), 0, Qt::AlignTop); - vLayout2->addWidget(valueAxisFormatEdit, 1, 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); + vLayout->addWidget(logAxisButton, 1, Qt::AlignTop); // TODO: Add example for setMeshFileName widget->show(); @@ -387,6 +397,10 @@ int main(int argc, char **argv) &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); |