diff options
Diffstat (limited to 'examples/charts/qmlf1legends/qml/qmlf1legends/main.qml')
-rw-r--r-- | examples/charts/qmlf1legends/qml/qmlf1legends/main.qml | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/examples/charts/qmlf1legends/qml/qmlf1legends/main.qml b/examples/charts/qmlf1legends/qml/qmlf1legends/main.qml new file mode 100644 index 00000000..9aaec276 --- /dev/null +++ b/examples/charts/qmlf1legends/qml/qmlf1legends/main.qml @@ -0,0 +1,95 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.digia.com +** +** This file is part of the Qt Enterprise Charts Add-on. +** +** $QT_BEGIN_LICENSE$ +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.digia.com +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtCharts 2.0 +import QtQuick.XmlListModel 2.0 + +Rectangle { + width: 400 + height: 300 + property int currentIndex: -1 + + //![1] + ChartView { + id: chartView + title: "Driver Speeds, lap 1" + anchors.fill: parent + legend.alignment: Qt.AlignTop + animationOptions: ChartView.SeriesAnimations + antialiasing: true + } + //![1] + + //![2] + // An example XmlListModel containing F1 legend drivers' speeds at speed traps + SpeedsXml { + id: speedsXml + onStatusChanged: { + if (status == XmlListModel.Ready) { + timer.start(); + } + } + } + //![2] + + //![3] + // A timer to mimic refreshing the data dynamically + Timer { + id: timer + interval: 700 + repeat: true + triggeredOnStart: true + running: false + onTriggered: { + currentIndex++; + if (currentIndex < speedsXml.count) { + // Check if there is a series for the data already (we are using driver name to identify series) + var lineSeries = chartView.series(speedsXml.get(currentIndex).driver); + if (!lineSeries) { + lineSeries = chartView.createSeries(ChartView.SeriesTypeLine, speedsXml.get(currentIndex).driver); + chartView.axisY().min = 0; + chartView.axisY().max = 250; + chartView.axisY().tickCount = 6; + chartView.axisY().titleText = "speed (kph)"; + chartView.axisX().titleText = "speed trap"; + chartView.axisX().labelFormat = "%.0f"; + } + lineSeries.append(speedsXml.get(currentIndex).speedTrap, speedsXml.get(currentIndex).speed); + + if (speedsXml.get(currentIndex).speedTrap > 3) { + chartView.axisX().max = Number(speedsXml.get(currentIndex).speedTrap) + 1; + chartView.axisX().min = chartView.axisX().max - 5; + } else { + chartView.axisX().max = 5; + chartView.axisX().min = 0; + } + chartView.axisX().tickCount = chartView.axisX().max - chartView.axisX().min + 1; + } else { + // No more data, change x-axis range to show all the data + timer.stop(); + chartView.animationOptions = ChartView.AllAnimations; + chartView.axisX().min = 0; + chartView.axisX().max = speedsXml.get(currentIndex - 1).speedTrap; + } + } + } + //![3] +} |