summaryrefslogtreecommitdiffstats
path: root/examples/datavisualization/qmlaxisformatter/customformatter.cpp
diff options
context:
space:
mode:
authorTomi Korpipaa <tomi.korpipaa@qt.io>2023-01-30 13:10:05 +0200
committerTomi Korpipaa <tomi.korpipaa@qt.io>2023-02-02 12:05:14 +0200
commit6ae51a12ccd15575197e5aeff4de3273a615c1a9 (patch)
treeed52a789b499c02d36d861eb87cc694fd805f23f /examples/datavisualization/qmlaxisformatter/customformatter.cpp
parentb20a41dfb410ef0e99d73bc35dfffade48cf55cb (diff)
Combine 2 examples into one
Combine qmlaxisdrag and qmlaxisformatter examples into one Pick-to: 6.5 Fixes: QTBUG-110699 Change-Id: I5043089ad47370165543b7c09409ba08d5f4690d Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
Diffstat (limited to 'examples/datavisualization/qmlaxisformatter/customformatter.cpp')
-rw-r--r--examples/datavisualization/qmlaxisformatter/customformatter.cpp141
1 files changed, 0 insertions, 141 deletions
diff --git a/examples/datavisualization/qmlaxisformatter/customformatter.cpp b/examples/datavisualization/qmlaxisformatter/customformatter.cpp
deleted file mode 100644
index d628c160..00000000
--- a/examples/datavisualization/qmlaxisformatter/customformatter.cpp
+++ /dev/null
@@ -1,141 +0,0 @@
-// Copyright (C) 2016 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
-
-#include "customformatter.h"
-#include <QtDataVisualization/QValue3DAxis>
-#include <QtQml/QQmlExtensionPlugin>
-#include <QtCore/QDebug>
-
-Q_DECLARE_METATYPE(QValue3DAxisFormatter *)
-
-static const qreal oneDayMs = 60.0 * 60.0 * 24.0 * 1000.0;
-
-CustomFormatter::CustomFormatter(QObject *parent) :
- QValue3DAxisFormatter(parent)
-{
- qRegisterMetaType<QValue3DAxisFormatter *>();
-}
-
-CustomFormatter::~CustomFormatter()
-{
-}
-
-//! [1]
-QValue3DAxisFormatter *CustomFormatter::createNewInstance() const
-{
- return new CustomFormatter();
-}
-
-void CustomFormatter::populateCopy(QValue3DAxisFormatter &copy) const
-{
- QValue3DAxisFormatter::populateCopy(copy);
-
- CustomFormatter *customFormatter = static_cast<CustomFormatter *>(&copy);
- customFormatter->m_originDate = m_originDate;
- customFormatter->m_selectionFormat = m_selectionFormat;
-}
-//! [1]
-
-//! [2]
-void CustomFormatter::recalculate()
-{
- // We want our axis to always have gridlines at date breaks
-
- // Convert range into QDateTimes
- QDateTime minTime = valueToDateTime(qreal(axis()->min()));
- QDateTime maxTime = valueToDateTime(qreal(axis()->max()));
-
- // Find out the grid counts
- QTime midnight(0, 0);
- QDateTime minFullDate(minTime.date(), midnight);
- int gridCount = 0;
- if (minFullDate != minTime)
- minFullDate = minFullDate.addDays(1);
- QDateTime maxFullDate(maxTime.date(), midnight);
-
- gridCount += minFullDate.daysTo(maxFullDate) + 1;
- int subGridCount = axis()->subSegmentCount() - 1;
-
- // Reserve space for position arrays and label strings
- gridPositions().resize(gridCount);
- subGridPositions().resize((gridCount + 1) * subGridCount);
- labelPositions().resize(gridCount);
- labelStrings().reserve(gridCount);
-
- // Calculate positions and format labels
- qint64 startMs = minTime.toMSecsSinceEpoch();
- qint64 endMs = maxTime.toMSecsSinceEpoch();
- qreal dateNormalizer = endMs - startMs;
- qreal firstLineOffset = (minFullDate.toMSecsSinceEpoch() - startMs) / dateNormalizer;
- qreal segmentStep = oneDayMs / dateNormalizer;
- qreal subSegmentStep = 0;
- if (subGridCount > 0)
- subSegmentStep = segmentStep / qreal(subGridCount + 1);
-
- for (int i = 0; i < gridCount; i++) {
- qreal gridValue = firstLineOffset + (segmentStep * qreal(i));
- gridPositions()[i] = float(gridValue);
- labelPositions()[i] = float(gridValue);
- labelStrings() << minFullDate.addDays(i).toString(axis()->labelFormat());
- }
-
- for (int i = 0; i <= gridCount; i++) {
- if (subGridPositions().size()) {
- for (int j = 0; j < subGridCount; j++) {
- float position;
- if (i)
- position = gridPositions().at(i - 1) + subSegmentStep * (j + 1);
- else
- position = gridPositions().at(0) - segmentStep + subSegmentStep * (j + 1);
- if (position > 1.0f || position < 0.0f)
- position = gridPositions().at(0);
- subGridPositions()[i * subGridCount + j] = position;
- }
- }
- }
-}
-//! [2]
-
-//! [3]
-QString CustomFormatter::stringForValue(qreal value, const QString &format) const
-{
- Q_UNUSED(format);
-
- return valueToDateTime(value).toString(m_selectionFormat);
-}
-//! [3]
-
-QDate CustomFormatter::originDate() const
-{
- return m_originDate;
-}
-
-QString CustomFormatter::selectionFormat() const
-{
- return m_selectionFormat;
-}
-
-void CustomFormatter::setOriginDate(const QDate &date)
-{
- if (m_originDate != date) {
- m_originDate = date;
- markDirty(true);
- emit originDateChanged(date);
- }
-}
-
-void CustomFormatter::setSelectionFormat(const QString &format)
-{
- if (m_selectionFormat != format) {
- m_selectionFormat = format;
- markDirty(true); // Necessary to regenerate already visible selection label
- emit selectionFormatChanged(format);
- }
-}
-
-//! [0]
-QDateTime CustomFormatter::valueToDateTime(qreal value) const
-{
- return m_originDate.startOfDay().addMSecs(qint64(oneDayMs * value));
-}
-//! [0]