summaryrefslogtreecommitdiff
path: root/doc/src/snippets/qtcluster/qml
diff options
context:
space:
mode:
Diffstat (limited to 'doc/src/snippets/qtcluster/qml')
-rw-r--r--doc/src/snippets/qtcluster/qml/CarModelMain.qml186
-rw-r--r--doc/src/snippets/qtcluster/qml/CarModelSports.qml569
-rw-r--r--doc/src/snippets/qtcluster/qml/CarParking.qml71
-rw-r--r--doc/src/snippets/qtcluster/qml/CarParkingSports.qml79
-rw-r--r--doc/src/snippets/qtcluster/qml/CarViewElectric.qml108
-rw-r--r--doc/src/snippets/qtcluster/qml/CarViewSports.qml108
-rw-r--r--doc/src/snippets/qtcluster/qml/Circular_route.txt595
-rw-r--r--doc/src/snippets/qtcluster/qml/ConsumptionView.qml176
-rw-r--r--doc/src/snippets/qtcluster/qml/FpsCounter.qml99
-rw-r--r--doc/src/snippets/qtcluster/qml/MapView.qml136
-rw-r--r--doc/src/snippets/qtcluster/qml/MediaPlayerView.qml116
-rw-r--r--doc/src/snippets/qtcluster/qml/TurnIndicator.qml64
-rw-r--r--doc/src/snippets/qtcluster/qml/ValueSource.qml436
-rw-r--r--doc/src/snippets/qtcluster/qml/VehicleInfoNote.qml163
-rw-r--r--doc/src/snippets/qtcluster/qml/VideoView.qml102
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_hybrid/BottomPanel.ui.qml190
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_hybrid/CarInfoField.qml81
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_hybrid/CenterView.qml151
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_hybrid/CenterViewCalendar.qml109
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_hybrid/CenterViewCarInfo.qml97
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_hybrid/CenterViewContacts.qml119
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_hybrid/CenterViewMusic.qml108
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_hybrid/Dashboard.qml117
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_hybrid/DashboardBackground.qml151
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_hybrid/DashboardBackgroundForm.ui.qml205
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_hybrid/DashboardForm.ui.qml100
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_hybrid/DashboardFrame.qml88
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_hybrid/DashboardView.qml57
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_hybrid/Gadget.qml117
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_hybrid/SafeRendererPicture.qml56
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/BatteryMeter.qml72
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/ConsumptionMeter.qml92
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/FpsMeter.qml83
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/FuelMeter.qml73
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/SpeedoMeter.qml157
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/TachoMeter.qml113
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/TemperatureMeter.qml90
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/TurboMeter.qml72
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/designer/BatteryMeterSpecifics.qml176
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/designer/ConsumptionMeterSpecifics.qml210
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/designer/FuelMeterSpecifics.qml176
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/designer/SpeedoMeterSpecifics.qml209
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/designer/TachoMeterSpecifics.qml210
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/designer/TemperatureMeterSpecifics.qml210
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/designer/TurboMeterSpecifics.qml176
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_sports/CameraLoader.qml53
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_sports/CarLoader.qml55
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_sports/CenterStack.qml124
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_sports/Dashboard.qml52
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_sports/DashboardForm.ui.qml250
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_sports/DashboardFrame.qml61
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_sports/DashboardView.qml320
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_sports/Gauge.qml109
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_sports/RPMFlipable.qml130
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_sports/RPMGauge.qml240
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_sports/RPMGauge_painter.qml169
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_sports/RPMGauge_vertex.qml170
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_sports/SpeedoMeter.qml224
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_sports/SpeedoMeterLoader.qml63
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_sports/SpeedoMeter_painter.qml181
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_sports/SpeedoMeter_vertex.qml159
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_sports/designer/RPMFlipableSpecifics.qml77
-rw-r--r--doc/src/snippets/qtcluster/qml/dash_sports/designer/SpeedoMeterLoaderSpecifics.qml77
-rw-r--r--doc/src/snippets/qtcluster/qml/functions.js40
-rw-r--r--doc/src/snippets/qtcluster/qml/models/Map11.jpgbin0 -> 70588 bytes
-rw-r--r--doc/src/snippets/qtcluster/qml/models/Map3.jpgbin0 -> 54918 bytes
-rw-r--r--doc/src/snippets/qtcluster/qml/models/sportscar_15k.qgltfbin0 -> 56100 bytes
-rw-r--r--doc/src/snippets/qtcluster/qml/models/sportscar_15k_1.binbin0 -> 949422 bytes
-rw-r--r--doc/src/snippets/qtcluster/qml/route.txt1188
69 files changed, 10615 insertions, 0 deletions
diff --git a/doc/src/snippets/qtcluster/qml/CarModelMain.qml b/doc/src/snippets/qtcluster/qml/CarModelMain.qml
new file mode 100644
index 00000000..bcccab54
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/CarModelMain.qml
@@ -0,0 +1,186 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL3$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later as published by the Free
+** Software Foundation and appearing in the file LICENSE.GPL included in
+** the packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.2
+import QtQuick.Scene3D 2.0
+import QtQuick.Window 2.1
+
+Window {
+ id: root
+ property bool leftView: true
+ visible: true
+ width: 1280
+ height: 480
+ color: "Black"
+ title: "iCluster"
+ property bool toggleCarView: false
+ property bool carVisible: true
+ property int carModelHighlightType
+ property bool actionInProgress
+ property bool rightStack
+
+ Timer {
+ // Dummy timer, does nothing
+ id: returnView
+ interval: 1.0
+ }
+
+ CarViewSports {
+ id: carView
+ width: root.width
+ height: root.height
+ visible: true
+ hidden: false
+ }
+
+// CarViewElectric {
+// id: carView
+// width: root.width
+// height: root.height
+// visible: true
+// hidden: false
+// }
+
+ Rectangle {
+ id: buttonToggleVisible
+ width: 100
+ height: 50
+ radius: 5
+ border.color: "green"
+ border.width: 2
+ anchors.right: parent.right
+ anchors.rightMargin: 5
+ anchors.topMargin: 5
+ Text {
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.verticalCenter: parent.verticalCenter
+ text: "Visible"
+ }
+ MouseArea {
+ anchors.fill: parent
+ onClicked: {
+ if (carVisible == false) {
+ console.log("Show car")
+ carView.hidden = false
+ carVisible = true
+ buttonToggleVisible.border.color = "green"
+ } else {
+ console.log("Hide car")
+ carView.hidden = true
+ carVisible = false
+ buttonToggleVisible.border.color = "red"
+ }
+ }
+ }
+ }
+
+ Rectangle {
+ id: buttonHighlightTire
+ width: 100
+ height: 50
+ radius: 5
+ border.color: "green"
+ border.width: 2
+ anchors.right: parent.right
+ anchors.top: buttonToggleVisible.bottom
+ anchors.rightMargin: 5
+ anchors.topMargin: 5
+ Text {
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.verticalCenter: parent.verticalCenter
+ text: "Tire"
+ }
+ MouseArea {
+ anchors.fill: parent
+ onClicked: {
+ carView.highlightTire()
+ }
+ }
+ }
+
+ Rectangle {
+ id: buttonHighlightLamp
+ width: 100
+ height: 50
+ radius: 5
+ border.color: "green"
+ border.width: 2
+ anchors.right: parent.right
+ anchors.top: buttonHighlightTire.bottom
+ anchors.rightMargin: 5
+ anchors.topMargin: 5
+ Text {
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.verticalCenter: parent.verticalCenter
+ text: "Lamp"
+ }
+ MouseArea {
+ anchors.fill: parent
+ onClicked: {
+ carView.highlightLamp()
+ }
+ }
+ }
+
+ Rectangle {
+ id: buttonHighlightDoor
+ width: 100
+ height: 50
+ radius: 5
+ border.color: "green"
+ border.width: 2
+ anchors.right: parent.right
+ anchors.top: buttonHighlightLamp.bottom
+ anchors.rightMargin: 5
+ anchors.topMargin: 5
+ Text {
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.verticalCenter: parent.verticalCenter
+ text: "Doors"
+ }
+ MouseArea {
+ anchors.fill: parent
+ onClicked: {
+ carView.highlightDoors(Math.floor(Math.random() * 63) + 1)
+ }
+ }
+ }
+
+// FpsCounter {
+// visible: true
+// z: 3
+// }
+}
diff --git a/doc/src/snippets/qtcluster/qml/CarModelSports.qml b/doc/src/snippets/qtcluster/qml/CarModelSports.qml
new file mode 100644
index 00000000..1977da28
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/CarModelSports.qml
@@ -0,0 +1,569 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL3$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later as published by the Free
+** Software Foundation and appearing in the file LICENSE.GPL included in
+** the packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import Qt3D.Core 2.0
+import Qt3D.Render 2.0
+import Qt3D.Extras 2.0
+import Qt3D.Examples 2.0
+import QtQuick 2.5 as Quick
+import QtQuick.Scene3D 2.0
+
+Entity
+{
+ id: carModelEntity
+
+ property bool hidden: true
+ property Scene3D scene
+ property real carRotation: 0.0
+ property var previousComponent: undefined
+ property var previousMaterial
+ property vector3d defaultCameraPosition: Qt.vector3d(0.0, 10.0, 30.0)
+ property vector3d defaultLightPosition: Qt.vector3d(0.0, 30.0, 11.0)
+ property vector3d lightPosition: defaultLightPosition
+ property vector3d cameraPos: defaultCameraPosition
+ property vector3d lightPos: defaultLightPosition
+
+ property real lightPosMultiplier: 1.75
+
+ property int door_left: 1
+ property int door_right: 2
+ property int door_trunk: 4
+ property int door_hood: 8
+
+ property bool highlighting: false
+ property bool doorAction: false
+
+ property int highlightType: 0
+ property int defaultHighlight: 99
+
+ // Preset camera positions for highlights
+ // Light positions can use the same vectors, but with a multiplier to move it further or closer
+ // Lamp highlights
+ property vector3d positionFrontLeftHigh: Qt.vector3d(5.0, 4.0, 15.0) // Left headlight
+ property vector3d positionFrontRightHigh: Qt.vector3d(-5.0, 4.0, 15.0) // Right headlight
+ property vector3d positionFrontLeftLow: Qt.vector3d(3.0, 2.0, 15.0) // Left day light
+ property vector3d positionFrontRightLow: Qt.vector3d(-3.0, 2.0, 15.0) // Right day light
+ property vector3d positionRearLeft: Qt.vector3d(5.0, 5.0, -15.0) // Left tail light
+ property vector3d positionRearRight: Qt.vector3d(-5.0, 5.0, -15.0) // Right tail light
+ // Tire highlights
+ property vector3d positionLeftRear: Qt.vector3d(10.0, 2.0, -12.5)
+ property vector3d positionLeftFront: Qt.vector3d(10.0, 2.0, 12.5)
+ property vector3d positionRightRear: Qt.vector3d(-10.0, 2.0, -12.5)
+ property vector3d positionRightFront: Qt.vector3d(-10.0, 2.0, 12.5)
+ // Door highlights
+ property vector3d positionLeft: Qt.vector3d(35.0, 10.0, 0.0) // Doors on the left
+ property vector3d positionRight: Qt.vector3d(-35.0, 10.0, 0.0) // Doors on the right
+ property vector3d positionTop: Qt.vector3d(0.0, 40.0, 1.0) // Doors on both sides
+ property vector3d positionBack: Qt.vector3d(0.0, 20.0, -20.0) // Trunk
+ property vector3d positionFront: Qt.vector3d(0.0, 20.0, 20.0) // Hood
+
+ // Original
+ property color bodyColor: Qt.rgba(0.6270588, 0.04137255, 0.04137255, 1.0)
+ property color interiorColor: Qt.rgba(0.17, 0.17, 0.18, 1.0)
+ property color highlightColor: "orange"
+ // Blue
+// property color bodyColor: "navy"
+// property color interiorColor: "darkslateblue"
+// property color highlightColor: "orange"
+ // Perky
+// property color bodyColor: "chartreuse"
+// property color interiorColor: "orangered"
+// property color highlightColor: "yellow"
+ // Pink
+// property color bodyColor: "deeppink"
+// property color interiorColor: "thistle"
+// property color highlightColor: "orange"
+ // Orange
+// property color bodyColor: "orangered"
+// property color interiorColor: "saddlebrown"
+// property color highlightColor: "yellow"
+ // Yellow
+// property color bodyColor: "gold"
+// property color interiorColor: "dimgray"
+// property color highlightColor: "red"
+
+ Camera {
+ id: camera
+ projectionType: CameraLens.PerspectiveProjection
+ fieldOfView: 45
+ aspectRatio: scene.width / scene.height
+ nearPlane: 0.1
+ farPlane: 100.0
+ position: defaultCameraPosition
+ upVector: Qt.vector3d(0.0, 1.0, 0.0)
+ viewCenter: Qt.vector3d(0.0, 0.0, 0.0)
+ }
+
+ Entity {
+ components: [
+ Transform {
+ translation: lightPosition
+ },
+ PointLight {
+ color: "white"
+ intensity: 1.0
+ }
+ ]
+ }
+
+ RenderSettings {
+ Viewport {
+ RenderSurfaceSelector {
+ ClearBuffers {
+ buffers: ClearBuffers.ColorDepthBuffer
+ NoDraw { } // Just clear
+ }
+ CameraSelector {
+ camera: camera
+ NoDraw {
+ enabled: hidden
+ }
+ }
+ }
+ }
+ }
+
+ // Materials for the parts that need highlighting
+ PhongMaterial {
+ id: bodyMaterial
+ ambient: Qt.rgba(0.05, 0.05, 0.05, 1.0)
+ diffuse: bodyColor
+ specular: Qt.rgba(0.7686275, 0.6196079, 0.3568628, 1.0)
+ shininess: 164
+ }
+
+ PhongMaterial {
+ id: bodyMaterialHighlight
+ ambient: Qt.rgba(0.05, 0.05, 0.05, 1.0)
+ diffuse: highlightColor
+ shininess: 164
+ }
+
+ PhongMaterial {
+ id: tireMaterial
+ ambient: Qt.rgba(0.05, 0.05, 0.05, 1.0)
+ specular: Qt.rgba(0.594, 0.594, 0.594, 1.0)
+ diffuse: "black"
+ shininess: 51
+ }
+
+ PhongMaterial {
+ id: tireMaterialHighlight
+ ambient: Qt.rgba(0.05, 0.05, 0.05, 1.0)
+ specular: Qt.rgba(0.594, 0.594, 0.594, 1.0)
+ diffuse: highlightColor
+ shininess: 51
+ }
+
+ DiffuseMapMaterial {
+ id: lampsMaterial
+ ambient: Qt.rgba(0.75, 0.75, 0.75, 1.0)
+ specular: Qt.rgba(0.279, 0.279, 0.279, 1.0)
+ diffuse: TextureLoader { source: "qrc:/Map11.jpg" }
+ shininess: 31
+ }
+
+ // bodyMaterialHighlight is used for lamp highlight
+
+ // Materials for the parts that do not otherwise work correctly
+// Material {
+// id: transparentGlassMaterial
+
+// parameters: [
+// Parameter { name: "alpha"; value: 0.95 },
+// Parameter { name: "ka"; value: Qt.vector3d(0.2, 0.2, 0.2) },
+// Parameter { name: "kd"; value: Qt.vector3d(0.1608937, 0.16512, 0.154057) },
+// Parameter { name: "ks"; value: Qt.vector3d(1.0, 1.0, 1.0) },
+// Parameter { name: "shininess"; value: 15 }
+// ]
+
+// effect: DefaultAlphaEffect {
+// sourceRgbArg: BlendEquationArguments.SourceColor
+// destinationRgbArg: BlendEquationArguments.OneMinusSourceColor
+// }
+// }
+
+ PhongAlphaMaterial {
+ id: transparentGlassMaterial
+ diffuse: Qt.rgba(0.1608937, 0.16512, 0.154057, 1.0)
+ specular: Qt.rgba(1.0, 1.0, 1.0, 1.0)
+ alpha: 0.75
+ shininess: 33
+ }
+
+ PhongMaterial {
+ id: interiorMaterial
+ ambient: "black"
+ diffuse: interiorColor
+ shininess: 30
+ }
+
+ SceneHelper {
+ id: sceneHelper
+ }
+
+ Entity {
+ id: carModel
+
+ Transform {
+ id: carTransform
+ matrix: {
+ var m = Qt.matrix4x4()
+ m.rotate(carRotation, Qt.vector3d(0, 1, 0))
+ m.rotate(-90, Qt.vector3d(1, 0, 0))
+ m.scale(1.35)
+ return m
+ }
+ }
+
+ SceneLoader {
+ id: modelLoader
+ source: "qrc:/sportscar.qgltf"
+ property var lampParts: [ "headlight_right", "headlight_left", "daylight_right",
+ "daylight_left", "taillight_left", "taillight_right" ]
+ property var bodyParts: [ "body", "door_left", "door_right",
+ "trunk", "hood" ]
+ property var transparentGlassParts: [ "d_glass" ]
+ property var tireParts: [ "tire_front_left", "tire_front_right",
+ "tire_rear_left", "tire_rear_right" ]
+ property var interiorParts: [ "interior" ]
+
+ // Note: If there are problems with transparent materials etc. check that you have
+ // exported the Collada file used to create the qgltf binary files using the following
+ // options in Blender (in Collada options category):
+ // - Triangulate (off)
+ // - Use Object Instances (on)
+ // - Sort by Object name (on)
+ // If just setting those is not enough, try changing the object names so that the
+ // object will be loaded in a different order.
+ // Use the following syntax for qgltf.exe:
+ // qgltf.exe file.dae -b -S
+
+ onStatusChanged: {
+ if (status === SceneLoader.Ready) {
+ sceneHelper.addBasicMaterials(modelLoader, bodyMaterial, bodyParts)
+ sceneHelper.addBasicMaterials(modelLoader, transparentGlassMaterial,
+ transparentGlassParts)
+ sceneHelper.addBasicMaterials(modelLoader, interiorMaterial, interiorParts)
+ sceneHelper.addTextureMaterial(modelLoader, lampsMaterial, lampParts[0])
+ sceneHelper.addTextureMaterial(modelLoader, lampsMaterial, lampParts[1])
+ sceneHelper.addTextureMaterial(modelLoader, lampsMaterial, lampParts[2])
+ sceneHelper.addTextureMaterial(modelLoader, lampsMaterial, lampParts[3])
+ sceneHelper.addTextureMaterial(modelLoader, lampsMaterial, lampParts[4])
+ sceneHelper.addTextureMaterial(modelLoader, lampsMaterial, lampParts[5])
+ sceneHelper.addTextureMaterial(modelLoader, tireMaterial, tireParts[0])
+ sceneHelper.addTextureMaterial(modelLoader, tireMaterial, tireParts[1])
+ sceneHelper.addTextureMaterial(modelLoader, tireMaterial, tireParts[2])
+ sceneHelper.addTextureMaterial(modelLoader, tireMaterial, tireParts[3])
+ floorPlane.enabled = true
+ }
+ }
+ }
+
+ components : [carTransform, modelLoader]
+ }
+
+ Entity {
+ id: floorPlane
+ enabled: false
+
+ DiffuseMapMaterial {
+ id: planeMaterial
+ ambient: Qt.rgba(0, 0, 0, 1.0)
+ specular: Qt.rgba(0, 0, 0, 1.0)
+ diffuse: TextureLoader { source: "qrc:/images/SportCarFloorShadow.png" }
+ }
+
+ Transform {
+ id: planeRotation
+ matrix: {
+ var m = Qt.matrix4x4()
+ m.rotate(carRotation, Qt.vector3d(0, 1, 0))
+ m.scale(1.35)
+ return m
+ }
+ }
+
+ PlaneMesh {
+ id: planeMesh
+ width: 70
+ height: 70
+ }
+
+ components : [planeMesh, planeMaterial, planeRotation]
+ }
+
+ function highlightItem(idx) {
+ carRotationAnimation.stop()
+ carResetRotationAnimation.start()
+ highlighting = true
+ var highlightComponent
+ var highlightMaterial
+ var originalMaterial
+
+ switch (idx) {
+ case 1:
+ highlightComponent = "tire_front_left"
+ highlightMaterial = tireMaterialHighlight
+ originalMaterial = tireMaterial
+ lightPos = positionLeftFront.times(lightPosMultiplier)
+ cameraPos = positionLeftFront
+ break
+ case 2:
+ highlightComponent = "tire_front_right"
+ highlightMaterial = tireMaterialHighlight
+ originalMaterial = tireMaterial
+ lightPos = positionRightFront.times(lightPosMultiplier)
+ cameraPos = positionRightFront
+ break
+ case 3:
+ highlightComponent = "tire_rear_right"
+ highlightMaterial = tireMaterialHighlight
+ originalMaterial = tireMaterial
+ lightPos = positionRightRear.times(lightPosMultiplier)
+ cameraPos = positionRightRear
+ break
+ case 4:
+ highlightComponent = "tire_rear_left"
+ highlightMaterial = tireMaterialHighlight
+ originalMaterial = tireMaterial
+ lightPos = positionLeftRear.times(lightPosMultiplier)
+ cameraPos = positionLeftRear
+ break
+ case 5:
+ highlightComponent = "headlight_left"
+ highlightMaterial = bodyMaterialHighlight
+ originalMaterial = lampsMaterial
+ lightPos = positionFrontLeftHigh.times(lightPosMultiplier)
+ cameraPos = positionFrontLeftHigh
+ break
+ case 6:
+ highlightComponent = "headlight_right"
+ highlightMaterial = bodyMaterialHighlight
+ originalMaterial = lampsMaterial
+ lightPos = positionFrontRightHigh.times(lightPosMultiplier)
+ cameraPos = positionFrontRightHigh
+ break
+ case 7:
+ highlightComponent = "daylight_right"
+ highlightMaterial = bodyMaterialHighlight
+ originalMaterial = lampsMaterial
+ lightPos = positionFrontRightLow.times(lightPosMultiplier)
+ cameraPos = positionFrontRightLow
+ break
+ case 8:
+ highlightComponent = "daylight_left"
+ highlightMaterial = bodyMaterialHighlight
+ originalMaterial = lampsMaterial
+ lightPos = positionFrontLeftLow.times(lightPosMultiplier)
+ cameraPos = positionFrontLeftLow
+ break
+ case 9:
+ highlightComponent = "taillight_left"
+ highlightMaterial = bodyMaterialHighlight
+ originalMaterial = lampsMaterial
+ lightPos = positionRearLeft.times(lightPosMultiplier)
+ cameraPos = positionRearLeft
+ break
+ case 10:
+ highlightComponent = "taillight_right"
+ highlightMaterial = bodyMaterialHighlight
+ originalMaterial = lampsMaterial
+ lightPos = positionRearRight.times(lightPosMultiplier)
+ cameraPos = positionRearRight
+ break
+ default:
+ lightPos = defaultLightPosition
+ cameraPos = defaultCameraPosition
+ }
+
+ if (previousComponent !== undefined)
+ sceneHelper.replaceMaterial(modelLoader, previousComponent, previousMaterial)
+
+ if (highlightComponent !== undefined)
+ sceneHelper.replaceMaterial(modelLoader, highlightComponent, highlightMaterial)
+
+ previousComponent = highlightComponent
+ previousMaterial = originalMaterial
+ }
+
+ function highlightOpenDoors(openDoors) {
+ carRotationAnimation.stop()
+ carResetRotationAnimation.start()
+ highlighting = true
+ var openLeft = false
+ var openRight = false
+ var openBack = false
+ var openFront = false
+
+ // Check with bitwise operators, as they can be open in any combination
+ if (openDoors & door_left) {
+ sceneHelper.replaceMaterial(modelLoader, "door_left", bodyMaterialHighlight)
+ openLeft = true
+ } else {
+ sceneHelper.replaceMaterial(modelLoader, "door_left", bodyMaterial)
+ }
+
+ if (openDoors & door_right) {
+ sceneHelper.replaceMaterial(modelLoader, "door_right", bodyMaterialHighlight)
+ openRight = true
+ } else {
+ sceneHelper.replaceMaterial(modelLoader, "door_right", bodyMaterial)
+ }
+
+ if (openDoors & door_trunk) {
+ sceneHelper.replaceMaterial(modelLoader, "trunk", bodyMaterialHighlight)
+ openBack = true
+ } else {
+ sceneHelper.replaceMaterial(modelLoader, "trunk", bodyMaterial)
+ }
+
+ if (openDoors & door_hood) {
+ openFront = true
+ sceneHelper.replaceMaterial(modelLoader, "hood", bodyMaterialHighlight)
+ } else {
+ sceneHelper.replaceMaterial(modelLoader, "hood", bodyMaterial)
+ }
+
+ if (openRight && openLeft || openBack && openFront) {
+ lightPos = positionTop.times(0.5)
+ cameraPos = positionTop
+ } else if (openRight) {
+ lightPos = positionRight.times(0.33)
+ lightPos.y += 15.0
+ cameraPos = positionRight
+ } else if (openLeft) {
+ lightPos = positionLeft.times(0.33)
+ lightPos.y += 15.0
+ cameraPos = positionLeft
+ } else if (openBack) {
+ lightPos = positionBack.times(0.75)
+ cameraPos = positionBack
+ } else if (openFront) {
+ lightPos = positionFront.times(1.0)
+ cameraPos = positionFront
+ } else {
+ lightPos = defaultLightPosition
+ cameraPos = defaultCameraPosition
+ }
+ }
+
+ onCameraPosChanged: {
+ if (!highlighting)
+ return
+
+ // Update both camera and light positions
+ cameraAnimation.to = cameraPos
+ lightAnimation.to = lightPos
+ cameraAnimation.restart()
+ lightAnimation.restart()
+ highlighting = false
+ }
+
+ Quick.PropertyAnimation {
+ running: false
+ id: cameraAnimation
+ target: camera
+ property: "position"
+ duration: 1000
+ easing.type: Easing.InOutQuad
+ }
+
+ Quick.PropertyAnimation {
+ running: false
+ id: lightAnimation
+ target: carModelEntity
+ property: "lightPosition"
+ duration: 1000
+ easing.type: Easing.Linear
+ }
+
+ Quick.RotationAnimation on carRotation {
+ id: carRotationAnimation
+ running: false
+ from: 0.0
+ to: 360.0
+ duration: 15000
+ loops: -1
+ }
+
+ Quick.RotationAnimation on carRotation {
+ id: carResetRotationAnimation
+ running: false
+ to: (carRotation > 180.0) ? 360.0 : 0.0 // TODO: Try to make animation "natural". Still works weirdly sometimes.
+ duration: 1000
+ loops: -1
+ easing.type: Easing.InOutQuad
+ }
+
+ function resetHighlight() {
+ if (doorAction)
+ highlightOpenDoors(0)
+ else
+ highlightItem(defaultHighlight)
+ doorAction = false
+ }
+
+ function highlightLamp() {
+ highlightType = Math.floor(Math.random() * 6) + 5
+ highlightItem(highlightType)
+ return highlightType
+ }
+
+ function highlightTire() {
+ highlightType = Math.floor(Math.random() * 4) + 1
+ highlightItem(highlightType)
+ return highlightType
+ }
+
+ function toggleIdleTimer(isVisible) {
+ if (isVisible) {
+ idleTimer.restart()
+ } else {
+ carRotationAnimation.stop()
+ carRotation = 0.0
+ idleTimer.stop()
+ }
+ }
+
+ Quick.Timer {
+ id: idleTimer
+ interval: 10000
+ onTriggered: {
+ carRotationAnimation.restart()
+ }
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/CarParking.qml b/doc/src/snippets/qtcluster/qml/CarParking.qml
new file mode 100644
index 00000000..6994bbd4
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/CarParking.qml
@@ -0,0 +1,71 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+
+Item {
+ height: root.height
+ width: root.width / 3
+ Image {
+ id: carImage
+ height: root.height / 3
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.horizontalCenter: parent.horizontalCenter
+ fillMode: Image.PreserveAspectFit
+ source:"qrc:/images/CarForParkSensors.png"
+ }
+ Image {
+ anchors.left: carImage.left
+ anchors.leftMargin: 5
+ anchors.bottom: carImage.bottom
+ anchors.bottomMargin: carImage.height * 0.86
+ source:"qrc:/images/ParkingSensorOff.png"
+ z: 1
+ }
+ Image {
+ scale: -1
+ anchors.left: carImage.left
+ anchors.leftMargin: 5
+ anchors.top: carImage.top
+ anchors.topMargin: carImage.height * 0.86
+ source:"qrc:/images/ParkingSensorOff.png"
+ z: 1
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/CarParkingSports.qml b/doc/src/snippets/qtcluster/qml/CarParkingSports.qml
new file mode 100644
index 00000000..84062f80
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/CarParkingSports.qml
@@ -0,0 +1,79 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+
+Item {
+ Image {
+ id: carImage
+ height: root.height / 3
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.horizontalCenter: parent.horizontalCenter
+ fillMode: Image.PreserveAspectFit
+ source:"image://etc/SportCarForParkSensors.png"
+ }
+ Image {
+ anchors.horizontalCenter: carImage.horizontalCenter
+ anchors.leftMargin: 5
+ anchors.bottom: carImage.bottom
+ anchors.bottomMargin: carImage.height * 0.9
+ source:"image://etc/ParkingSensorOff.png"
+ z: 1
+ }
+ Image {
+ scale: -1
+ anchors.horizontalCenter: carImage.horizontalCenter
+ anchors.leftMargin: 5
+ anchors.top: carImage.top
+ anchors.topMargin: carImage.height * 0.86
+ source:"image://etc/ParkingSensorOff.png"
+ z: 1
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/CarViewElectric.qml b/doc/src/snippets/qtcluster/qml/CarViewElectric.qml
new file mode 100644
index 00000000..04833d6a
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/CarViewElectric.qml
@@ -0,0 +1,108 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL3$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later as published by the Free
+** Software Foundation and appearing in the file LICENSE.GPL included in
+** the packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+import QtQuick.Scene3D 2.0
+
+Item {
+ id: mainview
+ visible: true
+ width: root.width / 3
+ height: root.height
+ property alias hidden: carModel.hidden
+
+ Scene3D {
+ id: carScene
+ width: mainview.width
+ height: mainview.height
+ multisample: true
+
+ CarModelElectric {
+ id: carModel
+ scene: carScene
+ }
+ }
+
+ // Functions to control highlights from dashboard
+ function highlightLamp() {
+ var type = carModel.highlightLamp()
+ carModel.toggleIdleTimer(true)
+ resetModelTimer.restart()
+ return type
+ }
+
+ function highlightDoors(doors) {
+ doorAction = true
+ carModel.doorAction = true
+ carModel.highlightOpenDoors(doors)
+ carModel.toggleIdleTimer(true)
+ resetModelTimer.restart()
+ }
+
+ function highlightTire() {
+ var type = carModel.highlightTire()
+ carModel.toggleIdleTimer(true)
+ resetModelTimer.restart()
+ return type
+ }
+
+ Timer {
+ id: resetModelTimer
+ interval: 3000
+ running: false
+ onTriggered: {
+ carModel.resetHighlight()
+ carModelHighlightType = 0
+ actionInProgress = false
+ doorAction = false
+ if (!rightStack.visible) // return previous view if we forced the car model
+ returnView.start()
+ if (visible)
+ carModel.toggleIdleTimer(true)
+ }
+ }
+
+ onVisibleChanged: {
+ // Start/stop idle timer, that will trigger camera rotation around the car model after X secs
+ carModel.toggleIdleTimer(visible)
+ }
+
+ // TODO: Don't use if car view is not the first one
+ Component.onCompleted: {
+ // Start/stop idle timer, that will trigger camera rotation around the car model after X secs
+ carModel.toggleIdleTimer(visible)
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/CarViewSports.qml b/doc/src/snippets/qtcluster/qml/CarViewSports.qml
new file mode 100644
index 00000000..7c5bb198
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/CarViewSports.qml
@@ -0,0 +1,108 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL3$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later as published by the Free
+** Software Foundation and appearing in the file LICENSE.GPL included in
+** the packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+import QtQuick.Scene3D 2.0
+
+Item {
+ id: mainview
+ visible: true
+ width: root.width / 3
+ height: root.height
+ property alias hidden: carModel.hidden
+
+ Scene3D {
+ id: carScene
+ width: mainview.width
+ height: mainview.height
+ multisample: true
+
+ CarModelSports {
+ id: carModel
+ scene: carScene
+ }
+ }
+
+ // Functions to control highlights from dashboard
+ function highlightLamp() {
+ var type = carModel.highlightLamp()
+ carModel.toggleIdleTimer(true)
+ resetModelTimer.restart()
+ return type
+ }
+
+ function highlightDoors(doors) {
+ doorAction = true
+ carModel.doorAction = true
+ carModel.highlightOpenDoors(doors)
+ carModel.toggleIdleTimer(true)
+ resetModelTimer.restart()
+ }
+
+ function highlightTire() {
+ var type = carModel.highlightTire()
+ carModel.toggleIdleTimer(true)
+ resetModelTimer.restart()
+ return type
+ }
+
+ Timer {
+ id: resetModelTimer
+ interval: 3000
+ running: false
+ onTriggered: {
+ carModel.resetHighlight()
+ carModelHighlightType = 0
+ doorAction = false
+ actionInProgress = false
+ if (!centerStack.visible) // return previous view if we forced the car model
+ returnView.start()
+ if (visible)
+ carModel.toggleIdleTimer(true)
+ }
+ }
+
+ onVisibleChanged: {
+ // Start/stop idle timer, that will trigger camera rotation around the car model after X secs
+ carModel.toggleIdleTimer(visible)
+ }
+
+ // TODO: Don't use if car view is not the first one
+ Component.onCompleted: {
+ // Start/stop idle timer, that will trigger camera rotation around the car model after X secs
+ carModel.toggleIdleTimer(visible)
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/Circular_route.txt b/doc/src/snippets/qtcluster/qml/Circular_route.txt
new file mode 100644
index 00000000..a502cfa6
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/Circular_route.txt
@@ -0,0 +1,595 @@
+2015-09-05T12:01:56Z 52.53471566 13.29339621 0
+2015-09-05T12:01:56Z 52.53471566 13.29339621 0
+2015-09-05T12:01:56Z 52.53471566 13.29339621 0
+2015-09-05T12:01:56Z 52.53471566 13.29339621 0
+2015-09-05T12:01:56Z 52.53471566 13.29339621 2
+2015-09-05T12:01:57Z 52.53463307 13.29335113 4.5
+2015-09-05T12:01:58Z 52.53456215 13.29326514 6
+2015-09-05T12:01:59Z 52.53448055 13.2932033 10
+2015-09-05T12:02:00Z 52.53439307 13.29317302 10.25
+2015-09-05T12:02:02Z 52.53420541 13.29324536 11
+2015-09-05T12:02:03Z 52.53415146 13.29334321 10.25
+2015-09-05T12:02:04Z 52.5340858 13.29343789 9.5
+2015-09-05T12:02:06Z 52.5339741 13.29363007 9
+2015-09-05T12:02:08Z 52.53385702 13.29373682 9
+2015-09-05T12:02:09Z 52.53379645 13.2937675 5
+2015-09-05T12:02:10Z 52.53373904 13.29378906 3
+2015-09-05T12:02:10Z 52.53370904 13.29379906 0
+2015-09-05T12:02:11Z 52.53370904 13.29379906 0
+2015-09-05T12:02:12Z 52.53370904 13.29379906 0
+2015-09-05T12:02:13Z 52.53355432 13.29392855 5
+2015-09-05T12:02:15Z 52.53337753 13.2940725 10
+2015-09-05T12:02:16Z 52.53329909 13.29412793 10
+2015-09-05T12:02:17Z 52.53321162 13.29419525 10.25
+2015-09-05T12:02:18Z 52.53311057 13.29426683 11.5
+2015-09-05T12:02:19Z 52.5330342 13.29433714 11.25
+2015-09-05T12:02:21Z 52.5328361 13.2944545 11.5
+2015-09-05T12:02:23Z 52.53268661 13.29457408 12
+2015-09-05T12:02:24Z 52.5325904 13.29461498 12
+2015-09-05T12:02:25Z 52.5324789 13.29467689 12
+2015-09-05T12:02:26Z 52.53237304 13.29473805 12
+2015-09-05T12:02:27Z 52.53226579 13.29481766 12
+2015-09-05T12:02:28Z 52.53215667 13.29489104 12
+2015-09-05T12:02:29Z 52.53205286 13.29495604 12
+2015-09-05T12:02:31Z 52.53184432 13.29509601 12.25
+2015-09-05T12:02:32Z 52.53173615 13.29516896 13
+2015-09-05T12:02:33Z 52.53160734 13.29525339 14.5
+2015-09-05T12:02:34Z 52.53147391 13.29533567 15
+2015-09-05T12:02:35Z 52.53134531 13.29539001 15.25
+2015-09-05T12:02:36Z 52.53120371 13.29544058 14.75
+2015-09-05T12:02:37Z 52.5310736 13.29548352 14.5
+2015-09-05T12:02:39Z 52.53082428 13.2955645 13.75
+2015-09-05T12:02:40Z 52.53070713 13.29559606 14.5
+2015-09-05T12:02:41Z 52.53057732 13.2956255 14.75
+2015-09-05T12:02:43Z 52.53030912 13.29571386 15
+2015-09-05T12:02:44Z 52.53017176 13.2957591 14.75
+2015-09-05T12:02:45Z 52.5300513 13.29580222 14.5
+2015-09-05T12:02:47Z 52.52979737 13.29587053 14.25
+2015-09-05T12:02:48Z 52.52968082 13.29590694 14
+2015-09-05T12:02:49Z 52.52956536 13.29595674 13.75
+2015-09-05T12:02:51Z 52.52934973 13.29612906 13.5
+2015-09-05T12:02:52Z 52.52924513 13.29620493 13.5
+2015-09-05T12:02:53Z 52.52912119 13.29629417 13.5
+2015-09-05T12:02:54Z 52.52901351 13.29639086 13.25
+2015-09-05T12:02:55Z 52.52891751 13.29647808 12.25
+2015-09-05T12:02:56Z 52.52884043 13.29650939 11.25
+2015-09-05T12:02:58Z 52.52864407 13.29657869 12
+2015-09-05T12:02:59Z 52.52852564 13.29660263 12.75
+2015-09-05T12:03:00Z 52.52840086 13.29663652 12.75
+2015-09-05T12:03:02Z 52.52818659 13.2966907 12.75
+2015-09-05T12:03:03Z 52.52807177 13.29673764 12.75
+2015-09-05T12:03:04Z 52.52798047 13.29677037 12.8
+2015-09-05T12:03:05Z 52.52784213 13.29683006 14.5
+2015-09-05T12:03:06Z 52.52769622 13.29689328 15.5
+2015-09-05T12:03:07Z 52.52755741 13.2969383 16.25
+2015-09-05T12:03:08Z 52.52741156 13.29698961 17
+2015-09-05T12:03:10Z 52.52711709 13.2970757 17
+2015-09-05T12:03:11Z 52.52695869 13.29711537 17
+2015-09-05T12:03:12Z 52.52681712 13.29716064 17
+2015-09-05T12:03:13Z 52.52666168 13.29722531 17
+2015-09-05T12:03:14Z 52.52649001 13.29727856 17.75
+2015-09-05T12:03:15Z 52.52633418 13.29734529 17.75
+2015-09-05T12:03:16Z 52.52615007 13.29740601 18.25
+2015-09-05T12:03:17Z 52.52598369 13.29744997 18.5
+2015-09-05T12:03:18Z 52.52581637 13.29747817 18.25
+2015-09-05T12:03:19Z 52.5256589 13.2975318 17.5
+2015-09-05T12:03:20Z 52.52549785 13.2975591 17.5
+2015-09-05T12:03:21Z 52.52533403 13.29757304 17
+2015-09-05T12:03:22Z 52.52518512 13.2976005 16.75
+2015-09-05T12:03:23Z 52.52505195 13.29764489 16.25
+2015-09-05T12:03:24Z 52.52491452 13.29769758 15.25
+2015-09-05T12:03:25Z 52.52478112 13.29775472 15.25
+2015-09-05T12:03:26Z 52.52466234 13.29785345 15.25
+2015-09-05T12:03:27Z 52.52453284 13.29795197 15.75
+2015-09-05T12:03:29Z 52.52428926 13.29821484 16.25
+2015-09-05T12:03:30Z 52.52417461 13.2983671 16.25
+2015-09-05T12:03:31Z 52.52405376 13.29850187 16.25
+2015-09-05T12:03:32Z 52.52393931 13.29865443 16.25
+2015-09-05T12:03:33Z 52.52382556 13.29879402 16.25
+2015-09-05T12:03:34Z 52.52369592 13.29894445 16.35
+2015-09-05T12:03:35Z 52.52356831 13.29910014 16.5
+2015-09-05T12:03:37Z 52.52335459 13.29937581 16
+2015-09-05T12:03:38Z 52.52324243 13.29950933 18
+2015-09-05T12:03:39Z 52.52312211 13.29963199 18
+2015-09-05T12:03:40Z 52.52303124 13.29973969 18
+2015-09-05T12:03:41Z 52.52295028 13.29984474 13
+2015-09-05T12:03:42Z 52.52288635 13.29992611 8
+2015-09-05T12:03:43Z 52.52270078 13.30014976 0
+2015-09-05T12:03:44Z 52.52270078 13.30014976 0
+2015-09-05T12:03:45Z 52.52270078 13.30014976 0
+2015-09-05T12:03:46Z 52.52270078 13.30014976 0
+2015-09-05T12:03:47Z 52.52270078 13.30014976 0
+2015-09-05T12:03:48Z 52.52270078 13.30014976 0
+2015-09-05T12:03:49Z 52.52270078 13.30014976 0
+2015-09-05T12:03:50Z 52.52270078 13.30014976 0
+2015-09-05T12:03:51Z 52.52270078 13.30014976 0
+2015-09-05T12:03:52Z 52.52270078 13.30014976 0
+2015-09-05T12:03:53Z 52.52270078 13.30014976 0
+2015-09-05T12:03:54Z 52.52270078 13.30014976 0
+2015-09-05T12:03:55Z 52.52270078 13.30014976 0
+2015-09-05T12:03:56Z 52.52270078 13.30014976 0
+2015-09-05T12:03:57Z 52.52270078 13.30014976 0
+2015-09-05T12:03:58Z 52.52270078 13.30014976 0
+2015-09-05T12:04:20Z 52.52270078 13.30014976 0
+2015-09-05T12:04:21Z 52.52266043 13.30018077 5.25
+2015-09-05T12:04:22Z 52.52258997 13.30024809 9
+2015-09-05T12:04:23Z 52.5225277 13.30030886 12
+2015-09-05T12:04:24Z 52.52244695 13.30031455 15
+2015-09-05T12:04:25Z 52.52236198 13.30029215 15
+2015-09-05T12:04:26Z 52.52226481 13.30024054 15
+2015-09-05T12:04:27Z 52.52217005 13.30020629 15
+2015-09-05T12:04:28Z 52.52206983 13.3001551 18
+2015-09-05T12:04:30Z 52.52185322 13.30001279 18
+2015-09-05T12:04:31Z 52.52172351 13.29992714 14
+2015-09-05T12:04:32Z 52.52159554 13.2998622 14.75
+2015-09-05T12:04:33Z 52.52146475 13.29978099 15.25
+2015-09-05T12:04:34Z 52.52133872 13.29969814 15.75
+2015-09-05T12:04:35Z 52.52120957 13.29961165 15.5
+2015-09-05T12:04:36Z 52.52107981 13.2995404 15
+2015-09-05T12:04:38Z 52.52086158 13.29941319 13.25
+2015-09-05T12:04:40Z 52.52064769 13.29935942 12.25
+2015-09-05T12:04:41Z 52.52054688 13.29936738 11.5
+2015-09-05T12:04:43Z 52.52036739 13.29939421 10.25
+2015-09-05T12:04:44Z 52.52027373 13.29942033 6
+2015-09-05T12:04:45Z 52.52000411 13.29948771 0
+2015-09-05T12:04:46Z 52.52000411 13.29948771 0
+2015-09-05T12:04:47Z 52.52000411 13.29948771 0
+2015-09-05T12:04:48Z 52.52000411 13.29948771 0
+2015-09-05T12:04:49Z 52.52000411 13.29948771 0
+2015-09-05T12:04:50Z 52.52000411 13.29948771 0
+2015-09-05T12:04:51Z 52.52000411 13.29948771 0
+2015-09-05T12:04:52Z 52.52000411 13.29948771 0
+2015-09-05T12:04:53Z 52.52000411 13.29948771 0
+2015-09-05T12:04:54Z 52.52000411 13.29948771 0
+2015-09-05T12:04:55Z 52.52000411 13.29948771 0
+2015-09-05T12:04:56Z 52.52000411 13.29948771 0
+2015-09-05T12:04:57Z 52.52000411 13.29948771 0
+2015-09-05T12:04:58Z 52.52000411 13.29948771 0
+2015-09-05T12:04:59Z 52.52000411 13.29948771 0
+2015-09-05T12:05:00Z 52.52000411 13.29948771 0
+2015-09-05T12:05:01Z 52.52000411 13.29948771 0
+2015-09-05T12:05:23Z 52.52000411 13.29948771 0
+2015-09-05T12:05:24Z 52.51997058 13.29952102 5
+2015-09-05T12:05:25Z 52.51992366 13.29953263 7
+2015-09-05T12:05:26Z 52.51987437 13.29954327 7
+2015-09-05T12:05:27Z 52.51980357 13.29954852 7.5
+2015-09-05T12:05:28Z 52.51972331 13.29958992 9
+2015-09-05T12:05:29Z 52.51964802 13.29963821 12
+2015-09-05T12:05:30Z 52.51957361 13.29972032 12
+2015-09-05T12:05:31Z 52.51950862 13.29986188 12
+2015-09-05T12:05:32Z 52.51945385 13.30000737 12
+2015-09-05T12:05:33Z 52.51938922 13.30018513 12.75
+2015-09-05T12:05:34Z 52.51933148 13.30035667 13.75
+2015-09-05T12:05:35Z 52.51926274 13.30054898 14.5
+2015-09-05T12:05:36Z 52.51920375 13.3007182 15.5
+2015-09-05T12:05:37Z 52.51913195 13.30090806 16.25
+2015-09-05T12:05:38Z 52.51905919 13.30111873 16.75
+2015-09-05T12:05:39Z 52.51898637 13.30134444 17.25
+2015-09-05T12:05:40Z 52.51890618 13.30158713 17.75
+2015-09-05T12:05:41Z 52.51882863 13.30181532 18.25
+2015-09-05T12:05:42Z 52.51874697 13.30206403 18.75
+2015-09-05T12:05:43Z 52.51866892 13.30232409 18.75
+2015-09-05T12:05:44Z 52.51858636 13.30255307 18.75
+2015-09-05T12:05:45Z 52.51850846 13.30280425 18.75
+2015-09-05T12:05:46Z 52.51843293 13.30305877 18.25
+2015-09-05T12:05:47Z 52.51836511 13.30327293 18
+2015-09-05T12:05:48Z 52.51829479 13.30350592 17.75
+2015-09-05T12:05:49Z 52.51821382 13.30374217 17.25
+2015-09-05T12:05:50Z 52.51815266 13.30395237 16.75
+2015-09-05T12:05:51Z 52.51808531 13.30418719 16.5
+2015-09-05T12:05:52Z 52.51802467 13.30439865 16.5
+2015-09-05T12:05:53Z 52.51796402 13.3046112 16
+2015-09-05T12:05:54Z 52.51790743 13.30481738 16
+2015-09-05T12:05:55Z 52.51784005 13.30502199 16
+2015-09-05T12:05:56Z 52.51777177 13.30524862 16.25
+2015-09-05T12:05:57Z 52.51770337 13.30544136 16.5
+2015-09-05T12:05:58Z 52.51762094 13.30564341 16.75
+2015-09-05T12:05:59Z 52.51752851 13.30586256 17
+2015-09-05T12:06:00Z 52.51748413 13.30609422 17.5
+2015-09-05T12:06:01Z 52.51741946 13.30632815 17.25
+2015-09-05T12:06:02Z 52.51734146 13.30657572 17.5
+2015-09-05T12:06:03Z 52.51728833 13.30679264 17.75
+2015-09-05T12:06:04Z 52.51721395 13.30703329 18
+2015-09-05T12:06:05Z 52.51713213 13.30726669 18.25
+2015-09-05T12:06:06Z 52.51704695 13.30749755 18.25
+2015-09-05T12:06:07Z 52.51695347 13.30776367 18.75
+2015-09-05T12:06:08Z 52.51688035 13.30798499 18.5
+2015-09-05T12:06:09Z 52.51683924 13.30826377 18.75
+2015-09-05T12:06:10Z 52.51676332 13.30852511 18.75
+2015-09-05T12:06:11Z 52.51666019 13.30876472 18.75
+2015-09-05T12:06:12Z 52.51662237 13.30905154 18.5
+2015-09-05T12:06:13Z 52.51656674 13.30928029 18.25
+2015-09-05T12:06:14Z 52.51648419 13.30947686 17.5
+2015-09-05T12:06:15Z 52.5163775 13.309703 17.25
+2015-09-05T12:06:16Z 52.51628199 13.3099192 17.25
+2015-09-05T12:06:17Z 52.51616648 13.31011033 17
+2015-09-05T12:06:19Z 52.51602967 13.31055605 16.75
+2015-09-05T12:06:20Z 52.51597211 13.31074222 16.25
+2015-09-05T12:06:22Z 52.51582736 13.31114177 16.25
+2015-09-05T12:06:23Z 52.51575417 13.31140106 17
+2015-09-05T12:06:24Z 52.5157159 13.31160443 17
+2015-09-05T12:06:25Z 52.5156643 13.31183259 17
+2015-09-05T12:06:27Z 52.5155041 13.31225099 17
+2015-09-05T12:06:28Z 52.51546634 13.31252787 17
+2015-09-05T12:06:29Z 52.51539252 13.31276737 17.25
+2015-09-05T12:06:30Z 52.51532149 13.31299404 17.25
+2015-09-05T12:06:31Z 52.51524136 13.31317206 17
+2015-09-05T12:06:32Z 52.51517672 13.31339142 17
+2015-09-05T12:06:33Z 52.51509301 13.31364148 17
+2015-09-05T12:06:34Z 52.51501412 13.31388762 17
+2015-09-05T12:06:35Z 52.51495314 13.31406691 16
+2015-09-05T12:06:36Z 52.51489388 13.31426441 14.75
+2015-09-05T12:06:37Z 52.51485489 13.31442888 13
+2015-09-05T12:06:38Z 52.51483603 13.31458792 11.5
+2015-09-05T12:06:39Z 52.51474913 13.31465827 9.25
+2015-09-05T12:06:40Z 52.51470297 13.31471572 1.5
+2015-09-05T12:06:41Z 52.51469785 13.31480612 0
+2015-09-05T12:06:42Z 52.51469785 13.31480612 0
+2015-09-05T12:06:43Z 52.51469785 13.31480612 0
+2015-09-05T12:06:44Z 52.51469785 13.31480612 0
+2015-09-05T12:06:45Z 52.51469785 13.31480612 0
+2015-09-05T12:06:46Z 52.51469785 13.31480612 0
+2015-09-05T12:06:47Z 52.51469785 13.31480612 0
+2015-09-05T12:06:48Z 52.51469785 13.31480612 0
+2015-09-05T12:06:49Z 52.51469785 13.31480612 0
+2015-09-05T12:06:50Z 52.51469785 13.31480612 0
+2015-09-05T12:06:51Z 52.51469785 13.31480612 0
+2015-09-05T12:06:52Z 52.51469785 13.31480612 0
+2015-09-05T12:06:53Z 52.51469785 13.31480612 0
+2015-09-05T12:06:54Z 52.51469785 13.31480612 0
+2015-09-05T12:06:55Z 52.51469785 13.31480612 0
+2015-09-05T12:06:56Z 52.51469785 13.31480612 0
+2015-09-05T12:07:09Z 52.51465785 13.31490612 2.75
+2015-09-05T12:07:10Z 52.51464824 13.31491989 9
+2015-09-05T12:07:11Z 52.51460879 13.31503769 12
+2015-09-05T12:07:13Z 52.51453201 13.3153324 13
+2015-09-05T12:07:14Z 52.51448914 13.31549457 16
+2015-09-05T12:07:15Z 52.51445648 13.31568393 18
+2015-09-05T12:07:16Z 52.51439381 13.31588408 20
+2015-09-05T12:07:17Z 52.51435193 13.31607364 16
+2015-09-05T12:07:18Z 52.51429047 13.31627832 15.75
+2015-09-05T12:07:19Z 52.51424136 13.31653842 15.75
+2015-09-05T12:07:20Z 52.51415344 13.31669077 15.5
+2015-09-05T12:07:21Z 52.51407088 13.31686736 15.5
+2015-09-05T12:07:22Z 52.513984 13.31711846 16.25
+2015-09-05T12:07:24Z 52.51384149 13.31750164 16.25
+2015-09-05T12:07:25Z 52.5137931 13.31771783 16.25
+2015-09-05T12:07:26Z 52.51378228 13.31797915 16.5
+2015-09-05T12:07:27Z 52.51375122 13.31822475 16.75
+2015-09-05T12:07:28Z 52.51374125 13.31847759 17
+2015-09-05T12:07:29Z 52.51370054 13.31873135 17
+2015-09-05T12:07:30Z 52.51367538 13.3189733 17
+2015-09-05T12:07:31Z 52.51366241 13.3191887 16.5
+2015-09-05T12:07:33Z 52.51353135 13.31964239 16.5
+2015-09-05T12:07:34Z 52.51347898 13.31984191 15.5
+2015-09-05T12:07:35Z 52.51343441 13.32006123 14.5
+2015-09-05T12:07:36Z 52.51340483 13.32021639 13
+2015-09-05T12:07:37Z 52.51336041 13.32036272 11
+2015-09-05T12:07:38Z 52.51332265 13.32048619 0
+2015-09-05T12:07:39Z 52.51329181 13.32056736 0
+2015-09-05T12:07:40Z 52.51325586 13.32067519 0
+2015-09-05T12:07:41Z 52.51325586 13.32067519 0
+2015-09-05T12:07:42Z 52.51325586 13.32067519 0
+2015-09-05T12:07:43Z 52.51325586 13.32067519 0
+2015-09-05T12:07:44Z 52.51325586 13.32067519 0
+2015-09-05T12:07:45Z 52.51325586 13.32067519 0
+2015-09-05T12:07:46Z 52.51325586 13.32067519 0
+2015-09-05T12:07:47Z 52.51325586 13.32067519 0
+2015-09-05T12:07:50Z 52.5131997 13.32080423 1
+2015-09-05T12:07:51Z 52.51317166 13.32084133 6
+2015-09-05T12:07:52Z 52.51311109 13.32088309 6
+2015-09-05T12:07:53Z 52.51303037 13.32092266 10
+2015-09-05T12:07:54Z 52.51289099 13.32085504 10.5
+2015-09-05T12:07:56Z 52.51274925 13.32076634 10
+2015-09-05T12:07:57Z 52.51263743 13.32075369 10.5
+2015-09-05T12:07:58Z 52.51255666 13.32076405 10.5
+2015-09-05T12:08:00Z 52.51234885 13.32086301 11.25
+2015-09-05T12:08:01Z 52.51225438 13.32093336 11.75
+2015-09-05T12:08:02Z 52.51217009 13.32103141 11.75
+2015-09-05T12:08:03Z 52.51207921 13.32116016 12.25
+2015-09-05T12:08:05Z 52.51214781 13.32270956 12.7
+2015-09-05T12:08:06Z 52.51230816 13.32284169 13.25
+2015-09-05T12:08:08Z 52.51251695 13.32295316 12.75
+2015-09-05T12:08:09Z 52.51262432 13.32292613 12.5
+2015-09-05T12:08:10Z 52.51273709 13.32287272 12.75
+2015-09-05T12:08:11Z 52.51285769 13.32281078 13.25
+2015-09-05T12:08:12Z 52.51295951 13.32269025 13.75
+2015-09-05T12:08:13Z 52.51304233 13.32254193 13.75
+2015-09-05T12:08:14Z 52.5131087 13.32237261 14.25
+2015-09-05T12:08:15Z 52.51311077 13.32217575 14.2
+2015-09-05T12:08:16Z 52.51313152 13.32196235 14.1
+2015-09-05T12:08:17Z 52.51314044 13.32174364 14
+2015-09-05T12:08:18Z 52.51315201 13.3215268 13.5
+2015-09-05T12:08:19Z 52.51318207 13.32133836 13.25
+2015-09-05T12:08:20Z 52.51323447 13.32113891 13.75
+2015-09-05T12:08:21Z 52.51329679 13.32095033 14.5
+2015-09-05T12:08:22Z 52.51335489 13.32074722 15.25
+2015-09-05T12:08:23Z 52.51341395 13.32053648 15.75
+2015-09-05T12:08:24Z 52.51348638 13.32028898 17
+2015-09-05T12:08:25Z 52.51354711 13.32003764 17.5
+2015-09-05T12:08:26Z 52.51360387 13.31979319 18
+2015-09-05T12:08:27Z 52.51363858 13.3195135 18
+2015-09-05T12:08:28Z 52.51369441 13.31926256 17.75
+2015-09-05T12:08:29Z 52.51372804 13.31902817 17.5
+2015-09-05T12:08:30Z 52.51376256 13.31876519 17.25
+2015-09-05T12:08:31Z 52.51381141 13.31855713 16.25
+2015-09-05T12:08:32Z 52.51382721 13.3183204 16.25
+2015-09-05T12:08:33Z 52.51386389 13.31809115 16
+2015-09-05T12:08:34Z 52.51390202 13.31785843 16.25
+2015-09-05T12:08:35Z 52.51394914 13.31761346 16.5
+2015-09-05T12:08:36Z 52.51401622 13.31738128 17
+2015-09-05T12:08:37Z 52.51408384 13.31716736 17
+2015-09-05T12:08:38Z 52.51414812 13.31692614 16.75
+2015-09-05T12:08:39Z 52.51421129 13.31671957 16
+2015-09-05T12:08:40Z 52.51427263 13.31651899 15
+2015-09-05T12:08:41Z 52.51434021 13.31633435 14.25
+2015-09-05T12:08:42Z 52.51438284 13.31616873 12.75
+2015-09-05T12:08:43Z 52.51443779 13.31602125 11.25
+2015-09-05T12:08:44Z 52.51447041 13.31590413 6
+2015-09-05T12:08:45Z 52.51450255 13.3158068 4
+2015-09-05T12:08:46Z 52.51452573 13.31573601 2
+2015-09-05T12:08:47Z 52.51458117 13.31561048 0
+2015-09-05T12:08:48Z 52.51458117 13.31561048 0
+2015-09-05T12:08:49Z 52.51458117 13.31561048 0
+2015-09-05T12:08:50Z 52.51458117 13.31561048 0
+2015-09-05T12:08:51Z 52.51458117 13.31561048 0
+2015-09-05T12:08:52Z 52.51458117 13.31561048 0
+2015-09-05T12:08:53Z 52.51458117 13.31561048 0
+2015-09-05T12:08:54Z 52.51458117 13.31561048 0
+2015-09-05T12:08:55Z 52.51458117 13.31561048 0
+2015-09-05T12:08:56Z 52.51458117 13.31561048 0
+2015-09-05T12:08:57Z 52.51458117 13.31561048 0
+2015-09-05T12:08:58Z 52.51458117 13.31561048 0
+2015-09-05T12:08:59Z 52.51458117 13.31561048 0
+2015-09-05T12:09:00Z 52.51458117 13.31561048 0
+2015-09-05T12:09:01Z 52.51458117 13.31561048 0
+2015-09-05T12:09:25Z 52.51458117 13.31561048 0
+2015-09-05T12:09:26Z 52.51458959 13.31557205 0.5
+2015-09-05T12:09:27Z 52.5146037 13.31555254 2
+2015-09-05T12:09:28Z 52.51462065 13.3154895 6
+2015-09-05T12:09:29Z 52.51463745 13.31540706 8
+2015-09-05T12:09:30Z 52.51468456 13.31529157 12
+2015-09-05T12:09:31Z 52.51472741 13.3151552 13
+2015-09-05T12:09:32Z 52.51477592 13.31501556 15
+2015-09-05T12:09:33Z 52.51482271 13.3148667 15
+2015-09-05T12:09:34Z 52.51488544 13.31471432 15
+2015-09-05T12:09:35Z 52.51494017 13.31456723 15
+2015-09-05T12:09:36Z 52.51498837 13.31438972 15
+2015-09-05T12:09:37Z 52.51503578 13.31422477 15
+2015-09-05T12:09:38Z 52.51508779 13.3140462 13
+2015-09-05T12:09:39Z 52.51514339 13.31387257 13.25
+2015-09-05T12:09:40Z 52.51519184 13.31369578 13.5
+2015-09-05T12:09:42Z 52.51530435 13.3133285 14
+2015-09-05T12:09:43Z 52.51535864 13.31315645 15
+2015-09-05T12:09:45Z 52.5154552 13.31280059 18
+2015-09-05T12:09:46Z 52.51551402 13.31263086 19
+2015-09-05T12:09:48Z 52.51562248 13.31228079 20
+2015-09-05T12:09:49Z 52.51568292 13.31213092 20
+2015-09-05T12:09:51Z 52.51579681 13.31179846 20
+2015-09-05T12:09:53Z 52.51589293 13.31146501 20
+2015-09-05T12:09:55Z 52.51600254 13.31112553 20
+2015-09-05T12:09:56Z 52.51605527 13.31095383 20
+2015-09-05T12:09:57Z 52.51612055 13.31079039 20
+2015-09-05T12:09:58Z 52.51618294 13.31060619 20
+2015-09-05T12:10:00Z 52.51630298 13.31026351 13.5
+2015-09-05T12:10:01Z 52.51635003 13.31008531 13.25
+2015-09-05T12:10:02Z 52.51639668 13.30993061 13.25
+2015-09-05T12:10:03Z 52.51645212 13.30975234 12
+2015-09-05T12:10:04Z 52.51650975 13.30957448 10
+2015-09-05T12:10:05Z 52.51656513 13.30939207 7
+2015-09-05T12:10:06Z 52.51663388 13.30919918 7
+2015-09-05T12:10:07Z 52.51670258 13.30900076 7
+2015-09-05T12:10:08Z 52.51676824 13.30879639 10
+2015-09-05T12:10:09Z 52.51683494 13.30859887 15.75
+2015-09-05T12:10:10Z 52.51690757 13.308374 16
+2015-09-05T12:10:11Z 52.51698065 13.3081616 16
+2015-09-05T12:10:12Z 52.51704719 13.30794978 16
+2015-09-05T12:10:13Z 52.51711191 13.30775863 15.75
+2015-09-05T12:10:14Z 52.51719182 13.30754842 15.5
+2015-09-05T12:10:15Z 52.51725976 13.30734841 15.5
+2015-09-05T12:10:16Z 52.51732474 13.3071543 18
+2015-09-05T12:10:18Z 52.51745021 13.30677966 18
+2015-09-05T12:10:19Z 52.51750779 13.30658969 14.25
+2015-09-05T12:10:20Z 52.51756293 13.30640322 14
+2015-09-05T12:10:21Z 52.51761043 13.30621389 14
+2015-09-05T12:10:22Z 52.51767758 13.30603651 13
+2015-09-05T12:10:23Z 52.51774167 13.30586197 12
+2015-09-05T12:10:24Z 52.51779302 13.30569393 10
+2015-09-05T12:10:25Z 52.51784079 13.30553502 8
+2015-09-05T12:10:26Z 52.51788982 13.30539687 5
+2015-09-05T12:10:27Z 52.51793912 13.30525613 3
+2015-09-05T12:10:28Z 52.51796748 13.30517596 2
+2015-09-05T12:10:29Z 52.51798748 13.30508945 1
+2015-09-05T12:10:30Z 52.51801022 13.30502392 1
+2015-09-05T12:10:31Z 52.51802137 13.30495774 2
+2015-09-05T12:10:32Z 52.51803007 13.30491356 2
+2015-09-05T12:10:33Z 52.51804218 13.30488569 2
+2015-09-05T12:10:35Z 52.51804912 13.30486271 1
+2015-09-05T12:10:36Z 52.51804912 13.30486271 0
+2015-09-05T12:10:37Z 52.51804912 13.30486271 0
+2015-09-05T12:10:38Z 52.51804912 13.30486271 0
+2015-09-05T12:10:39Z 52.51804912 13.30486271 0
+2015-09-05T12:10:40Z 52.51804912 13.30486271 0
+2015-09-05T12:10:41Z 52.51804912 13.30486271 0
+2015-09-05T12:10:42Z 52.51804912 13.30486271 0
+2015-09-05T12:10:43Z 52.51804912 13.30486271 0
+2015-09-05T12:10:44Z 52.51804912 13.30486271 0
+2015-09-05T12:10:48Z 52.51804912 13.30486271 0
+2015-09-05T12:10:49Z 52.51804912 13.30486271 0
+2015-09-05T12:11:01Z 52.51804912 13.30486271 0
+2015-09-05T12:11:02Z 52.51804912 13.30486271 4
+2015-09-05T12:11:03Z 52.51800781 13.30475134 5
+2015-09-05T12:11:04Z 52.51801696 13.30469243 6
+2015-09-05T12:11:06Z 52.5181044 13.30444051 9.25
+2015-09-05T12:11:07Z 52.51815052 13.30429866 10.25
+2015-09-05T12:11:08Z 52.51819516 13.30415184 11.5
+2015-09-05T12:11:09Z 52.51825246 13.30401051 11.75
+2015-09-05T12:11:10Z 52.51829686 13.30384851 11.25
+2015-09-05T12:11:11Z 52.51833352 13.30372125 9.75
+2015-09-05T12:11:13Z 52.51841078 13.30351054 7.75
+2015-09-05T12:11:14Z 52.51843562 13.30340522 7.5
+2015-09-05T12:11:16Z 52.51850442 13.30318839 8.25
+2015-09-05T12:11:18Z 52.51856951 13.30294865 9.75
+2015-09-05T12:11:19Z 52.51861796 13.30279111 11
+2015-09-05T12:11:20Z 52.51866996 13.30262715 12.5
+2015-09-05T12:11:21Z 52.51873058 13.30246211 13.25
+2015-09-05T12:11:22Z 52.51879997 13.30228942 13.5
+2015-09-05T12:11:23Z 52.51886097 13.30211154 13.75
+2015-09-05T12:11:24Z 52.51892107 13.30193237 14
+2015-09-05T12:11:25Z 52.51897777 13.30174976 14.5
+2015-09-05T12:11:26Z 52.51905809 13.30155939 15
+2015-09-05T12:11:27Z 52.51913377 13.301359 15.25
+2015-09-05T12:11:28Z 52.51921977 13.30116434 15.75
+2015-09-05T12:11:29Z 52.51930561 13.30095953 16.25
+2015-09-05T12:11:30Z 52.51937872 13.30075751 16.25
+2015-09-05T12:11:31Z 52.51944759 13.3005527 15.75
+2015-09-05T12:11:32Z 52.51950584 13.30036324 14.5
+2015-09-05T12:11:33Z 52.51955125 13.30018836 13.5
+2015-09-05T12:11:34Z 52.51960489 13.30003223 12.25
+2015-09-05T12:11:35Z 52.51965449 13.29988291 11
+2015-09-05T12:11:37Z 52.51976052 13.2996446 10.5
+2015-09-05T12:11:38Z 52.51987735 13.29962687 11.25
+2015-09-05T12:11:40Z 52.52009518 13.29956333 12
+2015-09-05T12:11:42Z 52.52037327 13.29950752 14.75
+2015-09-05T12:11:43Z 52.52051321 13.29949076 15.25
+2015-09-05T12:11:44Z 52.52066204 13.29951053 15.5
+2015-09-05T12:11:45Z 52.5207916 13.29954042 15.25
+2015-09-05T12:11:46Z 52.52093853 13.29962429 16.25
+2015-09-05T12:11:47Z 52.52109696 13.29972242 17.25
+2015-09-05T12:11:48Z 52.521241 13.29982149 17.25
+2015-09-05T12:11:49Z 52.52137435 13.29989859 16.75
+2015-09-05T12:11:50Z 52.52150827 13.29999164 16
+2015-09-05T12:11:51Z 52.52164926 13.30004386 16
+2015-09-05T12:11:52Z 52.5217681 13.30010016 15.25
+2015-09-05T12:11:54Z 52.52200134 13.3002516 13
+2015-09-05T12:11:55Z 52.52210925 13.30030384 12
+2015-09-05T12:11:57Z 52.52231585 13.30038282 12
+2015-09-05T12:11:58Z 52.52243302 13.30040604 12
+2015-09-05T12:12:00Z 52.52261254 13.3003431 10.5
+2015-09-05T12:12:01Z 52.52271428 13.30021824 12.5
+2015-09-05T12:12:02Z 52.52281451 13.30008364 13.75
+2015-09-05T12:12:03Z 52.52292202 13.29994087 14.75
+2015-09-05T12:12:04Z 52.52303252 13.29978834 15.75
+2015-09-05T12:12:05Z 52.5231482 13.29965158 16.5
+2015-09-05T12:12:06Z 52.52327826 13.29949762 16.75
+2015-09-05T12:12:07Z 52.52340368 13.29935447 16.75
+2015-09-05T12:12:08Z 52.52352101 13.29920172 16.75
+2015-09-05T12:12:09Z 52.52365446 13.29905746 17
+2015-09-05T12:12:10Z 52.52378148 13.29890353 17.25
+2015-09-05T12:12:12Z 52.52402153 13.29860641 16.75
+2015-09-05T12:12:13Z 52.52411081 13.29841702 16.5
+2015-09-05T12:12:14Z 52.52424135 13.29830058 16.5
+2015-09-05T12:12:15Z 52.52436638 13.29816737 16
+2015-09-05T12:12:16Z 52.52446716 13.2980157 16
+2015-09-05T12:12:17Z 52.52462973 13.29798207 17
+2015-09-05T12:12:18Z 52.52480111 13.29794531 17
+2015-09-05T12:12:19Z 52.52494289 13.29786495 17
+2015-09-05T12:12:20Z 52.52509265 13.29780823 16.75
+2015-09-05T12:12:22Z 52.52539702 13.29770767 16.5
+2015-09-05T12:12:23Z 52.52554415 13.29766138 16.25
+2015-09-05T12:12:24Z 52.52566597 13.29762643 15.75
+2015-09-05T12:12:25Z 52.52579703 13.29757963 15
+2015-09-05T12:12:27Z 52.52602969 13.29751156 13.25
+2015-09-05T12:12:28Z 52.52613122 13.29749605 8
+2015-09-05T12:12:30Z 52.52626736 13.29744551 2
+2015-09-05T12:12:31Z 52.52631239 13.29742453 6
+2015-09-05T12:12:32Z 52.52636239 13.29741986 7
+2015-09-05T12:12:33Z 52.52637241 13.2973977 8
+2015-09-05T12:12:34Z 52.52638461 13.29738601 8
+2015-09-05T12:12:36Z 52.52649587 13.29735565 10
+2015-09-05T12:12:37Z 52.52656971 13.29734089 10
+2015-09-05T12:12:39Z 52.52675742 13.29727581 13
+2015-09-05T12:12:40Z 52.52685465 13.29724524 13
+2015-09-05T12:12:41Z 52.52698288 13.29721363 13.75
+2015-09-05T12:12:42Z 52.52712815 13.29718887 15
+2015-09-05T12:12:43Z 52.52727466 13.29714275 15.5
+2015-09-05T12:12:44Z 52.52741721 13.29710303 16
+2015-09-05T12:12:45Z 52.5275556 13.29706051 16.75
+2015-09-05T12:12:46Z 52.52770829 13.2970188 17
+2015-09-05T12:12:47Z 52.5278635 13.29697924 17
+2015-09-05T12:12:48Z 52.52801656 13.29691754 17.25
+2015-09-05T12:12:49Z 52.52816582 13.29688778 17.25
+2015-09-05T12:12:50Z 52.52829543 13.29686867 17
+2015-09-05T12:12:51Z 52.52845507 13.29682107 17
+2015-09-05T12:12:52Z 52.52858996 13.29677423 16
+2015-09-05T12:12:53Z 52.52871555 13.2967109 15.5
+2015-09-05T12:12:54Z 52.52885921 13.29665282 14.5
+2015-09-05T12:12:56Z 52.52895502 13.29660091 12.75
+2015-09-05T12:12:56Z 52.52904896 13.29656869 10.5
+2015-09-05T12:12:57Z 52.52912413 13.2965424 8.25
+2015-09-05T12:12:58Z 52.52918585 13.29653271 7.5
+2015-09-05T12:13:00Z 52.52921653 13.29651073 2
+2015-09-05T12:13:01Z 52.52922238 13.29649367 1.5
+2015-09-05T12:13:02Z 52.52925618 13.29647736 1.5
+2015-09-05T12:13:03Z 52.52930662 13.2964524 7
+2015-09-05T12:13:04Z 52.52937431 13.29641287 9
+2015-09-05T12:13:05Z 52.5294619 13.29639276 10.25
+2015-09-05T12:13:07Z 52.52965845 13.29630116 11.25
+2015-09-05T12:13:09Z 52.52982795 13.29621996 12
+2015-09-05T12:13:10Z 52.52994764 13.29620619 12
+2015-09-05T12:13:12Z 52.53010295 13.29612776 9
+2015-09-05T12:13:13Z 52.53013393 13.2961206 5.75
+2015-09-05T12:13:14Z 52.53016507 13.29610034 1
+2015-09-05T12:13:15Z 52.53019422 13.29608721 1
+2015-09-05T12:13:16Z 52.53020801 13.29606935 0.75
+2015-09-05T12:13:17Z 52.5302122 13.29606274 1.25
+2015-09-05T12:13:18Z 52.53024946 13.29604821 6
+2015-09-05T12:13:19Z 52.53030715 13.29602334 9
+2015-09-05T12:13:20Z 52.53038711 13.29598857 10
+2015-09-05T12:13:21Z 52.53047083 13.29596657 10
+2015-09-05T12:13:22Z 52.53057842 13.29592935 11.25
+2015-09-05T12:13:23Z 52.53068405 13.29588008 12.5
+2015-09-05T12:13:24Z 52.5308031 13.29581818 13
+2015-09-05T12:13:26Z 52.53093986 13.295783 14.25
+2015-09-05T12:13:26Z 52.53106913 13.295731 14.75
+2015-09-05T12:13:27Z 52.53121371 13.29568037 15.75
+2015-09-05T12:13:28Z 52.53136392 13.29559031 16.25
+2015-09-05T12:13:29Z 52.53151062 13.29550828 16.75
+2015-09-05T12:13:30Z 52.5316618 13.29541943 17.5
+2015-09-05T12:13:31Z 52.53181286 13.29533433 18
+2015-09-05T12:13:32Z 52.53196492 13.29525693 18.25
+2015-09-05T12:13:33Z 52.53210498 13.295164 18
+2015-09-05T12:13:34Z 52.53225574 13.29505752 17.5
+2015-09-05T12:13:35Z 52.53239675 13.29495972 16.75
+2015-09-05T12:13:36Z 52.53252495 13.29488186 15.25
+2015-09-05T12:13:37Z 52.53265589 13.29479821 15
+2015-09-05T12:13:38Z 52.53275829 13.29471747 13.25
+2015-09-05T12:13:39Z 52.53287997 13.29464164 13
+2015-09-05T12:13:40Z 52.53295934 13.29460103 10.75
+2015-09-05T12:13:41Z 52.53304084 13.29455206 10
+2015-09-05T12:13:42Z 52.53312045 13.29450915 9
+2015-09-05T12:13:43Z 52.53319693 13.29447321 8.5
+2015-09-05T12:13:44Z 52.5332477 13.29441171 7.5
+2015-09-05T12:13:45Z 52.53328871 13.29437949 6.5
+2015-09-05T12:13:46Z 52.53335948 13.2943418 7.25
+2015-09-05T12:13:47Z 52.53343417 13.29429497 8.5
+2015-09-05T12:13:48Z 52.53350265 13.29424339 8.5
+2015-09-05T12:13:49Z 52.53355621 13.29417582 8.5
+2015-09-05T12:13:50Z 52.53362195 13.29412472 8.5
+2015-09-05T12:13:51Z 52.53370878 13.29404578 9.75
+2015-09-05T12:13:52Z 52.533759 13.29401406 8.75
+2015-09-05T12:13:53Z 52.53380292 13.29398094 7
+2015-09-05T12:13:54Z 52.53384919 13.29396634 5.75
+2015-09-05T12:13:55Z 52.53389085 13.2939574 1
+2015-09-05T12:13:56Z 52.53391694 13.2939574 1
+2015-09-05T12:13:57Z 52.53392919 13.2939574 0.25
+2015-09-05T12:13:58Z 52.53392919 13.2939574 0
+2015-09-05T12:13:59Z 52.53392919 13.2939574 0
+2015-09-05T12:14:00Z 52.53392919 13.2939574 0
+2015-09-05T12:14:01Z 52.53392919 13.2939574 0
+2015-09-05T12:14:02Z 52.53392919 13.2939574 0
+2015-09-05T12:14:03Z 52.53392919 13.2939574 0
+2015-09-05T12:14:04Z 52.53392919 13.2939574 0
+2015-09-05T12:14:05Z 52.53392919 13.2939574 0
+2015-09-05T12:14:06Z 52.53392919 13.2939574 0.5
+2015-09-05T12:14:07Z 52.53402049 13.29395039 4
+2015-09-05T12:14:08Z 52.53402049 13.29395039 8
+2015-09-05T12:14:09Z 52.53409993 13.29398429 8.5
+2015-09-05T12:14:10Z 52.5341833 13.29402841 9.5
+2015-09-05T12:14:11Z 52.53427766 13.29409014 10.75
+2015-09-05T12:14:12Z 52.53436979 13.29414148 10.75
+2015-09-05T12:14:13Z 52.53446361 13.29414203 10
+2015-09-05T12:14:14Z 52.53456694 13.29410642 9
+2015-09-05T12:14:15Z 52.53466426 13.29402845 6
+2015-09-05T12:14:16Z 52.53474216 13.29390552 4
+
diff --git a/doc/src/snippets/qtcluster/qml/ConsumptionView.qml b/doc/src/snippets/qtcluster/qml/ConsumptionView.qml
new file mode 100644
index 00000000..952a6e29
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/ConsumptionView.qml
@@ -0,0 +1,176 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+import QtQuick.Layouts 1.1
+
+import ClusterDemo 1.0
+
+Item{
+ id: consumptionView
+ anchors.fill: parent
+
+ ListView {
+ id: listView
+
+ height: 260
+ width: 260
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.left: parent.left
+ anchors.leftMargin: (ValueSource.carId === 0) ? parent.width / 6 : parent.width / 4.5
+
+ header: Item {
+ width: listView.width
+ height: 30
+ Text {
+ anchors.fill: parent
+ text: "Consumption past 100 km"
+ horizontalAlignment: Text.AlignRight
+ color: "white"
+ font.pixelSize: 15
+ }
+ }
+
+ model: 13//contactModel
+ delegate: Row {
+ spacing: 15
+ Text {
+ id: levelText
+ horizontalAlignment: Text.AlignRight
+ y: -levelText.height / 2
+ width: 60
+ text: {
+ if (index === 0)
+ levelText.text = "900"
+ else if (index === 9)
+ levelText.text = "0"
+ else if (index === 12)
+ levelText.text = "-300"
+ else
+ levelText.text=""
+ }
+ color: "#717273"
+ font.pixelSize: 12
+ }
+ Rectangle {
+ id: levelLine
+ visible: index != 6 ? true : false
+ color: index === 8 ? "#717273" : "#26282a";
+ width: index === 8 ? listView.width / 1.5 : listView.width / 1.6;
+ height: 1
+ }
+ Row {
+ visible: index === 6 ? true : false
+ spacing: 4
+ Repeater {
+ model: 22
+ Rectangle {
+ id: avgLine
+ color: "#717273"
+ width: 4
+ height: 1
+ }
+ }
+ }
+ Text {
+ id: avgTExt
+ y: -avgTExt.height / 4
+ text:{
+ if (index === 5)
+ avgTExt.text = " Avg"
+ else if (index === 6)
+ avgTExt.text = "300"
+ else if (index === 8)
+ avgTExt.text = "IDEAL"
+ else
+ avgTExt.text=""
+ }
+ color: "#717273"
+ font.pixelSize: 12
+ }
+ }
+ }
+
+ Repeater {
+ id: repeater
+ property real listHeaderHeight: listView.headerItem.height
+ property real listContentItemHeight: listView.contentItem.height
+ property int listCount: listView.count
+ property real spaceInPixels: listContentItemHeight / listCount
+ model: 33
+ Rectangle {
+ id: valueRect
+ color: {
+ if (ValueSource.consumption[index] >= 100 )
+ "white"
+ else {
+ color = (ValueSource.carId === 0) ? "blue" : "#E31E24"
+ }
+ }
+ width: 2
+ height: {
+ var levelCount = ValueSource.consumption[index] / 100
+ if (ValueSource.consumption[index] >= 100 ) {
+ repeater.height = repeater.spaceInPixels * levelCount
+ - repeater.spaceInPixels - 2 * levelCount //2 is line width
+ }
+ else {
+ repeater.height = Math.abs(repeater.spaceInPixels * levelCount
+ - 2 * levelCount)//2 is line width)
+ }
+ }
+ x: listView.x + 75 + index * 5
+ y:{
+ if (ValueSource.consumption[index] >= 100 ) {
+ repeater.y = (listView.y + repeater.listHeaderHeight
+ + repeater.spaceInPixels * 7) - height
+ }
+ else {
+ repeater.y = listView.y + repeater.listHeaderHeight
+ + repeater.spaceInPixels * 7
+ }
+ }
+ }
+
+ }
+}
+
+
+
diff --git a/doc/src/snippets/qtcluster/qml/FpsCounter.qml b/doc/src/snippets/qtcluster/qml/FpsCounter.qml
new file mode 100644
index 00000000..46ffb726
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/FpsCounter.qml
@@ -0,0 +1,99 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.6
+
+Item {
+ id: fpscounter
+ property real fpsNow: 0
+ property bool running: false
+ property alias fpsVisible: fpsLabel.visible
+ property int fpsInterval: 1000
+ property alias color: fpsLabel.color
+
+ Item {
+ id: swapTest
+ property real t
+ NumberAnimation on t {
+ running: fpscounter.running
+ from: 0
+ to: 1
+ duration: fpsInterval
+ loops: Animation.Infinite
+ }
+ onTChanged: {
+ ++fpsTimer.tick
+ }
+ }
+
+ Timer {
+ id: fpsTimer
+ running: fpscounter.running
+ repeat: true
+ interval: fpsInterval
+ property var lastFrameTime: new Date()
+ property int tick
+
+ onTriggered: {
+ var now = new Date()
+ var dt = now.getTime() - lastFrameTime.getTime()
+ lastFrameTime = now
+ var fps = (tick * fpsInterval) / dt
+ fpsNow = Math.round(fps * 10) / 10
+ tick = 0
+
+ if (fpsVisible)
+ fpsLabel.updateYerself()
+ }
+ }
+
+ Text {
+ id: fpsLabel
+ visible: false
+
+ anchors.centerIn: parent
+ font.pixelSize: 10
+ color: "white"
+
+ function updateYerself() {
+ text = Math.round(fpsNow)
+ }
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/MapView.qml b/doc/src/snippets/qtcluster/qml/MapView.qml
new file mode 100644
index 00000000..59a009db
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/MapView.qml
@@ -0,0 +1,136 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+import QtLocation 5.5
+import QtPositioning 5.5
+import QtGraphicalEffects 1.0
+import ClusterDemo 1.0
+
+Item {
+ width: root.width / 3
+ height: width
+
+ Map {
+ id: map
+ width: parent.width + 300
+ height: parent.height + 300
+ x: -150
+ y: -150
+ property real speed
+
+ plugin: Plugin {
+ id: plugin
+ preferred: ["mapbox"]
+ PluginParameter { name: "mapbox.access_token"; value: "pk.eyJ1IjoicXRjbHVzdGVyIiwiYSI6ImZiYTNiM2I0MDE2NmNlYmY0ZmM5NWMzZDVmYzI4NjFlIn0.uk3t7Oi9lDByIJd2E0vRWg" }
+ PluginParameter { name: "mapbox.map_id"; value: "qtcluster.ndeb6ce6" }
+ }
+
+ center: QtPositioning.coordinate(ValueSource.latitude, ValueSource.longitude)
+
+ zoomLevel: 16
+
+ enabled: false
+
+ rotation: -ValueSource.direction
+
+ Behavior on rotation {
+ RotationAnimation {
+ duration: 2000
+ direction: RotationAnimation.Shortest
+ }
+ }
+
+// uncomment ifndef QTIVIVEHICLEFUNCTIONS
+// PositionSource {
+// id: positionSource
+// nmeaSource: "qrc:/qml/route.txt"
+// onPositionChanged: {
+
+// if (position.speedValid) {
+// // center the map on the current position
+// if (position.direction > 0) {
+// map.rotation = -position.direction
+// map.center = position.coordinate
+// }
+
+// ValueSource.kph = position.speed * 3.6
+// ValueSource.oldSpeed.shift()
+// ValueSource.oldSpeed.push(position.speed * 3.6)
+// ValueSource.speedChanged()
+// //routeStopped.restart()
+// }
+// }
+// }
+// Component.onCompleted:{
+// positionSource.start()
+// //routeStopped.running = true
+// }
+// end comment
+
+ Behavior on center {
+ id: centerBehavior
+ enabled: true
+ CoordinateAnimation { duration: 1500 }
+ }
+ }
+
+ FastBlur {
+ anchors.fill: map
+ source: map
+ radius: 0.01
+ rotation: map.rotation
+ }
+
+ Image {
+ id: positionImage
+ anchors.centerIn: parent
+ source: mapPositionImage
+ }
+
+ Text {
+ color: "white"
+ anchors.bottom: parent.bottom
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottomMargin: (ValueSource.carId === 0) ? 75 : 0
+ font.pixelSize: 9
+ text:"© Mapbox © OpenStreetMap"
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/MediaPlayerView.qml b/doc/src/snippets/qtcluster/qml/MediaPlayerView.qml
new file mode 100644
index 00000000..ea9db405
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/MediaPlayerView.qml
@@ -0,0 +1,116 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+
+import ClusterDemo 1.0
+
+Item {
+ id: playerView
+
+ property real xCenter: remainingTimeImage.width / 2
+ property real yCenter: remainingTimeImage.height / 2
+ property var timeElapsed: ValueSource.musicElapsed
+
+ Image {
+ id: musicCover
+ anchors.top: parent.top
+ anchors.topMargin: (ValueSource.carId === 0) ? 160 : 70
+ anchors.horizontalCenter: parent.horizontalCenter
+ source: "image://etc/MusicPlayer_Cover.png"
+ }
+
+ Image {
+ id: remainingTimeImage
+ anchors.centerIn: musicCover
+ source: "image://etc/MusicPlayer_CircleRemaining.png"
+ }
+
+ Text {
+ id: song
+ anchors.top: remainingTimeImage.bottom
+ anchors.topMargin: 10
+ anchors.horizontalCenter: remainingTimeImage.horizontalCenter
+ text: "Tonight's the Night \n(Gonna Be Alright)"
+ font.pixelSize: 12
+ color: "white"
+ }
+ Text {
+ anchors.top: song.bottom
+ anchors.horizontalCenter: song.horizontalCenter
+ text: "ROD STEWART"
+ font.pixelSize: 10
+ color: "white"
+ }
+
+ function paintBackground(ctx) {
+ ctx.beginPath()
+ ctx.lineWidth = 2
+ ctx.strokeStyle = "white"
+ ctx.arc(xCenter, yCenter, yCenter - ctx.lineWidth / 2, 1.5 * Math.PI,
+ 2 * Math.PI * timeElapsed / 100 + 1.5 * Math.PI)
+ ctx.stroke()
+ }
+
+ Canvas {
+ id: canvas
+ width: remainingTimeImage.width
+ height: width
+ anchors.centerIn: musicCover
+ onPaint: {
+ var ctx = getContext("2d")
+ ctx.reset()
+ paintBackground(ctx)
+ }
+ }
+ onTimeElapsedChanged: {
+ canvas.requestPaint()
+ }
+
+ //Do not play music timer if view not visible
+ Component.onCompleted: ValueSource.musicTimer.running = true
+ onVisibleChanged: {
+ if (!visible)
+ ValueSource.musicTimer.running = false
+ else
+ ValueSource.musicTimer.running = true
+ }
+}
+
diff --git a/doc/src/snippets/qtcluster/qml/TurnIndicator.qml b/doc/src/snippets/qtcluster/qml/TurnIndicator.qml
new file mode 100644
index 00000000..a78d92ee
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/TurnIndicator.qml
@@ -0,0 +1,64 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.6
+import ClusterDemo 1.0
+
+Item {
+ property int direction: Qt.NoArrow
+ property bool active: false
+ property bool flashing: false
+
+ property url iconOn: "image://etc/Icon_TurnLeft_ON.png"
+ property url iconOff: "image://etc/Icon_TurnLeft_OFF.png"
+
+ Timer {
+ interval: 500
+ running: (direction !== Qt.NoArrow)
+ repeat: true
+ onTriggered: flashing = !flashing
+ }
+
+ Image {
+ source: (active && flashing) ? iconOn : iconOff
+ mirror: direction === Qt.RightArrow
+ anchors.centerIn: parent
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/ValueSource.qml b/doc/src/snippets/qtcluster/qml/ValueSource.qml
new file mode 100644
index 00000000..a6344654
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/ValueSource.qml
@@ -0,0 +1,436 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+pragma Singleton
+import QtQuick 2.6
+// comment ifndef QTIVIVEHICLEFUNCTIONS
+//import QtIVIVehicleFunctions 1.0
+import ClusterDemoData 1.0
+
+Item {
+ id: valueSource
+ property real kph: 0
+ property real consumeKW: 0
+ property real maxConsumeKWValue: 90
+ property real maxChargeKWValue: 40
+ property real chargeKW: 0
+ property real maxRange: 600
+ property real range: (batteryLevel / 100) * maxRange
+
+ property bool runningInDesigner: false
+
+ property var consumption: [300, 600, 700, 800, 900, 700, 600, 300, 50, 50, -100, 50, -100, -150,
+ -200, 50, 150, 200, 300, 200, 300, 200, 500, 50, -100, -100, -150, -80, 50, 300, 600, 700, 800,
+ 600, 700, 300, 50, 50]
+
+ property var turnSignal
+ property var currentDate: new Date()
+ //property string date: currentDate.toLocaleDateString(Qt.locale("fi_FI"), "ddd d. MMM")
+ //property string time: currentDate.toLocaleTimeString(Qt.locale("fi_FI"), "hh:mm")
+ property string date: currentDate.toLocaleDateString(Qt.locale("en_GB"))
+ property string time: currentDate.toLocaleTimeString(Qt.locale("en_GB"), "hh:mm")
+
+ ClusterData {
+ id: clusterDataSource
+
+ onVehicleSpeedChanged: {
+ kph = vehicleSpeed
+ if (carId === 0 && !fastBootDemo) {
+ oldSpeed.shift()
+ oldSpeed.push(vehicleSpeed)
+ speedChanged()
+ }
+ }
+ property int notLeft: ~Qt.LeftArrow
+ property int notRight: ~Qt.RightArrow
+ onLeftTurnLightChanged: leftTurnLight ? turnSignal |= Qt.LeftArrow
+ : turnSignal &= notLeft
+ onRightTurnLightChanged: rightTurnLight ? turnSignal |= Qt.RightArrow
+ : turnSignal &= notRight
+ }
+
+ // comment ifndef QTIVIVEHICLEFUNCTIONS
+ property real latitude: clusterDataSource.latitude
+ property real longitude: clusterDataSource.longitude
+ property real direction: clusterDataSource.direction
+ property bool lowBeam: clusterDataSource.headLight
+ property int carId: clusterDataSource.carId
+ property bool lightFailure: clusterDataSource.lightFailure
+ property bool flatTire: clusterDataSource.flatTire
+
+ property bool frontLeftOpen: false
+ property bool frontRightOpen: false
+ property bool rearLeftDoorOpen: false
+ property bool rearRighDoorOpen: false
+ property bool hoodOpen: false
+ property bool trunkOpen: false
+
+ property double batteryLevel: clusterDataSource.batteryPotential
+ property double fuelLevel: clusterDataSource.gasLevel
+ property int gear: clusterDataSource.gear
+ property bool parkingBrake: clusterDataSource.brake
+ // TODO: These two are hacks. View change messages might not come through CAN.
+ property bool viewChange: clusterDataSource.oilTemp
+ property bool rightViewChange: clusterDataSource.oilPressure
+
+ //
+ // ENABLE FOR FAST BOOT DEMO (or otherwise with no CanController)
+ //
+ property bool fastBootDemo: true
+
+ // TODO: Park light used for automatic demo mode for now
+ property bool automaticDemoMode: fastBootDemo ? true : clusterDataSource.parkLight
+
+ //
+ // Speed animations for fast boot demo
+ //
+ Timer {
+ running: fastBootDemo
+ interval: 4000
+ onTriggered: animation.start()
+ }
+
+ Timer {
+ running: fastBootDemo
+ property bool turnLeft: true
+ repeat: true
+ interval: 5000
+ onTriggered: {
+ turnLeft = !turnLeft
+ if (turnLeft)
+ turnSignal = Qt.LeftArrow
+ else
+ turnSignal = Qt.RightArrow
+ stopSignaling.start()
+ }
+ }
+
+ Timer {
+ id: stopSignaling
+ running: false
+ interval: 2100
+ onTriggered: turnSignal = Qt.NoArrow
+ }
+
+ Behavior on fuelLevel {
+ enabled: fastBootDemo
+ PropertyAnimation {
+ duration: 18000
+ }
+ }
+
+ Behavior on batteryLevel {
+ enabled: fastBootDemo
+ PropertyAnimation {
+ duration: 18000
+ }
+ }
+
+ onFuelLevelChanged: {
+ if (fastBootDemo && fuelLevel <= 5)
+ fuelLevel = 100
+ }
+
+ onBatteryLevelChanged: {
+ if (fastBootDemo && batteryLevel <= 5)
+ batteryLevel = 100
+ }
+
+ SequentialAnimation {
+ id: animation
+ running: false
+ loops: Animation.Infinite
+
+ ScriptAction {
+ script: {
+ gear = 0
+ parkingBrake = true
+ consumeKW = 0
+ chargeKW = 0
+ }
+ }
+ PauseAnimation { duration: 2000 }
+ ScriptAction {
+ script: {
+ parkingBrake = false
+ gear = 1
+ fuelLevel -= 10.
+ batteryLevel -= 10.
+ }
+ }
+ ParallelAnimation {
+ PropertyAnimation {
+ target: valueSource
+ property: "kph"
+ from: 0
+ to: 150
+ duration: 10000
+ }
+ PropertyAnimation {
+ target: valueSource
+ property: "consumeKW"
+ from: 0
+ to: 75
+ duration: 10000
+ }
+ }
+ ParallelAnimation {
+ PropertyAnimation {
+ target: valueSource
+ property: "kph"
+ from: 150
+ to: 120
+ duration: 500
+ }
+ PropertyAnimation {
+ target: valueSource
+ property: "consumeKW"
+ from: 75
+ to: 0
+ duration: 100
+ }
+ PropertyAnimation {
+ target: valueSource
+ property: "chargeKW"
+ from: 0
+ to: 40
+ duration: 500
+ }
+ }
+ ParallelAnimation {
+ PropertyAnimation {
+ target: valueSource
+ property: "kph"
+ from: 120
+ to: 200
+ duration: 1500
+ }
+ PropertyAnimation {
+ target: valueSource
+ property: "consumeKW"
+ from: 0
+ to: 90
+ duration: 1500
+ }
+ PropertyAnimation {
+ target: valueSource
+ property: "chargeKW"
+ from: 40
+ to: 0
+ duration: 100
+ }
+ }
+ ParallelAnimation {
+ PropertyAnimation {
+ target: valueSource
+ property: "kph"
+ from: 200
+ to: 0
+ duration: 6000
+ }
+ PropertyAnimation {
+ target: valueSource
+ property: "consumeKW"
+ from: 90
+ to: 0
+ duration: 600
+ }
+ PropertyAnimation {
+ target: valueSource
+ property: "chargeKW"
+ from: 0
+ to: 40
+ duration: 3000
+ }
+ }
+ }
+
+ property int simuRpm: fastBootDemo ? kph * 40 : kph * 150
+ property double simuTemperature: fastBootDemo ? kph * .25 + 60. : kph * .5 + 50.
+
+ // In normal Car UI mode only speed is animated based on gps data
+ // In automatic demo mode rpm, turbo, consumption and engine temperature are based on speed
+ property int rpm: automaticDemoMode ? simuRpm : clusterDataSource.rpm
+ property double engineTemperature: automaticDemoMode ? simuTemperature
+ : clusterDataSource.engineTemp
+
+ property int totalDistance: 42300
+ property int kmSinceCharge: 8
+ property int avRangePerCharge: 425
+ property int energyPerKm: 324
+
+ property real totalDistanceSince: 0.
+
+ property string gearString: {
+ var g
+ if (gear === 0 || gear < -1)
+ return "N"
+ else if (gear === -1)
+ return "R"
+ else if (carId === 1) //sports car
+ return gear.toString()
+ else
+ return "D"
+ }
+
+ Timer {
+ id: timeTimer
+ interval: 15000
+ repeat: true
+ running: true
+ onTriggered: {
+ currentDate = new Date()
+ //date = currentDate.toLocaleDateString(Qt.locale("fi_FI"), "ddd d. MMM")
+ //time = currentDate.toLocaleTimeString(Qt.locale("fi_FI"), "hh:mm")
+ date = currentDate.toLocaleDateString(Qt.locale("en_GB"))
+ time = currentDate.toLocaleTimeString(Qt.locale("en_GB"), "hh:mm")
+ // Approximate total distance based on current speed
+ totalDistanceSince += kph / 240. // = km / 15 min
+ if (totalDistanceSince > 1.) {
+ var totalInt = Math.floor(totalDistanceSince)
+ totalDistance += totalInt
+ kmSinceCharge += totalInt
+ totalDistanceSince -= totalInt
+ }
+ }
+ }
+
+ Timer {
+ id: backCutTimer
+ interval: 1000
+ repeat: true
+ running: true
+ onTriggered: {
+ backCut = kph
+ }
+ }
+
+ property real temperature: 0.6
+ property alias musicTimer: musicTimer
+ property real backCut: 0 //For needle tail gradient
+ property real musicElapsed: 0
+
+ Timer {
+ id: musicTimer
+ interval: 2000
+ running: false
+ repeat: true
+ onTriggered: {
+ if (musicElapsed < 100)
+ musicElapsed++
+ else
+ musicElapsed = 0
+ }
+ }
+
+ Behavior on kph {
+ enabled: !fastBootDemo
+ PropertyAnimation { duration: 2000 }
+ }
+
+ //
+ // For electric car KwGauge animation
+ //
+ property var oldSpeed: [0, 0, 0]
+ signal speedChanged
+
+ SequentialAnimation {
+ id: reduceSpeedAnim
+ running: (carId === 0 && !fastBootDemo)
+ property alias chargeTo: charge.to
+ NumberAnimation {
+ target: valueSource
+ property: "consumeKW"
+ duration: 600
+ to: 0
+ }
+ NumberAnimation {
+ id: charge
+ target: valueSource
+ property: "chargeKW"
+ duration: 600
+ }
+ }
+
+ SequentialAnimation {
+ id: addSpeedAnim
+ running: (carId === 0 && !fastBootDemo)
+ property alias consumeTo: consume.to
+ NumberAnimation {
+ target: valueSource
+ property: "chargeKW"
+ duration: 600
+ to: 0
+
+ }
+ NumberAnimation {
+ id: consume
+ target: valueSource
+ property: "consumeKW"
+ duration: 600
+ }
+ }
+
+ onSpeedChanged: {
+ var speedChange = oldSpeed[1] - oldSpeed[0]
+ if (speedChange > 2) {
+ //"adding speed"
+ var newKW = Math.min(maxConsumeKWValue * 0.8, 10 * speedChange)
+ addSpeedAnim.consumeTo = newKW
+ addSpeedAnim.restart()
+ } else if (speedChange < -2) {
+ //"reducing speed"
+ newKW = Math.min(maxChargeKWValue * 0.8, 2 * Math.abs(speedChange))
+ reduceSpeedAnim.chargeTo = newKW
+ reduceSpeedAnim.restart()
+ } else if (Math.abs(speedChange) >= 0 && oldSpeed[1] !== 0) {
+ //Speed just about the same but still moving
+ addSpeedAnim.consumeTo = Math.min(maxConsumeKWValue * (kph / 100),
+ maxConsumeKWValue * 0.5)
+ addSpeedAnim.restart()
+ }
+ if (kph <= 0.1) {
+ addSpeedAnim.consumeTo = 0
+ reduceSpeedAnim.chargeTo = 0
+ addSpeedAnim.restart()
+ reduceSpeedAnim.restart()
+ }
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/VehicleInfoNote.qml b/doc/src/snippets/qtcluster/qml/VehicleInfoNote.qml
new file mode 100644
index 00000000..d0ad6cee
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/VehicleInfoNote.qml
@@ -0,0 +1,163 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.2
+
+Item {
+ id: infoNote
+ height: 70
+ width: noteImage.width
+ anchors.bottom: car.bottom
+ visible: noteVisible && highlightType && !car.hidden
+ property int fixedPositionX: 0
+ property color textColor: "white"
+ property bool noteVisible: false
+ property int highlightType: main.carModelHighlightType
+
+ Image {
+ id: noteImage
+ source: "image://etc/InfoNoteBackground.png"
+ opacity: 0.75
+ }
+
+ Timer {
+ id: waitForCamera
+ interval: 800
+ running: false
+ onTriggered: {
+ noteVisible = true
+ if (fixedPositionX === 0)
+ infoNote.x = car.item.x + (car.item.width - noteImage.width) / 2
+ else
+ x = fixedPositionX - (noteImage.width / 2)
+ }
+ }
+
+ onHighlightTypeChanged: {
+ if (highlightType)
+ waitForCamera.restart()
+ else
+ noteVisible = false
+ }
+
+ Text {
+ id: pressureText
+ anchors.centerIn: parent
+ visible: infoNote.visible && (highlightType >= 0 && highlightType <= 4)
+ color: textColor
+ font.pixelSize: 16
+ font.weight: Font.DemiBold
+ }
+
+ Text {
+ id: bulbText
+ anchors.centerIn: parent
+ visible: highlightType >= 5
+ text: "Lightbulb"
+ color: textColor
+ font.pixelSize: 16
+ font.weight: Font.DemiBold
+ }
+
+ Text {
+ id: doorText
+ anchors.centerIn: parent
+ visible: highlightType === -1
+ text: "Check doors"
+ color: textColor
+ font.pixelSize: 16
+ font.weight: Font.DemiBold
+ }
+
+ onVisibleChanged: {
+ if (visible) {
+ infoNote.anchors.horizontalCenterOffset = 0
+ if (highlightType === -1) {
+ //infoNote.width = doorText.contentWidth + 40
+ //infoNote.height = 40
+ } else {
+ if (highlightType <= 4) {
+ var pressure = Math.random() + 1
+ //var temperature = Math.random() * 12 + 20
+ pressureText.text = pressure.toFixed(1) + " bar"
+ //temperatureText.text = temperature.toFixed(1) + " \u00B0C"
+
+ //infoNote.width = pressureText.contentWidth + 40
+ //infoNote.height = 40
+ } else {
+ switch (highlightType) {
+ case 5:
+ bulbText.text = "Check left headlight"
+ break
+
+ case 6:
+ bulbText.text = "Check right headlight"
+ break
+
+ case 7:
+ bulbText.text = "Check right daylight"
+ break
+
+ case 8:
+ bulbText.text = "Check left daylight"
+ break
+
+ case 9:
+ infoNote.anchors.verticalCenterOffset = 60
+ bulbText.text = "Check left taillight"
+ break
+
+ case 10:
+ infoNote.anchors.verticalCenterOffset = 60
+ bulbText.text = "Check right taillight"
+ break
+
+ default:
+ // Coding fault if we get here, undefined code
+ bulbText.text = "Check lights"
+ }
+
+ //infoNote.width = bulbText.contentWidth + 40
+ //infoNote.height = 40
+ }
+ }
+ }
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/VideoView.qml b/doc/src/snippets/qtcluster/qml/VideoView.qml
new file mode 100644
index 00000000..5a731717
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/VideoView.qml
@@ -0,0 +1,102 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.5
+import QtMultimedia 5.5
+import ClusterDemo 1.0
+
+Item {
+ property alias imageSource: overlay.source
+
+ visible: true
+
+ /* TODO replace with image */
+ MediaPlayer {
+ id: video
+ autoPlay: false
+ muted: true
+ //source: "file:///data/user/qt/qtcluster/video/reversing_video.3gp"
+ // Switch to still image after reversing video is finished, or an error occurs
+ onError: {
+ stillView.visible = true
+ console.log("Error playing video: " + error + ": " + errorString)
+ }
+ onStatusChanged: {
+ if (status === MediaPlayer.EndOfMedia)
+ stillView.visible = true
+ }
+ }
+
+ VideoOutput {
+ id: videoOutput
+
+ source: video //camera
+ anchors.centerIn: parent
+ height: 480 - 180
+ width: 1280 / 2.1
+ fillMode: Image.Stretch
+
+ Image {
+ id: stillView
+ visible: false
+ anchors.centerIn: parent
+ source: "image://etc/RearCameraStill.jpg"
+ height: videoOutput.height
+ width: videoOutput.width
+ }
+
+ Image {
+ id: overlay
+ visible: ValueSource.gear === -1
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: parent.bottom
+ }
+ }
+
+ onVisibleChanged: {
+ if (visible) {
+ stillView.visible = false
+ video.play()
+
+ } else {
+ video.stop()
+ }
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_hybrid/BottomPanel.ui.qml b/doc/src/snippets/qtcluster/qml/dash_hybrid/BottomPanel.ui.qml
new file mode 100644
index 00000000..abc04c5d
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_hybrid/BottomPanel.ui.qml
@@ -0,0 +1,190 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+import QtQuick 2.6
+import ClusterDemo 1.0
+import ".."
+import QtQuick.Extras 1.4
+
+Item {
+ id: bottomPanel
+ property int iconMargin: 7
+ property color iconRed: "#e41e25"
+ property color iconGreen: "#5caa15"
+ property color iconYellow: "#face20"
+ property color iconDark: "#000000"
+
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: bottomPanelImage.width
+ height: bottomPanelImage.height
+
+ Image {
+ id: bottomPanelImage
+ source: "image://etc/BottomPanel.png"
+ }
+
+ TurnIndicator {
+ iconOn: "image://etc/Icon_TurnLeft_ON_small.png"
+ iconOff: "image://etc/Icon_TurnLeft_OFF_small.png"
+ direction: Qt.LeftArrow
+ anchors.verticalCenter: textTime.verticalCenter
+ anchors.left: parent.left
+ anchors.leftMargin: 180
+ active: ValueSource.turnSignal & Qt.LeftArrow
+ }
+
+ Picture {
+ id: iconCoolant
+
+ width: 30
+ height: 30
+ anchors.verticalCenter: textTime.verticalCenter
+ anchors.right: iconBattery.left
+
+ color: ValueSource.engineTemperature >= 100.0 ? bottomPanel.iconRed : bottomPanel.iconDark
+ source: "qrc:/iso-icons/iso_grs_7000_4_0246.dat"
+ }
+
+ SafeRendererPicture {
+ id: iconBattery
+
+ width: 30
+ height: 30
+ anchors.verticalCenter: textTime.verticalCenter
+ anchors.right: iconFuel.left
+
+ color: ValueSource.batteryLevel <= 25.0 ? bottomPanel.iconRed : bottomPanel.iconDark
+ source: "qrc:/iso-icons/iso_grs_7000_4_0247.dat"
+ }
+
+ SafeRendererPicture {
+ id: iconFuel
+
+ width: 30
+ height: 30
+ anchors.verticalCenter: textTime.verticalCenter
+ anchors.right: iconParkingBrake.left
+
+ color: ValueSource.fuelLevel <= 20.0 ? bottomPanel.iconRed : bottomPanel.iconDark
+ source: "qrc:/iso-icons/iso_grs_7000_4_0245.dat"
+ }
+
+ SafeRendererPicture {
+ id: iconParkingBrake
+
+ width: 30
+ height: 30
+ anchors.verticalCenter: textTime.verticalCenter
+ anchors.right: textTime.left
+ anchors.rightMargin: 3
+
+ color: ValueSource.parkingBrake ? bottomPanel.iconRed : bottomPanel.iconDark
+ source: "qrc:/iso-icons/iso_grs_7000_4_0238.dat"
+ }
+
+ Text {
+ id: textTime
+ text: ValueSource.time
+ font.pixelSize: 18
+ color: "white"
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.top: parent.top
+ anchors.topMargin: 35
+ }
+
+ Picture {
+ id: iconLowbeam
+
+ width: 30
+ height: 30
+ anchors.verticalCenter: textTime.verticalCenter
+ anchors.left: textTime.right
+ anchors.leftMargin: bottomPanel.iconMargin
+
+ color: ValueSource.lowBeam ? bottomPanel.iconGreen : bottomPanel.iconDark
+ source: "qrc:/iso-icons/iso_grs_7000_4_0456.dat"
+ }
+
+ Picture {
+ id: iconTyre
+
+ width: 30
+ height: 30
+ anchors.verticalCenter: textTime.verticalCenter
+ anchors.left: iconLowbeam.right
+ anchors.leftMargin: 2
+
+ color: ValueSource.flatTire ? bottomPanel.iconYellow : bottomPanel.iconDark
+ source: "qrc:/iso-icons/iso_grs_7000_4_1434A.dat"
+ }
+
+ SafeRendererPicture {
+ id: iconLamp
+
+ width: 30
+ height: 30
+ anchors.verticalCenter: textTime.verticalCenter
+ anchors.left: iconTyre.right
+
+ color: ValueSource.lightFailure ? bottomPanel.iconYellow : bottomPanel.iconDark
+ source: "qrc:/iso-icons/iso_grs_7000_4_1555.dat"
+ }
+
+ SafeRendererPicture {
+ id: iconSeatbelt
+
+ width: 30
+ height: 30
+ anchors.verticalCenter: textTime.verticalCenter
+ anchors.left: iconLamp.right
+
+ color: ValueSource.seatBelt ? bottomPanel.iconRed : bottomPanel.iconDark
+ source: "qrc:/iso-icons/iso_grs_7000_4_0249.dat"
+ }
+
+ TurnIndicator {
+ direction: Qt.RightArrow
+ iconOn: "image://etc/Icon_TurnLeft_ON_small.png"
+ iconOff: "image://etc/Icon_TurnLeft_OFF_small.png"
+ anchors.verticalCenter: textTime.verticalCenter
+ anchors.right: parent.right
+ anchors.rightMargin: 180
+ active: ValueSource.turnSignal & Qt.RightArrow
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_hybrid/CarInfoField.qml b/doc/src/snippets/qtcluster/qml/dash_hybrid/CarInfoField.qml
new file mode 100644
index 00000000..5be947d2
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_hybrid/CarInfoField.qml
@@ -0,0 +1,81 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+
+Column {
+ spacing: 20 / 1.5
+
+ property string value: ""
+ property string title: ""
+ property string unit: "KM"
+
+ Row {
+ anchors.horizontalCenter: parent.horizontalCenter
+
+ Text {
+ text: value
+ font.pixelSize: 24
+ color: "lightGray"
+ }
+ Text {
+ text: unit
+ font.pixelSize: 16
+ color: "lightGray"
+ }
+ }
+
+ Text {
+ text: title
+ font.pixelSize: 16
+ horizontalAlignment: Text.AlignHCenter
+ color: "lightGray"
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_hybrid/CenterView.qml b/doc/src/snippets/qtcluster/qml/dash_hybrid/CenterView.qml
new file mode 100644
index 00000000..d7b302c4
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_hybrid/CenterView.qml
@@ -0,0 +1,151 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.6
+import ClusterDemo 1.0
+
+Item {
+ anchors.fill: parent
+ property real defaultScale: 1.0
+ property var previousView: calendarView
+ property bool view: ValueSource.viewChange
+
+ property int viewNumber: -1
+
+
+ CenterViewMusic {
+ id: musicView
+ anchors.horizontalCenter: parent.horizontalCenter
+ yTarget: 230
+ width: 124
+ height: 124
+ visible: false
+ y: defaultYPos
+ }
+
+ CenterViewContacts {
+ id: contactView
+ anchors.horizontalCenter: parent.horizontalCenter
+ yTarget: 240
+ width: 100
+ height: 100
+ visible: false
+ y: defaultYPos
+ }
+
+ CenterViewCarInfo {
+ id: carinfoView
+ xTarget: (parent.width - width) / 2
+ anchors.top: parent.top
+ anchors.topMargin: 230
+ width: 146
+ height: 80
+ x: defaultXPos
+ visible: false
+ }
+
+ CenterViewCalendar {
+ id: calendarView
+ xTarget: (parent.width - width) / 2
+ anchors.top: parent.top
+ anchors.topMargin: 230
+ width: 100
+ height: 91
+ x: defaultXPos
+ visible: false
+ }
+
+ PropertyAnimation {
+ id: shrinkCenter
+ property: "scale"
+ to: 0.0
+ running: false
+ duration: 500
+ onStopped: {
+ if (target != null)
+ target.visible = false
+ }
+ }
+
+ function handleViewChange(number) {
+ var currentView
+ if (number === 0)
+ currentView = musicView
+ else if (number === 1)
+ currentView = contactView
+ else if (number === 2)
+ currentView = carinfoView
+ else if (number === 3)
+ currentView = calendarView
+ if (previousView !== currentView) {
+ currentView.scale = defaultScale
+ currentView.visible = true
+ shrinkCenter.target = previousView
+ previousView = currentView
+ shrinkCenter.start()
+ }
+ }
+
+ onViewChanged: {
+ if (view) {
+ if (++viewNumber > 3)
+ viewNumber = 0
+ handleViewChange(viewNumber)
+ }
+ }
+
+ // Used on automatic demo mode
+ Timer {
+ id: centerTimer
+ property int viewNumber: -1
+ running: ValueSource.automaticDemoMode
+ repeat: true
+ interval: 6000
+ onTriggered: {
+ if (++viewNumber > 3)
+ viewNumber = 0
+ handleViewChange(viewNumber)
+ }
+ }
+
+ function stopAll() {
+ centerTimer.stop()
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_hybrid/CenterViewCalendar.qml b/doc/src/snippets/qtcluster/qml/dash_hybrid/CenterViewCalendar.qml
new file mode 100644
index 00000000..39a84d3b
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_hybrid/CenterViewCalendar.qml
@@ -0,0 +1,109 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 Pelagicore AG
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Neptune IVI UI.
+**
+** $QT_BEGIN_LICENSE:GPL-QTAS$
+** Commercial License Usage
+** Licensees holding valid commercial Qt Automotive Suite licenses may use
+** this file in accordance with the commercial license agreement provided
+** with the Software or, alternatively, in accordance with the terms
+** contained in a written agreement between you and The Qt Company. For
+** licensing terms and conditions see https://www.qt.io/terms-conditions.
+** For further information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 or (at your option) any later version
+** approved by the KDE Free Qt Foundation. The licenses are as published by
+** the Free Software Foundation and appearing in the file LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+** SPDX-License-Identifier: GPL-3.0
+**
+****************************************************************************/
+
+import QtQuick 2.6
+
+Item {
+ id: calendarContainer
+
+ property string appointment: "No appointments"
+ property var currentDate
+ property string date
+ property string time
+ opacity: 0.5
+ property alias xTarget: startupAnimation.to
+ property int defaultXPos: 200
+
+ Image {
+ id: image
+ source: "image://etc/calendar.png"
+ }
+
+ Text {
+ id: dateText
+ anchors.top: image.bottom
+ anchors.topMargin: 10
+ anchors.horizontalCenter: image.horizontalCenter
+ text: date
+ color: "gray"
+ font.pixelSize: 16
+ }
+
+ Text {
+ id: timeText
+ anchors.top: dateText.bottom
+ anchors.horizontalCenter: image.horizontalCenter
+ text: time
+ color: "gray"
+ font.pixelSize: 20
+ }
+
+ Text {
+ anchors.top: timeText.bottom
+ anchors.horizontalCenter: image.horizontalCenter
+ text: appointment
+ color: "lightGray"
+ font.pixelSize: 14
+ }
+
+ Timer {
+ id: fadeOutTimer
+ interval: 5000
+ running: false
+ repeat: false
+ onTriggered: {
+ calendarContainer.opacity = 0.5
+ }
+ }
+
+ Behavior on opacity { PropertyAnimation { duration: 500 } }
+
+ PropertyAnimation on x {
+ id: startupAnimation
+ duration: 500
+ easing.type: Easing.InCubic
+ onStopped: {
+ calendarContainer.opacity = 1.0
+ fadeOutTimer.start()
+ }
+ }
+
+ onVisibleChanged: {
+ if (visible) {
+ currentDate = new Date()
+ date = currentDate.toLocaleDateString(Qt.locale("en_GB"))
+ time = currentDate.toLocaleTimeString(Qt.locale("en_GB"), "hh:mm")
+ x = defaultXPos
+ startupAnimation.start()
+ }
+ }
+}
+
diff --git a/doc/src/snippets/qtcluster/qml/dash_hybrid/CenterViewCarInfo.qml b/doc/src/snippets/qtcluster/qml/dash_hybrid/CenterViewCarInfo.qml
new file mode 100644
index 00000000..590ef1be
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_hybrid/CenterViewCarInfo.qml
@@ -0,0 +1,97 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 Pelagicore AG
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Neptune IVI UI.
+**
+** $QT_BEGIN_LICENSE:GPL-QTAS$
+** Commercial License Usage
+** Licensees holding valid commercial Qt Automotive Suite licenses may use
+** this file in accordance with the commercial license agreement provided
+** with the Software or, alternatively, in accordance with the terms
+** contained in a written agreement between you and The Qt Company. For
+** licensing terms and conditions see https://www.qt.io/terms-conditions.
+** For further information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 or (at your option) any later version
+** approved by the KDE Free Qt Foundation. The licenses are as published by
+** the Free Software Foundation and appearing in the file LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+** SPDX-License-Identifier: GPL-3.0
+**
+****************************************************************************/
+
+import QtQuick 2.6
+import ClusterDemo 1.0
+
+Item {
+ id: carinfoContainer
+
+ property int total: ValueSource.totalDistance
+ property int sinceLast: ValueSource.kmSinceCharge
+ opacity: 0.5
+ property alias xTarget: startupAnimation.to
+ property int defaultXPos: 900
+
+ Image {
+ id: image
+ source: "image://etc/CarInfoIcon.png"
+ }
+
+ Row {
+ scale: 0.75
+ spacing: 7
+ anchors.top: image.bottom
+ anchors.horizontalCenter: image.horizontalCenter
+
+ CarInfoField {
+ title: "Total distance"
+ value: carinfoContainer.total.toString()
+ unit: "km"
+ }
+
+ CarInfoField {
+ title: "Since last\ncharge"
+ value: carinfoContainer.sinceLast.toString()
+ unit: "km"
+ }
+ }
+
+ Timer {
+ id: fadeOutTimer
+ interval: 5000
+ running: false
+ repeat: false
+ onTriggered: {
+ carinfoContainer.opacity = 0.5
+ }
+ }
+
+ Behavior on opacity { PropertyAnimation { duration: 500 } }
+
+ PropertyAnimation on x {
+ id: startupAnimation
+ duration: 500
+ easing.type: Easing.InCubic
+ onStopped: {
+ carinfoContainer.opacity = 1.0
+ fadeOutTimer.start()
+ }
+ }
+
+ onVisibleChanged: {
+ if (visible) {
+ x = defaultXPos
+ startupAnimation.start()
+ }
+ }
+}
+
diff --git a/doc/src/snippets/qtcluster/qml/dash_hybrid/CenterViewContacts.qml b/doc/src/snippets/qtcluster/qml/dash_hybrid/CenterViewContacts.qml
new file mode 100644
index 00000000..9789b73e
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_hybrid/CenterViewContacts.qml
@@ -0,0 +1,119 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 Pelagicore AG
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Neptune IVI UI.
+**
+** $QT_BEGIN_LICENSE:GPL-QTAS$
+** Commercial License Usage
+** Licensees holding valid commercial Qt Automotive Suite licenses may use
+** this file in accordance with the commercial license agreement provided
+** with the Software or, alternatively, in accordance with the terms
+** contained in a written agreement between you and The Qt Company. For
+** licensing terms and conditions see https://www.qt.io/terms-conditions.
+** For further information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 or (at your option) any later version
+** approved by the KDE Free Qt Foundation. The licenses are as published by
+** the Free Software Foundation and appearing in the file LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+** SPDX-License-Identifier: GPL-3.0
+**
+****************************************************************************/
+
+import QtQuick 2.6
+
+Item {
+ id: contactContainer
+ opacity: 0.5
+ property int defaultYPos: 50
+ property alias icon: contactImage.source
+ property alias name: contactName.text
+ property alias yTarget: startupAnimation.to
+
+ Image {
+ id: contactImage
+ source: "image://etc/contacts.png"
+ }
+
+ Text {
+ id: title
+ anchors.top: contactImage.bottom
+ anchors.topMargin: 10
+ anchors.horizontalCenter: contactImage.horizontalCenter
+ text: contactContainer.name === "" ? "Browsing\ncontacts" : "Calling"
+ color: "gray"
+ font.pixelSize: 20
+ }
+
+ Text {
+ id: contactName
+ anchors.top: title.bottom
+ anchors.horizontalCenter: contactImage.horizontalCenter
+ color: "lightGray"
+ font.pixelSize: 24
+ }
+
+ Timer {
+ id: fadeOutTimer
+ interval: 5000
+ running: false
+ repeat: false
+ onTriggered: {
+ fadeOut.start()
+ }
+ }
+
+ PropertyAnimation on opacity {
+ id: fadeIn
+ to: 1.0
+ duration: 500
+ onStopped: {
+ call.start()
+ }
+ }
+
+ PropertyAnimation on opacity {
+ id: fadeOut
+ to: 0.5
+ duration: 500
+ }
+
+ PropertyAnimation on y {
+ id: startupAnimation
+ duration: 500
+ easing.type: Easing.InCubic
+ onStopped: {
+ fadeIn.start()
+ fadeOutTimer.start()
+ }
+ }
+
+ Timer {
+ id: call
+ interval: 2000
+ running: false
+ onTriggered: {
+ name = "Jane"
+ icon = "image://etc/jane.png"
+ }
+ }
+
+ onVisibleChanged: {
+ if (visible) {
+ name = ""
+ icon = "image://etc/contacts.png"
+ y = defaultYPos
+ startupAnimation.start()
+ }
+ }
+}
+
diff --git a/doc/src/snippets/qtcluster/qml/dash_hybrid/CenterViewMusic.qml b/doc/src/snippets/qtcluster/qml/dash_hybrid/CenterViewMusic.qml
new file mode 100644
index 00000000..41df2185
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_hybrid/CenterViewMusic.qml
@@ -0,0 +1,108 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 Pelagicore AG
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Neptune IVI UI.
+**
+** $QT_BEGIN_LICENSE:GPL-QTAS$
+** Commercial License Usage
+** Licensees holding valid commercial Qt Automotive Suite licenses may use
+** this file in accordance with the commercial license agreement provided
+** with the Software or, alternatively, in accordance with the terms
+** contained in a written agreement between you and The Qt Company. For
+** licensing terms and conditions see https://www.qt.io/terms-conditions.
+** For further information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 or (at your option) any later version
+** approved by the KDE Free Qt Foundation. The licenses are as published by
+** the Free Software Foundation and appearing in the file LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+** SPDX-License-Identifier: GPL-3.0
+**
+****************************************************************************/
+
+import QtQuick 2.6
+
+Item {
+ id: musicContainer
+
+ property url currentCover: "image://etc/cover.png"
+ property string currentSong: "Doesn't Mean Anything"
+ property string currentArtist: "Alicia Keys"
+ opacity: 0.5
+ property alias yTarget: startupAnimation.to
+ property int defaultYPos: 400
+
+ Rectangle {
+ id: image
+ width: 124
+ height: 124
+ border.color: "#EF2973"
+ border.width: 2
+ color: "black"
+
+ Image {
+ anchors.margins: 2
+ fillMode: Image.PreserveAspectCrop
+ anchors.fill: parent
+ asynchronous: true
+ source: musicContainer.currentCover
+ }
+ }
+
+ Text {
+ id: title
+ anchors.top: image.bottom
+ anchors.topMargin: 10
+ anchors.horizontalCenter: image.horizontalCenter
+ text: musicContainer.currentSong
+ color: "gray"
+ font.pixelSize: 16
+ }
+
+ Text {
+ anchors.top: title.bottom
+ anchors.horizontalCenter: image.horizontalCenter
+ text: musicContainer.currentArtist
+ color: "lightGray"
+ font.pixelSize: 16
+ }
+
+ Timer {
+ id: fadeOutTimer
+ interval: 3000
+ running: false
+ repeat: false
+ onTriggered: {
+ musicContainer.opacity = 0.5
+ }
+ }
+
+ Behavior on opacity { PropertyAnimation { duration: 500 } }
+
+ PropertyAnimation on y {
+ id: startupAnimation
+ duration: 500
+ easing.type: Easing.InCubic
+ onStopped: {
+ musicContainer.opacity = 1.0
+ fadeOutTimer.start()
+ }
+ }
+
+ onVisibleChanged: {
+ if (visible) {
+ y = defaultYPos
+ startupAnimation.start()
+ }
+ }
+}
+
diff --git a/doc/src/snippets/qtcluster/qml/dash_hybrid/Dashboard.qml b/doc/src/snippets/qtcluster/qml/dash_hybrid/Dashboard.qml
new file mode 100644
index 00000000..fe580123
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_hybrid/Dashboard.qml
@@ -0,0 +1,117 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.6
+import "gauges"
+
+DashboardForm
+{
+ id: dashboardEntity
+
+ state: "start"
+
+ meterOpacity: 0.0
+
+ anchors.fill: parent
+
+ property real timeScaleMultiplier: 1.5
+ property bool startupAnimationsFinished: false
+
+ onNeedleRotationChanged: speedometer.speedometerNeedleRotation = needleRotation / 40.
+
+ //
+ // Startup animations
+ //
+ SequentialAnimation {
+ id: speedometerStartupAnimations
+ running: true
+
+ PauseAnimation { duration: 1000 }
+ ScriptAction { script: bottompanel.visible = true }
+
+ SmoothedAnimation {
+ target: dashboardEntity
+ property: "bottomPanelY"
+ from: 480
+ to: 402
+ duration: 1000 * timeScaleMultiplier
+ easing.type: Easing.InCirc
+ }
+
+ PauseAnimation {
+ duration: 1000
+ }
+
+ NumberAnimation {
+ target: dashboardEntity
+ property: "meterOpacity"
+ from: 0
+ to: 1
+ duration: 2000
+ }
+
+ SmoothedAnimation {
+ target: dashboardEntity
+ property: "needleRotation"
+ from: 0.0
+ to: -8000.0
+ duration: 1000 * timeScaleMultiplier
+ easing.type: Easing.InCubic
+ }
+
+ SmoothedAnimation {
+ target: dashboardEntity
+ property: "needleRotation"
+ from: -8000.0
+ to: 0.0
+ duration: 1000 * timeScaleMultiplier
+ easing.type: Easing.OutCubic
+ }
+
+ ScriptAction { script: startupAnimationsFinished = true }
+ }
+
+ function stopAll() {
+ speedometerStartupAnimations.stop()
+ }
+
+ bottompanel.visible: false
+ bottompanel.y: 480
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_hybrid/DashboardBackground.qml b/doc/src/snippets/qtcluster/qml/dash_hybrid/DashboardBackground.qml
new file mode 100644
index 00000000..2c46b7fe
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_hybrid/DashboardBackground.qml
@@ -0,0 +1,151 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.4
+
+DashboardBackgroundForm {
+ id: dashboard
+
+ state: "normal"
+
+ Timer {
+ running: true
+ interval: 100
+ onTriggered: dashboard.state = "normal"
+ repeat: false
+ }
+
+
+
+ transitions: [
+ Transition {
+ from: "*"
+ to: "*"
+
+ SequentialAnimation {
+
+ ParallelAnimation {
+ PropertyAnimation {
+ target: dashboard.image
+ properties: "opacity"
+ duration: 1500
+ }
+
+
+ PropertyAnimation {
+ target: dashboard.leftGauge
+ properties: "scale, opacity"
+ duration: 2000
+ easing.type: Easing.InOutQuad
+ }
+
+ PropertyAnimation {
+ target: dashboard.rightGauge
+ properties: "scale, opacity"
+ duration: 2000
+ easing.type: Easing.InOutQuad
+ }
+
+ SequentialAnimation {
+
+ PauseAnimation {
+ duration: 200
+ }
+ PropertyAnimation {
+ properties: "x,y"
+ duration: 800
+ easing.type: Easing.InOutQuad
+ }
+ }
+
+
+ SequentialAnimation {
+ PauseAnimation {
+ duration: 1000
+ }
+
+ PropertyAnimation {
+ target: dashboard
+ property: "scale"
+ easing.type: Easing.InOutQuad
+ duration: 300
+ }
+
+ ParallelAnimation {
+ PropertyAnimation {
+ target: dashboard.gadget
+ properties: "opacity, scale"
+ duration: 1000
+ }
+ PropertyAnimation {
+ target: dashboard.gadget2
+ properties: "opacity, scale"
+ duration: 1000
+ }
+ }
+ ParallelAnimation {
+ PropertyAnimation {
+ target: dashboard.leftGadget
+ properties: "opacity, scale"
+ duration: 400
+ }
+ PropertyAnimation {
+ target: dashboard.rightGadget
+ properties: "opacity, scale"
+ duration: 400
+ }
+ PropertyAnimation {
+ target: dashboard.center
+ properties: "opacity, scale"
+ duration: 400
+ }
+ PropertyAnimation {
+ target: dashboard.bar
+ properties: "opacity, scale"
+ duration: 800
+ }
+ }
+ }
+ }
+ }
+ }
+ ]
+}
+
diff --git a/doc/src/snippets/qtcluster/qml/dash_hybrid/DashboardBackgroundForm.ui.qml b/doc/src/snippets/qtcluster/qml/dash_hybrid/DashboardBackgroundForm.ui.qml
new file mode 100644
index 00000000..8b9b5f34
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_hybrid/DashboardBackgroundForm.ui.qml
@@ -0,0 +1,205 @@
+
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+import QtQuick 2.4
+import ClusterDemo 1.0
+
+Item {
+ id: root
+ width: 1280
+ height: 480
+ property alias gadget2: gadget2
+
+ property alias center: center
+ property alias rightGadget: rightGadget
+ property alias bar: bar
+ property alias leftGadget: leftGadget
+ property alias image: image
+ property alias rightGauge: rightGauge
+ property alias leftGauge: leftGauge
+ property alias gadget: gadget
+
+ property real gaugeOpacity: 1
+
+ Image {
+ id: image
+ source: "image://etc/Cluster8Gauges.png"
+
+ Image {
+ id: center
+ x: 574
+ y: 30
+ source: "image://etc/center.png"
+ }
+
+ Image {
+ id: rightGadget
+ x: 732
+ y: 34
+ source: "image://etc/right.png"
+ }
+
+ Image {
+ id: leftGadget
+ x: 419
+ y: 32
+ source: "image://etc/left.png"
+ }
+
+ Image {
+ id: bar
+ x: 534
+ y: 143
+ source: "image://etc/temperature.png"
+ }
+ }
+
+ Image {
+ id: leftGauge
+ x: 318
+ y: 393
+ source: "image://etc/leftgauge.png"
+
+ Gadget {
+ id: gadget
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.verticalCenter: parent.verticalCenter
+ }
+ }
+
+ Image {
+ id: rightGauge
+ x: 652
+ y: 394
+ source: "image://etc/rightgauge.png"
+
+ Gadget {
+ id: gadget2
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.verticalCenter: parent.verticalCenter
+ }
+ }
+ states: [
+ State {
+ name: "start"
+
+ PropertyChanges {
+ target: leftGauge
+ x: 13
+ y: 169
+ width: 339
+ height: 340
+ opacity: 0
+ scale: 0.7
+ }
+
+ PropertyChanges {
+ target: rightGauge
+ x: 930
+ y: 169
+ width: 330
+ height: 340
+ opacity: 0
+ scale: 0.7
+ }
+
+ PropertyChanges {
+ target: root
+ scale: 0.8
+ gaugeOpacity: 0
+ }
+
+ PropertyChanges {
+ target: image
+ opacity: 0.2
+ }
+
+ PropertyChanges {
+ target: gadget
+ scale: 0.8
+ opacity: 0
+ }
+
+ PropertyChanges {
+ target: leftGadget
+ scale: 0.8
+ opacity: 0
+ }
+
+ PropertyChanges {
+ target: center
+ opacity: 0
+ scale: 0.8
+ }
+
+ PropertyChanges {
+ target: rightGadget
+ scale: 0.8
+ opacity: 0
+ }
+
+ PropertyChanges {
+ target: bar
+ scale: 0.8
+ opacity: 0
+ }
+
+ PropertyChanges {
+ target: gadget2
+ opacity: 0
+ }
+ },
+ State {
+ name: "normal"
+
+ PropertyChanges {
+ target: leftGauge
+ x: 102
+ y: 75
+ }
+
+ PropertyChanges {
+ target: rightGauge
+ x: 841
+ y: 74
+ }
+ }
+ ]
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_hybrid/DashboardForm.ui.qml b/doc/src/snippets/qtcluster/qml/dash_hybrid/DashboardForm.ui.qml
new file mode 100644
index 00000000..d806dc56
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_hybrid/DashboardForm.ui.qml
@@ -0,0 +1,100 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+import QtQuick 2.6
+import ClusterDemo 1.0
+import "gauges"
+
+DashboardBackground {
+ id: dashboardEntity
+ property alias bottompanel: bottompanel
+ property alias speedometer: speedometer
+ property alias tachometer: tachometer
+
+ property alias bottomPanelY: bottompanel.y
+ property alias needleRotation: tachometer.tachometerNeedleRotation
+
+ property real meterOpacity: 1
+
+ gadget2.green: tachometer.actualRPM < 4000
+ gadget.green: speedometer.actualSpeed < 100
+
+ anchors.fill: parent
+
+ // Speedometer
+ SpeedoMeter {
+ opacity: dashboardEntity.meterOpacity
+ id: speedometer
+ }
+ // Tachometer
+ TachoMeter {
+ id: tachometer
+ opacity: dashboardEntity.meterOpacity
+ anchors.fill: parent
+ }
+ // Fuelmeter
+ FuelMeter {
+ opacity: dashboardEntity.meterOpacity
+ }
+ // Batterymeter
+ BatteryMeter {
+ opacity: dashboardEntity.meterOpacity
+ }
+ // Consumptionmeter
+ ConsumptionMeter {
+ opacity: dashboardEntity.meterOpacity
+ }
+ // Temperaturemeter
+ TemperatureMeter {
+ opacity: dashboardEntity.meterOpacity
+ }
+ // Turbometer
+ TurboMeter {
+ opacity: dashboardEntity.meterOpacity
+ }
+ // Fpsmeter
+ FpsMeter {
+ opacity: dashboardEntity.meterOpacity
+ }
+ // Bottom Panel
+ BottomPanel {
+ id: bottompanel
+ y: 402
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_hybrid/DashboardFrame.qml b/doc/src/snippets/qtcluster/qml/dash_hybrid/DashboardFrame.qml
new file mode 100644
index 00000000..d0ed5513
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_hybrid/DashboardFrame.qml
@@ -0,0 +1,88 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.6
+import ClusterDemo 1.0
+
+Rectangle
+{
+ width: 1280
+ height: 480
+ gradient: Gradient {
+ GradientStop { position: 0.0; color: "#ffffff" }
+ GradientStop { position: 0.4; color: "#1e2127" }
+ GradientStop { position: 1.0; color: "#0c0f17" }
+ }
+
+ Image {
+ id: logo
+ anchors.horizontalCenter: parent.horizontalCenter
+ y: 270
+ source: "image://etc/Built_with_Qt.png"
+ }
+
+ Loader {
+ id: dashLoader
+ anchors.fill: parent
+ source: "DashboardView.qml"
+ active: logo.status === Image.Ready
+ transform: Rotation {
+ id: rot
+ origin.x: 1280 / 2
+ origin.y: 0
+ axis { x: 1; y: 0; z: 0 }
+ angle: ValueSource.runningInDesigner ? 0 : 90 // the default angle
+
+ }
+ onLoaded: flipin.start()
+ }
+
+ SequentialAnimation {
+ id: flipin
+ PauseAnimation { duration: 500 }
+ SmoothedAnimation { target: rot; property: "angle"; from: 90; to: 0; duration: 500 }
+ PauseAnimation { duration: 2500 }
+ OpacityAnimator { target: logo; from: 1.0; to: 0; duration: 500 }
+ }
+
+ function stopAll() {
+ dashLoader.item.stopAll()
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_hybrid/DashboardView.qml b/doc/src/snippets/qtcluster/qml/dash_hybrid/DashboardView.qml
new file mode 100644
index 00000000..dd2ec8e3
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_hybrid/DashboardView.qml
@@ -0,0 +1,57 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL3$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later as published by the Free
+** Software Foundation and appearing in the file LICENSE.GPL included in
+** the packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.6
+
+Loader {
+ id: centerview
+ asynchronous: true
+ anchors.fill: parent
+ source: "CenterView.qml"
+
+ Loader {
+ id: dash
+ asynchronous: true
+ anchors.fill: parent
+ source: "Dashboard.qml"
+ z: 2
+ }
+
+ function stopAll() {
+ centerview.item.stopAll()
+ dash.item.stopAll()
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_hybrid/Gadget.qml b/doc/src/snippets/qtcluster/qml/dash_hybrid/Gadget.qml
new file mode 100644
index 00000000..62b535e8
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_hybrid/Gadget.qml
@@ -0,0 +1,117 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.4
+
+Item {
+ id: gadget
+
+ width: 240
+ height: 240
+
+ property bool green: true
+
+ SequentialAnimation {
+ running: true
+ loops: -1
+ PropertyAnimation {
+
+ target: glow
+ from: 0.96
+ to: 0.94
+ property: "scale"
+ duration: 600
+ }
+ PropertyAnimation {
+ target: glow
+ from: 0.94
+ to: 0.96
+ property: "scale"
+ duration: 600
+ }
+ }
+
+ Item {
+ id: glow
+
+ x: 53
+ y: 52
+ width: 145
+ height: 145
+
+ Image {
+ id: green
+ x: 0
+ y: -1
+
+ source: "image://etc/greenglow.png"
+ }
+
+ Image {
+ id: red
+ x: -1
+ y: 0
+
+ source: "image://etc/redglow.png"
+ }
+ }
+
+ Image {
+ id: knob
+ x: 68
+ y: 65
+ source: "image://etc/knob.png"
+ }
+ states: [
+ State {
+ name: "red"
+ when: !gadget.green
+ },
+ State {
+ name: "green"
+ when: gadget.green
+
+ PropertyChanges {
+ target: red
+ opacity: 0
+ }
+ }
+ ]
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_hybrid/SafeRendererPicture.qml b/doc/src/snippets/qtcluster/qml/dash_hybrid/SafeRendererPicture.qml
new file mode 100644
index 00000000..b57ac6ae
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_hybrid/SafeRendererPicture.qml
@@ -0,0 +1,56 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.6
+import QtQuick.Extras 1.4
+
+Picture {
+
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/BatteryMeter.qml b/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/BatteryMeter.qml
new file mode 100644
index 00000000..1a70ce6c
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/BatteryMeter.qml
@@ -0,0 +1,72 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.6
+import ClusterDemo 1.0
+
+Item {
+ property real batterymeterNeedleRotation: -batteryValue * batteryDegreesPerValue
+ property real batteryValue: ValueSource.batteryLevel
+ property real maxValueAngle: 317
+ property real minValueAngle: 225
+ property real maximumValue: 100
+ property real batteryDegreesPerValue: Math.abs((maxValueAngle - minValueAngle) / maximumValue)
+
+ anchors.right: parent.right
+ anchors.top: parent.top
+ anchors.rightMargin: 436
+ anchors.topMargin: 93
+ width: 108
+ height: 7
+ rotation: batterymeterNeedleRotation - 135
+
+ Image {
+ width: 36
+ height: 3
+ //opacity: 0.75
+ anchors.left: parent.left
+ anchors.verticalCenter: parent.verticalCenter
+ source: "image://etc/SpeedometerNeedle.png"
+ }
+ Behavior on batteryValue {
+ enabled: !ValueSource.runningInDesigner && !ValueSource.automaticDemoMode && startupAnimationsFinished
+ PropertyAnimation { duration: 250 }
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/ConsumptionMeter.qml b/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/ConsumptionMeter.qml
new file mode 100644
index 00000000..23a25a6e
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/ConsumptionMeter.qml
@@ -0,0 +1,92 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.6
+import ClusterDemo 1.0
+
+Item {
+ id: consumtionMeter
+ property real consumptionValue: 2.0 + ValueSource.rpm / 444.45
+
+ property real minValueAngle: 378
+ property real maxValueAngle: 291
+ property real minimumValue: 0
+ property real maximumValue: 20
+
+ anchors.right: parent.right
+ anchors.top: parent.top
+ anchors.topMargin: 243
+ anchors.rightMargin: 276
+
+ GaugeFiller {
+ id: consumptionFiller
+ value: consumtionMeter.consumptionValue
+ anchors.fill: parent
+ numVertices: 32
+ radius: 155
+ fillWidth: 20
+ color: ValueSource.rpm < 4000 ? "green" : "#EF2973"
+ opacity: 0.3
+ minAngle: consumtionMeter.minValueAngle
+ maxAngle: consumtionMeter.maxValueAngle
+ minValue: consumtionMeter.minimumValue
+ maxValue: consumtionMeter.maximumValue
+ Behavior on value {
+ enabled: !ValueSource.runningInDesigner && !ValueSource.automaticDemoMode && startupAnimationsFinished
+ PropertyAnimation { duration: 250 }
+ }
+ }
+
+ Item {
+ width: 322
+ height: 7
+ rotation: consumptionFiller.angle - 72
+ anchors.centerIn: parent
+
+ Image {
+ width: 95
+ height: 3
+ //opacity: 0.75
+ anchors.left: parent.left
+ anchors.verticalCenter: parent.verticalCenter
+ source: ValueSource.rpm < 4000 ? "image://etc/SpeedometerNeedleGreen.png" : "image://etc/SpeedometerNeedle.png"
+ }
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/FpsMeter.qml b/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/FpsMeter.qml
new file mode 100644
index 00000000..51e27fc8
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/FpsMeter.qml
@@ -0,0 +1,83 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.6
+import "../.."
+
+Item {
+ id: fpsmeterNeedle
+
+ property real fpsmeterNeedleRotation: fpsValue * fpsDegreesPerValue
+ property real fpsValue: Math.min(fpscounter.fpsNow, 60) // Limit to 60, as that's where the gauge ends
+ property real maxValueAngle: 314
+ property real minValueAngle: 45
+ property real maximumValue: 60
+ property real fpsDegreesPerValue: Math.abs((maxValueAngle - minValueAngle) / maximumValue)
+
+ anchors.right: parent.right
+ anchors.top: parent.top
+ anchors.rightMargin: 591
+ anchors.topMargin: 83
+ width: 107
+ height: 7
+ rotation: fpsmeterNeedleRotation - 45
+
+ Image {
+ width: 37
+ height: 3
+ anchors.left: parent.left
+ anchors.verticalCenter: parent.verticalCenter
+ source: "image://etc/SpeedometerNeedle.png"
+ }
+
+ FpsCounter {
+ id: fpscounter
+ rotation: fpsVisible ? -fpsmeterNeedle.rotation : 0
+ anchors.top: parent.top
+ anchors.topMargin: 33
+ anchors.horizontalCenter: parent.horizontalCenter
+ fpsVisible: false // Setting this to true prints fps on screen
+ running: startupAnimationsFinished
+ }
+ Behavior on fpsValue {
+ enabled: startupAnimationsFinished
+ PropertyAnimation { duration: fpscounter.fpsInterval }
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/FuelMeter.qml b/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/FuelMeter.qml
new file mode 100644
index 00000000..b6569c6d
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/FuelMeter.qml
@@ -0,0 +1,73 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.6
+import ClusterDemo 1.0
+
+Item {
+ property real fuelmeterNeedleRotation: fuelValue * fuelDegreesPerValue
+ property real fuelValue: ValueSource.fuelLevel
+
+ property real maxValueAngle: 170
+ property real minValueAngle: 10
+ property real maximumValue: 100
+ property real fuelDegreesPerValue: Math.abs((maxValueAngle - minValueAngle) / maximumValue)
+
+ anchors.right: parent.right
+ anchors.top: parent.top
+ anchors.rightMargin: 436
+ anchors.topMargin: 93
+ width: 105
+ height: 7
+ rotation: fuelmeterNeedleRotation - 80
+
+ Image {
+ width: 37
+ height: 3
+ //opacity: 0.75
+ anchors.left: parent.left
+ anchors.verticalCenter: parent.verticalCenter
+ source: "image://etc/SpeedometerNeedle.png"
+ }
+ Behavior on fuelValue {
+ enabled: !ValueSource.automaticDemoMode && startupAnimationsFinished
+ PropertyAnimation { duration: 250 }
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/SpeedoMeter.qml b/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/SpeedoMeter.qml
new file mode 100644
index 00000000..23f11c43
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/SpeedoMeter.qml
@@ -0,0 +1,157 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.6
+import ClusterDemo 1.0
+
+Item {
+
+ id: speedometer
+
+ property real speedometerNeedleRotation: 0.0
+ property string speed: actualSpeed.toFixed().toString()
+
+ property bool animationStopped: ValueSource.runningInDesigner ? true : startupAnimationsFinished
+
+ property real actualSpeed: animationStopped
+ ? ValueSource.kph : -speedometerNeedleRotation
+
+ property real minValueAngle: 55
+ property real maxValueAngle: 305
+ property real minimumSpeed: 0
+ property real maximumSpeed: 200
+
+ Item {
+ anchors.left: parent.left
+ anchors.leftMargin: 20
+ width: 480
+ height: 480
+
+ GaugeFiller {
+ id: speedFiller
+ value: speedometer.actualSpeed
+ anchors.left: parent.left
+ anchors.top: parent.top
+ anchors.topMargin: 244
+ anchors.leftMargin: 255
+ numVertices: 64
+ radius: 155
+ fillWidth: 5
+ color: speedometer.actualSpeed < 100 ? "green" : "#EF2973"
+ opacity: 0.6
+ minAngle: speedometer.minValueAngle
+ maxAngle: speedometer.maxValueAngle
+ minValue: speedometer.minimumSpeed
+ maxValue: speedometer.maximumSpeed
+ }
+ }
+
+ Item {
+ id: speedometerNeedle
+ width: 309
+ height: 7
+ rotation: speedFiller.angle - 35
+
+ x: 121
+ y: 243
+
+ Image {
+ opacity: 0.75
+ width: 97
+ height: 7
+ anchors.left: parent.left
+ anchors.verticalCenter: parent.verticalCenter
+ source: speedometer.actualSpeed < 100 ? "image://etc/SpeedometerNeedleGreen.png" : "image://etc/SpeedometerNeedle.png"
+ }
+ }
+
+ Row {
+ anchors.top: speedometerNeedle.bottom
+ anchors.topMargin: 80
+ anchors.horizontalCenter: speedometerNeedle.horizontalCenter
+ spacing: 7
+
+ Text {
+ font.pixelSize: 18
+ color:(ValueSource.gear === 0 && ValueSource.parkingBrake) ? "white" : "gray"
+ text: "P"
+ }
+
+ Text {
+ font.pixelSize: 18
+ //font.bold: ValueSource.gear === -1
+ color: ValueSource.gear === -1 ? "white" : "gray"
+ text: "R"
+ }
+
+ Text {
+ font.pixelSize: 18
+ //font.bold: ValueSource.gear === 0
+ color: (ValueSource.gear === 0 && !ValueSource.parkingBrake) ? "white" : "gray"
+ text: "N"
+ }
+
+ Text {
+ font.pixelSize: 18
+ //font.bold: ValueSource.gear === 1
+ color: ValueSource.gear === 1 ? "white" : "gray"
+ text: "D"
+ }
+ }
+
+ Text {
+ id: speedText
+ anchors.top: speedometerNeedle.top
+ anchors.topMargin: -27
+ anchors.horizontalCenter: speedometerNeedle.horizontalCenter
+ font.pixelSize: 40
+ color: "lightGray"
+ text: speedometer.speed
+ }
+
+ Text {
+ id: speedUnitText
+ anchors.top: speedText.bottom
+ anchors.horizontalCenter: speedometerNeedle.horizontalCenter
+ font.pixelSize: 18
+ color: "lightGray"
+ text: "KM/H"
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/TachoMeter.qml b/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/TachoMeter.qml
new file mode 100644
index 00000000..c6dc1bf5
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/TachoMeter.qml
@@ -0,0 +1,113 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.6
+import ClusterDemo 1.0
+
+Item {
+ id: tachometer
+
+ property real tachometerNeedleRotation: 0.0
+ property string rpm: actualRPM.toFixed().toString()
+
+ property bool animationStoped: ValueSource.runningInDesigner ? true : startupAnimationsFinished
+
+ property real actualRPM: animationStoped
+ ? ValueSource.rpm : -tachometerNeedleRotation
+
+ property real minValueAngle: 55
+ property real maxValueAngle: 255
+ property real minimumRPM: 0
+ property real maximumRPM: 8000
+
+ Item {
+ anchors.right: parent.right
+ anchors.rightMargin: 20
+ width: 480
+ height: 480
+
+ GaugeFiller {
+ id: rpmFiller
+ value: tachometer.actualRPM
+ anchors.right: parent.right
+ anchors.top: parent.top
+ anchors.topMargin: 246
+ anchors.rightMargin: 253
+ numVertices: 64
+ radius: 155
+ fillWidth: 5
+ color: tachometer.actualRPM < 4000 ? "green" : "#EF2973"
+ opacity: 0.6
+ minAngle: tachometer.minValueAngle
+ maxAngle: tachometer.maxValueAngle
+ minValue: tachometer.minimumRPM
+ maxValue: tachometer.maximumRPM
+ }
+ }
+
+ Item {
+ id: tachometerNeedle
+ width: 312
+ height: 7
+ rotation: rpmFiller.angle - 35
+ x: 854
+ y: 242
+
+ Image {
+ opacity: 0.75
+ width: 98
+ height: 7
+ anchors.left: parent.left
+ anchors.leftMargin: 2
+ anchors.verticalCenter: parent.verticalCenter
+ source: tachometer.actualRPM < 4000 ? "image://etc/SpeedometerNeedleGreen.png" : "image://etc/SpeedometerNeedle.png"
+ }
+ }
+
+ Text {
+ id: textEco
+ anchors.top: tachometerNeedle.top
+ anchors.topMargin: -7
+ anchors.horizontalCenter: tachometerNeedle.horizontalCenter
+ text: tachometer.actualRPM > 4000 ? "POWER" : "ECO"
+ font.pixelSize: 18
+ color: tachometer.actualRPM <= 4000 ? "white" : "red"
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/TemperatureMeter.qml b/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/TemperatureMeter.qml
new file mode 100644
index 00000000..c0001667
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/TemperatureMeter.qml
@@ -0,0 +1,90 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.6
+import ClusterDemo 1.0
+
+Item {
+ property real temperatureValue: ValueSource.engineTemperature
+ property real minValueAngle: 42.5
+ property real maxValueAngle: -42.5
+ property real minimumValue: 40
+ property real maximumValue: 120
+
+ anchors.right: parent.right
+ anchors.top: parent.top
+ anchors.rightMargin: 643
+ anchors.topMargin: 60
+
+ GaugeFiller {
+ id: temperatureFiller
+ value: temperatureValue
+ anchors.fill: parent
+ numVertices: 32
+ radius: 140
+ fillWidth: 25
+ color: "#EF2973"
+ opacity: 0.3
+ minAngle: minValueAngle
+ maxAngle: maxValueAngle
+ minValue: minimumValue
+ maxValue: maximumValue
+ Behavior on value {
+ enabled: !ValueSource.automaticDemoMode && startupAnimationsFinished
+ PropertyAnimation { duration: 250 }
+ }
+ }
+
+ Item {
+ width: 280
+ height: 7
+ rotation: temperatureFiller.angle - 47.5
+ anchors.centerIn: parent
+
+ Image {
+ width: 25
+ height: 3
+ //opacity: 0.75
+ anchors.left: parent.left
+ anchors.verticalCenter: parent.verticalCenter
+ source: "image://etc/SpeedometerNeedle.png"
+ }
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/TurboMeter.qml b/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/TurboMeter.qml
new file mode 100644
index 00000000..7da8e8f9
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/TurboMeter.qml
@@ -0,0 +1,72 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.6
+import ClusterDemo 1.0
+
+Item {
+ property real turbometerNeedleRotation: turboValue * turboDegreesPerValue
+ property real turboValue: ValueSource.rpm / 2000.
+ property real maxValueAngle: 270
+ property real minValueAngle: 0
+ property real maximumValue: 4.0
+ property real turboDegreesPerValue: Math.abs((maxValueAngle - minValueAngle) / maximumValue)
+
+ anchors.left: parent.left
+ anchors.top: parent.top
+ anchors.leftMargin: 426
+ anchors.topMargin: 93
+ width: 109
+ height: 7
+ rotation: turbometerNeedleRotation - 90
+
+ Image {
+ width: 38
+ height: 3
+ //opacity: 0.75
+ anchors.left: parent.left
+ anchors.verticalCenter: parent.verticalCenter
+ source: "image://etc/SpeedometerNeedle.png"
+ }
+ Behavior on turboValue {
+ enabled: !ValueSource.automaticDemoMode && startupAnimationsFinished
+ PropertyAnimation { duration: 250 }
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/designer/BatteryMeterSpecifics.qml b/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/designer/BatteryMeterSpecifics.qml
new file mode 100644
index 00000000..07ea27e4
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/designer/BatteryMeterSpecifics.qml
@@ -0,0 +1,176 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+****************************************************************************/
+
+import QtQuick 2.1
+import HelperWidgets 2.0
+import QtQuick.Layouts 1.0
+import QtQuick.Controls 1.0 as Controls
+
+Column {
+ anchors.left: parent.left
+ anchors.right: parent.right
+
+ Section {
+ anchors.left: parent.left
+ anchors.right: parent.right
+ caption: qsTr("BatteryMeter")
+ SectionLayout {
+
+ Label {
+ text: qsTr("Battery Value")
+ }
+
+ SecondColumnLayout {
+ SpinBox {
+ backendValue: backendValues.batteryValue
+ minimumValue: 0
+ maximumValue: backendValues.maximumValue.value
+ decimals: 0
+ }
+
+ Controls.Slider {
+ id: batterySlider
+ Layout.preferredWidth: 100
+
+ minimumValue: 0
+ maximumValue: backendValues.maximumValue.value
+ updateValueWhileDragging: true
+ stepSize: 1
+ value: backendValues.batteryValue.value
+ onValueChanged: {
+ backendValues.batteryValue.value = batterySlider.value
+
+ }
+
+ }
+
+ ExpandingSpacer {
+ width: 30
+ }
+ }
+
+
+
+ Label {
+ text: qsTr("Maximum Battery")
+ }
+
+ SecondColumnLayout {
+ SpinBox {
+ backendValue: backendValues.maximumValue
+ minimumValue: 0
+ maximumValue: 1000
+ decimals: 0
+ }
+
+ Controls.Slider {
+ id: maximumFuelSlider
+ Layout.preferredWidth: 100
+
+ minimumValue: 0
+ maximumValue: 1000
+ updateValueWhileDragging: true
+ stepSize: 1
+ value: backendValues.maximumValue.value
+ onValueChanged: {
+ backendValues.maximumValue.value = maximumFuelSlider.value
+
+ }
+
+ }
+
+ ExpandingSpacer {
+ width: 30
+ }
+ }
+
+ Label {
+ text: qsTr("Maximum Value Angle")
+ }
+
+ SecondColumnLayout {
+ SpinBox {
+ backendValue: backendValues.maxValueAngle
+ minimumValue: 0
+ maximumValue: 360
+ decimals: 0
+ }
+
+ Controls.Slider {
+ id: maxValueAngleSlider
+ Layout.preferredWidth: 100
+
+ minimumValue: 0
+ maximumValue: 360
+ updateValueWhileDragging: true
+ stepSize: 1
+ value: backendValues.maxValueAngle.value
+ onValueChanged: {
+ backendValues.maxValueAngle.value = maxValueAngleSlider.value
+ }
+
+ }
+
+ ExpandingSpacer {
+ width: 30
+ }
+ }
+
+ Label {
+ text: qsTr("Minimum Value Angle")
+ }
+
+
+ SecondColumnLayout {
+ SpinBox {
+ backendValue: backendValues.minValueAngle
+ minimumValue: 0
+ maximumValue: 360
+ decimals: 0
+ }
+
+ Controls.Slider {
+ id: minValueAngleSlider
+ Layout.preferredWidth: 100
+
+ minimumValue: 0
+ maximumValue: 360
+ updateValueWhileDragging: true
+ stepSize: 1
+ value: backendValues.minValueAngle.value
+ onValueChanged: {
+ backendValues.minValueAngle.value = minValueAngleSlider.value
+ }
+
+ }
+
+ ExpandingSpacer {
+ width: 30
+ }
+ }
+
+ }
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/designer/ConsumptionMeterSpecifics.qml b/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/designer/ConsumptionMeterSpecifics.qml
new file mode 100644
index 00000000..81180177
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/designer/ConsumptionMeterSpecifics.qml
@@ -0,0 +1,210 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+****************************************************************************/
+
+import QtQuick 2.1
+import HelperWidgets 2.0
+import QtQuick.Layouts 1.0
+import QtQuick.Controls 1.0 as Controls
+
+Column {
+ anchors.left: parent.left
+ anchors.right: parent.right
+
+ Section {
+ anchors.left: parent.left
+ anchors.right: parent.right
+ caption: qsTr("ConsumptionMeter")
+ SectionLayout {
+
+ Label {
+ text: qsTr("Consumption Value")
+ }
+
+ SecondColumnLayout {
+ SpinBox {
+ backendValue: backendValues.consumptionValue
+ minimumValue: backendValues.minimumValue.value
+ maximumValue: backendValues.maximumValue.value
+ decimals: 0
+ }
+
+ Controls.Slider {
+ id: consumptionSlider
+ Layout.preferredWidth: 100
+
+ minimumValue: backendValues.minimumValue.value
+ maximumValue: backendValues.maximumValue.value
+ updateValueWhileDragging: true
+ stepSize: 1
+ value: backendValues.consumptionValue.value
+ onValueChanged: {
+ backendValues.consumptionValue.value = consumptionSlider.value
+
+ }
+
+ }
+
+ ExpandingSpacer {
+ width: 30
+ }
+ }
+
+
+
+ Label {
+ text: qsTr("Maximum Consumption")
+ }
+
+ SecondColumnLayout {
+ SpinBox {
+ backendValue: backendValues.maximumValue
+ minimumValue: 0
+ maximumValue: 1000
+ decimals: 0
+ }
+
+ Controls.Slider {
+ id: maximumFuelSlider
+ Layout.preferredWidth: 100
+
+ minimumValue: 0
+ maximumValue: 1000
+ updateValueWhileDragging: true
+ stepSize: 10
+ value: backendValues.maximumValue.value
+ onValueChanged: {
+ backendValues.maximumValue.value = maximumFuelSlider.value
+
+ }
+
+ }
+
+ ExpandingSpacer {
+ width: 30
+ }
+ }
+
+
+ Label {
+ text: qsTr("Minimum Consumption")
+ }
+
+ SecondColumnLayout {
+ SpinBox {
+ backendValue: backendValues.minimumValue
+ minimumValue: 0
+ maximumValue: 1000
+ decimals: 0
+ }
+
+ Controls.Slider {
+ id: minimumSlider
+ Layout.preferredWidth: 100
+
+ minimumValue: 0
+ maximumValue: 1000
+ updateValueWhileDragging: true
+ stepSize: 10
+ value: backendValues.minimumValue.value
+ onValueChanged: {
+ backendValues.minimumValue.value = minimumSlider.value
+
+ }
+
+ }
+
+ ExpandingSpacer {
+ width: 30
+ }
+ }
+
+ Label {
+ text: qsTr("Maximum Value Angle")
+ }
+
+ SecondColumnLayout {
+ SpinBox {
+ backendValue: backendValues.maxValueAngle
+ minimumValue: 0
+ maximumValue: 360
+ decimals: 0
+ }
+
+ Controls.Slider {
+ id: maxValueAngleSlider
+ Layout.preferredWidth: 100
+
+ minimumValue: 0
+ maximumValue: 360
+ updateValueWhileDragging: true
+ stepSize: 10
+ value: backendValues.maxValueAngle.value
+ onValueChanged: {
+ backendValues.maxValueAngle.value = maxValueAngleSlider.value
+ }
+
+ }
+
+ ExpandingSpacer {
+ width: 30
+ }
+ }
+
+ Label {
+ text: qsTr("Minimum Value Angle")
+ }
+
+
+ SecondColumnLayout {
+ SpinBox {
+ backendValue: backendValues.minValueAngle
+ minimumValue: 0
+ maximumValue: 360
+ decimals: 0
+ }
+
+ Controls.Slider {
+ id: minValueAngleSlider
+ Layout.preferredWidth: 100
+
+ minimumValue: 0
+ maximumValue: 360
+ updateValueWhileDragging: true
+ stepSize: 10
+ value: backendValues.minValueAngle.value
+ onValueChanged: {
+ backendValues.minValueAngle.value = minValueAngleSlider.value
+ }
+
+ }
+
+ ExpandingSpacer {
+ width: 30
+ }
+ }
+
+ }
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/designer/FuelMeterSpecifics.qml b/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/designer/FuelMeterSpecifics.qml
new file mode 100644
index 00000000..06b5d194
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/designer/FuelMeterSpecifics.qml
@@ -0,0 +1,176 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+****************************************************************************/
+
+import QtQuick 2.1
+import HelperWidgets 2.0
+import QtQuick.Layouts 1.0
+import QtQuick.Controls 1.0 as Controls
+
+Column {
+ anchors.left: parent.left
+ anchors.right: parent.right
+
+ Section {
+ anchors.left: parent.left
+ anchors.right: parent.right
+ caption: qsTr("FuelMeter")
+ SectionLayout {
+
+ Label {
+ text: qsTr("Fuel Value")
+ }
+
+ SecondColumnLayout {
+ SpinBox {
+ backendValue: backendValues.fuelValue
+ minimumValue: 0
+ maximumValue: backendValues.maximumValue.value
+ decimals: 0
+ }
+
+ Controls.Slider {
+ id: fuelSlider
+ Layout.preferredWidth: 100
+
+ minimumValue: 0
+ maximumValue: backendValues.maximumValue.value
+ updateValueWhileDragging: true
+ stepSize: 1
+ value: backendValues.fuelValue.value
+ onValueChanged: {
+ backendValues.fuelValue.value = fuelSlider.value
+
+ }
+
+ }
+
+ ExpandingSpacer {
+ width: 30
+ }
+ }
+
+
+
+ Label {
+ text: qsTr("Maximum Fuel")
+ }
+
+ SecondColumnLayout {
+ SpinBox {
+ backendValue: backendValues.maximumValue
+ minimumValue: 0
+ maximumValue: 1000
+ decimals: 0
+ }
+
+ Controls.Slider {
+ id: maximumFuelSlider
+ Layout.preferredWidth: 100
+
+ minimumValue: 0
+ maximumValue: 1000
+ updateValueWhileDragging: true
+ stepSize: 10
+ value: backendValues.maximumValue.value
+ onValueChanged: {
+ backendValues.maximumValue.value = maximumFuelSlider.value
+
+ }
+
+ }
+
+ ExpandingSpacer {
+ width: 30
+ }
+ }
+
+ Label {
+ text: qsTr("Maximum Value Angle")
+ }
+
+ SecondColumnLayout {
+ SpinBox {
+ backendValue: backendValues.maxValueAngle
+ minimumValue: 0
+ maximumValue: 360
+ decimals: 0
+ }
+
+ Controls.Slider {
+ id: maxValueAngleSlider
+ Layout.preferredWidth: 100
+
+ minimumValue: 0
+ maximumValue: 360
+ updateValueWhileDragging: true
+ stepSize: 10
+ value: backendValues.maxValueAngle.value
+ onValueChanged: {
+ backendValues.maxValueAngle.value = maxValueAngleSlider.value
+ }
+
+ }
+
+ ExpandingSpacer {
+ width: 30
+ }
+ }
+
+ Label {
+ text: qsTr("Minimum Value Angle")
+ }
+
+
+ SecondColumnLayout {
+ SpinBox {
+ backendValue: backendValues.minValueAngle
+ minimumValue: 0
+ maximumValue: 360
+ decimals: 0
+ }
+
+ Controls.Slider {
+ id: minValueAngleSlider
+ Layout.preferredWidth: 100
+
+ minimumValue: 0
+ maximumValue: 360
+ updateValueWhileDragging: true
+ stepSize: 10
+ value: backendValues.minValueAngle.value
+ onValueChanged: {
+ backendValues.minValueAngle.value = minValueAngleSlider.value
+ }
+
+ }
+
+ ExpandingSpacer {
+ width: 30
+ }
+ }
+
+ }
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/designer/SpeedoMeterSpecifics.qml b/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/designer/SpeedoMeterSpecifics.qml
new file mode 100644
index 00000000..0ac8988e
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/designer/SpeedoMeterSpecifics.qml
@@ -0,0 +1,209 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+****************************************************************************/
+
+import QtQuick 2.1
+import HelperWidgets 2.0
+import QtQuick.Layouts 1.0
+import QtQuick.Controls 1.0 as Controls
+
+Column {
+ anchors.left: parent.left
+ anchors.right: parent.right
+
+ Section {
+ anchors.left: parent.left
+ anchors.right: parent.right
+ caption: qsTr("SpeedoMeter")
+ SectionLayout {
+
+ Label {
+ text: qsTr("Actual Speed")
+ }
+
+ SecondColumnLayout {
+ SpinBox {
+ backendValue: backendValues.actualSpeed
+ minimumValue: backendValues.minimumSpeed.value
+ maximumValue: backendValues.maximumSpeed.value
+ decimals: 0
+ }
+
+ Controls.Slider {
+ id: speedSlider
+ Layout.preferredWidth: 100
+
+ minimumValue: backendValues.minimumSpeed.value
+ maximumValue: backendValues.maximumSpeed.value
+ updateValueWhileDragging: true
+ stepSize: 1
+ value: backendValues.actualSpeed.value
+ onValueChanged: {
+ backendValues.actualSpeed.value = speedSlider.value
+
+ }
+
+ }
+
+ ExpandingSpacer {
+ width: 30
+ }
+ }
+
+
+
+ Label {
+ text: qsTr("Maximum Speed")
+ }
+
+ SecondColumnLayout {
+ SpinBox {
+ backendValue: backendValues.maximumSpeed
+ minimumValue: 0
+ maximumValue: 1000
+ decimals: 0
+ }
+
+ Controls.Slider {
+ id: maximumSpeedSlider
+ Layout.preferredWidth: 100
+
+ minimumValue: 0
+ maximumValue: 1000
+ updateValueWhileDragging: true
+ stepSize: 1
+ value: backendValues.maximumSpeed.value
+ onValueChanged: {
+ backendValues.maximumSpeed.value = maximumSpeedSlider.value
+
+ }
+
+ }
+
+ ExpandingSpacer {
+ width: 30
+ }
+ }
+
+ Label {
+ text: qsTr("Minimum Speed")
+ }
+
+ SecondColumnLayout {
+ SpinBox {
+ backendValue: backendValues.minimumSpeed
+ minimumValue: 0
+ maximumValue: 1000
+ decimals: 0
+ }
+
+ Controls.Slider {
+ id: minimumSpeedSlider
+ Layout.preferredWidth: 100
+
+ minimumValue: 0
+ maximumValue: 1000
+ updateValueWhileDragging: true
+ stepSize: 1
+ value: backendValues.minimumSpeed.value
+ onValueChanged: {
+ backendValues.minimumSpeed.value = minimumSpeedSlider.value
+
+ }
+
+ }
+
+ ExpandingSpacer {
+ width: 30
+ }
+ }
+
+ Label {
+ text: qsTr("Maximum Value Angle")
+ }
+
+ SecondColumnLayout {
+ SpinBox {
+ backendValue: backendValues.maxValueAngle
+ minimumValue: 0
+ maximumValue: 360
+ decimals: 0
+ }
+
+ Controls.Slider {
+ id: maxValueAngleSlider
+ Layout.preferredWidth: 100
+
+ minimumValue: 0
+ maximumValue: 360
+ updateValueWhileDragging: true
+ stepSize: 1
+ value: backendValues.maxValueAngle.value
+ onValueChanged: {
+ backendValues.maxValueAngle.value = maxValueAngleSlider.value
+ }
+
+ }
+
+ ExpandingSpacer {
+ width: 30
+ }
+ }
+
+ Label {
+ text: qsTr("Minimum Value Angle")
+ }
+
+
+ SecondColumnLayout {
+ SpinBox {
+ backendValue: backendValues.minValueAngle
+ minimumValue: 0
+ maximumValue: 360
+ decimals: 0
+ }
+
+ Controls.Slider {
+ id: minValueAngleSlider
+ Layout.preferredWidth: 100
+
+ minimumValue: 0
+ maximumValue: 360
+ updateValueWhileDragging: true
+ stepSize: 1
+ value: backendValues.minValueAngle.value
+ onValueChanged: {
+ backendValues.minValueAngle.value = minValueAngleSlider.value
+ }
+
+ }
+
+ ExpandingSpacer {
+ width: 30
+ }
+ }
+
+ }
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/designer/TachoMeterSpecifics.qml b/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/designer/TachoMeterSpecifics.qml
new file mode 100644
index 00000000..d3d9da8b
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/designer/TachoMeterSpecifics.qml
@@ -0,0 +1,210 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+****************************************************************************/
+
+import QtQuick 2.1
+import HelperWidgets 2.0
+import QtQuick.Layouts 1.0
+import QtQuick.Controls 1.0 as Controls
+
+Column {
+ anchors.left: parent.left
+ anchors.right: parent.right
+
+ Section {
+ anchors.left: parent.left
+ anchors.right: parent.right
+ caption: qsTr("TachoMeter")
+ SectionLayout {
+
+ Label {
+ text: qsTr("Actual RPM")
+ }
+
+ SecondColumnLayout {
+ SpinBox {
+ backendValue: backendValues.actualRPM
+ minimumValue: backendValues.minimumRPM.value
+ maximumValue: backendValues.maximumRPM.value
+ decimals: 0
+ }
+
+ Controls.Slider {
+ id: rpmSlider
+ Layout.preferredWidth: 100
+
+ minimumValue: backendValues.minimumRPM.value
+ maximumValue: backendValues.maximumRPM.value
+ updateValueWhileDragging: true
+ stepSize: 1
+ value: backendValues.actualRPM.value
+ onValueChanged: {
+ backendValues.actualRPM.value = rpmSlider.value
+
+ }
+
+ }
+
+ ExpandingSpacer {
+ width: 30
+ }
+ }
+
+
+
+ Label {
+ text: qsTr("Maximum RPM")
+ }
+
+ SecondColumnLayout {
+ SpinBox {
+ backendValue: backendValues.maximumRPM
+ minimumValue: 0
+ maximumValue: 10000
+ decimals: 0
+ }
+
+ Controls.Slider {
+ id: maximumRPMSlider
+ Layout.preferredWidth: 100
+
+ minimumValue: 0
+ maximumValue: 10000
+ updateValueWhileDragging: true
+ stepSize: 1
+ value: backendValues.maximumRPM.value
+ onValueChanged: {
+ backendValues.maximumRPM.value = maximumRPMSlider.value
+
+ }
+
+ }
+
+ ExpandingSpacer {
+ width: 30
+ }
+ }
+
+ Label {
+ text: qsTr("Minimum RPM")
+ }
+
+ SecondColumnLayout {
+ SpinBox {
+ backendValue: backendValues.minimumRPM
+ minimumValue: 0
+ maximumValue: 10000
+ decimals: 0
+ }
+
+ Controls.Slider {
+ id: minimumRPMSlider
+ Layout.preferredWidth: 100
+
+ minimumValue: 0
+ maximumValue: 10000
+ updateValueWhileDragging: true
+ stepSize: 1
+ value: backendValues.minimumRPM.value
+ onValueChanged: {
+ backendValues.minimumRPM.value = minimumRPMSlider.value
+
+ }
+
+ }
+
+ ExpandingSpacer {
+ width: 30
+ }
+ }
+
+
+ Label {
+ text: qsTr("Maximum Value Angle")
+ }
+
+ SecondColumnLayout {
+ SpinBox {
+ backendValue: backendValues.maxValueAngle
+ minimumValue: 0
+ maximumValue: 360
+ decimals: 0
+ }
+
+ Controls.Slider {
+ id: maxValueAngleSlider
+ Layout.preferredWidth: 100
+
+ minimumValue: 0
+ maximumValue: 360
+ updateValueWhileDragging: true
+ stepSize: 1
+ value: backendValues.maxValueAngle.value
+ onValueChanged: {
+ backendValues.maxValueAngle.value = maxValueAngleSlider.value
+ }
+
+ }
+
+ ExpandingSpacer {
+ width: 30
+ }
+ }
+
+ Label {
+ text: qsTr("Minimum Value Angle")
+ }
+
+
+ SecondColumnLayout {
+ SpinBox {
+ backendValue: backendValues.minValueAngle
+ minimumValue: 0
+ maximumValue: 360
+ decimals: 0
+ }
+
+ Controls.Slider {
+ id: minValueAngleSlider
+ Layout.preferredWidth: 100
+
+ minimumValue: 0
+ maximumValue: 360
+ updateValueWhileDragging: true
+ stepSize: 1
+ value: backendValues.minValueAngle.value
+ onValueChanged: {
+ backendValues.minValueAngle.value = minValueAngleSlider.value
+ }
+
+ }
+
+ ExpandingSpacer {
+ width: 30
+ }
+ }
+
+ }
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/designer/TemperatureMeterSpecifics.qml b/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/designer/TemperatureMeterSpecifics.qml
new file mode 100644
index 00000000..e4ae0cd5
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/designer/TemperatureMeterSpecifics.qml
@@ -0,0 +1,210 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+****************************************************************************/
+
+import QtQuick 2.1
+import HelperWidgets 2.0
+import QtQuick.Layouts 1.0
+import QtQuick.Controls 1.0 as Controls
+
+Column {
+ anchors.left: parent.left
+ anchors.right: parent.right
+
+ Section {
+ anchors.left: parent.left
+ anchors.right: parent.right
+ caption: qsTr("TemperaturenMeter")
+ SectionLayout {
+
+ Label {
+ text: qsTr("Temperature Value")
+ }
+
+ SecondColumnLayout {
+ SpinBox {
+ backendValue: backendValues.temperatureValue
+ minimumValue: backendValues.minimumValue.value
+ maximumValue: backendValues.maximumValue.value
+ decimals: 0
+ }
+
+ Controls.Slider {
+ id: temperatureSlider
+ Layout.preferredWidth: 100
+
+ minimumValue: backendValues.minimumValue.value
+ maximumValue: backendValues.maximumValue.value
+ updateValueWhileDragging: true
+ stepSize: 1
+ value: backendValues.temperatureValue.value
+ onValueChanged: {
+ backendValues.temperatureValue.value = temperatureSlider.value
+
+ }
+
+ }
+
+ ExpandingSpacer {
+ width: 30
+ }
+ }
+
+
+
+ Label {
+ text: qsTr("Maximum Temperature")
+ }
+
+ SecondColumnLayout {
+ SpinBox {
+ backendValue: backendValues.maximumValue
+ minimumValue: 0
+ maximumValue: 1000
+ decimals: 0
+ }
+
+ Controls.Slider {
+ id: maximumSlider
+ Layout.preferredWidth: 100
+
+ minimumValue: 0
+ maximumValue: 1000
+ updateValueWhileDragging: true
+ stepSize: 10
+ value: backendValues.maximumValue.value
+ onValueChanged: {
+ backendValues.maximumValue.value = maximumSlider.value
+
+ }
+
+ }
+
+ ExpandingSpacer {
+ width: 30
+ }
+ }
+
+
+ Label {
+ text: qsTr("Minimum Temperature")
+ }
+
+ SecondColumnLayout {
+ SpinBox {
+ backendValue: backendValues.minimumValue
+ minimumValue: 0
+ maximumValue: 1000
+ decimals: 0
+ }
+
+ Controls.Slider {
+ id: minimumSlider
+ Layout.preferredWidth: 100
+
+ minimumValue: 0
+ maximumValue: 1000
+ updateValueWhileDragging: true
+ stepSize: 10
+ value: backendValues.minimumValue.value
+ onValueChanged: {
+ backendValues.minimumValue.value = minimumSlider.value
+
+ }
+
+ }
+
+ ExpandingSpacer {
+ width: 30
+ }
+ }
+
+ Label {
+ text: qsTr("Maximum Value Angle")
+ }
+
+ SecondColumnLayout {
+ SpinBox {
+ backendValue: backendValues.maxValueAngle
+ minimumValue: 0
+ maximumValue: 360
+ decimals: 0
+ }
+
+ Controls.Slider {
+ id: maxValueAngleSlider
+ Layout.preferredWidth: 100
+
+ minimumValue: 0
+ maximumValue: 360
+ updateValueWhileDragging: true
+ stepSize: 10
+ value: backendValues.maxValueAngle.value
+ onValueChanged: {
+ backendValues.maxValueAngle.value = maxValueAngleSlider.value
+ }
+
+ }
+
+ ExpandingSpacer {
+ width: 30
+ }
+ }
+
+ Label {
+ text: qsTr("Minimum Value Angle")
+ }
+
+
+ SecondColumnLayout {
+ SpinBox {
+ backendValue: backendValues.minValueAngle
+ minimumValue: 0
+ maximumValue: 360
+ decimals: 0
+ }
+
+ Controls.Slider {
+ id: minValueAngleSlider
+ Layout.preferredWidth: 100
+
+ minimumValue: 0
+ maximumValue: 360
+ updateValueWhileDragging: true
+ stepSize: 10
+ value: backendValues.minValueAngle.value
+ onValueChanged: {
+ backendValues.minValueAngle.value = minValueAngleSlider.value
+ }
+
+ }
+
+ ExpandingSpacer {
+ width: 30
+ }
+ }
+
+ }
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/designer/TurboMeterSpecifics.qml b/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/designer/TurboMeterSpecifics.qml
new file mode 100644
index 00000000..fe5ad937
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_hybrid/gauges/designer/TurboMeterSpecifics.qml
@@ -0,0 +1,176 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+****************************************************************************/
+
+import QtQuick 2.1
+import HelperWidgets 2.0
+import QtQuick.Layouts 1.0
+import QtQuick.Controls 1.0 as Controls
+
+Column {
+ anchors.left: parent.left
+ anchors.right: parent.right
+
+ Section {
+ anchors.left: parent.left
+ anchors.right: parent.right
+ caption: qsTr("TurboMeter")
+ SectionLayout {
+
+ Label {
+ text: qsTr("Turbo Value")
+ }
+
+ SecondColumnLayout {
+ SpinBox {
+ backendValue: backendValues.turboValue
+ minimumValue: 0
+ maximumValue: backendValues.maximumValue.value
+ decimals: 0
+ }
+
+ Controls.Slider {
+ id: turboSlider
+ Layout.preferredWidth: 100
+
+ minimumValue: 0
+ maximumValue: backendValues.maximumValue.value
+ updateValueWhileDragging: true
+ stepSize: 0.1
+ value: backendValues.turboValue.value
+ onValueChanged: {
+ backendValues.turboValue.value = turboSlider.value
+
+ }
+
+ }
+
+ ExpandingSpacer {
+ width: 30
+ }
+ }
+
+
+
+ Label {
+ text: qsTr("Maximum Turbo")
+ }
+
+ SecondColumnLayout {
+ SpinBox {
+ backendValue: backendValues.maximumValue
+ minimumValue: 0
+ maximumValue: 1000
+ decimals: 0
+ }
+
+ Controls.Slider {
+ id: maximumFuelSlider
+ Layout.preferredWidth: 100
+
+ minimumValue: 0
+ maximumValue: 1000
+ updateValueWhileDragging: true
+ stepSize: 10
+ value: backendValues.maximumValue.value
+ onValueChanged: {
+ backendValues.maximumValue.value = maximumFuelSlider.value
+
+ }
+
+ }
+
+ ExpandingSpacer {
+ width: 30
+ }
+ }
+
+ Label {
+ text: qsTr("Maximum Value Angle")
+ }
+
+ SecondColumnLayout {
+ SpinBox {
+ backendValue: backendValues.maxValueAngle
+ minimumValue: 0
+ maximumValue: 360
+ decimals: 0
+ }
+
+ Controls.Slider {
+ id: maxValueAngleSlider
+ Layout.preferredWidth: 100
+
+ minimumValue: 0
+ maximumValue: 360
+ updateValueWhileDragging: true
+ stepSize: 10
+ value: backendValues.maxValueAngle.value
+ onValueChanged: {
+ backendValues.maxValueAngle.value = maxValueAngleSlider.value
+ }
+
+ }
+
+ ExpandingSpacer {
+ width: 30
+ }
+ }
+
+ Label {
+ text: qsTr("Minimum Value Angle")
+ }
+
+
+ SecondColumnLayout {
+ SpinBox {
+ backendValue: backendValues.minValueAngle
+ minimumValue: 0
+ maximumValue: 360
+ decimals: 0
+ }
+
+ Controls.Slider {
+ id: minValueAngleSlider
+ Layout.preferredWidth: 100
+
+ minimumValue: 0
+ maximumValue: 360
+ updateValueWhileDragging: true
+ stepSize: 10
+ value: backendValues.minValueAngle.value
+ onValueChanged: {
+ backendValues.minValueAngle.value = minValueAngleSlider.value
+ }
+
+ }
+
+ ExpandingSpacer {
+ width: 30
+ }
+ }
+
+ }
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_sports/CameraLoader.qml b/doc/src/snippets/qtcluster/qml/dash_sports/CameraLoader.qml
new file mode 100644
index 00000000..25101609
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_sports/CameraLoader.qml
@@ -0,0 +1,53 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.6
+import ".."
+import ClusterDemo 1.0
+
+Loader {
+ id: camera
+
+ opacity: 0.0
+ visible: false
+ asynchronous: true
+ source: "../VideoView.qml"
+ onLoaded: item.imageSource = "image://etc/RearCameraOverlaySport.png"
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_sports/CarLoader.qml b/doc/src/snippets/qtcluster/qml/dash_sports/CarLoader.qml
new file mode 100644
index 00000000..c9022909
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_sports/CarLoader.qml
@@ -0,0 +1,55 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.6
+
+Loader {
+ opacity: 0.0
+
+ asynchronous: true
+ active: false
+ source: "../CarViewSports.qml"
+
+ onLoaded: {
+ // Start with car view, there is some kind of a problem when starting with any
+ // other (It seems NoDraw doesn't work if this is not the first view)
+ loadCenterView(true) // We get the first change from signal
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_sports/CenterStack.qml b/doc/src/snippets/qtcluster/qml/dash_sports/CenterStack.qml
new file mode 100644
index 00000000..8eaadd5a
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_sports/CenterStack.qml
@@ -0,0 +1,124 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.6
+import ".."
+import ClusterDemo 1.0
+
+Item {
+ id: centerStack
+ property int viewIndex: 4
+ height: root.height - 173
+ width: root.width / 2
+ clip: true
+
+ property alias fadeOutCenter: fadeOutCenter
+ property alias fadeInCenter: fadeInCenter
+ property alias loader: loader
+
+
+ Loader {
+ id: loader
+ onStatusChanged: {
+ if (status == Loader.Ready)
+ fadeInCenter.start()
+ }
+ anchors.fill: parent
+ }
+
+ Component.onCompleted: {
+ loader.source = "../MediaPlayerView.qml"
+ // Start with car view, there is some kind of a problem when starting with any
+ // other (It seems NoDraw doesn't work if this is not the first view)
+ //loadCenterView(true) // We get the first change from signal
+ }
+
+ PropertyAnimation {
+ id: fadeInCenter
+ target: loader
+ property: "opacity"
+ from: 0.0
+ to: 1.0
+ duration: 400
+ easing.type: Easing.Linear
+ }
+
+ PropertyAnimation {
+ id: fadeOutCenter
+ property: "opacity"
+ from: 1.0
+ to: 0.0
+ duration: 250
+ easing.type: Easing.Linear
+ onStopped: {
+ if (target === car) {
+ car.visible = false
+ car.item.hidden = true
+ } else if (target === camera) {
+ camera.visible = false
+ }
+ if (centerStack.viewIndex === carviewindex) {
+ car.visible = true
+ fadeInCenter.target = car
+ car.item.hidden = false
+ fadeInCenter.start()
+ } else if (centerStack.viewIndex === videoviewindex) {
+ camera.x = centerStack.x
+ camera.y = centerStack.y
+ camera.visible = true
+ fadeInCenter.target = camera
+ fadeInCenter.start()
+ } else {
+ fadeInCenter.target = loader
+ }
+ loader.source = component[centerStack.viewIndex]
+ }
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_sports/Dashboard.qml b/doc/src/snippets/qtcluster/qml/dash_sports/Dashboard.qml
new file mode 100644
index 00000000..619d92c1
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_sports/Dashboard.qml
@@ -0,0 +1,52 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.2
+import ClusterDemo 1.0
+import ".."
+
+Item {
+ id: main
+
+ width: 1280
+ height: 480
+
+ anchors.fill: parent
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_sports/DashboardForm.ui.qml b/doc/src/snippets/qtcluster/qml/dash_sports/DashboardForm.ui.qml
new file mode 100644
index 00000000..98c6a2a8
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_sports/DashboardForm.ui.qml
@@ -0,0 +1,250 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+import QtQuick 2.6
+import ".."
+import "."
+import ClusterDemo 1.0
+import QtQuick.Extras 1.4
+
+Item {
+
+ id: root
+
+ width: 1280
+ height: 480
+
+ property alias camera: camera
+ property alias car: car
+ property alias speedoMeter: speedoMeter
+ property alias flipable: flipable
+
+ property bool startupAnimationStopped: false
+
+ property int gaugeDemoTime: 1000
+ property alias centerStack: centerStack // duration (/2) of the gauge needle animation at startup
+
+ property color iconRed: "#e41e25"
+ property color iconGreen: "#5caa15"
+ property color iconYellow: "#face20"
+ property color iconDark: "#444444"
+
+ // TODO: Needed, as background clearing gets messed up after hybrid 3D
+ Rectangle {
+ anchors.fill: parent
+ color: "black"
+ z: -1
+ }
+
+ Image {
+ id: frame
+ source: "image://etc/DashboardFrameSport-mask.png"
+ z: 2
+ }
+
+ //where?
+ CameraLoader {
+ id: camera
+
+ width: parent.width / 2.5
+ height: parent.height - 180
+
+ anchors.centerIn: parent
+ }
+
+ // comment ifndef QT_3DCORE_LIB
+ CarLoader {
+ id: car
+
+ width: parent.width / 2.5
+ height: parent.height - 180
+
+ anchors.centerIn: parent
+ }
+ // end comment
+ Item {
+ id: container
+
+ width: root.width
+ height: root.height
+ anchors.verticalCenterOffset: 0
+ anchors.horizontalCenterOffset: 0
+ anchors.centerIn: parent
+
+ SpeedoMeterLoader {
+ id: speedoMeter
+ anchors.left: parent.left
+ anchors.leftMargin: 48
+ anchors.top: parent.top
+ anchors.topMargin: 67
+ height: width
+ value: 33
+ width: 380
+ z: 4
+ }
+
+ CenterStack {
+ id: centerStack
+ viewIndex: 3
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.top: parent.top
+ anchors.topMargin: 83
+ }
+
+ RPMFlipable {
+ id: flipable
+ anchors.right: parent.right
+ anchors.rightMargin: 50
+ anchors.top: parent.top
+ anchors.topMargin: 69
+ width: 380
+ rpmValue: 2212
+ flipped: false
+ z: 4
+ }
+ }
+
+ Item {
+ width: speedoMeter.width
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.top: pilotLights.top
+
+ TurnIndicator {
+ anchors.left: parent.left
+ direction: Qt.LeftArrow
+ active: ValueSource.turnSignal & Qt.LeftArrow
+ width: 48
+ height: 48
+ }
+
+ TurnIndicator {
+ anchors.right: parent.right
+ direction: Qt.RightArrow
+ active: ValueSource.turnSignal & Qt.RightArrow
+ width: 48
+ height: 48
+ }
+
+ z: 3
+ }
+
+ Item {
+ id: bottomRow
+ height: 68
+ width: 320
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: 10
+ anchors.horizontalCenter: parent.horizontalCenter
+ z: 3
+ property int pixelSize: 17
+ Text {
+ text: ValueSource.date
+ color: "white"
+ font.pixelSize: bottomRow.pixelSize
+ anchors.right: temperature.left
+ anchors.rightMargin: 15
+ }
+ Text {
+ id: temperature
+ text: "+18°C"
+ color: "white"
+ font.pixelSize: bottomRow.pixelSize
+ anchors.right: time.left
+ anchors.rightMargin: 15
+ }
+ Text {
+ id: time
+ text: ValueSource.time
+ color: "white"
+ font.pixelSize: bottomRow.pixelSize
+ anchors.right: parent.right
+ }
+ }
+
+ Row {
+ id: pilotLights
+ anchors.horizontalCenter: parent.horizontalCenter
+ y: 23
+ spacing: 2
+ z: 3
+
+ Picture {
+ width: 48
+ height: 48
+
+ color: ValueSource.lowBeam ? root.iconGreen : root.iconDark
+ source: "qrc:/iso-icons/iso_grs_7000_4_0456.dat"
+ }
+
+ Picture {
+ width: 48
+ height: 48
+
+ color: ValueSource.seatBelt ? root.iconRed : root.iconDark
+ source: "qrc:/iso-icons/iso_grs_7000_4_0249.dat"
+ }
+
+
+ Picture {
+ width: 48
+ height: 48
+
+ color: ValueSource.lowBeam ? root.iconRed : root.iconDark
+ source: "qrc:/iso-icons/iso_grs_7000_4_0083.dat"
+ }
+
+ Picture {
+ width: 48
+ height: 48
+
+ color: ValueSource.lightFailure ? root.iconYellow : root.iconDark
+ source: "qrc:/iso-icons/iso_grs_7000_4_1555.dat"
+ }
+ }
+
+ VehicleInfoNote {
+ anchors.bottom: car.bottom
+ visible: noteVisible && highlightType && !car.hidden
+ id: alertNote
+ textColor: "orange" //"#3a98c4"
+ fixedPositionX: centerStack.x + (centerStack.width / 2)
+ }
+
+ // end comment
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_sports/DashboardFrame.qml b/doc/src/snippets/qtcluster/qml/dash_sports/DashboardFrame.qml
new file mode 100644
index 00000000..0028581d
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_sports/DashboardFrame.qml
@@ -0,0 +1,61 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.6
+import ".."
+import ClusterDemo 1.0
+
+Loader {
+ width: 1280
+ height: 480
+
+ id: loader
+ asynchronous: true
+ active: frame.status === Image.Ready
+ source: "DashboardView.qml"
+
+ Image {
+ id: frame
+
+ visible: loader.status !== Loader.Ready //only show until the real dashboard is loaded
+ source: "image://etc/DashboardFrameSport-mask.png"
+ z: 2
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_sports/DashboardView.qml b/doc/src/snippets/qtcluster/qml/dash_sports/DashboardView.qml
new file mode 100644
index 00000000..0e9ba25e
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_sports/DashboardView.qml
@@ -0,0 +1,320 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.4
+import ClusterDemo 1.0
+
+DashboardForm {
+ id: main //the id is used in e.g. VehicleInfoNote
+
+ width: 1280
+ height: 480
+
+ //Start animating gauges after both are loaded
+ function showGauges() {
+ if (speedoMeter.status === Loader.Ready
+ && flipable.rpm.status === Loader.Ready) {
+ startupAnimation.start()
+ }
+ }
+
+ property var component: [
+ "../MapView.qml",
+ "../MediaPlayerView.qml",
+ "../ConsumptionView.qml",
+ "", // VideoView.qml
+ "../CarParking.qml",
+ "" // CarView.qml
+ ]
+
+ property string mapPositionImage: "image://etc/MapLocationSport.png"
+
+ property int videoviewindex: 3
+ property int parkingviewindex: 4
+ property int carviewindex: 5
+
+ property int preReversingCenterView: -1
+ property int preReversingRightView
+
+ // CarModel animations
+ property int carModelHighlightType: 0
+
+ property bool doorAction: false
+ property bool actionInProgress: false
+ property bool loadingInProgress: false
+ property bool isReversing: false
+
+ property int doorsOpen: ValueSource.frontLeftOpen + ValueSource.frontRightOpen
+ + ValueSource.hoodOpen + ValueSource.trunkOpen
+ property bool flatTire: ValueSource.flatTire
+ property bool lightFailure: ValueSource.lightFailure
+ property int gear: ValueSource ? ValueSource.gear : "4"
+
+ property var cameraView: camera
+ property bool viewChanged: ValueSource.viewChange
+
+ function forceCarView() {
+ actionInProgress = true
+ // Make CarView visible before activating the animations
+ if (car.item && car.item.hidden) {
+ if (camera.visible)
+ camera.visible = false
+ car.opacity = 1.0
+ centerStack.visible = false
+ car.visible = true
+ car.item.hidden = false
+ }
+ }
+
+ function loadCenterView(nextView, allowParking) {
+ loadingInProgress = true
+ var previousViewIndex = centerStack.viewIndex
+
+ if (preReversingCenterView != -1 && !allowParking) {
+ if (centerStack.viewIndex !== preReversingCenterView) {
+ centerStack.viewIndex = preReversingCenterView
+ if (centerStack.viewIndex < 0)
+ centerStack.viewIndex = 5
+ }
+ }
+ else {
+ centerStack.viewIndex = getViewIndex(centerStack.viewIndex, nextView, allowParking)
+ }
+ loadingInProgress = false
+
+ if (previousViewIndex === carviewindex)
+ centerStack.fadeOutCenter.target = car
+ else if (previousViewIndex === videoviewindex)
+ centerStack.fadeOutCenter.target = camera
+ else
+ centerStack.fadeOutCenter.target = centerStack.loader
+ centerStack.fadeOutCenter.start()
+ }
+
+ function getViewIndex(viewindex, nextView, allowParking) {
+ if (allowParking) {
+ return videoviewindex
+ }
+
+ if (nextView) {
+ viewindex++
+ if (viewindex === parkingviewindex) {
+ viewindex++
+ }
+ if (viewindex > 5)
+ viewindex = 0
+ } else {
+ viewindex--
+ if (viewindex === parkingviewindex) {
+ viewindex--
+ }
+ if (viewindex < 0)
+ viewindex = 5
+ }
+ return viewindex
+ }
+
+ onDoorsOpenChanged: {
+ if (actionInProgress && !doorAction)
+ return
+
+ // Check all doors & parse a correct value from them
+ var doors = 0
+ if (ValueSource.frontLeftOpen)
+ doors ^= 1
+ if (ValueSource.frontRightOpen)
+ doors ^= 2
+ if (ValueSource.trunkOpen)
+ doors ^= 4
+ if (ValueSource.hoodOpen)
+ doors ^= 8
+
+ if (doors != 0) {
+ forceCarView()
+ if (car.item)
+ car.item.highlightDoors(doors)
+ carModelHighlightType = -1
+ }
+ }
+
+ onFlatTireChanged: {
+ if (!actionInProgress && flatTire) {
+ forceCarView()
+ carModelHighlightType = car.item.highlightTire()
+ }
+ }
+
+ onLightFailureChanged: {
+ if (!actionInProgress && lightFailure) {
+ forceCarView()
+ carModelHighlightType = car.item.highlightLamp()
+ }
+ }
+
+ onGearChanged: {
+ if (gear === -1)
+ reversing()
+ else if (gear >= 0)
+ returnFromReversing()
+ }
+
+ onViewChangedChanged: changeView(viewChanged)
+
+ function reversing() {
+ isReversing = true
+ // Car backing up, trigger rear camera view and proximity sensor view
+ preReversingCenterView = centerStack.viewIndex
+ loadCenterView(0, true)
+ flipable.flipped = !flipable.flipped
+ }
+
+ function returnFromReversing() {
+ if (!isReversing)
+ return
+ loadCenterView(true, false)
+ preReversingCenterView = -1
+ flipable.flipped = !flipable.flipped
+ isReversing = false
+ }
+
+ function changeView(nextView) {
+ if (isReversing)
+ return
+ if (actionInProgress || loadingInProgress)
+ return
+ if (nextView)
+ loadCenterView(nextView)
+ }
+
+ function stopAll() {
+ returnView.stop()
+ startupAnimation.stop()
+ centerStack.fadeOutCenter.stop()
+ centerStack.fadeInCenter.stop()
+ doorAction = false
+ actionInProgress = false
+ loadingInProgress = false
+ isReversing = false
+ }
+
+ Timer {
+ id: returnView
+ interval: 1000
+ running: false
+ onTriggered: {
+ if (camera.x === centerStack.x)
+ camera.visible = true
+ car.item.hidden = true
+ car.visible = false
+ car.opacity = 0.0
+ centerStack.visible = true
+ }
+ }
+
+ SequentialAnimation {
+ id: startupAnimation
+ ParallelAnimation {
+ SmoothedAnimation {
+ target: speedoMeter.rotation
+ property: "angle"
+ from: 90
+ to: 0
+ duration: 300
+ }
+ SmoothedAnimation {
+ target: flipable.flipRotation
+ property: "angle"
+ from: 90
+ to: 0
+ duration: 300
+ }
+ }
+
+ ParallelAnimation {
+ SequentialAnimation {
+ id: rpmAnimation
+ SmoothedAnimation {
+ target: flipable.rpm.item
+ property: "rpmValue"
+ to: flipable.rpm.item.maxValue
+ duration: gaugeDemoTime
+ easing.type: Easing.InQuint
+ }
+ SmoothedAnimation {
+ target: flipable.rpm.item
+ property: "rpmValue"
+ to: ValueSource.rpm
+ duration: gaugeDemoTime
+ easing.type: Easing.OutQuint
+ }
+ ScriptAction {
+ script: flipable.rpm.item.rpmValue = ValueSource.rpm
+ }
+ }
+
+ SequentialAnimation {
+ id: speedAnimation
+ SmoothedAnimation {
+ target: speedoMeter.item
+ property: "speedValue"
+ to: speedoMeter.item.maxValue
+ duration: gaugeDemoTime
+ easing.type: Easing.InQuint
+ }
+ SmoothedAnimation {
+ target: speedoMeter.item
+ property: "speedValue"
+ to: ValueSource.kph // TODO: Not entirely accurate this way, fix
+ duration: gaugeDemoTime
+ easing.type: Easing.OutQuint
+ }
+ ScriptAction {
+ script: startupAnimationStopped = true
+ }
+ }
+ }
+ ScriptAction {
+ script: car.active = true
+ } //Start the 3d model loading
+ }
+
+ speedoMeter.onLoaded: showGauges()
+ flipable.onLoaded: showGauges()
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_sports/Gauge.qml b/doc/src/snippets/qtcluster/qml/dash_sports/Gauge.qml
new file mode 100644
index 00000000..e6d55ace
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_sports/Gauge.qml
@@ -0,0 +1,109 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 The Qt Company and/or its subsidiary(-ies).
+** Contact: http://www.qt.io
+**
+** This file is part of the The Qt Company automotive framework.
+**
+****************************************************************************/
+
+import QtQuick 2.0
+
+import "functions.js" as Functions
+
+Item {
+ id: gauge
+ property alias topText: topTxt
+ property alias bgSource: bgImage.source
+ property real outerRadius: Math.min(width, height) * 0.5
+ property int animationDuration: 500
+
+ property int value: 0
+ property int minValue: 0
+ property int maxValue: 10000
+ property int minAngle: -138
+ property int maxAngle: 162
+ property real valueInDegrees: ((maxAngle - minAngle) / (maxValue - minValue)) * (value - minValue)
+ property string shaderColor: "#E31E24"
+
+ //This is for drawing the shader needle. RpmGauge values background is a bit bigger than
+ //speedometer (or in different location).
+ // As we draw all gauge needles here we need the correction for rpm gauge
+ property alias pixelCorrection: effect.pixelCorrection
+
+ Image {
+ id: bgImage
+ anchors.centerIn: parent
+ }
+
+ Text {
+ id: topTxt
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: parent.verticalCenter
+ font.pixelSize: Functions.toPixels(0.3, outerRadius)
+ color: "white"
+ }
+
+ ShaderEffect {
+ id: effect
+ anchors.centerIn: parent
+
+ width: gauge.width
+ height: gauge.height
+ property double frontCut: gauge.minAngle + gauge.valueInDegrees// new speed
+ property double backCut: gauge.minAngle //starting point
+
+ // INTERNAL BELOW
+ property double _accelerating: (backCut < frontCut) ? 1. : 0.
+ property double pixelCorrection: 0.0
+
+ property variant source: ShaderEffectSource {
+ sourceItem: Rectangle {
+ width: effect.width
+ height: effect.width
+ radius: width
+ color: shaderColor
+ }
+ }
+
+ Behavior on frontCut {
+ enabled: startupAnimationStopped
+ PropertyAnimation { duration: animationDuration }
+ }
+
+ fragmentShader: "
+ varying highp vec2 qt_TexCoord0;
+ uniform lowp sampler2D source;
+ uniform lowp float qt_Opacity;
+
+ uniform lowp float frontCut;
+ uniform lowp float backCut;
+ uniform lowp float _accelerating;
+ uniform lowp float pixelCorrection;
+
+ highp float FCRad = radians(frontCut - 180.);
+ highp float BCRad = radians(backCut - 180.);
+
+ void main() {
+ highp vec2 uv = vec2(.5 - qt_TexCoord0.y, .5 - qt_TexCoord0.x);
+
+ lowp float L = length(uv);
+ lowp float f = 0.;
+
+ f = smoothstep(L - .01, L, .4615 + pixelCorrection);
+ f -= smoothstep(L,L + 0.01, .444 + pixelCorrection);
+ //f = step(L, 0.48);
+ //f -= step(L,0.45);
+
+ lowp float angle = -atan(uv.y,uv.x);
+
+ // Without gradient
+ f *= mix((1. - step(BCRad, angle)) * step(FCRad, angle),
+ (1. - step(FCRad, angle)) * step(BCRad, angle),
+ _accelerating);
+
+ gl_FragColor = texture2D(source, qt_TexCoord0) * f * 1.;
+ }
+ "
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_sports/RPMFlipable.qml b/doc/src/snippets/qtcluster/qml/dash_sports/RPMFlipable.qml
new file mode 100644
index 00000000..a3ebda29
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_sports/RPMFlipable.qml
@@ -0,0 +1,130 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.6
+import ".."
+import ClusterDemo 1.0
+
+Flipable {
+ id: flipable
+ height: width
+ property bool flipped: false
+ signal loaded
+ property alias flipRotation: flipRotation
+ property alias rpm: rpm
+
+ property int rpmValue: 4000
+
+ front: Loader {
+ id: rpm
+ width: parent.width
+ height: width
+ asynchronous: true
+ source: "RPMGauge_painter.qml"
+ onLoaded: flipable.loaded()
+ }
+
+ back: Loader {
+ width: parent.width
+ height: width
+ asynchronous: true
+ source: "../CarParkingSports.qml"
+ }
+
+ transform: Rotation {
+ id: flipRotation
+ origin.x: flipable.width / 2
+ origin.y: flipable.height / 2
+ axis.x: 0; axis.y: 1; axis.z: 0 // set axis.y to 1 to rotate around y-axis
+ angle: 90 // the default angle
+ }
+
+ states: [
+ State {
+ name: "back"
+ PropertyChanges {
+ target: flipRotation
+ angle: 180
+ }
+ PropertyChanges {
+ target: flipable.front
+ visible: false
+ }
+
+ PropertyChanges {
+ target: flipable.back
+ visible: true
+ }
+
+ when: flipable.flipped
+ },
+ State {
+ name: "front"
+ PropertyChanges {
+ target: flipRotation
+ angle: 0
+ }
+ PropertyChanges {
+ target: flipable.front
+ visible: true
+ }
+
+ PropertyChanges {
+ target: flipable.back
+ visible: false
+ }
+ when: !flipable.flipped
+ }
+ ]
+
+ transitions: Transition {
+ NumberAnimation { target: flipRotation; property: "angle"; duration: 300 }
+ }
+
+ //Fill background while flipping. TODO think better way to do it
+ Rectangle {
+ anchors.centerIn: parent
+ radius: flipable.width+4 /2
+ width: flipable.width+4
+ height: flipable.width+4
+ color: "black"
+ z: -1
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_sports/RPMGauge.qml b/doc/src/snippets/qtcluster/qml/dash_sports/RPMGauge.qml
new file mode 100644
index 00000000..c0bd7aec
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_sports/RPMGauge.qml
@@ -0,0 +1,240 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+
+import "../functions.js" as Functions
+import ClusterDemo 1.0
+
+Item {
+ property alias rpmValue: rpmGauge.rpmValue
+ property alias maxValue: rpmGauge.maxValue
+
+ Image {
+ id: rpmBg
+ source: "image://etc/Gauge_RPM.png"
+ }
+
+ ShaderEffect {
+ id: rpmGauge
+ anchors.fill: rpmBg
+
+ property real outerRadius: Math.min(width, height) * 0.5
+ property int animationDurationRpm: 50
+
+ property real rpmValue: 0
+ property int value: startupAnimationStopped ? ValueSource.rpm : rpmValue
+ property int minValue: 0
+ property int maxValue: 8000
+ property int minAngle: 90
+ property int maxAngle: 270
+ property real valueInDegrees: ((maxAngle - minAngle)
+ / (maxValue - minValue)) * (value - minValue)
+
+ property double fCRadRpm: Functions.degToRad(frontCutRpm - 180.)
+ property double bCRadRpm: Functions.degToRad(backCutRpm - 180.)
+
+ //Battery gauge
+ property real valueBatt: ValueSource.batteryLevel
+ property int minAngleBatt: 324
+ property int maxAngleBatt: 288
+ property int maxValueBatt: 100
+ property int animationDurationBatt: 100
+ property color shaderColorBatt: "#464749"
+ property real valueInDegreesBatt: ((maxAngleBatt - minAngleBatt)
+ / (maxValueBatt - minValue)) * (valueBatt - minValue)
+ property double _acceleratingBatt: (backCutBatt < frontCutBatt) ? 1. : 0.
+ property double frontCutBatt: minAngleBatt + valueInDegreesBatt
+ property double backCutBatt: minAngleBatt
+
+ property double fCRadBatt: Functions.degToRad(frontCutBatt - 180.)
+ property double bCRadBatt: Functions.degToRad(backCutBatt - 180.)
+
+ //Engine temp
+ property real valueTemp: ValueSource.engineTemperature > minValueTemp
+ ? ValueSource.engineTemperature : minValueTemp
+ property int minAngleTemp: 35
+ property int maxAngleTemp: 72
+ property int minValueTemp: 40
+ property int maxValueTemp: 120
+ property int animationDurationTemp: 100
+ property color shaderColorTemp: "#464749"
+ property real valueInDegreesTemp: ((maxAngleTemp - minAngleTemp)
+ / (maxValueTemp - minValueTemp))
+ * (valueTemp - minValueTemp)
+ property double _acceleratingTemp: (backCutTemp < frontCutTemp) ? 1. : 0.
+ property double frontCutTemp: minAngleTemp + valueInDegreesTemp
+ property double backCutTemp: minAngleTemp
+
+ property double fCRadTemp: Functions.degToRad(frontCutTemp - 180.)
+ property double bCRadTemp: Functions.degToRad(backCutTemp - 180.)
+
+ //Shader properties
+ property double frontCutRpm: minAngle + valueInDegrees
+ property double backCutRpm: minAngle
+
+ // INTERNAL BELOW
+ property double _acceleratingRpm: (backCutRpm < frontCutRpm) ? 1. : 0.
+ property variant source: rpmBg
+ property color shaderColorRpm: "#E31E24"
+
+ Behavior on frontCutRpm {
+ enabled: startupAnimationStopped
+ PropertyAnimation { duration: rpmGauge.animationDurationRpm }
+ }
+
+ Behavior on frontCutBatt {
+ enabled: startupAnimationStopped
+ PropertyAnimation { duration: rpmGauge.animationDurationBatt }
+ }
+
+ Behavior on frontCutTemp {
+ enabled: startupAnimationStopped
+ PropertyAnimation { duration: rpmGauge.animationDurationTemp }
+ }
+
+ fragmentShader: "
+ varying highp vec2 qt_TexCoord0;
+ uniform lowp sampler2D source;
+ uniform lowp float qt_Opacity;
+ lowp vec4 c = vec4(0.,0.,0.,0.);
+
+ //Rpm
+ uniform lowp vec4 shaderColorRpm;
+ uniform lowp float _acceleratingRpm;
+ uniform highp float fCRadRpm;
+ uniform highp float bCRadRpm;
+
+ //Batt
+ uniform lowp vec4 shaderColorBatt;
+ uniform lowp float _acceleratingBatt;
+
+ uniform highp float fCRadBatt;
+ uniform highp float bCRadBatt;
+
+ //Temp
+ uniform lowp vec4 shaderColorTemp;
+ uniform lowp float _acceleratingTemp;
+
+ uniform highp float fCRadTemp;
+ uniform highp float bCRadTemp;
+
+ void main() {
+ highp vec2 uv = vec2(.5 - qt_TexCoord0.y, .5 - qt_TexCoord0.x);
+
+ lowp float L = length(uv);
+ lowp float f = 0.;
+
+ f = smoothstep(L - .01, L, .4615);
+ f -= smoothstep(L,L + 0.01, .444);
+
+ lowp float angle = -atan(uv.y,uv.x);
+
+ lowp float frpm = f * mix((1. - step(bCRadRpm, angle)) * step(fCRadRpm, angle),
+ (1. - step(fCRadRpm, angle)) * step(bCRadRpm, angle),
+ _acceleratingRpm);
+
+ if (frpm > .0) {
+ gl_FragColor = mix(c,shaderColorRpm,frpm);
+ return;
+ }
+
+ lowp float fBatt = f * mix((1. - step(bCRadBatt, angle)) * step(fCRadBatt, angle),
+ (1. - step(fCRadBatt, angle)) * step(bCRadBatt, angle),
+ _acceleratingBatt);
+
+ if ( fBatt > .0) {
+ gl_FragColor = mix(c,shaderColorBatt,fBatt);
+ return;
+ }
+
+ lowp float fTemp= f * mix((1. - step(bCRadTemp, angle)) * step(fCRadTemp, angle),
+ (1. - step(fCRadTemp, angle)) * step(bCRadTemp, angle),
+ _acceleratingTemp);
+
+ if ( fTemp > .0) {
+ gl_FragColor = mix(c, shaderColorTemp, fTemp);
+ return;
+ }
+
+ gl_FragColor = c;
+ }
+ "
+ }
+
+ Text {
+ id: topText
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: parent.verticalCenter
+ font.pixelSize: Functions.toPixels(0.3, rpmGauge.outerRadius)
+ color: "white"
+ text: ValueSource.gearString
+ }
+
+ Image {
+ id: engineLight
+ anchors.top: topText.bottom
+ anchors.topMargin: 10
+ anchors.left: parent.horizontalCenter
+ source: ValueSource.batteryLevel > 15 ? "image://etc/Icon_Battery_OFF.png"
+ : "image://etc/Icon_Battery_ON.png"
+ z: 3
+ }
+
+ Image {
+ id: batteryLight
+ anchors.top: topText.bottom
+ anchors.topMargin: 10
+ anchors.right: parent.horizontalCenter
+ source: ValueSource.engineTemperature > 100 ? "image://etc/Icon_Coolant_ON.png"
+ : "image://etc/Icon_Coolant_OFF.png"
+ z: 3
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_sports/RPMGauge_painter.qml b/doc/src/snippets/qtcluster/qml/dash_sports/RPMGauge_painter.qml
new file mode 100644
index 00000000..192aa495
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_sports/RPMGauge_painter.qml
@@ -0,0 +1,169 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+import QtQuick.Extras 1.4
+import ClusterDemo 1.0
+import "../functions.js" as Functions
+
+Item {
+ id: rpmItem
+ property real rpmValue: flipable.rpmValue
+ property alias maxValue: rpmGauge.maxValue
+
+ property color iconRed: "#e41e25"
+ property color iconGreen: "#5caa15"
+ property color iconYellow: "#face20"
+ property color iconDark: "#444444"
+
+ Item {
+ id: rpmGauge
+
+ anchors.fill: parent
+ width: height
+ property bool animated: ValueSource.runningInDesigner ? false : startupAnimationStopped
+
+ property real value: animated ? ValueSource.rpm : rpmValue
+
+ property real maxValue: 8000
+
+ property real maxValueAngle: 90
+ property real minValueAngle: -90
+
+ property real outerRadius: Math.min(width, height) * 0.5
+ property real needleEndInDegrees: 180 / rpmGauge.maximumValue
+
+ Image {
+ source: "image://etc/Gauge_RPM.png"
+ anchors.fill: parent
+ }
+
+ Text {
+ id: gearText
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: parent.verticalCenter
+ anchors.topMargin: Functions.toPixels(0.12, parent.outerRadius)
+ font.pixelSize: Functions.toPixels(0.3, parent.outerRadius)
+ color: "white"
+ text: ValueSource.gearString
+ }
+
+ Picture {
+ id: engineLight
+
+ width: 48
+ height: 48
+
+ anchors.top: gearText.bottom
+ anchors.topMargin: 10
+ anchors.left: parent.horizontalCenter
+
+ source: "qrc:/iso-icons/iso_grs_7000_4_0247.dat"
+ color: ValueSource.batteryLevel > 15 ? rpmItem.iconDark : rpmItem.iconRed
+ z: 3
+ }
+
+ Picture {
+ id: batteryLight
+
+ width: 48
+ height: 48
+
+ anchors.top: gearText.bottom
+ anchors.topMargin: 10
+ anchors.right: parent.horizontalCenter
+ source: "qrc:/iso-icons/iso_grs_7000_4_0246.dat"
+ color: ValueSource.engineTemperature > 100 ? rpmItem.iconYellow : rpmItem.iconDark
+ z: 3
+ }
+
+ CircularIndicator {
+ anchors.fill: parent
+
+ startAngle: rpmGauge.minValueAngle
+ endAngle: rpmGauge.maxValueAngle
+ minimumValue: 0
+ maximumValue: rpmGauge.maxValue
+ value: rpmGauge.value
+ padding: 13
+ backgroundColor: "transparent"
+ progressColor: "#E31E24"
+ }
+ }
+
+ CircularIndicator {
+ id: batteryGauge
+ anchors.fill: parent
+
+ startAngle: 144
+ endAngle: 108
+ minimumValue: 0
+ maximumValue: 100
+ value: ValueSource.batteryLevel
+ padding: 12
+ backgroundColor: "transparent"
+ progressColor: "#464749"
+ }
+
+ CircularIndicator {
+ id: engineTempGauge
+ anchors.fill: parent
+
+ endAngle: -108
+ startAngle: -145
+ minimumValue: 40
+ maximumValue: 120
+ value: ValueSource.engineTemperature
+ padding: 12
+ backgroundColor: "transparent"
+ progressColor: "#464749"
+ }
+}
+
diff --git a/doc/src/snippets/qtcluster/qml/dash_sports/RPMGauge_vertex.qml b/doc/src/snippets/qtcluster/qml/dash_sports/RPMGauge_vertex.qml
new file mode 100644
index 00000000..ac211f3a
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_sports/RPMGauge_vertex.qml
@@ -0,0 +1,170 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+
+import "../functions.js" as Functions
+import ClusterDemo 1.0
+
+Item {
+ id: root
+
+ property bool updateGeometry: false
+ property bool showWire: false
+
+ property alias rpmValue: rpmGauge.rpmValue
+ property alias maxValue: rpmGauge.maxValue
+
+
+ Image {
+ id: bg
+ source: "image://etc/Gauge_RPM.png"
+
+ GaugeFiller {
+ id: rpmGauge
+ property real outerRadius: Math.min(width, height) * 0.5
+
+ anchors.fill: parent
+ radius: 177
+ fillWidth: 10
+
+ property real rpmValue: 0
+ value: startupAnimationStopped ? ValueSource.rpm : rpmValue
+
+ minAngle: 90
+ maxAngle: 270
+ maxValue: 8000
+
+ updateGeometry: root.updateGeometry
+ doNotFill: root.showWire
+
+// Behavior on value {
+// enabled: startupAnimationStopped
+// PropertyAnimation { duration: 50 }
+// }
+ }
+
+ GaugeFiller {
+ // Battery
+ anchors.fill: parent
+ radius: 177
+ fillWidth: 10
+
+ numVertices: 16
+ minAngle: 324
+ maxAngle: 288
+ maxValue: 100
+ value: ValueSource.batteryLevel
+ color: "#464749"
+ updateGeometry: root.updateGeometry
+ doNotFill: root.showWire
+
+ Behavior on value {
+ enabled: startupAnimationStopped
+ PropertyAnimation { duration: 100 }
+ }
+ }
+
+ GaugeFiller {
+ // Engine temp
+ anchors.fill: parent
+ radius: 177
+ fillWidth: 10
+
+ numVertices: 16
+
+ minAngle: 35
+ maxAngle: 72
+ minValue: 40
+ maxValue: 120
+
+ value: ValueSource.engineTemperature > 0 ? ValueSource.engineTemperature : minValue
+
+ color: "#464749"
+
+ updateGeometry: root.updateGeometry
+ doNotFill: root.showWire
+
+ Behavior on value {
+ enabled: startupAnimationStopped
+ PropertyAnimation { duration: 100 }
+ }
+ }
+ }
+
+ Text {
+ id: topText
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: parent.verticalCenter
+ font.pixelSize: Functions.toPixels(0.3, rpmGauge.outerRadius)
+ color: "white"
+ text: ValueSource.gearString
+ }
+
+ Image {
+ id: engineLight
+ anchors.top: topText.bottom
+ anchors.topMargin: 10
+ anchors.left: parent.horizontalCenter
+ source: ValueSource.batteryLevel > 15 ? "image://etc/Icon_Battery_OFF.png"
+ : "image://etc/Icon_Battery_ON.png"
+ z: 3
+ }
+
+ Image {
+ id: batteryLight
+ anchors.top: topText.bottom
+ anchors.topMargin: 10
+ anchors.right: parent.horizontalCenter
+ source: ValueSource.engineTemperature > 100 ? "image://etc/Icon_Coolant_ON.png"
+ : "image://etc/Icon_Coolant_OFF.png"
+ z: 3
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_sports/SpeedoMeter.qml b/doc/src/snippets/qtcluster/qml/dash_sports/SpeedoMeter.qml
new file mode 100644
index 00000000..991bbc67
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_sports/SpeedoMeter.qml
@@ -0,0 +1,224 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+
+import "../functions.js" as Functions
+import ClusterDemo 1.0
+
+Item {
+ property alias speedValue: speedgauge.speedValue
+ property alias maxValue: speedgauge.maxValue
+ property real outerRadius: Math.min(width, height) * 0.5
+
+ Image {
+ id: speedBg
+ anchors.centerIn: parent
+ source: "image://etc/Gauge_Speed.png"
+ }
+
+ ShaderEffect {
+ id: speedgauge
+ anchors.fill: speedBg
+
+ property real outerRadius: Math.min(width, height) * 0.5
+ property int animationDurationSpeed: 500
+
+ property real speedValue: 0
+ property int value: startupAnimationStopped ? ValueSource.kph : speedValue
+ property int minValue: 0
+ property int maxValue: 240
+ property int minAngle: 0
+ property int maxAngle: 270
+ property real valueInDegrees: ((maxAngle - minAngle)
+ / (maxValue - minValue)) * (value - minValue)
+
+ property double fCRadSpeed: Functions.degToRad(frontCutSpeed - 180.)
+ property double bCRadSpeed: Functions.degToRad(backCutSpeed - 180.)
+
+ //Fuel gauge
+ property real valueFuel: ValueSource.fuelLevel
+ property int minAngleFuel: 324
+ property int maxAngleFuel: 288
+ property int maxValueFuel: 100
+ property int animationDurationFuel: 100
+ property color shaderColorFuel: "#464749"
+ property real valueInDegreesFuel: ((maxAngleFuel - minAngleFuel)
+ / (maxValueFuel - minValue)) * (valueFuel - minValue)
+ property double _acceleratingFuel: (backCutFuel < frontCutFuel) ? 1. : 0.
+ property double frontCutFuel: minAngleFuel + valueInDegreesFuel
+ property double backCutFuel: minAngleFuel
+
+ property double fCRadFuel: Functions.degToRad(frontCutFuel - 180.)
+ property double bCRadFuel: Functions.degToRad(backCutFuel - 180.)
+
+ //Shader properties
+ property double frontCutSpeed: minAngle + valueInDegrees// new speed
+ property double backCutSpeed: minAngle //starting point
+
+ // INTERNAL BELOW
+ property double _acceleratingSpeed: (backCutSpeed < frontCutSpeed) ? 1. : 0.
+ property variant source: speedBg
+ property color shaderColorSpeed: "#E31E24"
+
+ Behavior on frontCutSpeed {
+ enabled: startupAnimationStopped
+ PropertyAnimation { duration: speedgauge.animationDurationSpeed }
+ }
+
+ Behavior on frontCutFuel {
+ enabled: startupAnimationStopped
+ PropertyAnimation { duration: speedgauge.animationDurationFuel }
+ }
+
+ fragmentShader: "
+ varying highp vec2 qt_TexCoord0;
+ uniform lowp sampler2D source;
+ uniform lowp float qt_Opacity;
+ lowp vec4 c = vec4(0.,0.,0.,0.);
+
+ //Speed
+ uniform lowp vec4 shaderColorSpeed;
+ uniform lowp float frontCutSpeed;
+ uniform lowp float backCutSpeed;
+ uniform lowp float _acceleratingSpeed;
+
+ uniform highp float fCRadSpeed;
+ uniform highp float bCRadSpeed;
+
+ //Fuel
+ uniform lowp vec4 shaderColorFuel;
+ uniform lowp float frontCutFuel;
+ uniform lowp float backCutFuel;
+ uniform lowp float _acceleratingFuel;
+
+ uniform highp float fCRadFuel;
+ uniform highp float bCRadFuel;
+
+ void main() {
+ highp vec2 uv = vec2(.5 - qt_TexCoord0.y, .5 - qt_TexCoord0.x);
+
+ lowp float L = length(uv);
+ lowp float f = 1.;
+
+ f = smoothstep(L - .01, L, .4615);
+ f -= smoothstep(L,L + 0.01, .444);
+
+ lowp float angle = -atan(uv.y,uv.x);
+
+ lowp float fspeed = f * mix((1. - step(bCRadSpeed, angle)) * step(fCRadSpeed, angle),
+ (1. - step(fCRadSpeed, angle)) * step(bCRadSpeed, angle),
+ _acceleratingSpeed);
+
+ if (fspeed > .0) {
+ gl_FragColor = mix(c,shaderColorSpeed,fspeed);
+ return;
+ }
+
+ lowp float ffuel = f * mix((1. - step(bCRadFuel, angle)) * step(fCRadFuel, angle),
+ (1. - step(fCRadFuel, angle)) * step(bCRadFuel, angle),
+ _acceleratingFuel);
+
+ if (ffuel > .0) {
+ gl_FragColor = mix(c, shaderColorFuel, ffuel);
+ return;
+ }
+
+ gl_FragColor = c;
+ }
+ "
+ }
+
+ Text {
+ id: topText
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: parent.verticalCenter
+ font.pixelSize: Functions.toPixels(0.3, speedgauge.outerRadius)
+ color: "white"
+ text: speedgauge.value.toFixed()
+ }
+
+ Text {
+ id: kmText
+ text: "km/h"
+ color: "white"
+ font.pixelSize: Functions.toPixels(0.09, speedgauge.outerRadius)
+ anchors.top: topText.bottom
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+
+ Image {
+ id: tyreLight
+ anchors.right: parkingLight.left
+ anchors.bottom: parkingLight.bottom
+ anchors.bottomMargin: 18
+ source: ValueSource.flatTire ? "image://etc/Icon_TyreMalfunction_ON.png"
+ : "image://etc/Icon_TyreMalfunction_OFF.png"
+ }
+
+ Image {
+ id: parkingLight
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.top: kmText.bottom
+ anchors.topMargin: 20
+
+ source: ValueSource.parkingBrake ? "image://etc/Icon_ParkingBrake_ON.png"
+ : "image://etc/Icon_ParkingBrake_OFF.png"
+ }
+
+ Image {
+ id: fuelLight
+ anchors.left: parkingLight.right
+ anchors.bottom: parkingLight.bottom
+ anchors.bottomMargin: 18
+ source: (ValueSource.fuelLevel <= 15) ? "image://etc/Icon_Fuel_ON.png"
+ : "image://etc/Icon_Fuel_OFF.png"
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_sports/SpeedoMeterLoader.qml b/doc/src/snippets/qtcluster/qml/dash_sports/SpeedoMeterLoader.qml
new file mode 100644
index 00000000..bdc4e9cc
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_sports/SpeedoMeterLoader.qml
@@ -0,0 +1,63 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.6
+import ".."
+import ClusterDemo 1.0
+
+Loader {
+ id: speedoMeter
+ asynchronous: true
+ source: "SpeedoMeter_painter.qml"
+ //source: "SpeedoMeter_vertex.qml"
+ //source: "SpeedoMeter.qml"
+
+ property int value: 150
+
+ property alias rotation: speed_rot
+
+ transform: Rotation {
+ id: speed_rot
+ origin.x: speedoMeter.width / 2
+ origin.y: speedoMeter.height / 2
+ axis { x: 0; y: 1; z: 0 }
+ angle: ValueSource.runningInDesigner ? 0 : 90 // the default angle
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_sports/SpeedoMeter_painter.qml b/doc/src/snippets/qtcluster/qml/dash_sports/SpeedoMeter_painter.qml
new file mode 100644
index 00000000..e8a2ad28
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_sports/SpeedoMeter_painter.qml
@@ -0,0 +1,181 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+import ClusterDemo 1.0
+import QtQuick.Extras 1.4
+import "../functions.js" as Functions
+
+Item {
+ id: speedoItem
+ property real speedValue: speedoMeter.value
+ property alias maxValue: speedometer.maxValue
+ anchors.fill: parent
+
+ property color iconRed: "#e41e25"
+ property color iconGreen: "#5caa15"
+ property color iconYellow: "#face20"
+ property color iconDark: "#444444"
+
+ Item {
+ id: speedometer
+
+ property bool animated: ValueSource.runningInDesigner ? false : startupAnimationStopped
+ property real value: animated ? ValueSource.kph : speedValue
+
+
+
+ anchors.fill: parent
+
+ property real maxValue: 240
+ width: height
+
+ property real outerRadius: Math.min(width, height) * 0.5
+
+ property real maxValueAngle: 90
+ property real minValueAngle: -179
+
+ property real degreesPerValue: Math.abs((minValueAngle - maxValueAngle)
+ / speedometer.maximumValue)
+
+ Image {
+ source: "image://etc/Gauge_Speed.png"
+ anchors.fill: parent
+ }
+
+ Text {
+ id: speedText
+ font.pixelSize: Functions.toPixels(0.4, parent.outerRadius)
+ text: speedometer.value.toFixed()
+ color: "white"
+ horizontalAlignment: Text.AlignRight
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.top: parent.top
+ anchors.topMargin: 115
+ }
+
+ Text {
+ id: kmText
+ text: "km/h"
+ color: "white"
+ font.pixelSize: Functions.toPixels(0.09, parent.outerRadius)
+ anchors.top: speedText.bottom
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+
+ Picture {
+ id: tyreLight
+
+ width: 48
+ height: 48
+ anchors.right: parkingLight.left
+ anchors.bottom: parkingLight.bottom
+ anchors.bottomMargin: 18
+
+ color: ValueSource.flatTire ? speedoItem.iconYellow : speedoItem.iconDark
+ source: "qrc:/iso-icons/iso_grs_7000_4_1434A.dat"
+ }
+
+ Picture {
+ id: parkingLight
+
+ width: 48
+ height: 48
+ anchors.horizontalCenterOffset: 0
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.top: kmText.bottom
+ anchors.topMargin: 11
+
+ color: ValueSource.parkingBrake ? speedoItem.iconRed : speedoItem.iconDark
+ source: "qrc:/iso-icons/iso_grs_7000_4_0238.dat"
+ }
+
+ Picture {
+ id: fuelLight
+
+ width: 48
+ height: 48
+ anchors.left: parkingLight.right
+ anchors.bottom: parkingLight.bottom
+ anchors.bottomMargin: 18
+
+ color: ValueSource.fuelLevel <= 20.0 ? speedoItem.iconRed : speedoItem.iconDark
+ source: "qrc:/iso-icons/iso_grs_7000_4_0245.dat"
+ }
+
+ CircularIndicator {
+ anchors.fill: parent
+
+ startAngle: speedometer.minValueAngle
+ endAngle: speedometer.maxValueAngle
+ minimumValue: 0
+ maximumValue: speedometer.maxValue
+ value: speedometer.value
+ padding: 13
+ backgroundColor: "transparent"
+ progressColor: "#E31E24"
+ }
+ }
+
+ CircularIndicator {
+ id: fuelGauge
+
+ anchors.fill: parent
+
+ value: ValueSource.fuelLevel
+ minimumValue: 0
+ maximumValue: 100
+ startAngle: 144
+ endAngle: 108
+ padding: 13
+ backgroundColor: "transparent"
+ progressColor: "#464749"
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_sports/SpeedoMeter_vertex.qml b/doc/src/snippets/qtcluster/qml/dash_sports/SpeedoMeter_vertex.qml
new file mode 100644
index 00000000..2ed0a0ec
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_sports/SpeedoMeter_vertex.qml
@@ -0,0 +1,159 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+
+import "../functions.js" as Functions
+import ClusterDemo 1.0
+
+Item {
+ id: root
+ property alias speedValue: speedgauge.speedValue
+ property alias maxValue: speedgauge.maxValue
+
+ property bool updateGeometry: false
+ property bool showWire: false
+
+ Image {
+ id: bg
+ anchors.centerIn: parent
+ source: "image://etc/Gauge_Speed.png"
+
+ GaugeFiller {
+ id: speedgauge
+
+ property real outerRadius: Math.min(width, height) * 0.5
+
+ property real speedValue: 0
+ value: startupAnimationStopped ? ValueSource.kph : speedValue
+
+ anchors.fill: parent
+ radius: 177
+ fillWidth: 10
+ updateGeometry: root.updateGeometry
+ doNotFill: root.showWire
+
+ Behavior on value {
+ enabled: startupAnimationStopped
+ PropertyAnimation { duration: 500 }
+ }
+ }
+
+ GaugeFiller {
+ id: fuel
+ anchors.fill: parent
+ radius: 177
+ fillWidth: 10
+
+ value: ValueSource.fuelLevel
+ numVertices: 16
+ minAngle: 323.7
+ maxAngle: 287.7
+ maxValue: 100
+
+ color: "#464749"
+
+ updateGeometry: root.updateGeometry
+ doNotFill: root.showWire
+
+ Behavior on value {
+ enabled: startupAnimationStopped
+ PropertyAnimation { duration: 100 }
+ }
+ }
+ }
+
+ Text {
+ id: topText
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: parent.verticalCenter
+ font.pixelSize: Functions.toPixels(0.3, speedgauge.outerRadius)
+ color: "white"
+ text: speedgauge.value.toFixed()
+ }
+
+ Text {
+ id: kmText
+ text: "km/h"
+ color: "white"
+ font.pixelSize: Functions.toPixels(0.09, speedgauge.outerRadius)
+ anchors.top: topText.bottom
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+
+ Image {
+ id: tyreLight
+ anchors.right: parkingLight.left
+ anchors.bottom: parkingLight.bottom
+ anchors.bottomMargin: 18
+ source: ValueSource.flatTire ? "image://etc/Icon_TyreMalfunction_ON.png"
+ : "image://etc/Icon_TyreMalfunction_OFF.png"
+ }
+
+ Image {
+ id: parkingLight
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.top: kmText.bottom
+ anchors.topMargin: 20
+
+ source: ValueSource.parkingBrake ? "image://etc/Icon_ParkingBrake_ON.png"
+ : "image://etc/Icon_ParkingBrake_OFF.png"
+ }
+
+ Image {
+ id: fuelLight
+ anchors.left: parkingLight.right
+ anchors.bottom: parkingLight.bottom
+ anchors.bottomMargin: 18
+ source: (ValueSource.fuelLevel <= 15) ? "image://etc/Icon_Fuel_ON.png"
+ : "image://etc/Icon_Fuel_OFF.png"
+ }
+
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_sports/designer/RPMFlipableSpecifics.qml b/doc/src/snippets/qtcluster/qml/dash_sports/designer/RPMFlipableSpecifics.qml
new file mode 100644
index 00000000..915073f3
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_sports/designer/RPMFlipableSpecifics.qml
@@ -0,0 +1,77 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+****************************************************************************/
+
+import QtQuick 2.1
+import HelperWidgets 2.0
+import QtQuick.Layouts 1.0
+import QtQuick.Controls 1.0 as Controls
+
+Column {
+ anchors.left: parent.left
+ anchors.right: parent.right
+
+ Section {
+ anchors.left: parent.left
+ anchors.right: parent.right
+ caption: qsTr("TurboMeter")
+ SectionLayout {
+
+ Label {
+ text: qsTr("RPM Value")
+ }
+
+ SecondColumnLayout {
+ SpinBox {
+ backendValue: backendValues.rpmValue
+ minimumValue: 0
+ maximumValue: 8000
+ decimals: 0
+ }
+
+ Controls.Slider {
+ id: turboSlider
+ Layout.preferredWidth: 100
+
+ minimumValue: 0
+ maximumValue: 8000
+ updateValueWhileDragging: true
+ stepSize: 0.1
+ value: backendValues.rpmValue.value
+ onValueChanged: {
+ backendValues.rpmValue.value = turboSlider.value
+
+ }
+
+ }
+
+ ExpandingSpacer {
+ width: 30
+ }
+ }
+
+
+ }
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/dash_sports/designer/SpeedoMeterLoaderSpecifics.qml b/doc/src/snippets/qtcluster/qml/dash_sports/designer/SpeedoMeterLoaderSpecifics.qml
new file mode 100644
index 00000000..9fb15d94
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/dash_sports/designer/SpeedoMeterLoaderSpecifics.qml
@@ -0,0 +1,77 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+****************************************************************************/
+
+import QtQuick 2.1
+import HelperWidgets 2.0
+import QtQuick.Layouts 1.0
+import QtQuick.Controls 1.0 as Controls
+
+Column {
+ anchors.left: parent.left
+ anchors.right: parent.right
+
+ Section {
+ anchors.left: parent.left
+ anchors.right: parent.right
+ caption: qsTr("TurboMeter")
+ SectionLayout {
+
+ Label {
+ text: qsTr("Value")
+ }
+
+ SecondColumnLayout {
+ SpinBox {
+ backendValue: backendValues.value
+ minimumValue: 0
+ maximumValue: 240
+ decimals: 0
+ }
+
+ Controls.Slider {
+ id: turboSlider
+ Layout.preferredWidth: 100
+
+ minimumValue: 0
+ maximumValue: 240
+ updateValueWhileDragging: true
+ stepSize: 0.1
+ value: backendValues.value.value
+ onValueChanged: {
+ backendValues.value.value = turboSlider.value
+
+ }
+
+ }
+
+ ExpandingSpacer {
+ width: 30
+ }
+ }
+
+
+ }
+ }
+}
diff --git a/doc/src/snippets/qtcluster/qml/functions.js b/doc/src/snippets/qtcluster/qml/functions.js
new file mode 100644
index 00000000..48c841fa
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/functions.js
@@ -0,0 +1,40 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+****************************************************************************/
+
+.pragma library
+
+function toPixels(percentage, outerRadius) {
+ return percentage * outerRadius;
+}
+
+var convertToRad = Math.PI / 180;
+function degToRad(degrees) {
+ return degrees * convertToRad;
+}
+
+var convertToDeg = 180 / Math.PI;
+function radToDeg(radians) {
+ return radians * convertToDeg;
+}
diff --git a/doc/src/snippets/qtcluster/qml/models/Map11.jpg b/doc/src/snippets/qtcluster/qml/models/Map11.jpg
new file mode 100644
index 00000000..680dbea1
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/models/Map11.jpg
Binary files differ
diff --git a/doc/src/snippets/qtcluster/qml/models/Map3.jpg b/doc/src/snippets/qtcluster/qml/models/Map3.jpg
new file mode 100644
index 00000000..8c3468e2
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/models/Map3.jpg
Binary files differ
diff --git a/doc/src/snippets/qtcluster/qml/models/sportscar_15k.qgltf b/doc/src/snippets/qtcluster/qml/models/sportscar_15k.qgltf
new file mode 100644
index 00000000..5b4bd3d2
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/models/sportscar_15k.qgltf
Binary files differ
diff --git a/doc/src/snippets/qtcluster/qml/models/sportscar_15k_1.bin b/doc/src/snippets/qtcluster/qml/models/sportscar_15k_1.bin
new file mode 100644
index 00000000..aad1081f
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/models/sportscar_15k_1.bin
Binary files differ
diff --git a/doc/src/snippets/qtcluster/qml/route.txt b/doc/src/snippets/qtcluster/qml/route.txt
new file mode 100644
index 00000000..22627635
--- /dev/null
+++ b/doc/src/snippets/qtcluster/qml/route.txt
@@ -0,0 +1,1188 @@
+$GPGGA,120156,5232.08,N,1317.6,E,1,07,1.3,50.6,M,39.2,M,,*71
+$GPRMC,120156,A,5232.08,N,1317.6,E,0,200.0,030308,11.2,W,A*22
+$GPGGA,120157,5232.08,N,1317.6,E,1,07,1.3,50.6,M,39.2,M,,*70
+$GPRMC,120157,A,5232.08,N,1317.6,E,0,200.0,030308,11.2,W,A*23
+$GPGGA,120158,5232.08,N,1317.6,E,1,07,1.3,50.6,M,39.2,M,,*7f
+$GPRMC,120158,A,5232.08,N,1317.6,E,0,200.0,030308,11.2,W,A*2c
+$GPGGA,120159,5232.08,N,1317.6,E,1,07,1.3,50.6,M,39.2,M,,*7e
+$GPRMC,120159,A,5232.08,N,1317.6,E,0,200.0,030308,11.2,W,A*2d
+$GPGGA,120200,5232.08,N,1317.6,E,1,07,1.3,50.6,M,39.2,M,,*71
+$GPRMC,120200,A,5232.08,N,1317.6,E,3.9,200.0,030308,11.2,W,A*36
+$GPGGA,120201,5232.08,N,1317.6,E,1,07,1.3,50.6,M,39.2,M,,*70
+$GPRMC,120201,A,5232.08,N,1317.6,E,8.7,197.0,030308,11.2,W,A*3f
+$GPGGA,120202,5232.07,N,1317.6,E,1,07,1.3,50.6,M,39.2,M,,*7c
+$GPRMC,120202,A,5232.07,N,1317.6,E,11.7,215.0,030308,11.2,W,A*02
+$GPGGA,120203,5232.07,N,1317.59,E,1,07,1.3,50.6,M,39.2,M,,*47
+$GPRMC,120203,A,5232.07,N,1317.59,E,19.4,205.0,030308,11.2,W,A*33
+$GPGGA,120204,5232.06,N,1317.59,E,1,07,1.3,50.6,M,39.2,M,,*41
+$GPRMC,120204,A,5232.06,N,1317.59,E,19.9,191.0,030308,11.2,W,A*36
+$GPGGA,120205,5232.05,N,1317.59,E,1,07,1.3,50.6,M,39.2,M,,*43
+$GPRMC,120205,A,5232.05,N,1317.59,E,21.4,166.0,030308,11.2,W,A*3a
+$GPGGA,120206,5232.05,N,1317.6,E,1,07,1.3,50.6,M,39.2,M,,*7a
+$GPRMC,120206,A,5232.05,N,1317.6,E,19.9,131.0,030308,11.2,W,A*07
+$GPGGA,120207,5232.04,N,1317.61,E,1,07,1.3,50.6,M,39.2,M,,*4b
+$GPRMC,120207,A,5232.04,N,1317.61,E,18.5,140.0,030308,11.2,W,A*3d
+$GPGGA,120208,5232.04,N,1317.62,E,1,07,1.3,50.6,M,39.2,M,,*47
+$GPRMC,120208,A,5232.04,N,1317.62,E,17.5,133.0,030308,11.2,W,A*3a
+$GPGGA,120209,5232.03,N,1317.62,E,1,07,1.3,50.6,M,39.2,M,,*41
+$GPRMC,120209,A,5232.03,N,1317.62,E,17.5,151.0,030308,11.2,W,A*38
+$GPGGA,120210,5232.03,N,1317.63,E,1,07,1.3,50.6,M,39.2,M,,*48
+$GPRMC,120210,A,5232.03,N,1317.63,E,9.7,161.0,030308,11.2,W,A*0f
+$GPGGA,120211,5232.02,N,1317.63,E,1,07,1.3,50.6,M,39.2,M,,*48
+$GPRMC,120211,A,5232.02,N,1317.63,E,5.8,168.0,030308,11.2,W,A*05
+$GPGGA,120212,5232.02,N,1317.63,E,1,07,1.3,50.6,M,39.2,M,,*4b
+$GPRMC,120212,A,5232.02,N,1317.63,E,0,166.0,030308,11.2,W,A*1b
+$GPGGA,120213,5232.02,N,1317.63,E,1,07,1.3,50.6,M,39.2,M,,*4a
+$GPRMC,120213,A,5232.02,N,1317.63,E,0,166.0,030308,11.2,W,A*1a
+$GPGGA,120214,5232.02,N,1317.63,E,1,07,1.3,50.6,M,39.2,M,,*4d
+$GPRMC,120214,A,5232.02,N,1317.63,E,0,166.0,030308,11.2,W,A*1d
+$GPGGA,120215,5232.01,N,1317.64,E,1,07,1.3,50.6,M,39.2,M,,*48
+$GPRMC,120215,A,5232.01,N,1317.64,E,9.7,153.0,030308,11.2,W,A*0e
+$GPGGA,120216,5232,N,1317.64,E,1,07,1.3,50.6,M,39.2,M,,*64
+$GPRMC,120216,A,5232,N,1317.64,E,19.4,153.0,030308,11.2,W,A*10
+$GPGGA,120217,5232,N,1317.65,E,1,07,1.3,50.6,M,39.2,M,,*64
+$GPRMC,120217,A,5232,N,1317.65,E,19.4,157.0,030308,11.2,W,A*14
+$GPGGA,120218,5231.99,N,1317.65,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,120218,A,5231.99,N,1317.65,E,19.9,154.0,030308,11.2,W,A*38
+$GPGGA,120219,5231.99,N,1317.66,E,1,07,1.3,50.6,M,39.2,M,,*44
+$GPRMC,120219,A,5231.99,N,1317.66,E,22.4,156.0,030308,11.2,W,A*3d
+$GPGGA,120220,5231.98,N,1317.66,E,1,07,1.3,50.6,M,39.2,M,,*4f
+$GPRMC,120220,A,5231.98,N,1317.66,E,21.9,150.0,030308,11.2,W,A*3e
+$GPGGA,120221,5231.97,N,1317.67,E,1,07,1.3,50.6,M,39.2,M,,*40
+$GPRMC,120221,A,5231.97,N,1317.67,E,22.4,160.0,030308,11.2,W,A*3c
+$GPGGA,120222,5231.96,N,1317.67,E,1,07,1.3,50.6,M,39.2,M,,*42
+$GPRMC,120222,A,5231.96,N,1317.67,E,23.3,154.0,030308,11.2,W,A*3f
+$GPGGA,120223,5231.96,N,1317.68,E,1,07,1.3,50.6,M,39.2,M,,*4c
+$GPRMC,120223,A,5231.96,N,1317.68,E,23.3,165.0,030308,11.2,W,A*33
+$GPGGA,120224,5231.95,N,1317.68,E,1,07,1.3,50.6,M,39.2,M,,*48
+$GPRMC,120224,A,5231.95,N,1317.68,E,23.3,161.0,030308,11.2,W,A*33
+$GPGGA,120225,5231.94,N,1317.68,E,1,07,1.3,50.6,M,39.2,M,,*48
+$GPRMC,120225,A,5231.94,N,1317.68,E,23.3,160.0,030308,11.2,W,A*32
+$GPGGA,120226,5231.94,N,1317.69,E,1,07,1.3,50.6,M,39.2,M,,*4a
+$GPRMC,120226,A,5231.94,N,1317.69,E,23.3,155.0,030308,11.2,W,A*36
+$GPGGA,120227,5231.93,N,1317.69,E,1,07,1.3,50.6,M,39.2,M,,*4c
+$GPRMC,120227,A,5231.93,N,1317.69,E,23.3,157.0,030308,11.2,W,A*32
+$GPGGA,120228,5231.92,N,1317.7,E,1,07,1.3,50.6,M,39.2,M,,*7a
+$GPRMC,120228,A,5231.92,N,1317.7,E,23.3,159.0,030308,11.2,W,A*0a
+$GPGGA,120229,5231.91,N,1317.71,E,1,07,1.3,50.6,M,39.2,M,,*49
+$GPRMC,120229,A,5231.91,N,1317.71,E,23.8,157.0,030308,11.2,W,A*3c
+$GPGGA,120230,5231.9,N,1317.71,E,1,07,1.3,50.6,M,39.2,M,,*70
+$GPRMC,120230,A,5231.9,N,1317.71,E,25.3,158.0,030308,11.2,W,A*07
+$GPGGA,120231,5231.9,N,1317.72,E,1,07,1.3,50.6,M,39.2,M,,*72
+$GPRMC,120231,A,5231.9,N,1317.72,E,28.2,157.0,030308,11.2,W,A*06
+$GPGGA,120232,5231.89,N,1317.72,E,1,07,1.3,50.6,M,39.2,M,,*49
+$GPRMC,120232,A,5231.89,N,1317.72,E,29.2,159.0,030308,11.2,W,A*32
+$GPGGA,120233,5231.88,N,1317.72,E,1,07,1.3,50.6,M,39.2,M,,*49
+$GPRMC,120233,A,5231.88,N,1317.72,E,29.6,165.0,030308,11.2,W,A*39
+$GPGGA,120234,5231.87,N,1317.73,E,1,07,1.3,50.6,M,39.2,M,,*40
+$GPRMC,120234,A,5231.87,N,1317.73,E,28.7,167.0,030308,11.2,W,A*32
+$GPGGA,120235,5231.86,N,1317.73,E,1,07,1.3,50.6,M,39.2,M,,*40
+$GPRMC,120235,A,5231.86,N,1317.73,E,28.2,168.0,030308,11.2,W,A*38
+$GPGGA,120236,5231.85,N,1317.73,E,1,07,1.3,50.6,M,39.2,M,,*40
+$GPRMC,120236,A,5231.85,N,1317.73,E,26.7,168.0,030308,11.2,W,A*33
+$GPGGA,120237,5231.84,N,1317.74,E,1,07,1.3,50.6,M,39.2,M,,*47
+$GPRMC,120237,A,5231.84,N,1317.74,E,28.2,170.0,030308,11.2,W,A*36
+$GPGGA,120238,5231.83,N,1317.74,E,1,07,1.3,50.6,M,39.2,M,,*4f
+$GPRMC,120238,A,5231.83,N,1317.74,E,28.7,172.0,030308,11.2,W,A*39
+$GPGGA,120239,5231.82,N,1317.74,E,1,07,1.3,50.6,M,39.2,M,,*4f
+$GPRMC,120239,A,5231.82,N,1317.74,E,29.2,168.0,030308,11.2,W,A*36
+$GPGGA,120240,5231.81,N,1317.75,E,1,07,1.3,50.6,M,39.2,M,,*43
+$GPRMC,120240,A,5231.81,N,1317.75,E,28.7,168.0,030308,11.2,W,A*3e
+$GPGGA,120241,5231.8,N,1317.75,E,1,07,1.3,50.6,M,39.2,M,,*73
+$GPRMC,120241,A,5231.8,N,1317.75,E,28.2,167.0,030308,11.2,W,A*04
+$GPGGA,120242,5231.79,N,1317.75,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,120242,A,5231.79,N,1317.75,E,27.7,170.0,030308,11.2,W,A*3d
+$GPGGA,120243,5231.78,N,1317.75,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,120243,A,5231.78,N,1317.75,E,27.2,169.0,030308,11.2,W,A*30
+$GPGGA,120244,5231.77,N,1317.76,E,1,07,1.3,50.6,M,39.2,M,,*4d
+$GPRMC,120244,A,5231.77,N,1317.76,E,26.7,165.0,030308,11.2,W,A*33
+$GPGGA,120245,5231.76,N,1317.77,E,1,07,1.3,50.6,M,39.2,M,,*4c
+$GPRMC,120245,A,5231.76,N,1317.77,E,26.2,153.0,030308,11.2,W,A*32
+$GPGGA,120246,5231.75,N,1317.77,E,1,07,1.3,50.6,M,39.2,M,,*4c
+$GPRMC,120246,A,5231.75,N,1317.77,E,26.2,156.0,030308,11.2,W,A*37
+$GPGGA,120247,5231.75,N,1317.78,E,1,07,1.3,50.6,M,39.2,M,,*42
+$GPRMC,120247,A,5231.75,N,1317.78,E,26.2,155.0,030308,11.2,W,A*3a
+$GPGGA,120248,5231.74,N,1317.78,E,1,07,1.3,50.6,M,39.2,M,,*4c
+$GPRMC,120248,A,5231.74,N,1317.78,E,25.8,151.0,030308,11.2,W,A*39
+$GPGGA,120249,5231.74,N,1317.79,E,1,07,1.3,50.6,M,39.2,M,,*4c
+$GPRMC,120249,A,5231.74,N,1317.79,E,23.8,150.0,030308,11.2,W,A*3e
+$GPGGA,120250,5231.73,N,1317.79,E,1,07,1.3,50.6,M,39.2,M,,*43
+$GPRMC,120250,A,5231.73,N,1317.79,E,21.9,166.0,030308,11.2,W,A*37
+$GPGGA,120251,5231.72,N,1317.79,E,1,07,1.3,50.6,M,39.2,M,,*43
+$GPRMC,120251,A,5231.72,N,1317.79,E,23.3,167.0,030308,11.2,W,A*3e
+$GPGGA,120252,5231.71,N,1317.8,E,1,07,1.3,50.6,M,39.2,M,,*75
+$GPRMC,120252,A,5231.71,N,1317.8,E,24.8,173.0,030308,11.2,W,A*01
+$GPGGA,120253,5231.7,N,1317.8,E,1,07,1.3,50.6,M,39.2,M,,*45
+$GPRMC,120253,A,5231.7,N,1317.8,E,24.8,170.0,030308,11.2,W,A*32
+$GPGGA,120254,5231.69,N,1317.8,E,1,07,1.3,50.6,M,39.2,M,,*7a
+$GPRMC,120254,A,5231.69,N,1317.8,E,24.8,171.0,030308,11.2,W,A*0c
+$GPGGA,120255,5231.68,N,1317.8,E,1,07,1.3,50.6,M,39.2,M,,*7a
+$GPRMC,120255,A,5231.68,N,1317.8,E,24.8,166.0,030308,11.2,W,A*0a
+$GPGGA,120256,5231.68,N,1317.81,E,1,07,1.3,50.6,M,39.2,M,,*48
+$GPRMC,120256,A,5231.68,N,1317.81,E,24.9,167.0,030308,11.2,W,A*38
+$GPGGA,120257,5231.67,N,1317.81,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,120257,A,5231.67,N,1317.81,E,28.2,165.0,030308,11.2,W,A*33
+$GPGGA,120258,5231.66,N,1317.81,E,1,07,1.3,50.6,M,39.2,M,,*48
+$GPRMC,120258,A,5231.66,N,1317.81,E,30.1,165.0,030308,11.2,W,A*37
+$GPGGA,120259,5231.65,N,1317.82,E,1,07,1.3,50.6,M,39.2,M,,*49
+$GPRMC,120259,A,5231.65,N,1317.82,E,31.6,168.0,030308,11.2,W,A*3d
+$GPGGA,120300,5231.64,N,1317.82,E,1,07,1.3,50.6,M,39.2,M,,*45
+$GPRMC,120300,A,5231.64,N,1317.82,E,33.0,167.0,030308,11.2,W,A*3a
+$GPGGA,120301,5231.63,N,1317.82,E,1,07,1.3,50.6,M,39.2,M,,*43
+$GPRMC,120301,A,5231.63,N,1317.82,E,33.0,169.0,030308,11.2,W,A*32
+$GPGGA,120302,5231.62,N,1317.83,E,1,07,1.3,50.6,M,39.2,M,,*40
+$GPRMC,120302,A,5231.62,N,1317.83,E,33.0,171.0,030308,11.2,W,A*38
+$GPGGA,120303,5231.61,N,1317.83,E,1,07,1.3,50.6,M,39.2,M,,*42
+$GPRMC,120303,A,5231.61,N,1317.83,E,33.0,168.0,030308,11.2,W,A*32
+$GPGGA,120304,5231.6,N,1317.83,E,1,07,1.3,50.6,M,39.2,M,,*74
+$GPRMC,120304,A,5231.6,N,1317.83,E,33.0,166.0,030308,11.2,W,A*0a
+$GPGGA,120305,5231.59,N,1317.84,E,1,07,1.3,50.6,M,39.2,M,,*48
+$GPRMC,120305,A,5231.59,N,1317.84,E,34.5,169.0,030308,11.2,W,A*3b
+$GPGGA,120306,5231.58,N,1317.84,E,1,07,1.3,50.6,M,39.2,M,,*4a
+$GPRMC,120306,A,5231.58,N,1317.84,E,34.5,165.0,030308,11.2,W,A*35
+$GPGGA,120307,5231.57,N,1317.84,E,1,07,1.3,50.6,M,39.2,M,,*44
+$GPRMC,120307,A,5231.57,N,1317.84,E,35.5,168.0,030308,11.2,W,A*37
+$GPGGA,120308,5231.56,N,1317.85,E,1,07,1.3,50.6,M,39.2,M,,*4b
+$GPRMC,120308,A,5231.56,N,1317.85,E,36.0,170.0,030308,11.2,W,A*37
+$GPGGA,120309,5231.55,N,1317.85,E,1,07,1.3,50.6,M,39.2,M,,*49
+$GPRMC,120309,A,5231.55,N,1317.85,E,35.5,174.0,030308,11.2,W,A*37
+$GPGGA,120310,5231.54,N,1317.85,E,1,07,1.3,50.6,M,39.2,M,,*40
+$GPRMC,120310,A,5231.54,N,1317.85,E,34.0,168.0,030308,11.2,W,A*37
+$GPGGA,120311,5231.53,N,1317.85,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,120311,A,5231.53,N,1317.85,E,34.0,174.0,030308,11.2,W,A*3c
+$GPGGA,120312,5231.52,N,1317.85,E,1,07,1.3,50.6,M,39.2,M,,*44
+$GPRMC,120312,A,5231.52,N,1317.85,E,33.0,176.0,030308,11.2,W,A*3b
+$GPGGA,120313,5231.51,N,1317.86,E,1,07,1.3,50.6,M,39.2,M,,*45
+$GPRMC,120313,A,5231.51,N,1317.86,E,32.6,173.0,030308,11.2,W,A*38
+$GPGGA,120314,5231.5,N,1317.86,E,1,07,1.3,50.6,M,39.2,M,,*73
+$GPRMC,120314,A,5231.5,N,1317.86,E,31.6,168.0,030308,11.2,W,A*07
+$GPGGA,120315,5231.49,N,1317.86,E,1,07,1.3,50.6,M,39.2,M,,*4a
+$GPRMC,120315,A,5231.49,N,1317.86,E,29.6,166.0,030308,11.2,W,A*39
+$GPGGA,120316,5231.49,N,1317.87,E,1,07,1.3,50.6,M,39.2,M,,*48
+$GPRMC,120316,A,5231.49,N,1317.87,E,29.6,165.0,030308,11.2,W,A*38
+$GPGGA,120317,5231.48,N,1317.87,E,1,07,1.3,50.6,M,39.2,M,,*48
+$GPRMC,120317,A,5231.48,N,1317.87,E,29.6,152.0,030308,11.2,W,A*3c
+$GPGGA,120318,5231.47,N,1317.88,E,1,07,1.3,50.6,M,39.2,M,,*47
+$GPRMC,120318,A,5231.47,N,1317.88,E,30.6,155.0,030308,11.2,W,A*3c
+$GPGGA,120319,5231.46,N,1317.89,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,120319,A,5231.46,N,1317.89,E,31.6,146.0,030308,11.2,W,A*3e
+$GPGGA,120320,5231.45,N,1317.9,E,1,07,1.3,50.6,M,39.2,M,,*77
+$GPRMC,120320,A,5231.45,N,1317.9,E,31.6,140.0,030308,11.2,W,A*09
+$GPGGA,120321,5231.44,N,1317.91,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,120321,A,5231.44,N,1317.91,E,31.6,145.0,030308,11.2,W,A*3d
+$GPGGA,120322,5231.44,N,1317.92,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,120322,A,5231.44,N,1317.92,E,31.6,140.0,030308,11.2,W,A*38
+$GPGGA,120323,5231.43,N,1317.93,E,1,07,1.3,50.6,M,39.2,M,,*41
+$GPRMC,120323,A,5231.43,N,1317.93,E,31.6,143.0,030308,11.2,W,A*3c
+$GPGGA,120324,5231.42,N,1317.94,E,1,07,1.3,50.6,M,39.2,M,,*40
+$GPRMC,120324,A,5231.42,N,1317.94,E,31.8,144.0,030308,11.2,W,A*34
+$GPGGA,120325,5231.41,N,1317.95,E,1,07,1.3,50.6,M,39.2,M,,*43
+$GPRMC,120325,A,5231.41,N,1317.95,E,32.1,143.0,030308,11.2,W,A*3a
+$GPGGA,120326,5231.4,N,1317.96,E,1,07,1.3,50.6,M,39.2,M,,*72
+$GPRMC,120326,A,5231.4,N,1317.96,E,31.1,141.0,030308,11.2,W,A*0a
+$GPGGA,120327,5231.39,N,1317.97,E,1,07,1.3,50.6,M,39.2,M,,*4c
+$GPRMC,120327,A,5231.39,N,1317.97,E,35.0,143.0,030308,11.2,W,A*33
+$GPGGA,120328,5231.39,N,1317.98,E,1,07,1.3,50.6,M,39.2,M,,*4c
+$GPRMC,120328,A,5231.39,N,1317.98,E,35.0,148.0,030308,11.2,W,A*38
+$GPGGA,120329,5231.38,N,1317.98,E,1,07,1.3,50.6,M,39.2,M,,*4c
+$GPRMC,120329,A,5231.38,N,1317.98,E,35.0,143.0,030308,11.2,W,A*33
+$GPGGA,120330,5231.38,N,1317.99,E,1,07,1.3,50.6,M,39.2,M,,*45
+$GPRMC,120330,A,5231.38,N,1317.99,E,25.3,142.0,030308,11.2,W,A*39
+$GPGGA,120331,5231.37,N,1318,E,1,07,1.3,50.6,M,39.2,M,,*6a
+$GPRMC,120331,A,5231.37,N,1318,E,15.6,141.0,030308,11.2,W,A*13
+$GPGGA,120332,5231.36,N,1318.01,E,1,07,1.3,50.6,M,39.2,M,,*47
+$GPRMC,120332,A,5231.36,N,1318.01,E,0,143.0,030308,11.2,W,A*10
+$GPGGA,120333,5231.36,N,1318.01,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,120333,A,5231.36,N,1318.01,E,0,143.0,030308,11.2,W,A*11
+$GPGGA,120334,5231.36,N,1318.01,E,1,07,1.3,50.6,M,39.2,M,,*41
+$GPRMC,120334,A,5231.36,N,1318.01,E,0,143.0,030308,11.2,W,A*16
+$GPGGA,120335,5231.36,N,1318.01,E,1,07,1.3,50.6,M,39.2,M,,*40
+$GPRMC,120335,A,5231.36,N,1318.01,E,0,143.0,030308,11.2,W,A*17
+$GPGGA,120336,5231.36,N,1318.01,E,1,07,1.3,50.6,M,39.2,M,,*43
+$GPRMC,120336,A,5231.36,N,1318.01,E,0,143.0,030308,11.2,W,A*14
+$GPGGA,120337,5231.36,N,1318.01,E,1,07,1.3,50.6,M,39.2,M,,*42
+$GPRMC,120337,A,5231.36,N,1318.01,E,0,143.0,030308,11.2,W,A*15
+$GPGGA,120338,5231.36,N,1318.01,E,1,07,1.3,50.6,M,39.2,M,,*4d
+$GPRMC,120338,A,5231.36,N,1318.01,E,0,143.0,030308,11.2,W,A*1a
+$GPGGA,120339,5231.36,N,1318.01,E,1,07,1.3,50.6,M,39.2,M,,*4c
+$GPRMC,120339,A,5231.36,N,1318.01,E,0,143.0,030308,11.2,W,A*1b
+$GPGGA,120340,5231.36,N,1318.01,E,1,07,1.3,50.6,M,39.2,M,,*42
+$GPRMC,120340,A,5231.36,N,1318.01,E,0,143.0,030308,11.2,W,A*15
+$GPGGA,120341,5231.36,N,1318.01,E,1,07,1.3,50.6,M,39.2,M,,*43
+$GPRMC,120341,A,5231.36,N,1318.01,E,0,143.0,030308,11.2,W,A*14
+$GPGGA,120342,5231.36,N,1318.01,E,1,07,1.3,50.6,M,39.2,M,,*40
+$GPRMC,120342,A,5231.36,N,1318.01,E,0,143.0,030308,11.2,W,A*17
+$GPGGA,120343,5231.36,N,1318.01,E,1,07,1.3,50.6,M,39.2,M,,*41
+$GPRMC,120343,A,5231.36,N,1318.01,E,0,143.0,030308,11.2,W,A*16
+$GPGGA,120344,5231.36,N,1318.01,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,120344,A,5231.36,N,1318.01,E,0,143.0,030308,11.2,W,A*11
+$GPGGA,120345,5231.36,N,1318.01,E,1,07,1.3,50.6,M,39.2,M,,*47
+$GPRMC,120345,A,5231.36,N,1318.01,E,0,143.0,030308,11.2,W,A*10
+$GPGGA,120346,5231.36,N,1318.01,E,1,07,1.3,50.6,M,39.2,M,,*44
+$GPRMC,120346,A,5231.36,N,1318.01,E,0,143.0,030308,11.2,W,A*13
+$GPGGA,120347,5231.36,N,1318.01,E,1,07,1.3,50.6,M,39.2,M,,*45
+$GPRMC,120347,A,5231.36,N,1318.01,E,0,143.0,030308,11.2,W,A*12
+$GPGGA,120348,5231.36,N,1318.01,E,1,07,1.3,50.6,M,39.2,M,,*4a
+$GPRMC,120348,A,5231.36,N,1318.01,E,0,143.0,030308,11.2,W,A*1d
+$GPGGA,120349,5231.36,N,1318.01,E,1,07,1.3,50.6,M,39.2,M,,*4b
+$GPRMC,120349,A,5231.36,N,1318.01,E,10.2,156.0,030308,11.2,W,A*35
+$GPGGA,120350,5231.36,N,1318.01,E,1,07,1.3,50.6,M,39.2,M,,*43
+$GPRMC,120350,A,5231.36,N,1318.01,E,17.5,149.0,030308,11.2,W,A*33
+$GPGGA,120351,5231.35,N,1318.02,E,1,07,1.3,50.6,M,39.2,M,,*42
+$GPRMC,120351,A,5231.35,N,1318.02,E,23.3,148.0,030308,11.2,W,A*32
+$GPGGA,120352,5231.35,N,1318.02,E,1,07,1.3,50.6,M,39.2,M,,*41
+$GPRMC,120352,A,5231.35,N,1318.02,E,29.2,177.0,030308,11.2,W,A*36
+$GPGGA,120353,5231.34,N,1318.02,E,1,07,1.3,50.6,M,39.2,M,,*41
+$GPRMC,120353,A,5231.34,N,1318.02,E,29.2,189.0,030308,11.2,W,A*37
+$GPGGA,120354,5231.34,N,1318.01,E,1,07,1.3,50.6,M,39.2,M,,*45
+$GPRMC,120354,A,5231.34,N,1318.01,E,29.2,198.0,030308,11.2,W,A*33
+$GPGGA,120355,5231.33,N,1318.01,E,1,07,1.3,50.6,M,39.2,M,,*43
+$GPRMC,120355,A,5231.33,N,1318.01,E,29.2,192.0,030308,11.2,W,A*3f
+$GPGGA,120356,5231.32,N,1318.01,E,1,07,1.3,50.6,M,39.2,M,,*41
+$GPRMC,120356,A,5231.32,N,1318.01,E,35.0,196.0,030308,11.2,W,A*36
+$GPGGA,120357,5231.31,N,1318,E,1,07,1.3,50.6,M,39.2,M,,*6c
+$GPRMC,120357,A,5231.31,N,1318,E,35.0,202.0,030308,11.2,W,A*15
+$GPGGA,120358,5231.3,N,1318,E,1,07,1.3,50.6,M,39.2,M,,*52
+$GPRMC,120358,A,5231.3,N,1318,E,27.2,201.0,030308,11.2,W,A*29
+$GPGGA,120359,5231.3,N,1317.99,E,1,07,1.3,50.6,M,39.2,M,,*72
+$GPRMC,120359,A,5231.3,N,1317.99,E,28.7,196.0,030308,11.2,W,A*0e
+$GPGGA,120400,5231.29,N,1317.99,E,1,07,1.3,50.6,M,39.2,M,,*41
+$GPRMC,120400,A,5231.29,N,1317.99,E,29.6,200.0,030308,11.2,W,A*31
+$GPGGA,120401,5231.28,N,1317.98,E,1,07,1.3,50.6,M,39.2,M,,*40
+$GPRMC,120401,A,5231.28,N,1317.98,E,30.6,201.0,030308,11.2,W,A*39
+$GPGGA,120402,5231.27,N,1317.98,E,1,07,1.3,50.6,M,39.2,M,,*4c
+$GPRMC,120402,A,5231.27,N,1317.98,E,30.1,201.0,030308,11.2,W,A*32
+$GPGGA,120403,5231.26,N,1317.97,E,1,07,1.3,50.6,M,39.2,M,,*43
+$GPRMC,120403,A,5231.26,N,1317.97,E,29.2,198.0,030308,11.2,W,A*35
+$GPGGA,120404,5231.25,N,1317.96,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,120404,A,5231.25,N,1317.96,E,25.8,199.0,030308,11.2,W,A*37
+$GPGGA,120405,5231.24,N,1317.96,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,120405,A,5231.24,N,1317.96,E,23.8,188.0,030308,11.2,W,A*31
+$GPGGA,120406,5231.23,N,1317.96,E,1,07,1.3,50.6,M,39.2,M,,*42
+$GPRMC,120406,A,5231.23,N,1317.96,E,22.4,177.0,030308,11.2,W,A*38
+$GPGGA,120407,5231.22,N,1317.96,E,1,07,1.3,50.6,M,39.2,M,,*42
+$GPRMC,120407,A,5231.22,N,1317.96,E,19.9,174.0,030308,11.2,W,A*3e
+$GPGGA,120408,5231.22,N,1317.97,E,1,07,1.3,50.6,M,39.2,M,,*4c
+$GPRMC,120408,A,5231.22,N,1317.97,E,11.7,170.0,030308,11.2,W,A*32
+$GPGGA,120409,5231.2,N,1317.97,E,1,07,1.3,50.6,M,39.2,M,,*7f
+$GPRMC,120409,A,5231.2,N,1317.97,E,0,171.0,030308,11.2,W,A*29
+$GPGGA,120410,5231.2,N,1317.97,E,1,07,1.3,50.6,M,39.2,M,,*77
+$GPRMC,120410,A,5231.2,N,1317.97,E,0,171.0,030308,11.2,W,A*21
+$GPGGA,120411,5231.2,N,1317.97,E,1,07,1.3,50.6,M,39.2,M,,*76
+$GPRMC,120411,A,5231.2,N,1317.97,E,0,171.0,030308,11.2,W,A*20
+$GPGGA,120412,5231.2,N,1317.97,E,1,07,1.3,50.6,M,39.2,M,,*75
+$GPRMC,120412,A,5231.2,N,1317.97,E,0,171.0,030308,11.2,W,A*23
+$GPGGA,120413,5231.2,N,1317.97,E,1,07,1.3,50.6,M,39.2,M,,*74
+$GPRMC,120413,A,5231.2,N,1317.97,E,0,171.0,030308,11.2,W,A*22
+$GPGGA,120414,5231.2,N,1317.97,E,1,07,1.3,50.6,M,39.2,M,,*73
+$GPRMC,120414,A,5231.2,N,1317.97,E,0,171.0,030308,11.2,W,A*25
+$GPGGA,120415,5231.2,N,1317.97,E,1,07,1.3,50.6,M,39.2,M,,*72
+$GPRMC,120415,A,5231.2,N,1317.97,E,0,171.0,030308,11.2,W,A*24
+$GPGGA,120416,5231.2,N,1317.97,E,1,07,1.3,50.6,M,39.2,M,,*71
+$GPRMC,120416,A,5231.2,N,1317.97,E,0,171.0,030308,11.2,W,A*27
+$GPGGA,120417,5231.2,N,1317.97,E,1,07,1.3,50.6,M,39.2,M,,*70
+$GPRMC,120417,A,5231.2,N,1317.97,E,0,171.0,030308,11.2,W,A*26
+$GPGGA,120418,5231.2,N,1317.97,E,1,07,1.3,50.6,M,39.2,M,,*7f
+$GPRMC,120418,A,5231.2,N,1317.97,E,0,171.0,030308,11.2,W,A*29
+$GPGGA,120419,5231.2,N,1317.97,E,1,07,1.3,50.6,M,39.2,M,,*7e
+$GPRMC,120419,A,5231.2,N,1317.97,E,0,171.0,030308,11.2,W,A*28
+$GPGGA,120420,5231.2,N,1317.97,E,1,07,1.3,50.6,M,39.2,M,,*74
+$GPRMC,120420,A,5231.2,N,1317.97,E,0,171.0,030308,11.2,W,A*22
+$GPGGA,120421,5231.2,N,1317.97,E,1,07,1.3,50.6,M,39.2,M,,*75
+$GPRMC,120421,A,5231.2,N,1317.97,E,0,171.0,030308,11.2,W,A*23
+$GPGGA,120422,5231.2,N,1317.97,E,1,07,1.3,50.6,M,39.2,M,,*76
+$GPRMC,120422,A,5231.2,N,1317.97,E,0,171.0,030308,11.2,W,A*20
+$GPGGA,120423,5231.2,N,1317.97,E,1,07,1.3,50.6,M,39.2,M,,*77
+$GPRMC,120423,A,5231.2,N,1317.97,E,0,171.0,030308,11.2,W,A*21
+$GPGGA,120424,5231.2,N,1317.97,E,1,07,1.3,50.6,M,39.2,M,,*70
+$GPRMC,120424,A,5231.2,N,1317.97,E,0,171.0,030308,11.2,W,A*26
+$GPGGA,120425,5231.2,N,1317.97,E,1,07,1.3,50.6,M,39.2,M,,*71
+$GPRMC,120425,A,5231.2,N,1317.97,E,0,171.0,030308,11.2,W,A*27
+$GPGGA,120426,5231.2,N,1317.97,E,1,07,1.3,50.6,M,39.2,M,,*72
+$GPRMC,120426,A,5231.2,N,1317.97,E,0,171.0,030308,11.2,W,A*24
+$GPGGA,120427,5231.2,N,1317.97,E,1,07,1.3,50.6,M,39.2,M,,*73
+$GPRMC,120427,A,5231.2,N,1317.97,E,9.7,149.0,030308,11.2,W,A*3e
+$GPGGA,120428,5231.2,N,1317.97,E,1,07,1.3,50.6,M,39.2,M,,*7c
+$GPRMC,120428,A,5231.2,N,1317.97,E,13.6,171.0,030308,11.2,W,A*00
+$GPGGA,120429,5231.19,N,1317.97,E,1,07,1.3,50.6,M,39.2,M,,*47
+$GPRMC,120429,A,5231.19,N,1317.97,E,13.6,172.0,030308,11.2,W,A*38
+$GPGGA,120430,5231.19,N,1317.97,E,1,07,1.3,50.6,M,39.2,M,,*4f
+$GPRMC,120430,A,5231.19,N,1317.97,E,14.6,177.0,030308,11.2,W,A*32
+$GPGGA,120431,5231.18,N,1317.98,E,1,07,1.3,50.6,M,39.2,M,,*40
+$GPRMC,120431,A,5231.18,N,1317.98,E,17.5,162.0,030308,11.2,W,A*39
+$GPGGA,120432,5231.18,N,1317.98,E,1,07,1.3,50.6,M,39.2,M,,*43
+$GPRMC,120432,A,5231.18,N,1317.98,E,23.3,158.0,030308,11.2,W,A*32
+$GPGGA,120433,5231.17,N,1317.98,E,1,07,1.3,50.6,M,39.2,M,,*4d
+$GPRMC,120433,A,5231.17,N,1317.98,E,23.3,146.0,030308,11.2,W,A*33
+$GPGGA,120434,5231.17,N,1317.99,E,1,07,1.3,50.6,M,39.2,M,,*4b
+$GPRMC,120434,A,5231.17,N,1317.99,E,23.3,127.0,030308,11.2,W,A*32
+$GPGGA,120435,5231.17,N,1318,E,1,07,1.3,50.6,M,39.2,M,,*6b
+$GPRMC,120435,A,5231.17,N,1318,E,23.3,121.0,030308,11.2,W,A*14
+$GPGGA,120436,5231.16,N,1318.01,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,120436,A,5231.16,N,1318.01,E,24.8,120.0,030308,11.2,W,A*34
+$GPGGA,120437,5231.16,N,1318.02,E,1,07,1.3,50.6,M,39.2,M,,*44
+$GPRMC,120437,A,5231.16,N,1318.02,E,26.7,118.0,030308,11.2,W,A*30
+$GPGGA,120438,5231.16,N,1318.03,E,1,07,1.3,50.6,M,39.2,M,,*4a
+$GPRMC,120438,A,5231.16,N,1318.03,E,28.2,120.0,030308,11.2,W,A*3e
+$GPGGA,120439,5231.15,N,1318.04,E,1,07,1.3,50.6,M,39.2,M,,*4f
+$GPRMC,120439,A,5231.15,N,1318.04,E,30.1,120.0,030308,11.2,W,A*31
+$GPGGA,120440,5231.15,N,1318.05,E,1,07,1.3,50.6,M,39.2,M,,*40
+$GPRMC,120440,A,5231.15,N,1318.05,E,31.6,122.0,030308,11.2,W,A*3a
+$GPGGA,120441,5231.14,N,1318.07,E,1,07,1.3,50.6,M,39.2,M,,*42
+$GPRMC,120441,A,5231.14,N,1318.07,E,32.6,119.0,030308,11.2,W,A*33
+$GPGGA,120442,5231.14,N,1318.08,E,1,07,1.3,50.6,M,39.2,M,,*4e
+$GPRMC,120442,A,5231.14,N,1318.08,E,33.5,117.0,030308,11.2,W,A*33
+$GPGGA,120443,5231.13,N,1318.1,E,1,07,1.3,50.6,M,39.2,M,,*71
+$GPRMC,120443,A,5231.13,N,1318.1,E,34.5,118.0,030308,11.2,W,A*04
+$GPGGA,120444,5231.13,N,1318.11,E,1,07,1.3,50.6,M,39.2,M,,*47
+$GPRMC,120444,A,5231.13,N,1318.11,E,35.5,118.0,030308,11.2,W,A*33
+$GPGGA,120445,5231.12,N,1318.12,E,1,07,1.3,50.6,M,39.2,M,,*44
+$GPRMC,120445,A,5231.12,N,1318.12,E,36.4,118.0,030308,11.2,W,A*32
+$GPGGA,120446,5231.12,N,1318.14,E,1,07,1.3,50.6,M,39.2,M,,*41
+$GPRMC,120446,A,5231.12,N,1318.14,E,36.4,115.0,030308,11.2,W,A*3a
+$GPGGA,120447,5231.12,N,1318.15,E,1,07,1.3,50.6,M,39.2,M,,*41
+$GPRMC,120447,A,5231.12,N,1318.15,E,36.4,121.0,030308,11.2,W,A*3d
+$GPGGA,120448,5231.11,N,1318.17,E,1,07,1.3,50.6,M,39.2,M,,*4f
+$GPRMC,120448,A,5231.11,N,1318.17,E,36.4,116.0,030308,11.2,W,A*37
+$GPGGA,120449,5231.11,N,1318.18,E,1,07,1.3,50.6,M,39.2,M,,*41
+$GPRMC,120449,A,5231.11,N,1318.18,E,35.5,116.0,030308,11.2,W,A*3b
+$GPGGA,120450,5231.1,N,1318.2,E,1,07,1.3,50.6,M,39.2,M,,*43
+$GPRMC,120450,A,5231.1,N,1318.2,E,35.0,117.0,030308,11.2,W,A*3d
+$GPGGA,120451,5231.1,N,1318.21,E,1,07,1.3,50.6,M,39.2,M,,*73
+$GPRMC,120451,A,5231.1,N,1318.21,E,34.5,115.0,030308,11.2,W,A*0b
+$GPGGA,120452,5231.09,N,1318.22,E,1,07,1.3,50.6,M,39.2,M,,*4b
+$GPRMC,120452,A,5231.09,N,1318.22,E,33.5,119.0,030308,11.2,W,A*38
+$GPGGA,120453,5231.09,N,1318.24,E,1,07,1.3,50.6,M,39.2,M,,*4c
+$GPRMC,120453,A,5231.09,N,1318.24,E,32.6,115.0,030308,11.2,W,A*31
+$GPGGA,120454,5231.08,N,1318.25,E,1,07,1.3,50.6,M,39.2,M,,*4b
+$GPRMC,120454,A,5231.08,N,1318.25,E,32.1,115.0,030308,11.2,W,A*31
+$GPGGA,120455,5231.08,N,1318.26,E,1,07,1.3,50.6,M,39.2,M,,*49
+$GPRMC,120455,A,5231.08,N,1318.26,E,32.1,115.0,030308,11.2,W,A*33
+$GPGGA,120456,5231.08,N,1318.28,E,1,07,1.3,50.6,M,39.2,M,,*44
+$GPRMC,120456,A,5231.08,N,1318.28,E,31.1,115.0,030308,11.2,W,A*3d
+$GPGGA,120457,5231.07,N,1318.29,E,1,07,1.3,50.6,M,39.2,M,,*4b
+$GPRMC,120457,A,5231.07,N,1318.29,E,31.1,114.0,030308,11.2,W,A*33
+$GPGGA,120458,5231.07,N,1318.3,E,1,07,1.3,50.6,M,39.2,M,,*7c
+$GPRMC,120458,A,5231.07,N,1318.3,E,31.1,117.0,030308,11.2,W,A*07
+$GPGGA,120459,5231.07,N,1318.31,E,1,07,1.3,50.6,M,39.2,M,,*4c
+$GPRMC,120459,A,5231.07,N,1318.31,E,31.6,116.0,030308,11.2,W,A*31
+$GPGGA,120500,5231.06,N,1318.33,E,1,07,1.3,50.6,M,39.2,M,,*42
+$GPRMC,120500,A,5231.06,N,1318.33,E,32.1,120.0,030308,11.2,W,A*3e
+$GPGGA,120501,5231.06,N,1318.34,E,1,07,1.3,50.6,M,39.2,M,,*44
+$GPRMC,120501,A,5231.06,N,1318.34,E,32.6,124.0,030308,11.2,W,A*3b
+$GPGGA,120502,5231.05,N,1318.35,E,1,07,1.3,50.6,M,39.2,M,,*45
+$GPRMC,120502,A,5231.05,N,1318.35,E,33.0,124.0,030308,11.2,W,A*3d
+$GPGGA,120503,5231.05,N,1318.37,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,120503,A,5231.05,N,1318.37,E,34.0,107.0,030308,11.2,W,A*38
+$GPGGA,120504,5231.04,N,1318.38,E,1,07,1.3,50.6,M,39.2,M,,*4f
+$GPRMC,120504,A,5231.04,N,1318.38,E,33.5,114.0,030308,11.2,W,A*31
+$GPGGA,120505,5231.04,N,1318.39,E,1,07,1.3,50.6,M,39.2,M,,*4f
+$GPRMC,120505,A,5231.04,N,1318.39,E,34.0,116.0,030308,11.2,W,A*31
+$GPGGA,120506,5231.04,N,1318.41,E,1,07,1.3,50.6,M,39.2,M,,*43
+$GPRMC,120506,A,5231.04,N,1318.41,E,34.5,112.0,030308,11.2,W,A*3c
+$GPGGA,120507,5231.03,N,1318.42,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,120507,A,5231.03,N,1318.42,E,35.0,116.0,030308,11.2,W,A*39
+$GPGGA,120508,5231.03,N,1318.44,E,1,07,1.3,50.6,M,39.2,M,,*4f
+$GPRMC,120508,A,5231.03,N,1318.44,E,35.5,120.0,030308,11.2,W,A*30
+$GPGGA,120509,5231.02,N,1318.45,E,1,07,1.3,50.6,M,39.2,M,,*4e
+$GPRMC,120509,A,5231.02,N,1318.45,E,35.5,120.0,030308,11.2,W,A*31
+$GPGGA,120510,5231.02,N,1318.47,E,1,07,1.3,50.6,M,39.2,M,,*44
+$GPRMC,120510,A,5231.02,N,1318.47,E,36.4,120.0,030308,11.2,W,A*39
+$GPGGA,120511,5231.01,N,1318.48,E,1,07,1.3,50.6,M,39.2,M,,*49
+$GPRMC,120511,A,5231.01,N,1318.48,E,36.0,118.0,030308,11.2,W,A*3b
+$GPGGA,120512,5231.01,N,1318.5,E,1,07,1.3,50.6,M,39.2,M,,*73
+$GPRMC,120512,A,5231.01,N,1318.5,E,36.4,103.0,030308,11.2,W,A*0f
+$GPGGA,120513,5231.01,N,1318.51,E,1,07,1.3,50.6,M,39.2,M,,*43
+$GPRMC,120513,A,5231.01,N,1318.51,E,36.4,115.0,030308,11.2,W,A*38
+$GPGGA,120514,5231,N,1318.53,E,1,07,1.3,50.6,M,39.2,M,,*69
+$GPRMC,120514,A,5231,N,1318.53,E,36.4,125.0,030308,11.2,W,A*11
+$GPGGA,120515,5231,N,1318.54,E,1,07,1.3,50.6,M,39.2,M,,*6f
+$GPRMC,120515,A,5231,N,1318.54,E,36.0,102.0,030308,11.2,W,A*16
+$GPGGA,120516,5230.99,N,1318.56,E,1,07,1.3,50.6,M,39.2,M,,*41
+$GPRMC,120516,A,5230.99,N,1318.56,E,35.5,110.0,030308,11.2,W,A*3d
+$GPGGA,120517,5230.99,N,1318.57,E,1,07,1.3,50.6,M,39.2,M,,*41
+$GPRMC,120517,A,5230.99,N,1318.57,E,34.0,125.0,030308,11.2,W,A*3f
+$GPGGA,120518,5230.98,N,1318.58,E,1,07,1.3,50.6,M,39.2,M,,*40
+$GPRMC,120518,A,5230.98,N,1318.58,E,33.5,127.0,030308,11.2,W,A*3e
+$GPGGA,120519,5230.98,N,1318.6,E,1,07,1.3,50.6,M,39.2,M,,*7a
+$GPRMC,120519,A,5230.98,N,1318.6,E,33.5,125.0,030308,11.2,W,A*06
+$GPGGA,120520,5230.97,N,1318.61,E,1,07,1.3,50.6,M,39.2,M,,*4e
+$GPRMC,120520,A,5230.97,N,1318.61,E,33.0,134.0,030308,11.2,W,A*37
+$GPGGA,120521,5230.96,N,1318.63,E,1,07,1.3,50.6,M,39.2,M,,*4c
+$GPRMC,120521,A,5230.96,N,1318.63,E,32.6,116.0,030308,11.2,W,A*32
+$GPGGA,120522,5230.96,N,1318.64,E,1,07,1.3,50.6,M,39.2,M,,*48
+$GPRMC,120522,A,5230.96,N,1318.64,E,31.6,116.0,030308,11.2,W,A*35
+$GPGGA,120523,5230.95,N,1318.67,E,1,07,1.3,50.6,M,39.2,M,,*49
+$GPRMC,120523,A,5230.95,N,1318.67,E,31.6,120.0,030308,11.2,W,A*31
+$GPGGA,120524,5230.95,N,1318.68,E,1,07,1.3,50.6,M,39.2,M,,*41
+$GPRMC,120524,A,5230.95,N,1318.68,E,33.0,114.0,030308,11.2,W,A*3a
+$GPGGA,120525,5230.94,N,1318.7,E,1,07,1.3,50.6,M,39.2,M,,*78
+$GPRMC,120525,A,5230.94,N,1318.7,E,33.0,107.0,030308,11.2,W,A*01
+$GPGGA,120526,5230.94,N,1318.71,E,1,07,1.3,50.6,M,39.2,M,,*4a
+$GPRMC,120526,A,5230.94,N,1318.71,E,33.0,111.0,030308,11.2,W,A*34
+$GPGGA,120527,5230.93,N,1318.74,E,1,07,1.3,50.6,M,39.2,M,,*49
+$GPRMC,120527,A,5230.93,N,1318.74,E,33.0,122.0,030308,11.2,W,A*37
+$GPGGA,120528,5230.93,N,1318.75,E,1,07,1.3,50.6,M,39.2,M,,*47
+$GPRMC,120528,A,5230.93,N,1318.75,E,33.0,102.0,030308,11.2,W,A*3b
+$GPGGA,120529,5230.92,N,1318.77,E,1,07,1.3,50.6,M,39.2,M,,*45
+$GPRMC,120529,A,5230.92,N,1318.77,E,33.5,116.0,030308,11.2,W,A*39
+$GPGGA,120530,5230.92,N,1318.78,E,1,07,1.3,50.6,M,39.2,M,,*42
+$GPRMC,120530,A,5230.92,N,1318.78,E,33.5,117.0,030308,11.2,W,A*3f
+$GPGGA,120531,5230.91,N,1318.79,E,1,07,1.3,50.6,M,39.2,M,,*41
+$GPRMC,120531,A,5230.91,N,1318.79,E,33.0,126.0,030308,11.2,W,A*3b
+$GPGGA,120532,5230.91,N,1318.8,E,1,07,1.3,50.6,M,39.2,M,,*74
+$GPRMC,120532,A,5230.91,N,1318.8,E,33.0,115.0,030308,11.2,W,A*0e
+$GPGGA,120533,5230.91,N,1318.82,E,1,07,1.3,50.6,M,39.2,M,,*47
+$GPRMC,120533,A,5230.91,N,1318.82,E,33.0,117.0,030308,11.2,W,A*3f
+$GPGGA,120534,5230.9,N,1318.83,E,1,07,1.3,50.6,M,39.2,M,,*70
+$GPRMC,120534,A,5230.9,N,1318.83,E,33.0,118.0,030308,11.2,W,A*07
+$GPGGA,120535,5230.9,N,1318.84,E,1,07,1.3,50.6,M,39.2,M,,*76
+$GPRMC,120535,A,5230.9,N,1318.84,E,31.1,119.0,030308,11.2,W,A*03
+$GPGGA,120536,5230.89,N,1318.86,E,1,07,1.3,50.6,M,39.2,M,,*4f
+$GPRMC,120536,A,5230.89,N,1318.86,E,28.7,116.0,030308,11.2,W,A*3b
+$GPGGA,120537,5230.89,N,1318.87,E,1,07,1.3,50.6,M,39.2,M,,*4f
+$GPRMC,120537,A,5230.89,N,1318.87,E,25.3,110.0,030308,11.2,W,A*34
+$GPGGA,120538,5230.89,N,1318.88,E,1,07,1.3,50.6,M,39.2,M,,*4f
+$GPRMC,120538,A,5230.89,N,1318.88,E,22.4,101.0,030308,11.2,W,A*34
+$GPGGA,120539,5230.88,N,1318.88,E,1,07,1.3,50.6,M,39.2,M,,*4f
+$GPRMC,120539,A,5230.88,N,1318.88,E,18.0,153.0,030308,11.2,W,A*3e
+$GPGGA,120540,5230.88,N,1318.88,E,1,07,1.3,50.6,M,39.2,M,,*41
+$GPRMC,120540,A,5230.88,N,1318.88,E,2.9,142.0,030308,11.2,W,A*02
+$GPGGA,120541,5230.88,N,1318.89,E,1,07,1.3,50.6,M,39.2,M,,*41
+$GPRMC,120541,A,5230.88,N,1318.89,E,0,93.0,030308,11.2,W,A*2a
+$GPGGA,120542,5230.88,N,1318.89,E,1,07,1.3,50.6,M,39.2,M,,*42
+$GPRMC,120542,A,5230.88,N,1318.89,E,0,93.0,030308,11.2,W,A*29
+$GPGGA,120543,5230.88,N,1318.89,E,1,07,1.3,50.6,M,39.2,M,,*43
+$GPRMC,120543,A,5230.88,N,1318.89,E,0,93.0,030308,11.2,W,A*28
+$GPGGA,120544,5230.88,N,1318.89,E,1,07,1.3,50.6,M,39.2,M,,*44
+$GPRMC,120544,A,5230.88,N,1318.89,E,0,93.0,030308,11.2,W,A*2f
+$GPGGA,120545,5230.88,N,1318.89,E,1,07,1.3,50.6,M,39.2,M,,*45
+$GPRMC,120545,A,5230.88,N,1318.89,E,0,93.0,030308,11.2,W,A*2e
+$GPGGA,120546,5230.88,N,1318.89,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,120546,A,5230.88,N,1318.89,E,0,93.0,030308,11.2,W,A*2d
+$GPGGA,120547,5230.88,N,1318.89,E,1,07,1.3,50.6,M,39.2,M,,*47
+$GPRMC,120547,A,5230.88,N,1318.89,E,0,93.0,030308,11.2,W,A*2c
+$GPGGA,120548,5230.88,N,1318.89,E,1,07,1.3,50.6,M,39.2,M,,*48
+$GPRMC,120548,A,5230.88,N,1318.89,E,0,93.0,030308,11.2,W,A*23
+$GPGGA,120549,5230.88,N,1318.89,E,1,07,1.3,50.6,M,39.2,M,,*49
+$GPRMC,120549,A,5230.88,N,1318.89,E,0,93.0,030308,11.2,W,A*22
+$GPGGA,120550,5230.88,N,1318.89,E,1,07,1.3,50.6,M,39.2,M,,*41
+$GPRMC,120550,A,5230.88,N,1318.89,E,0,93.0,030308,11.2,W,A*2a
+$GPGGA,120551,5230.88,N,1318.89,E,1,07,1.3,50.6,M,39.2,M,,*40
+$GPRMC,120551,A,5230.88,N,1318.89,E,0,93.0,030308,11.2,W,A*2b
+$GPGGA,120552,5230.88,N,1318.89,E,1,07,1.3,50.6,M,39.2,M,,*43
+$GPRMC,120552,A,5230.88,N,1318.89,E,0,93.0,030308,11.2,W,A*28
+$GPGGA,120553,5230.88,N,1318.89,E,1,07,1.3,50.6,M,39.2,M,,*42
+$GPRMC,120553,A,5230.88,N,1318.89,E,0,93.0,030308,11.2,W,A*29
+$GPGGA,120554,5230.88,N,1318.89,E,1,07,1.3,50.6,M,39.2,M,,*45
+$GPRMC,120554,A,5230.88,N,1318.89,E,0,93.0,030308,11.2,W,A*2e
+$GPGGA,120555,5230.88,N,1318.89,E,1,07,1.3,50.6,M,39.2,M,,*44
+$GPRMC,120555,A,5230.88,N,1318.89,E,0,93.0,030308,11.2,W,A*2f
+$GPGGA,120556,5230.88,N,1318.89,E,1,07,1.3,50.6,M,39.2,M,,*47
+$GPRMC,120556,A,5230.88,N,1318.89,E,0,93.0,030308,11.2,W,A*2c
+$GPGGA,120557,5230.88,N,1318.89,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,120557,A,5230.88,N,1318.89,E,5.3,124.0,030308,11.2,W,A*08
+$GPGGA,120558,5230.88,N,1318.9,E,1,07,1.3,50.6,M,39.2,M,,*71
+$GPRMC,120558,A,5230.88,N,1318.9,E,17.5,133.0,030308,11.2,W,A*0c
+$GPGGA,120559,5230.88,N,1318.9,E,1,07,1.3,50.6,M,39.2,M,,*70
+$GPRMC,120559,A,5230.88,N,1318.9,E,23.3,117.0,030308,11.2,W,A*0a
+$GPGGA,120600,5230.87,N,1318.92,E,1,07,1.3,50.6,M,39.2,M,,*42
+$GPRMC,120600,A,5230.87,N,1318.92,E,25.3,114.0,030308,11.2,W,A*3d
+$GPGGA,120601,5230.87,N,1318.93,E,1,07,1.3,50.6,M,39.2,M,,*42
+$GPRMC,120601,A,5230.87,N,1318.93,E,31.1,113.0,030308,11.2,W,A*3d
+$GPGGA,120602,5230.87,N,1318.94,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,120602,A,5230.87,N,1318.94,E,35.0,104.0,030308,11.2,W,A*3a
+$GPGGA,120603,5230.86,N,1318.95,E,1,07,1.3,50.6,M,39.2,M,,*47
+$GPRMC,120603,A,5230.86,N,1318.95,E,38.9,118.0,030308,11.2,W,A*32
+$GPGGA,120604,5230.86,N,1318.96,E,1,07,1.3,50.6,M,39.2,M,,*43
+$GPRMC,120604,A,5230.86,N,1318.96,E,31.1,109.0,030308,11.2,W,A*37
+$GPGGA,120605,5230.86,N,1318.98,E,1,07,1.3,50.6,M,39.2,M,,*4c
+$GPRMC,120605,A,5230.86,N,1318.98,E,30.6,116.0,030308,11.2,W,A*30
+$GPGGA,120606,5230.85,N,1318.99,E,1,07,1.3,50.6,M,39.2,M,,*4d
+$GPRMC,120606,A,5230.85,N,1318.99,E,30.6,107.0,030308,11.2,W,A*31
+$GPGGA,120607,5230.85,N,1319,E,1,07,1.3,50.6,M,39.2,M,,*63
+$GPRMC,120607,A,5230.85,N,1319,E,30.1,133.0,030308,11.2,W,A*1f
+$GPGGA,120608,5230.84,N,1319.01,E,1,07,1.3,50.6,M,39.2,M,,*42
+$GPRMC,120608,A,5230.84,N,1319.01,E,30.1,126.0,030308,11.2,W,A*3a
+$GPGGA,120609,5230.84,N,1319.03,E,1,07,1.3,50.6,M,39.2,M,,*41
+$GPRMC,120609,A,5230.84,N,1319.03,E,31.6,119.0,030308,11.2,W,A*33
+$GPGGA,120610,5230.83,N,1319.05,E,1,07,1.3,50.6,M,39.2,M,,*48
+$GPRMC,120610,A,5230.83,N,1319.05,E,31.6,121.0,030308,11.2,W,A*31
+$GPGGA,120611,5230.83,N,1319.06,E,1,07,1.3,50.6,M,39.2,M,,*4a
+$GPRMC,120611,A,5230.83,N,1319.06,E,31.6,109.0,030308,11.2,W,A*39
+$GPGGA,120612,5230.83,N,1319.08,E,1,07,1.3,50.6,M,39.2,M,,*47
+$GPRMC,120612,A,5230.83,N,1319.08,E,32.1,94.0,030308,11.2,W,A*05
+$GPGGA,120613,5230.83,N,1319.09,E,1,07,1.3,50.6,M,39.2,M,,*47
+$GPRMC,120613,A,5230.83,N,1319.09,E,32.6,101.0,030308,11.2,W,A*3f
+$GPGGA,120614,5230.82,N,1319.11,E,1,07,1.3,50.6,M,39.2,M,,*48
+$GPRMC,120614,A,5230.82,N,1319.11,E,33.0,94.0,030308,11.2,W,A*0a
+$GPGGA,120615,5230.82,N,1319.12,E,1,07,1.3,50.6,M,39.2,M,,*4a
+$GPRMC,120615,A,5230.82,N,1319.12,E,33.0,103.0,030308,11.2,W,A*37
+$GPGGA,120616,5230.82,N,1319.14,E,1,07,1.3,50.6,M,39.2,M,,*4f
+$GPRMC,120616,A,5230.82,N,1319.14,E,33.0,100.0,030308,11.2,W,A*31
+$GPGGA,120617,5230.82,N,1319.15,E,1,07,1.3,50.6,M,39.2,M,,*4f
+$GPRMC,120617,A,5230.82,N,1319.15,E,32.1,94.0,030308,11.2,W,A*0d
+$GPGGA,120618,5230.81,N,1319.18,E,1,07,1.3,50.6,M,39.2,M,,*4e
+$GPRMC,120618,A,5230.81,N,1319.18,E,32.1,115.0,030308,11.2,W,A*34
+$GPGGA,120619,5230.81,N,1319.19,E,1,07,1.3,50.6,M,39.2,M,,*4e
+$GPRMC,120619,A,5230.81,N,1319.19,E,30.1,113.0,030308,11.2,W,A*30
+$GPGGA,120620,5230.81,N,1319.2,E,1,07,1.3,50.6,M,39.2,M,,*7e
+$GPRMC,120620,A,5230.81,N,1319.2,E,28.2,107.0,030308,11.2,W,A*0f
+$GPGGA,120621,5230.8,N,1319.21,E,1,07,1.3,50.6,M,39.2,M,,*7f
+$GPRMC,120621,A,5230.8,N,1319.21,E,25.3,107.0,030308,11.2,W,A*02
+$GPGGA,120622,5230.8,N,1319.22,E,1,07,1.3,50.6,M,39.2,M,,*7f
+$GPRMC,120622,A,5230.8,N,1319.22,E,21.4,117.0,030308,11.2,W,A*00
+$GPGGA,120623,5230.8,N,1319.23,E,1,07,1.3,50.6,M,39.2,M,,*7f
+$GPRMC,120623,A,5230.8,N,1319.23,E,0,116.0,030308,11.2,W,A*28
+$GPGGA,120624,5230.8,N,1319.23,E,1,07,1.3,50.6,M,39.2,M,,*78
+$GPRMC,120624,A,5230.8,N,1319.23,E,0,121.0,030308,11.2,W,A*2b
+$GPGGA,120625,5230.8,N,1319.24,E,1,07,1.3,50.6,M,39.2,M,,*7e
+$GPRMC,120625,A,5230.8,N,1319.24,E,0,117.0,030308,11.2,W,A*28
+$GPGGA,120626,5230.8,N,1319.24,E,1,07,1.3,50.6,M,39.2,M,,*7d
+$GPRMC,120626,A,5230.8,N,1319.24,E,0,117.0,030308,11.2,W,A*2b
+$GPGGA,120627,5230.8,N,1319.24,E,1,07,1.3,50.6,M,39.2,M,,*7c
+$GPRMC,120627,A,5230.8,N,1319.24,E,0,117.0,030308,11.2,W,A*2a
+$GPGGA,120628,5230.8,N,1319.24,E,1,07,1.3,50.6,M,39.2,M,,*73
+$GPRMC,120628,A,5230.8,N,1319.24,E,0,117.0,030308,11.2,W,A*25
+$GPGGA,120629,5230.8,N,1319.24,E,1,07,1.3,50.6,M,39.2,M,,*72
+$GPRMC,120629,A,5230.8,N,1319.24,E,0,117.0,030308,11.2,W,A*24
+$GPGGA,120630,5230.8,N,1319.24,E,1,07,1.3,50.6,M,39.2,M,,*7a
+$GPRMC,120630,A,5230.8,N,1319.24,E,0,117.0,030308,11.2,W,A*2c
+$GPGGA,120631,5230.8,N,1319.24,E,1,07,1.3,50.6,M,39.2,M,,*7b
+$GPRMC,120631,A,5230.8,N,1319.24,E,0,117.0,030308,11.2,W,A*2d
+$GPGGA,120632,5230.8,N,1319.24,E,1,07,1.3,50.6,M,39.2,M,,*78
+$GPRMC,120632,A,5230.8,N,1319.24,E,0,117.0,030308,11.2,W,A*2e
+$GPGGA,120633,5230.79,N,1319.25,E,1,07,1.3,50.6,M,39.2,M,,*4e
+$GPRMC,120633,A,5230.79,N,1319.25,E,1.9,125.0,030308,11.2,W,A*0f
+$GPGGA,120634,5230.79,N,1319.25,E,1,07,1.3,50.6,M,39.2,M,,*49
+$GPRMC,120634,A,5230.79,N,1319.25,E,11.7,139.0,030308,11.2,W,A*3a
+$GPGGA,120635,5230.79,N,1319.25,E,1,07,1.3,50.6,M,39.2,M,,*48
+$GPRMC,120635,A,5230.79,N,1319.25,E,11.7,157.0,030308,11.2,W,A*33
+$GPGGA,120636,5230.78,N,1319.26,E,1,07,1.3,50.6,M,39.2,M,,*49
+$GPRMC,120636,A,5230.78,N,1319.26,E,19.4,163.0,030308,11.2,W,A*3e
+$GPGGA,120637,5230.77,N,1319.25,E,1,07,1.3,50.6,M,39.2,M,,*44
+$GPRMC,120637,A,5230.77,N,1319.25,E,20.4,196.0,030308,11.2,W,A*33
+$GPGGA,120638,5230.77,N,1319.25,E,1,07,1.3,50.6,M,39.2,M,,*4b
+$GPRMC,120638,A,5230.77,N,1319.25,E,19.4,200.0,030308,11.2,W,A*3a
+$GPGGA,120639,5230.76,N,1319.25,E,1,07,1.3,50.6,M,39.2,M,,*4b
+$GPRMC,120639,A,5230.76,N,1319.25,E,20.4,183.0,030308,11.2,W,A*38
+$GPGGA,120640,5230.75,N,1319.25,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,120640,A,5230.75,N,1319.25,E,20.4,175.0,030308,11.2,W,A*3c
+$GPGGA,120641,5230.74,N,1319.25,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,120641,A,5230.74,N,1319.25,E,21.9,163.0,030308,11.2,W,A*37
+$GPGGA,120642,5230.74,N,1319.26,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,120642,A,5230.74,N,1319.26,E,22.8,155.0,030308,11.2,W,A*30
+$GPGGA,120643,5230.73,N,1319.26,E,1,07,1.3,50.6,M,39.2,M,,*40
+$GPRMC,120643,A,5230.73,N,1319.26,E,22.8,144.0,030308,11.2,W,A*36
+$GPGGA,120644,5230.72,N,1319.27,E,1,07,1.3,50.6,M,39.2,M,,*47
+$GPRMC,120644,A,5230.72,N,1319.27,E,23.8,139.0,030308,11.2,W,A*3a
+$GPGGA,120645,5230.73,N,1319.36,E,1,07,1.3,50.6,M,39.2,M,,*47
+$GPRMC,120645,A,5230.73,N,1319.36,E,24.7,85.0,030308,11.2,W,A*04
+$GPGGA,120646,5230.74,N,1319.37,E,1,07,1.3,50.6,M,39.2,M,,*42
+$GPRMC,120646,A,5230.74,N,1319.37,E,25.8,26.0,030308,11.2,W,A*06
+$GPGGA,120647,5230.75,N,1319.38,E,1,07,1.3,50.6,M,39.2,M,,*4d
+$GPRMC,120647,A,5230.75,N,1319.38,E,24.8,18.0,030308,11.2,W,A*05
+$GPGGA,120648,5230.76,N,1319.38,E,1,07,1.3,50.6,M,39.2,M,,*41
+$GPRMC,120648,A,5230.76,N,1319.38,E,24.3,351.0,030308,11.2,W,A*3c
+$GPGGA,120649,5230.76,N,1319.37,E,1,07,1.3,50.6,M,39.2,M,,*4f
+$GPRMC,120649,A,5230.76,N,1319.37,E,24.8,344.0,030308,11.2,W,A*3d
+$GPGGA,120650,5230.77,N,1319.37,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,120650,A,5230.77,N,1319.37,E,25.8,342.0,030308,11.2,W,A*33
+$GPGGA,120651,5230.78,N,1319.36,E,1,07,1.3,50.6,M,39.2,M,,*49
+$GPRMC,120651,A,5230.78,N,1319.36,E,26.7,323.0,030308,11.2,W,A*37
+$GPGGA,120652,5230.78,N,1319.35,E,1,07,1.3,50.6,M,39.2,M,,*49
+$GPRMC,120652,A,5230.78,N,1319.35,E,26.7,313.0,030308,11.2,W,A*34
+$GPGGA,120653,5230.79,N,1319.34,E,1,07,1.3,50.6,M,39.2,M,,*48
+$GPRMC,120653,A,5230.79,N,1319.34,E,27.7,302.0,030308,11.2,W,A*34
+$GPGGA,120654,5230.79,N,1319.33,E,1,07,1.3,50.6,M,39.2,M,,*48
+$GPRMC,120654,A,5230.79,N,1319.33,E,27.6,271.0,030308,11.2,W,A*30
+$GPGGA,120655,5230.79,N,1319.32,E,1,07,1.3,50.6,M,39.2,M,,*48
+$GPRMC,120655,A,5230.79,N,1319.32,E,27.4,278.0,030308,11.2,W,A*3b
+$GPGGA,120656,5230.79,N,1319.3,E,1,07,1.3,50.6,M,39.2,M,,*79
+$GPRMC,120656,A,5230.79,N,1319.3,E,27.2,274.0,030308,11.2,W,A*00
+$GPGGA,120657,5230.79,N,1319.29,E,1,07,1.3,50.6,M,39.2,M,,*40
+$GPRMC,120657,A,5230.79,N,1319.29,E,26.2,274.0,030308,11.2,W,A*38
+$GPGGA,120658,5230.79,N,1319.28,E,1,07,1.3,50.6,M,39.2,M,,*4e
+$GPRMC,120658,A,5230.79,N,1319.28,E,25.8,284.0,030308,11.2,W,A*30
+$GPGGA,120659,5230.79,N,1319.27,E,1,07,1.3,50.6,M,39.2,M,,*40
+$GPRMC,120659,A,5230.79,N,1319.27,E,26.7,292.0,030308,11.2,W,A*35
+$GPGGA,120700,5230.8,N,1319.26,E,1,07,1.3,50.6,M,39.2,M,,*7a
+$GPRMC,120700,A,5230.8,N,1319.26,E,28.2,299.0,030308,11.2,W,A*0f
+$GPGGA,120701,5230.8,N,1319.24,E,1,07,1.3,50.6,M,39.2,M,,*79
+$GPRMC,120701,A,5230.8,N,1319.24,E,29.6,294.0,030308,11.2,W,A*04
+$GPGGA,120702,5230.8,N,1319.23,E,1,07,1.3,50.6,M,39.2,M,,*7d
+$GPRMC,120702,A,5230.8,N,1319.23,E,30.6,294.0,030308,11.2,W,A*08
+$GPGGA,120703,5230.81,N,1319.22,E,1,07,1.3,50.6,M,39.2,M,,*4c
+$GPRMC,120703,A,5230.81,N,1319.22,E,33.0,295.0,030308,11.2,W,A*3d
+$GPGGA,120704,5230.81,N,1319.2,E,1,07,1.3,50.6,M,39.2,M,,*79
+$GPRMC,120704,A,5230.81,N,1319.2,E,34.0,291.0,030308,11.2,W,A*0b
+$GPGGA,120705,5230.82,N,1319.19,E,1,07,1.3,50.6,M,39.2,M,,*41
+$GPRMC,120705,A,5230.82,N,1319.19,E,35.0,290.0,030308,11.2,W,A*33
+$GPGGA,120706,5230.82,N,1319.17,E,1,07,1.3,50.6,M,39.2,M,,*4c
+$GPRMC,120706,A,5230.82,N,1319.17,E,35.0,281.0,030308,11.2,W,A*3e
+$GPGGA,120707,5230.82,N,1319.16,E,1,07,1.3,50.6,M,39.2,M,,*4c
+$GPRMC,120707,A,5230.82,N,1319.16,E,34.5,290.0,030308,11.2,W,A*3a
+$GPGGA,120708,5230.82,N,1319.14,E,1,07,1.3,50.6,M,39.2,M,,*41
+$GPRMC,120708,A,5230.82,N,1319.14,E,34.0,283.0,030308,11.2,W,A*30
+$GPGGA,120709,5230.83,N,1319.13,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,120709,A,5230.83,N,1319.13,E,33.5,282.0,030308,11.2,W,A*34
+$GPGGA,120710,5230.83,N,1319.11,E,1,07,1.3,50.6,M,39.2,M,,*4c
+$GPRMC,120710,A,5230.83,N,1319.11,E,31.6,291.0,030308,11.2,W,A*3d
+$GPGGA,120711,5230.83,N,1319.1,E,1,07,1.3,50.6,M,39.2,M,,*7c
+$GPRMC,120711,A,5230.83,N,1319.1,E,31.6,276.0,030308,11.2,W,A*04
+$GPGGA,120712,5230.83,N,1319.09,E,1,07,1.3,50.6,M,39.2,M,,*47
+$GPRMC,120712,A,5230.83,N,1319.09,E,31.1,283.0,030308,11.2,W,A*32
+$GPGGA,120713,5230.83,N,1319.07,E,1,07,1.3,50.6,M,39.2,M,,*48
+$GPRMC,120713,A,5230.83,N,1319.07,E,31.6,285.0,030308,11.2,W,A*3c
+$GPGGA,120714,5230.84,N,1319.06,E,1,07,1.3,50.6,M,39.2,M,,*49
+$GPRMC,120714,A,5230.84,N,1319.06,E,32.1,288.0,030308,11.2,W,A*34
+$GPGGA,120715,5230.84,N,1319.04,E,1,07,1.3,50.6,M,39.2,M,,*4a
+$GPRMC,120715,A,5230.84,N,1319.04,E,33.0,294.0,030308,11.2,W,A*3a
+$GPGGA,120716,5230.85,N,1319.03,E,1,07,1.3,50.6,M,39.2,M,,*4f
+$GPRMC,120716,A,5230.85,N,1319.03,E,33.0,297.0,030308,11.2,W,A*3c
+$GPGGA,120717,5230.85,N,1319.02,E,1,07,1.3,50.6,M,39.2,M,,*4f
+$GPRMC,120717,A,5230.85,N,1319.02,E,32.6,293.0,030308,11.2,W,A*3f
+$GPGGA,120718,5230.85,N,1319,E,1,07,1.3,50.6,M,39.2,M,,*6c
+$GPRMC,120718,A,5230.85,N,1319,E,31.1,295.0,030308,11.2,W,A*1e
+$GPGGA,120719,5230.86,N,1318.99,E,1,07,1.3,50.6,M,39.2,M,,*41
+$GPRMC,120719,A,5230.86,N,1318.99,E,29.2,296.0,030308,11.2,W,A*3a
+$GPGGA,120720,5230.86,N,1318.98,E,1,07,1.3,50.6,M,39.2,M,,*4a
+$GPRMC,120720,A,5230.86,N,1318.98,E,27.7,301.0,030308,11.2,W,A*35
+$GPGGA,120721,5230.86,N,1318.97,E,1,07,1.3,50.6,M,39.2,M,,*44
+$GPRMC,120721,A,5230.86,N,1318.97,E,24.8,292.0,030308,11.2,W,A*3c
+$GPGGA,120722,5230.87,N,1318.96,E,1,07,1.3,50.6,M,39.2,M,,*47
+$GPRMC,120722,A,5230.87,N,1318.96,E,21.9,302.0,030308,11.2,W,A*33
+$GPGGA,120723,5230.87,N,1318.95,E,1,07,1.3,50.6,M,39.2,M,,*45
+$GPRMC,120723,A,5230.87,N,1318.95,E,11.7,293.0,030308,11.2,W,A*35
+$GPGGA,120724,5230.87,N,1318.95,E,1,07,1.3,50.6,M,39.2,M,,*42
+$GPRMC,120724,A,5230.87,N,1318.95,E,7.8,300.0,030308,11.2,W,A*01
+$GPGGA,120725,5230.87,N,1318.94,E,1,07,1.3,50.6,M,39.2,M,,*42
+$GPRMC,120725,A,5230.87,N,1318.94,E,3.9,298.0,030308,11.2,W,A*04
+$GPGGA,120726,5230.88,N,1318.94,E,1,07,1.3,50.6,M,39.2,M,,*4e
+$GPRMC,120726,A,5230.88,N,1318.94,E,0,305.0,030308,11.2,W,A*19
+$GPGGA,120727,5230.88,N,1318.94,E,1,07,1.3,50.6,M,39.2,M,,*4f
+$GPRMC,120727,A,5230.88,N,1318.94,E,0,305.0,030308,11.2,W,A*18
+$GPGGA,120728,5230.88,N,1318.94,E,1,07,1.3,50.6,M,39.2,M,,*40
+$GPRMC,120728,A,5230.88,N,1318.94,E,0,305.0,030308,11.2,W,A*17
+$GPGGA,120729,5230.88,N,1318.94,E,1,07,1.3,50.6,M,39.2,M,,*41
+$GPRMC,120729,A,5230.88,N,1318.94,E,0,305.0,030308,11.2,W,A*16
+$GPGGA,120730,5230.88,N,1318.94,E,1,07,1.3,50.6,M,39.2,M,,*49
+$GPRMC,120730,A,5230.88,N,1318.94,E,0,305.0,030308,11.2,W,A*1e
+$GPGGA,120731,5230.88,N,1318.94,E,1,07,1.3,50.6,M,39.2,M,,*48
+$GPRMC,120731,A,5230.88,N,1318.94,E,0,305.0,030308,11.2,W,A*1f
+$GPGGA,120732,5230.88,N,1318.94,E,1,07,1.3,50.6,M,39.2,M,,*4b
+$GPRMC,120732,A,5230.88,N,1318.94,E,0,305.0,030308,11.2,W,A*1c
+$GPGGA,120733,5230.88,N,1318.94,E,1,07,1.3,50.6,M,39.2,M,,*4a
+$GPRMC,120733,A,5230.88,N,1318.94,E,0,305.0,030308,11.2,W,A*1d
+$GPGGA,120734,5230.88,N,1318.94,E,1,07,1.3,50.6,M,39.2,M,,*4d
+$GPRMC,120734,A,5230.88,N,1318.94,E,0,305.0,030308,11.2,W,A*1a
+$GPGGA,120735,5230.88,N,1318.94,E,1,07,1.3,50.6,M,39.2,M,,*4c
+$GPRMC,120735,A,5230.88,N,1318.94,E,0,305.0,030308,11.2,W,A*1b
+$GPGGA,120736,5230.88,N,1318.94,E,1,07,1.3,50.6,M,39.2,M,,*4f
+$GPRMC,120736,A,5230.88,N,1318.94,E,0,305.0,030308,11.2,W,A*18
+$GPGGA,120737,5230.88,N,1318.94,E,1,07,1.3,50.6,M,39.2,M,,*4e
+$GPRMC,120737,A,5230.88,N,1318.94,E,0,305.0,030308,11.2,W,A*19
+$GPGGA,120738,5230.88,N,1318.94,E,1,07,1.3,50.6,M,39.2,M,,*41
+$GPRMC,120738,A,5230.88,N,1318.94,E,0,305.0,030308,11.2,W,A*16
+$GPGGA,120739,5230.88,N,1318.94,E,1,07,1.3,50.6,M,39.2,M,,*40
+$GPRMC,120739,A,5230.88,N,1318.94,E,0,305.0,030308,11.2,W,A*17
+$GPGGA,120740,5230.88,N,1318.94,E,1,07,1.3,50.6,M,39.2,M,,*4e
+$GPRMC,120740,A,5230.88,N,1318.94,E,0,305.0,030308,11.2,W,A*19
+$GPGGA,120741,5230.88,N,1318.94,E,1,07,1.3,50.6,M,39.2,M,,*4f
+$GPRMC,120741,A,5230.88,N,1318.94,E,0,305.0,030308,11.2,W,A*18
+$GPGGA,120742,5230.88,N,1318.93,E,1,07,1.3,50.6,M,39.2,M,,*4b
+$GPRMC,120742,A,5230.88,N,1318.93,E,1.0,295.0,030308,11.2,W,A*0b
+$GPGGA,120743,5230.88,N,1318.93,E,1,07,1.3,50.6,M,39.2,M,,*4a
+$GPRMC,120743,A,5230.88,N,1318.93,E,3.9,314.0,030308,11.2,W,A*09
+$GPGGA,120744,5230.88,N,1318.93,E,1,07,1.3,50.6,M,39.2,M,,*4d
+$GPRMC,120744,A,5230.88,N,1318.93,E,11.7,296.0,030308,11.2,W,A*38
+$GPGGA,120745,5230.88,N,1318.92,E,1,07,1.3,50.6,M,39.2,M,,*4d
+$GPRMC,120745,A,5230.88,N,1318.92,E,15.6,286.0,030308,11.2,W,A*3c
+$GPGGA,120746,5230.88,N,1318.92,E,1,07,1.3,50.6,M,39.2,M,,*4e
+$GPRMC,120746,A,5230.88,N,1318.92,E,23.3,303.0,030308,11.2,W,A*33
+$GPGGA,120747,5230.88,N,1318.91,E,1,07,1.3,50.6,M,39.2,M,,*4c
+$GPRMC,120747,A,5230.88,N,1318.91,E,25.3,298.0,030308,11.2,W,A*34
+$GPGGA,120748,5230.89,N,1318.9,E,1,07,1.3,50.6,M,39.2,M,,*73
+$GPRMC,120748,A,5230.89,N,1318.9,E,29.2,298.0,030308,11.2,W,A*06
+$GPGGA,120749,5230.89,N,1318.89,E,1,07,1.3,50.6,M,39.2,M,,*4a
+$GPRMC,120749,A,5230.89,N,1318.89,E,29.2,298.0,030308,11.2,W,A*3f
+$GPGGA,120750,5230.89,N,1318.88,E,1,07,1.3,50.6,M,39.2,M,,*43
+$GPRMC,120750,A,5230.89,N,1318.88,E,29.2,303.0,030308,11.2,W,A*35
+$GPGGA,120751,5230.9,N,1318.87,E,1,07,1.3,50.6,M,39.2,M,,*75
+$GPRMC,120751,A,5230.9,N,1318.87,E,29.2,300.0,030308,11.2,W,A*00
+$GPGGA,120752,5230.9,N,1318.86,E,1,07,1.3,50.6,M,39.2,M,,*77
+$GPRMC,120752,A,5230.9,N,1318.86,E,29.2,294.0,030308,11.2,W,A*0e
+$GPGGA,120753,5230.9,N,1318.85,E,1,07,1.3,50.6,M,39.2,M,,*75
+$GPRMC,120753,A,5230.9,N,1318.85,E,29.2,296.0,030308,11.2,W,A*0e
+$GPGGA,120754,5230.91,N,1318.84,E,1,07,1.3,50.6,M,39.2,M,,*42
+$GPRMC,120754,A,5230.91,N,1318.84,E,25.3,294.0,030308,11.2,W,A*36
+$GPGGA,120755,5230.91,N,1318.83,E,1,07,1.3,50.6,M,39.2,M,,*44
+$GPRMC,120755,A,5230.91,N,1318.83,E,25.8,298.0,030308,11.2,W,A*37
+$GPGGA,120756,5230.91,N,1318.82,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,120756,A,5230.91,N,1318.82,E,26.2,293.0,030308,11.2,W,A*37
+$GPGGA,120757,5230.92,N,1318.8,E,1,07,1.3,50.6,M,39.2,M,,*76
+$GPRMC,120757,A,5230.92,N,1318.8,E,27.2,297.0,030308,11.2,W,A*02
+$GPGGA,120758,5230.92,N,1318.79,E,1,07,1.3,50.6,M,39.2,M,,*4f
+$GPRMC,120758,A,5230.92,N,1318.79,E,29.2,296.0,030308,11.2,W,A*34
+$GPGGA,120759,5230.93,N,1318.77,E,1,07,1.3,50.6,M,39.2,M,,*41
+$GPRMC,120759,A,5230.93,N,1318.77,E,35.0,293.0,030308,11.2,W,A*30
+$GPGGA,120800,5230.93,N,1318.76,E,1,07,1.3,50.6,M,39.2,M,,*43
+$GPRMC,120800,A,5230.93,N,1318.76,E,36.9,300.0,030308,11.2,W,A*33
+$GPGGA,120801,5230.94,N,1318.74,E,1,07,1.3,50.6,M,39.2,M,,*47
+$GPRMC,120801,A,5230.94,N,1318.74,E,38.9,296.0,030308,11.2,W,A*37
+$GPGGA,120802,5230.94,N,1318.73,E,1,07,1.3,50.6,M,39.2,M,,*43
+$GPRMC,120802,A,5230.94,N,1318.73,E,38.9,303.0,030308,11.2,W,A*3e
+$GPGGA,120803,5230.95,N,1318.71,E,1,07,1.3,50.6,M,39.2,M,,*41
+$GPRMC,120803,A,5230.95,N,1318.71,E,38.9,299.0,030308,11.2,W,A*3e
+$GPGGA,120804,5230.95,N,1318.69,E,1,07,1.3,50.6,M,39.2,M,,*4f
+$GPRMC,120804,A,5230.95,N,1318.69,E,38.9,295.0,030308,11.2,W,A*3c
+$GPGGA,120805,5230.96,N,1318.67,E,1,07,1.3,50.6,M,39.2,M,,*43
+$GPRMC,120805,A,5230.96,N,1318.67,E,38.9,298.0,030308,11.2,W,A*3d
+$GPGGA,120806,5230.96,N,1318.66,E,1,07,1.3,50.6,M,39.2,M,,*41
+$GPRMC,120806,A,5230.96,N,1318.66,E,38.9,297.0,030308,11.2,W,A*30
+$GPGGA,120807,5230.97,N,1318.65,E,1,07,1.3,50.6,M,39.2,M,,*42
+$GPRMC,120807,A,5230.97,N,1318.65,E,38.9,303.0,030308,11.2,W,A*3f
+$GPGGA,120808,5230.97,N,1318.64,E,1,07,1.3,50.6,M,39.2,M,,*4c
+$GPRMC,120808,A,5230.97,N,1318.64,E,38.9,298.0,030308,11.2,W,A*32
+$GPGGA,120809,5230.98,N,1318.62,E,1,07,1.3,50.6,M,39.2,M,,*44
+$GPRMC,120809,A,5230.98,N,1318.62,E,26.2,300.0,030308,11.2,W,A*3e
+$GPGGA,120810,5230.98,N,1318.61,E,1,07,1.3,50.6,M,39.2,M,,*4f
+$GPRMC,120810,A,5230.98,N,1318.61,E,25.8,292.0,030308,11.2,W,A*36
+$GPGGA,120811,5230.98,N,1318.6,E,1,07,1.3,50.6,M,39.2,M,,*7f
+$GPRMC,120811,A,5230.98,N,1318.6,E,25.8,295.0,030308,11.2,W,A*01
+$GPGGA,120812,5230.99,N,1318.59,E,1,07,1.3,50.6,M,39.2,M,,*47
+$GPRMC,120812,A,5230.99,N,1318.59,E,23.3,297.0,030308,11.2,W,A*36
+$GPGGA,120813,5230.99,N,1318.57,E,1,07,1.3,50.6,M,39.2,M,,*48
+$GPRMC,120813,A,5230.99,N,1318.57,E,19.4,297.0,030308,11.2,W,A*37
+$GPGGA,120814,5230.99,N,1318.56,E,1,07,1.3,50.6,M,39.2,M,,*4e
+$GPRMC,120814,A,5230.99,N,1318.56,E,13.6,295.0,030308,11.2,W,A*3b
+$GPGGA,120815,5231,N,1318.55,E,1,07,1.3,50.6,M,39.2,M,,*63
+$GPRMC,120815,A,5231,N,1318.55,E,13.6,300.0,030308,11.2,W,A*1b
+$GPGGA,120816,5231,N,1318.54,E,1,07,1.3,50.6,M,39.2,M,,*61
+$GPRMC,120816,A,5231,N,1318.54,E,13.6,299.0,030308,11.2,W,A*18
+$GPGGA,120817,5231.01,N,1318.53,E,1,07,1.3,50.6,M,39.2,M,,*48
+$GPRMC,120817,A,5231.01,N,1318.53,E,19.4,298.0,030308,11.2,W,A*38
+$GPGGA,120818,5231.01,N,1318.52,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,120818,A,5231.01,N,1318.52,E,30.6,298.0,030308,11.2,W,A*3f
+$GPGGA,120819,5231.01,N,1318.5,E,1,07,1.3,50.6,M,39.2,M,,*75
+$GPRMC,120819,A,5231.01,N,1318.5,E,31.1,297.0,030308,11.2,W,A*05
+$GPGGA,120820,5231.02,N,1318.49,E,1,07,1.3,50.6,M,39.2,M,,*44
+$GPRMC,120820,A,5231.02,N,1318.49,E,31.1,299.0,030308,11.2,W,A*3a
+$GPGGA,120821,5231.02,N,1318.48,E,1,07,1.3,50.6,M,39.2,M,,*44
+$GPRMC,120821,A,5231.02,N,1318.48,E,31.1,298.0,030308,11.2,W,A*3b
+$GPGGA,120822,5231.03,N,1318.47,E,1,07,1.3,50.6,M,39.2,M,,*49
+$GPRMC,120822,A,5231.03,N,1318.47,E,30.6,299.0,030308,11.2,W,A*31
+$GPGGA,120823,5231.03,N,1318.45,E,1,07,1.3,50.6,M,39.2,M,,*4a
+$GPRMC,120823,A,5231.03,N,1318.45,E,30.1,302.0,030308,11.2,W,A*36
+$GPGGA,120824,5231.04,N,1318.44,E,1,07,1.3,50.6,M,39.2,M,,*4b
+$GPRMC,120824,A,5231.04,N,1318.44,E,30.1,299.0,030308,11.2,W,A*34
+$GPGGA,120825,5231.04,N,1318.43,E,1,07,1.3,50.6,M,39.2,M,,*4d
+$GPRMC,120825,A,5231.04,N,1318.43,E,35.0,298.0,030308,11.2,W,A*37
+$GPGGA,120826,5231.05,N,1318.41,E,1,07,1.3,50.6,M,39.2,M,,*4d
+$GPRMC,120826,A,5231.05,N,1318.41,E,35.0,298.0,030308,11.2,W,A*37
+$GPGGA,120827,5231.05,N,1318.4,E,1,07,1.3,50.6,M,39.2,M,,*7d
+$GPRMC,120827,A,5231.05,N,1318.4,E,27.7,297.0,030308,11.2,W,A*0c
+$GPGGA,120828,5231.05,N,1318.38,E,1,07,1.3,50.6,M,39.2,M,,*4d
+$GPRMC,120828,A,5231.05,N,1318.38,E,27.2,295.0,030308,11.2,W,A*3b
+$GPGGA,120829,5231.06,N,1318.37,E,1,07,1.3,50.6,M,39.2,M,,*40
+$GPRMC,120829,A,5231.06,N,1318.37,E,27.2,291.0,030308,11.2,W,A*32
+$GPGGA,120830,5231.06,N,1318.36,E,1,07,1.3,50.6,M,39.2,M,,*49
+$GPRMC,120830,A,5231.06,N,1318.36,E,25.3,302.0,030308,11.2,W,A*33
+$GPGGA,120831,5231.06,N,1318.35,E,1,07,1.3,50.6,M,39.2,M,,*4b
+$GPRMC,120831,A,5231.06,N,1318.35,E,23.3,301.0,030308,11.2,W,A*34
+$GPGGA,120832,5231.07,N,1318.34,E,1,07,1.3,50.6,M,39.2,M,,*48
+$GPRMC,120832,A,5231.07,N,1318.34,E,19.4,295.0,030308,11.2,W,A*35
+$GPGGA,120833,5231.07,N,1318.33,E,1,07,1.3,50.6,M,39.2,M,,*4e
+$GPRMC,120833,A,5231.07,N,1318.33,E,15.6,297.0,030308,11.2,W,A*3f
+$GPGGA,120834,5231.07,N,1318.32,E,1,07,1.3,50.6,M,39.2,M,,*48
+$GPRMC,120834,A,5231.07,N,1318.32,E,9.7,300.0,030308,11.2,W,A*0a
+$GPGGA,120835,5231.08,N,1318.32,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,120835,A,5231.08,N,1318.32,E,5.8,300.0,030308,11.2,W,A*07
+$GPGGA,120836,5231.08,N,1318.31,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,120836,A,5231.08,N,1318.31,E,3.9,298.0,030308,11.2,W,A*00
+$GPGGA,120837,5231.08,N,1318.31,E,1,07,1.3,50.6,M,39.2,M,,*47
+$GPRMC,120837,A,5231.08,N,1318.31,E,1.9,289.0,030308,11.2,W,A*03
+$GPGGA,120838,5231.08,N,1318.3,E,1,07,1.3,50.6,M,39.2,M,,*79
+$GPRMC,120838,A,5231.08,N,1318.3,E,1.9,300.0,030308,11.2,W,A*3d
+$GPGGA,120839,5231.08,N,1318.3,E,1,07,1.3,50.6,M,39.2,M,,*78
+$GPRMC,120839,A,5231.08,N,1318.3,E,3.9,285.0,030308,11.2,W,A*32
+$GPGGA,120840,5231.08,N,1318.29,E,1,07,1.3,50.6,M,39.2,M,,*4e
+$GPRMC,120840,A,5231.08,N,1318.29,E,3.9,285.0,030308,11.2,W,A*04
+$GPGGA,120841,5231.08,N,1318.29,E,1,07,1.3,50.6,M,39.2,M,,*4f
+$GPRMC,120841,A,5231.08,N,1318.29,E,3.9,312.0,030308,11.2,W,A*0a
+$GPGGA,120842,5231.08,N,1318.29,E,1,07,1.3,50.6,M,39.2,M,,*4c
+$GPRMC,120842,A,5231.08,N,1318.29,E,1.9,285.0,030308,11.2,W,A*04
+$GPGGA,120843,5231.08,N,1318.29,E,1,07,1.3,50.6,M,39.2,M,,*4d
+$GPRMC,120843,A,5231.08,N,1318.29,E,0,285.0,030308,11.2,W,A*13
+$GPGGA,120844,5231.08,N,1318.29,E,1,07,1.3,50.6,M,39.2,M,,*4a
+$GPRMC,120844,A,5231.08,N,1318.29,E,0,285.0,030308,11.2,W,A*14
+$GPGGA,120845,5231.08,N,1318.29,E,1,07,1.3,50.6,M,39.2,M,,*4b
+$GPRMC,120845,A,5231.08,N,1318.29,E,0,285.0,030308,11.2,W,A*15
+$GPGGA,120846,5231.08,N,1318.29,E,1,07,1.3,50.6,M,39.2,M,,*48
+$GPRMC,120846,A,5231.08,N,1318.29,E,0,285.0,030308,11.2,W,A*16
+$GPGGA,120847,5231.08,N,1318.29,E,1,07,1.3,50.6,M,39.2,M,,*49
+$GPRMC,120847,A,5231.08,N,1318.29,E,0,285.0,030308,11.2,W,A*17
+$GPGGA,120848,5231.08,N,1318.29,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,120848,A,5231.08,N,1318.29,E,0,285.0,030308,11.2,W,A*18
+$GPGGA,120849,5231.08,N,1318.29,E,1,07,1.3,50.6,M,39.2,M,,*47
+$GPRMC,120849,A,5231.08,N,1318.29,E,0,285.0,030308,11.2,W,A*19
+$GPGGA,120850,5231.08,N,1318.29,E,1,07,1.3,50.6,M,39.2,M,,*4f
+$GPRMC,120850,A,5231.08,N,1318.29,E,0,285.0,030308,11.2,W,A*11
+$GPGGA,120851,5231.08,N,1318.29,E,1,07,1.3,50.6,M,39.2,M,,*4e
+$GPRMC,120851,A,5231.08,N,1318.29,E,0,285.0,030308,11.2,W,A*10
+$GPGGA,120852,5231.08,N,1318.29,E,1,07,1.3,50.6,M,39.2,M,,*4d
+$GPRMC,120852,A,5231.08,N,1318.29,E,0,285.0,030308,11.2,W,A*13
+$GPGGA,120853,5231.08,N,1318.29,E,1,07,1.3,50.6,M,39.2,M,,*4c
+$GPRMC,120853,A,5231.08,N,1318.29,E,0,285.0,030308,11.2,W,A*12
+$GPGGA,120854,5231.08,N,1318.29,E,1,07,1.3,50.6,M,39.2,M,,*4b
+$GPRMC,120854,A,5231.08,N,1318.29,E,0,285.0,030308,11.2,W,A*15
+$GPGGA,120855,5231.08,N,1318.29,E,1,07,1.3,50.6,M,39.2,M,,*4a
+$GPRMC,120855,A,5231.08,N,1318.29,E,7.8,285.0,030308,11.2,W,A*05
+$GPGGA,120856,5231.08,N,1318.29,E,1,07,1.3,50.6,M,39.2,M,,*49
+$GPRMC,120856,A,5231.08,N,1318.29,E,9.7,240.0,030308,11.2,W,A*0e
+$GPGGA,120857,5231.08,N,1318.28,E,1,07,1.3,50.6,M,39.2,M,,*49
+$GPRMC,120857,A,5231.08,N,1318.28,E,11.7,281.0,030308,11.2,W,A*3a
+$GPGGA,120858,5231.09,N,1318.27,E,1,07,1.3,50.6,M,39.2,M,,*48
+$GPRMC,120858,A,5231.09,N,1318.27,E,18.0,299.0,030308,11.2,W,A*3c
+$GPGGA,120859,5231.09,N,1318.26,E,1,07,1.3,50.6,M,39.2,M,,*48
+$GPRMC,120859,A,5231.09,N,1318.26,E,19.9,297.0,030308,11.2,W,A*3a
+$GPGGA,120900,5231.09,N,1318.25,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,120900,A,5231.09,N,1318.25,E,22.4,297.0,030308,11.2,W,A*31
+$GPGGA,120901,5231.1,N,1318.24,E,1,07,1.3,50.6,M,39.2,M,,*7e
+$GPRMC,120901,A,5231.1,N,1318.24,E,22.8,303.0,030308,11.2,W,A*09
+$GPGGA,120902,5231.1,N,1318.23,E,1,07,1.3,50.6,M,39.2,M,,*7a
+$GPRMC,120902,A,5231.1,N,1318.23,E,21.9,293.0,030308,11.2,W,A*07
+$GPGGA,120903,5231.1,N,1318.22,E,1,07,1.3,50.6,M,39.2,M,,*7a
+$GPRMC,120903,A,5231.1,N,1318.22,E,19.0,296.0,030308,11.2,W,A*00
+$GPGGA,120904,5231.1,N,1318.21,E,1,07,1.3,50.6,M,39.2,M,,*7e
+$GPRMC,120904,A,5231.1,N,1318.21,E,15.1,300.0,030308,11.2,W,A*07
+$GPGGA,120905,5231.11,N,1318.2,E,1,07,1.3,50.6,M,39.2,M,,*7f
+$GPRMC,120905,A,5231.11,N,1318.2,E,14.6,292.0,030308,11.2,W,A*0a
+$GPGGA,120906,5231.11,N,1318.19,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,120906,A,5231.11,N,1318.19,E,16.0,297.0,030308,11.2,W,A*32
+$GPGGA,120907,5231.11,N,1318.18,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,120907,A,5231.11,N,1318.18,E,19.0,293.0,030308,11.2,W,A*39
+$GPGGA,120908,5231.12,N,1318.17,E,1,07,1.3,50.6,M,39.2,M,,*45
+$GPRMC,120908,A,5231.12,N,1318.17,E,21.4,297.0,030308,11.2,W,A*31
+$GPGGA,120909,5231.12,N,1318.16,E,1,07,1.3,50.6,M,39.2,M,,*45
+$GPRMC,120909,A,5231.12,N,1318.16,E,24.3,296.0,030308,11.2,W,A*32
+$GPGGA,120910,5231.12,N,1318.15,E,1,07,1.3,50.6,M,39.2,M,,*4e
+$GPRMC,120910,A,5231.12,N,1318.15,E,25.8,301.0,030308,11.2,W,A*3c
+$GPGGA,120911,5231.13,N,1318.14,E,1,07,1.3,50.6,M,39.2,M,,*4f
+$GPRMC,120911,A,5231.13,N,1318.14,E,26.2,303.0,030308,11.2,W,A*36
+$GPGGA,120912,5231.13,N,1318.13,E,1,07,1.3,50.6,M,39.2,M,,*4b
+$GPRMC,120912,A,5231.13,N,1318.13,E,26.7,299.0,030308,11.2,W,A*35
+$GPGGA,120913,5231.14,N,1318.12,E,1,07,1.3,50.6,M,39.2,M,,*4c
+$GPRMC,120913,A,5231.14,N,1318.12,E,27.2,299.0,030308,11.2,W,A*36
+$GPGGA,120914,5231.14,N,1318.1,E,1,07,1.3,50.6,M,39.2,M,,*79
+$GPRMC,120914,A,5231.14,N,1318.1,E,28.2,297.0,030308,11.2,W,A*02
+$GPGGA,120915,5231.14,N,1318.09,E,1,07,1.3,50.6,M,39.2,M,,*40
+$GPRMC,120915,A,5231.14,N,1318.09,E,29.2,304.0,030308,11.2,W,A*31
+$GPGGA,120916,5231.15,N,1318.08,E,1,07,1.3,50.6,M,39.2,M,,*43
+$GPRMC,120916,A,5231.15,N,1318.08,E,29.6,302.0,030308,11.2,W,A*30
+$GPGGA,120917,5231.15,N,1318.07,E,1,07,1.3,50.6,M,39.2,M,,*4d
+$GPRMC,120917,A,5231.15,N,1318.07,E,30.6,305.0,030308,11.2,W,A*31
+$GPGGA,120918,5231.16,N,1318.06,E,1,07,1.3,50.6,M,39.2,M,,*40
+$GPRMC,120918,A,5231.16,N,1318.06,E,31.6,305.0,030308,11.2,W,A*3d
+$GPGGA,120919,5231.16,N,1318.05,E,1,07,1.3,50.6,M,39.2,M,,*42
+$GPRMC,120919,A,5231.16,N,1318.05,E,31.6,300.0,030308,11.2,W,A*3a
+$GPGGA,120920,5231.17,N,1318.03,E,1,07,1.3,50.6,M,39.2,M,,*4f
+$GPRMC,120920,A,5231.17,N,1318.03,E,30.6,298.0,030308,11.2,W,A*36
+$GPGGA,120921,5231.17,N,1318.02,E,1,07,1.3,50.6,M,39.2,M,,*4f
+$GPRMC,120921,A,5231.17,N,1318.02,E,28.2,296.0,030308,11.2,W,A*35
+$GPGGA,120922,5231.17,N,1318.01,E,1,07,1.3,50.6,M,39.2,M,,*4f
+$GPRMC,120922,A,5231.17,N,1318.01,E,26.2,293.0,030308,11.2,W,A*3e
+$GPGGA,120923,5231.18,N,1318,E,1,07,1.3,50.6,M,39.2,M,,*6e
+$GPRMC,120923,A,5231.18,N,1318,E,23.8,299.0,030308,11.2,W,A*1a
+$GPGGA,120924,5231.18,N,1317.99,E,1,07,1.3,50.6,M,39.2,M,,*48
+$GPRMC,120924,A,5231.18,N,1317.99,E,21.4,298.0,030308,11.2,W,A*33
+$GPGGA,120925,5231.19,N,1317.98,E,1,07,1.3,50.6,M,39.2,M,,*49
+$GPRMC,120925,A,5231.19,N,1317.98,E,20.4,306.0,030308,11.2,W,A*35
+$GPGGA,120926,5231.19,N,1317.98,E,1,07,1.3,50.6,M,39.2,M,,*4a
+$GPRMC,120926,A,5231.19,N,1317.98,E,21.9,354.0,030308,11.2,W,A*3d
+$GPGGA,120927,5231.21,N,1317.97,E,1,07,1.3,50.6,M,39.2,M,,*4f
+$GPRMC,120927,A,5231.21,N,1317.97,E,23.3,349.0,030308,11.2,W,A*3c
+$GPGGA,120928,5231.22,N,1317.97,E,1,07,1.3,50.6,M,39.2,M,,*43
+$GPRMC,120928,A,5231.22,N,1317.97,E,28.7,352.0,030308,11.2,W,A*35
+$GPGGA,120929,5231.23,N,1317.97,E,1,07,1.3,50.6,M,39.2,M,,*43
+$GPRMC,120929,A,5231.23,N,1317.97,E,29.6,355.0,030308,11.2,W,A*32
+$GPGGA,120930,5231.24,N,1317.97,E,1,07,1.3,50.6,M,39.2,M,,*4c
+$GPRMC,120930,A,5231.24,N,1317.97,E,30.1,4.0,030308,11.2,W,A*35
+$GPGGA,120931,5231.25,N,1317.97,E,1,07,1.3,50.6,M,39.2,M,,*4c
+$GPRMC,120931,A,5231.25,N,1317.97,E,29.6,7.0,030308,11.2,W,A*39
+$GPGGA,120932,5231.26,N,1317.98,E,1,07,1.3,50.6,M,39.2,M,,*43
+$GPRMC,120932,A,5231.26,N,1317.98,E,31.6,18.0,030308,11.2,W,A*01
+$GPGGA,120933,5231.27,N,1317.98,E,1,07,1.3,50.6,M,39.2,M,,*43
+$GPRMC,120933,A,5231.27,N,1317.98,E,33.5,20.0,030308,11.2,W,A*0b
+$GPGGA,120934,5231.27,N,1317.99,E,1,07,1.3,50.6,M,39.2,M,,*45
+$GPRMC,120934,A,5231.27,N,1317.99,E,33.5,22.0,030308,11.2,W,A*0f
+$GPGGA,120935,5231.28,N,1317.99,E,1,07,1.3,50.6,M,39.2,M,,*4b
+$GPRMC,120935,A,5231.28,N,1317.99,E,32.6,19.0,030308,11.2,W,A*0b
+$GPGGA,120936,5231.29,N,1318,E,1,07,1.3,50.6,M,39.2,M,,*68
+$GPRMC,120936,A,5231.29,N,1318,E,31.1,23.0,030308,11.2,W,A*25
+$GPGGA,120937,5231.3,N,1318,E,1,07,1.3,50.6,M,39.2,M,,*51
+$GPRMC,120937,A,5231.3,N,1318,E,31.1,12.0,030308,11.2,W,A*1e
+$GPGGA,120938,5231.31,N,1318.01,E,1,07,1.3,50.6,M,39.2,M,,*40
+$GPRMC,120938,A,5231.31,N,1318.01,E,29.6,16.0,030308,11.2,W,A*05
+$GPGGA,120939,5231.32,N,1318.02,E,1,07,1.3,50.6,M,39.2,M,,*41
+$GPRMC,120939,A,5231.32,N,1318.02,E,25.3,21.0,030308,11.2,W,A*09
+$GPGGA,120940,5231.33,N,1318.02,E,1,07,1.3,50.6,M,39.2,M,,*4e
+$GPRMC,120940,A,5231.33,N,1318.02,E,23.3,16.0,030308,11.2,W,A*04
+$GPGGA,120941,5231.34,N,1318.02,E,1,07,1.3,50.6,M,39.2,M,,*48
+$GPRMC,120941,A,5231.34,N,1318.02,E,23.3,13.0,030308,11.2,W,A*07
+$GPGGA,120942,5231.35,N,1318.02,E,1,07,1.3,50.6,M,39.2,M,,*4a
+$GPRMC,120942,A,5231.35,N,1318.02,E,23.3,6.0,030308,11.2,W,A*31
+$GPGGA,120943,5231.36,N,1318.02,E,1,07,1.3,50.6,M,39.2,M,,*48
+$GPRMC,120943,A,5231.36,N,1318.02,E,20.4,347.0,030308,11.2,W,A*31
+$GPGGA,120944,5231.36,N,1318.01,E,1,07,1.3,50.6,M,39.2,M,,*4c
+$GPRMC,120944,A,5231.36,N,1318.01,E,24.3,322.0,030308,11.2,W,A*35
+$GPGGA,120945,5231.37,N,1318.01,E,1,07,1.3,50.6,M,39.2,M,,*4c
+$GPRMC,120945,A,5231.37,N,1318.01,E,26.7,321.0,030308,11.2,W,A*30
+$GPGGA,120946,5231.38,N,1318,E,1,07,1.3,50.6,M,39.2,M,,*6f
+$GPRMC,120946,A,5231.38,N,1318,E,28.7,320.0,030308,11.2,W,A*1c
+$GPGGA,120947,5231.38,N,1317.99,E,1,07,1.3,50.6,M,39.2,M,,*4f
+$GPRMC,120947,A,5231.38,N,1317.99,E,30.6,319.0,030308,11.2,W,A*3e
+$GPGGA,120948,5231.39,N,1317.98,E,1,07,1.3,50.6,M,39.2,M,,*40
+$GPRMC,120948,A,5231.39,N,1317.98,E,32.1,323.0,030308,11.2,W,A*3d
+$GPGGA,120949,5231.4,N,1317.97,E,1,07,1.3,50.6,M,39.2,M,,*70
+$GPRMC,120949,A,5231.4,N,1317.97,E,32.6,324.0,030308,11.2,W,A*0d
+$GPGGA,120950,5231.4,N,1317.96,E,1,07,1.3,50.6,M,39.2,M,,*79
+$GPRMC,120950,A,5231.4,N,1317.96,E,32.6,325.0,030308,11.2,W,A*05
+$GPGGA,120951,5231.41,N,1317.95,E,1,07,1.3,50.6,M,39.2,M,,*4a
+$GPRMC,120951,A,5231.41,N,1317.95,E,32.6,321.0,030308,11.2,W,A*32
+$GPGGA,120952,5231.42,N,1317.94,E,1,07,1.3,50.6,M,39.2,M,,*4b
+$GPRMC,120952,A,5231.42,N,1317.94,E,33.0,326.0,030308,11.2,W,A*33
+$GPGGA,120953,5231.43,N,1317.93,E,1,07,1.3,50.6,M,39.2,M,,*4c
+$GPRMC,120953,A,5231.43,N,1317.93,E,33.5,323.0,030308,11.2,W,A*34
+$GPGGA,120954,5231.44,N,1317.92,E,1,07,1.3,50.6,M,39.2,M,,*4d
+$GPRMC,120954,A,5231.44,N,1317.92,E,32.6,323.0,030308,11.2,W,A*37
+$GPGGA,120955,5231.45,N,1317.91,E,1,07,1.3,50.6,M,39.2,M,,*4e
+$GPRMC,120955,A,5231.45,N,1317.91,E,32.1,308.0,030308,11.2,W,A*3a
+$GPGGA,120956,5231.45,N,1317.9,E,1,07,1.3,50.6,M,39.2,M,,*7c
+$GPRMC,120956,A,5231.45,N,1317.9,E,32.1,331.0,030308,11.2,W,A*02
+$GPGGA,120957,5231.46,N,1317.89,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,120957,A,5231.46,N,1317.89,E,31.1,327.0,030308,11.2,W,A*3c
+$GPGGA,120958,5231.47,N,1317.88,E,1,07,1.3,50.6,M,39.2,M,,*49
+$GPRMC,120958,A,5231.47,N,1317.88,E,31.1,317.0,030308,11.2,W,A*30
+$GPGGA,120959,5231.48,N,1317.88,E,1,07,1.3,50.6,M,39.2,M,,*47
+$GPRMC,120959,A,5231.48,N,1317.88,E,33.0,352.0,030308,11.2,W,A*3c
+$GPGGA,121000,5231.49,N,1317.88,E,1,07,1.3,50.6,M,39.2,M,,*42
+$GPRMC,121000,A,5231.49,N,1317.88,E,33.0,352.0,030308,11.2,W,A*39
+$GPGGA,121001,5231.5,N,1317.87,E,1,07,1.3,50.6,M,39.2,M,,*74
+$GPRMC,121001,A,5231.5,N,1317.87,E,33.0,341.0,030308,11.2,W,A*0d
+$GPGGA,121002,5231.51,N,1317.87,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,121002,A,5231.51,N,1317.87,E,32.6,347.0,030308,11.2,W,A*3e
+$GPGGA,121003,5231.52,N,1317.86,E,1,07,1.3,50.6,M,39.2,M,,*45
+$GPRMC,121003,A,5231.52,N,1317.86,E,32.1,348.0,030308,11.2,W,A*35
+$GPGGA,121004,5231.53,N,1317.86,E,1,07,1.3,50.6,M,39.2,M,,*43
+$GPRMC,121004,A,5231.53,N,1317.86,E,31.6,349.0,030308,11.2,W,A*36
+$GPGGA,121005,5231.54,N,1317.86,E,1,07,1.3,50.6,M,39.2,M,,*45
+$GPRMC,121005,A,5231.54,N,1317.86,E,30.6,350.0,030308,11.2,W,A*39
+$GPGGA,121006,5231.55,N,1317.85,E,1,07,1.3,50.6,M,39.2,M,,*44
+$GPRMC,121006,A,5231.55,N,1317.85,E,29.2,347.0,030308,11.2,W,A*32
+$GPGGA,121007,5231.56,N,1317.85,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,121007,A,5231.56,N,1317.85,E,25.8,349.0,030308,11.2,W,A*38
+$GPGGA,121008,5231.57,N,1317.85,E,1,07,1.3,50.6,M,39.2,M,,*48
+$GPRMC,121008,A,5231.57,N,1317.85,E,15.6,354.0,030308,11.2,W,A*37
+$GPGGA,121009,5231.58,N,1317.85,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,121009,A,5231.58,N,1317.85,E,3.9,347.0,030308,11.2,W,A*03
+$GPGGA,121010,5231.58,N,1317.85,E,1,07,1.3,50.6,M,39.2,M,,*4e
+$GPRMC,121010,A,5231.58,N,1317.85,E,11.7,344.0,030308,11.2,W,A*35
+$GPGGA,121011,5231.58,N,1317.85,E,1,07,1.3,50.6,M,39.2,M,,*4f
+$GPRMC,121011,A,5231.58,N,1317.85,E,13.6,356.0,030308,11.2,W,A*34
+$GPGGA,121012,5231.58,N,1317.84,E,1,07,1.3,50.6,M,39.2,M,,*4d
+$GPRMC,121012,A,5231.58,N,1317.84,E,15.6,299.0,030308,11.2,W,A*32
+$GPGGA,121013,5231.58,N,1317.84,E,1,07,1.3,50.6,M,39.2,M,,*4c
+$GPRMC,121013,A,5231.58,N,1317.84,E,15.6,335.0,030308,11.2,W,A*34
+$GPGGA,121014,5231.59,N,1317.84,E,1,07,1.3,50.6,M,39.2,M,,*4a
+$GPRMC,121014,A,5231.59,N,1317.84,E,19.4,350.0,030308,11.2,W,A*3f
+$GPGGA,121015,5231.59,N,1317.84,E,1,07,1.3,50.6,M,39.2,M,,*4b
+$GPRMC,121015,A,5231.59,N,1317.84,E,19.4,353.0,030308,11.2,W,A*3d
+$GPGGA,121016,5231.61,N,1317.84,E,1,07,1.3,50.6,M,39.2,M,,*43
+$GPRMC,121016,A,5231.61,N,1317.84,E,25.3,347.0,030308,11.2,W,A*38
+$GPGGA,121017,5231.61,N,1317.83,E,1,07,1.3,50.6,M,39.2,M,,*45
+$GPRMC,121017,A,5231.61,N,1317.83,E,25.3,349.0,030308,11.2,W,A*30
+$GPGGA,121018,5231.62,N,1317.83,E,1,07,1.3,50.6,M,39.2,M,,*49
+$GPRMC,121018,A,5231.62,N,1317.83,E,26.7,351.0,030308,11.2,W,A*32
+$GPGGA,121019,5231.63,N,1317.83,E,1,07,1.3,50.6,M,39.2,M,,*49
+$GPRMC,121019,A,5231.63,N,1317.83,E,29.2,354.0,030308,11.2,W,A*3d
+$GPGGA,121020,5231.64,N,1317.83,E,1,07,1.3,50.6,M,39.2,M,,*44
+$GPRMC,121020,A,5231.64,N,1317.83,E,30.1,349.0,030308,11.2,W,A*37
+$GPGGA,121021,5231.65,N,1317.83,E,1,07,1.3,50.6,M,39.2,M,,*44
+$GPRMC,121021,A,5231.65,N,1317.83,E,31.1,350.0,030308,11.2,W,A*3e
+$GPGGA,121022,5231.65,N,1317.82,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,121022,A,5231.65,N,1317.82,E,32.6,349.0,030308,11.2,W,A*30
+$GPGGA,121023,5231.66,N,1317.82,E,1,07,1.3,50.6,M,39.2,M,,*44
+$GPRMC,121023,A,5231.66,N,1317.82,E,33.0,350.0,030308,11.2,W,A*3d
+$GPGGA,121024,5231.67,N,1317.82,E,1,07,1.3,50.6,M,39.2,M,,*42
+$GPRMC,121024,A,5231.67,N,1317.82,E,33.0,350.0,030308,11.2,W,A*3b
+$GPGGA,121025,5231.68,N,1317.82,E,1,07,1.3,50.6,M,39.2,M,,*4c
+$GPRMC,121025,A,5231.68,N,1317.82,E,33.5,346.0,030308,11.2,W,A*37
+$GPGGA,121026,5231.69,N,1317.81,E,1,07,1.3,50.6,M,39.2,M,,*4d
+$GPRMC,121026,A,5231.69,N,1317.81,E,33.5,353.0,030308,11.2,W,A*32
+$GPGGA,121027,5231.7,N,1317.81,E,1,07,1.3,50.6,M,39.2,M,,*74
+$GPRMC,121027,A,5231.7,N,1317.81,E,33.0,354.0,030308,11.2,W,A*09
+$GPGGA,121028,5231.71,N,1317.81,E,1,07,1.3,50.6,M,39.2,M,,*4a
+$GPRMC,121028,A,5231.71,N,1317.81,E,33.0,349.0,030308,11.2,W,A*3b
+$GPGGA,121029,5231.72,N,1317.81,E,1,07,1.3,50.6,M,39.2,M,,*48
+$GPRMC,121029,A,5231.72,N,1317.81,E,31.1,348.0,030308,11.2,W,A*3b
+$GPGGA,121030,5231.72,N,1317.8,E,1,07,1.3,50.6,M,39.2,M,,*71
+$GPRMC,121030,A,5231.72,N,1317.8,E,30.1,343.0,030308,11.2,W,A*08
+$GPGGA,121031,5231.73,N,1317.8,E,1,07,1.3,50.6,M,39.2,M,,*71
+$GPRMC,121031,A,5231.73,N,1317.8,E,28.2,345.0,030308,11.2,W,A*04
+$GPGGA,121032,5231.74,N,1317.8,E,1,07,1.3,50.6,M,39.2,M,,*75
+$GPRMC,121032,A,5231.74,N,1317.8,E,24.8,341.0,030308,11.2,W,A*02
+$GPGGA,121033,5231.74,N,1317.79,E,1,07,1.3,50.6,M,39.2,M,,*42
+$GPRMC,121033,A,5231.74,N,1317.79,E,20.4,348.0,030308,11.2,W,A*34
+$GPGGA,121034,5231.75,N,1317.79,E,1,07,1.3,50.6,M,39.2,M,,*44
+$GPRMC,121034,A,5231.75,N,1317.79,E,16.0,347.0,030308,11.2,W,A*3c
+$GPGGA,121035,5231.75,N,1317.79,E,1,07,1.3,50.6,M,39.2,M,,*45
+$GPRMC,121035,A,5231.75,N,1317.79,E,14.6,354.0,030308,11.2,W,A*3b
+$GPGGA,121036,5231.75,N,1317.79,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,121036,A,5231.75,N,1317.79,E,3.9,336.0,030308,11.2,W,A*05
+$GPGGA,121037,5231.75,N,1317.79,E,1,07,1.3,50.6,M,39.2,M,,*47
+$GPRMC,121037,A,5231.75,N,1317.79,E,2.9,290.0,030308,11.2,W,A*08
+$GPGGA,121038,5231.76,N,1317.79,E,1,07,1.3,50.6,M,39.2,M,,*4b
+$GPRMC,121038,A,5231.76,N,1317.79,E,2.9,343.0,030308,11.2,W,A*0b
+$GPGGA,121039,5231.76,N,1317.79,E,1,07,1.3,50.6,M,39.2,M,,*4a
+$GPRMC,121039,A,5231.76,N,1317.79,E,13.6,344.0,030308,11.2,W,A*32
+$GPGGA,121040,5231.76,N,1317.78,E,1,07,1.3,50.6,M,39.2,M,,*45
+$GPRMC,121040,A,5231.76,N,1317.78,E,17.5,339.0,030308,11.2,W,A*30
+$GPGGA,121041,5231.77,N,1317.78,E,1,07,1.3,50.6,M,39.2,M,,*45
+$GPRMC,121041,A,5231.77,N,1317.78,E,19.9,352.0,030308,11.2,W,A*3f
+$GPGGA,121042,5231.78,N,1317.78,E,1,07,1.3,50.6,M,39.2,M,,*49
+$GPRMC,121042,A,5231.78,N,1317.78,E,21.9,344.0,030308,11.2,W,A*3f
+$GPGGA,121043,5231.79,N,1317.77,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,121043,A,5231.79,N,1317.77,E,23.3,343.0,030308,11.2,W,A*3f
+$GPGGA,121044,5231.8,N,1317.77,E,1,07,1.3,50.6,M,39.2,M,,*77
+$GPRMC,121044,A,5231.8,N,1317.77,E,23.3,356.0,030308,11.2,W,A*0a
+$GPGGA,121045,5231.81,N,1317.77,E,1,07,1.3,50.6,M,39.2,M,,*47
+$GPRMC,121045,A,5231.81,N,1317.77,E,17.5,342.0,030308,11.2,W,A*3e
+$GPGGA,121046,5231.81,N,1317.77,E,1,07,1.3,50.6,M,39.2,M,,*44
+$GPRMC,121046,A,5231.81,N,1317.77,E,11.2,352.0,030308,11.2,W,A*3d
+$GPGGA,121047,5231.81,N,1317.77,E,1,07,1.3,50.6,M,39.2,M,,*45
+$GPRMC,121047,A,5231.81,N,1317.77,E,1.9,340.0,030308,11.2,W,A*05
+$GPGGA,121048,5231.81,N,1317.77,E,1,07,1.3,50.6,M,39.2,M,,*4a
+$GPRMC,121048,A,5231.81,N,1317.77,E,1.9,343.0,030308,11.2,W,A*09
+$GPGGA,121049,5231.81,N,1317.76,E,1,07,1.3,50.6,M,39.2,M,,*4a
+$GPRMC,121049,A,5231.81,N,1317.76,E,1.5,324.0,030308,11.2,W,A*04
+$GPGGA,121050,5231.81,N,1317.76,E,1,07,1.3,50.6,M,39.2,M,,*42
+$GPRMC,121050,A,5231.81,N,1317.76,E,2.4,313.0,030308,11.2,W,A*0a
+$GPGGA,121051,5231.81,N,1317.76,E,1,07,1.3,50.6,M,39.2,M,,*43
+$GPRMC,121051,A,5231.81,N,1317.76,E,11.7,347.0,030308,11.2,W,A*3b
+$GPGGA,121052,5231.82,N,1317.76,E,1,07,1.3,50.6,M,39.2,M,,*43
+$GPRMC,121052,A,5231.82,N,1317.76,E,17.5,345.0,030308,11.2,W,A*3d
+$GPGGA,121053,5231.82,N,1317.76,E,1,07,1.3,50.6,M,39.2,M,,*42
+$GPRMC,121053,A,5231.82,N,1317.76,E,19.4,345.0,030308,11.2,W,A*33
+$GPGGA,121054,5231.83,N,1317.76,E,1,07,1.3,50.6,M,39.2,M,,*44
+$GPRMC,121054,A,5231.83,N,1317.76,E,19.4,350.0,030308,11.2,W,A*31
+$GPGGA,121055,5231.83,N,1317.76,E,1,07,1.3,50.6,M,39.2,M,,*45
+$GPRMC,121055,A,5231.83,N,1317.76,E,21.9,348.0,030308,11.2,W,A*3f
+$GPGGA,121056,5231.84,N,1317.75,E,1,07,1.3,50.6,M,39.2,M,,*42
+$GPRMC,121056,A,5231.84,N,1317.75,E,24.3,344.0,030308,11.2,W,A*3b
+$GPGGA,121057,5231.85,N,1317.75,E,1,07,1.3,50.6,M,39.2,M,,*42
+$GPRMC,121057,A,5231.85,N,1317.75,E,25.3,342.0,030308,11.2,W,A*3c
+$GPGGA,121058,5231.86,N,1317.75,E,1,07,1.3,50.6,M,39.2,M,,*4e
+$GPRMC,121058,A,5231.86,N,1317.75,E,27.7,351.0,030308,11.2,W,A*34
+$GPGGA,121059,5231.86,N,1317.74,E,1,07,1.3,50.6,M,39.2,M,,*4e
+$GPRMC,121059,A,5231.86,N,1317.74,E,28.7,346.0,030308,11.2,W,A*3d
+$GPGGA,121100,5231.87,N,1317.74,E,1,07,1.3,50.6,M,39.2,M,,*42
+$GPRMC,121100,A,5231.87,N,1317.74,E,30.6,347.0,030308,11.2,W,A*38
+$GPGGA,121101,5231.88,N,1317.74,E,1,07,1.3,50.6,M,39.2,M,,*4c
+$GPRMC,121101,A,5231.88,N,1317.74,E,31.6,340.0,030308,11.2,W,A*30
+$GPGGA,121102,5231.89,N,1317.73,E,1,07,1.3,50.6,M,39.2,M,,*49
+$GPRMC,121102,A,5231.89,N,1317.73,E,32.6,341.0,030308,11.2,W,A*37
+$GPGGA,121103,5231.9,N,1317.73,E,1,07,1.3,50.6,M,39.2,M,,*70
+$GPRMC,121103,A,5231.9,N,1317.73,E,34.0,340.0,030308,11.2,W,A*0f
+$GPGGA,121104,5231.91,N,1317.72,E,1,07,1.3,50.6,M,39.2,M,,*47
+$GPRMC,121104,A,5231.91,N,1317.72,E,35.0,341.0,030308,11.2,W,A*38
+$GPGGA,121105,5231.92,N,1317.72,E,1,07,1.3,50.6,M,39.2,M,,*45
+$GPRMC,121105,A,5231.92,N,1317.72,E,35.5,342.0,030308,11.2,W,A*3c
+$GPGGA,121106,5231.93,N,1317.71,E,1,07,1.3,50.6,M,39.2,M,,*44
+$GPRMC,121106,A,5231.93,N,1317.71,E,35.0,338.0,030308,11.2,W,A*35
+$GPGGA,121107,5231.94,N,1317.7,E,1,07,1.3,50.6,M,39.2,M,,*73
+$GPRMC,121107,A,5231.94,N,1317.7,E,34.0,336.0,030308,11.2,W,A*0d
+$GPGGA,121108,5231.94,N,1317.7,E,1,07,1.3,50.6,M,39.2,M,,*7c
+$GPRMC,121108,A,5231.94,N,1317.7,E,32.6,337.0,030308,11.2,W,A*03
+$GPGGA,121109,5231.95,N,1317.69,E,1,07,1.3,50.6,M,39.2,M,,*44
+$GPRMC,121109,A,5231.95,N,1317.69,E,29.6,339.0,030308,11.2,W,A*3f
+$GPGGA,121110,5231.96,N,1317.69,E,1,07,1.3,50.6,M,39.2,M,,*4f
+$GPRMC,121110,A,5231.96,N,1317.69,E,29.2,339.0,030308,11.2,W,A*30
+$GPGGA,121111,5231.97,N,1317.68,E,1,07,1.3,50.6,M,39.2,M,,*4e
+$GPRMC,121111,A,5231.97,N,1317.68,E,25.8,333.0,030308,11.2,W,A*3d
+$GPGGA,121112,5231.97,N,1317.68,E,1,07,1.3,50.6,M,39.2,M,,*4d
+$GPRMC,121112,A,5231.97,N,1317.68,E,25.3,339.0,030308,11.2,W,A*3f
+$GPGGA,121113,5231.98,N,1317.68,E,1,07,1.3,50.6,M,39.2,M,,*43
+$GPRMC,121113,A,5231.98,N,1317.68,E,20.9,343.0,030308,11.2,W,A*33
+$GPGGA,121114,5231.98,N,1317.67,E,1,07,1.3,50.6,M,39.2,M,,*4b
+$GPRMC,121114,A,5231.98,N,1317.67,E,19.4,339.0,030308,11.2,W,A*31
+$GPGGA,121115,5231.99,N,1317.67,E,1,07,1.3,50.6,M,39.2,M,,*4b
+$GPRMC,121115,A,5231.99,N,1317.67,E,17.5,341.0,030308,11.2,W,A*31
+$GPGGA,121116,5231.99,N,1317.67,E,1,07,1.3,50.6,M,39.2,M,,*48
+$GPRMC,121116,A,5231.99,N,1317.67,E,16.5,344.0,030308,11.2,W,A*36
+$GPGGA,121117,5232,N,1317.66,E,1,07,1.3,50.6,M,39.2,M,,*65
+$GPRMC,121117,A,5232,N,1317.66,E,14.6,324.0,030308,11.2,W,A*1c
+$GPGGA,121118,5232,N,1317.66,E,1,07,1.3,50.6,M,39.2,M,,*6a
+$GPRMC,121118,A,5232,N,1317.66,E,12.6,332.0,030308,11.2,W,A*12
+$GPGGA,121119,5232,N,1317.66,E,1,07,1.3,50.6,M,39.2,M,,*6b
+$GPRMC,121119,A,5232,N,1317.66,E,14.1,342.0,030308,11.2,W,A*15
+$GPGGA,121120,5232.01,N,1317.66,E,1,07,1.3,50.6,M,39.2,M,,*4e
+$GPRMC,121120,A,5232.01,N,1317.66,E,16.5,339.0,030308,11.2,W,A*3a
+$GPGGA,121121,5232.01,N,1317.65,E,1,07,1.3,50.6,M,39.2,M,,*4c
+$GPRMC,121121,A,5232.01,N,1317.65,E,16.5,335.0,030308,11.2,W,A*34
+$GPGGA,121122,5232.01,N,1317.65,E,1,07,1.3,50.6,M,39.2,M,,*4f
+$GPRMC,121122,A,5232.01,N,1317.65,E,16.5,322.0,030308,11.2,W,A*31
+$GPGGA,121123,5232.02,N,1317.65,E,1,07,1.3,50.6,M,39.2,M,,*4d
+$GPRMC,121123,A,5232.02,N,1317.65,E,16.5,334.0,030308,11.2,W,A*34
+$GPGGA,121124,5232.02,N,1317.64,E,1,07,1.3,50.6,M,39.2,M,,*4b
+$GPRMC,121124,A,5232.02,N,1317.64,E,19.0,331.0,030308,11.2,W,A*3d
+$GPGGA,121125,5232.03,N,1317.64,E,1,07,1.3,50.6,M,39.2,M,,*4b
+$GPRMC,121125,A,5232.03,N,1317.64,E,17.0,338.0,030308,11.2,W,A*3a
+$GPGGA,121126,5232.03,N,1317.64,E,1,07,1.3,50.6,M,39.2,M,,*48
+$GPRMC,121126,A,5232.03,N,1317.64,E,13.6,334.0,030308,11.2,W,A*37
+$GPGGA,121127,5232.03,N,1317.64,E,1,07,1.3,50.6,M,39.2,M,,*49
+$GPRMC,121127,A,5232.03,N,1317.64,E,11.2,349.0,030308,11.2,W,A*3a
+$GPGGA,121128,5232.03,N,1317.64,E,1,07,1.3,50.6,M,39.2,M,,*46
+$GPRMC,121128,A,5232.03,N,1317.64,E,1.9,352.0,030308,11.2,W,A*05
+$GPGGA,121129,5232.04,N,1317.64,E,1,07,1.3,50.6,M,39.2,M,,*40
+$GPRMC,121129,A,5232.04,N,1317.64,E,1.9,352.0,030308,11.2,W,A*03
+$GPGGA,121130,5232.04,N,1317.64,E,1,07,1.3,50.6,M,39.2,M,,*48
+$GPRMC,121130,A,5232.04,N,1317.64,E,0.5,352.0,030308,11.2,W,A*06
+$GPGGA,121131,5232.04,N,1317.64,E,1,07,1.3,50.6,M,39.2,M,,*49
+$GPRMC,121131,A,5232.04,N,1317.64,E,0,352.0,030308,11.2,W,A*1c
+$GPGGA,121132,5232.04,N,1317.64,E,1,07,1.3,50.6,M,39.2,M,,*4a
+$GPRMC,121132,A,5232.04,N,1317.64,E,0,352.0,030308,11.2,W,A*1f
+$GPGGA,121133,5232.04,N,1317.64,E,1,07,1.3,50.6,M,39.2,M,,*4b
+$GPRMC,121133,A,5232.04,N,1317.64,E,0,352.0,030308,11.2,W,A*1e
+$GPGGA,121134,5232.04,N,1317.64,E,1,07,1.3,50.6,M,39.2,M,,*4c
+$GPRMC,121134,A,5232.04,N,1317.64,E,0,352.0,030308,11.2,W,A*19
+$GPGGA,121135,5232.04,N,1317.64,E,1,07,1.3,50.6,M,39.2,M,,*4d
+$GPRMC,121135,A,5232.04,N,1317.64,E,0,352.0,030308,11.2,W,A*18
+$GPGGA,121136,5232.04,N,1317.64,E,1,07,1.3,50.6,M,39.2,M,,*4e
+$GPRMC,121136,A,5232.04,N,1317.64,E,0,352.0,030308,11.2,W,A*1b
+$GPGGA,121137,5232.04,N,1317.64,E,1,07,1.3,50.6,M,39.2,M,,*4f
+$GPRMC,121137,A,5232.04,N,1317.64,E,0,352.0,030308,11.2,W,A*1a
+$GPGGA,121138,5232.04,N,1317.64,E,1,07,1.3,50.6,M,39.2,M,,*40
+$GPRMC,121138,A,5232.04,N,1317.64,E,0,352.0,030308,11.2,W,A*15
+$GPGGA,121139,5232.04,N,1317.64,E,1,07,1.3,50.6,M,39.2,M,,*41
+$GPRMC,121139,A,5232.04,N,1317.64,E,1.0,352.0,030308,11.2,W,A*0b
+$GPGGA,121140,5232.04,N,1317.64,E,1,07,1.3,50.6,M,39.2,M,,*4f
+$GPRMC,121140,A,5232.04,N,1317.64,E,7.8,357.0,030308,11.2,W,A*0e
+$GPGGA,121141,5232.04,N,1317.64,E,1,07,1.3,50.6,M,39.2,M,,*4e
+$GPRMC,121141,A,5232.04,N,1317.64,E,15.6,357.0,030308,11.2,W,A*32
+$GPGGA,121142,5232.05,N,1317.64,E,1,07,1.3,50.6,M,39.2,M,,*4c
+$GPRMC,121142,A,5232.05,N,1317.64,E,16.5,14.0,030308,11.2,W,A*04
+$GPGGA,121143,5232.05,N,1317.64,E,1,07,1.3,50.6,M,39.2,M,,*4d
+$GPRMC,121143,A,5232.05,N,1317.64,E,18.5,17.0,030308,11.2,W,A*08
+$GPGGA,121144,5232.06,N,1317.65,E,1,07,1.3,50.6,M,39.2,M,,*48
+$GPRMC,121144,A,5232.06,N,1317.65,E,20.9,21.0,030308,11.2,W,A*0f
+$GPGGA,121145,5232.06,N,1317.65,E,1,07,1.3,50.6,M,39.2,M,,*49
+$GPRMC,121145,A,5232.06,N,1317.65,E,20.9,18.0,030308,11.2,W,A*04
+$GPGGA,121146,5232.07,N,1317.65,E,1,07,1.3,50.6,M,39.2,M,,*4b
+$GPRMC,121146,A,5232.07,N,1317.65,E,19.4,18.0,030308,11.2,W,A*01
+$GPGGA,121147,5232.07,N,1317.65,E,1,07,1.3,50.6,M,39.2,M,,*4a
+$GPRMC,121147,A,5232.07,N,1317.65,E,17.5,348.0,030308,11.2,W,A*39
+$GPGGA,121148,5232.08,N,1317.64,E,1,07,1.3,50.6,M,39.2,M,,*4b
+$GPRMC,121148,A,5232.08,N,1317.64,E,11.7,333.0,030308,11.2,W,A*30
+$GPGGA,121149,5232.08,N,1317.63,E,1,07,1.3,50.6,M,39.2,M,,*4d
+$GPRMC,121149,A,5232.08,N,1317.63,E,7.8,315.0,030308,11.2,W,A*0a