diff options
Diffstat (limited to 'doc/src/snippets/qtcluster/qml')
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 Binary files differnew file mode 100644 index 00000000..680dbea1 --- /dev/null +++ b/doc/src/snippets/qtcluster/qml/models/Map11.jpg diff --git a/doc/src/snippets/qtcluster/qml/models/Map3.jpg b/doc/src/snippets/qtcluster/qml/models/Map3.jpg Binary files differnew file mode 100644 index 00000000..8c3468e2 --- /dev/null +++ b/doc/src/snippets/qtcluster/qml/models/Map3.jpg diff --git a/doc/src/snippets/qtcluster/qml/models/sportscar_15k.qgltf b/doc/src/snippets/qtcluster/qml/models/sportscar_15k.qgltf Binary files differnew file mode 100644 index 00000000..5b4bd3d2 --- /dev/null +++ b/doc/src/snippets/qtcluster/qml/models/sportscar_15k.qgltf diff --git a/doc/src/snippets/qtcluster/qml/models/sportscar_15k_1.bin b/doc/src/snippets/qtcluster/qml/models/sportscar_15k_1.bin Binary files differnew file mode 100644 index 00000000..aad1081f --- /dev/null +++ b/doc/src/snippets/qtcluster/qml/models/sportscar_15k_1.bin 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 |