diff options
Diffstat (limited to 'examples/ivicore/qface-tutorial/chapter4-simulation-behavior/instrument-cluster')
10 files changed, 965 insertions, 0 deletions
diff --git a/examples/ivicore/qface-tutorial/chapter4-simulation-behavior/instrument-cluster/Cluster.qml b/examples/ivicore/qface-tutorial/chapter4-simulation-behavior/instrument-cluster/Cluster.qml new file mode 100644 index 0000000..db33660 --- /dev/null +++ b/examples/ivicore/qface-tutorial/chapter4-simulation-behavior/instrument-cluster/Cluster.qml @@ -0,0 +1,104 @@ +/**************************************************************************** +** +** Copyright (C) 2019 Luxoft Sweden AB +** Copyright (C) 2018 Pelagicore AG +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtIvi module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD-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. +** +** 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$ +** +** SPDX-License-Identifier: BSD-3-Clause +** +****************************************************************************/ + +import QtQuick 2.1 +import QtQuick.Window 2.2 +import Example.IVI.InstrumentCluster 1.0 + +Window { + id: root + + width: 1920 + height: 720 + title: qsTr("QtIVI Instrument Cluster Chapter 4") + visible: true + color: "#0c0c0c" + + InstrumentCluster { + id: instrumentCluster + } + + LeftDial { + id: leftDial + anchors.left: parent.left + anchors.leftMargin: 0.1 * width + + value: instrumentCluster.speed + metricSystem: instrumentCluster.systemType === InstrumentCluster.Metric + } + + RightDial { + id: rightDial + anchors.right: parent.right + anchors.rightMargin: 0.1 * width + + value: instrumentCluster.rpm + warningColor: instrumentCluster.currentWarning.color + warningText: instrumentCluster.currentWarning.text + warningIcon: instrumentCluster.currentWarning.icon + fuelLevel: instrumentCluster.fuel + } + + Top { + id: topbar + y: 7 + anchors.horizontalCenter: parent.horizontalCenter + + temperature: instrumentCluster.temperature + } + + Image { + anchors.fill: parent + source: Qt.resolvedUrl("images/mask_overlay.png") + } +} diff --git a/examples/ivicore/qface-tutorial/chapter4-simulation-behavior/instrument-cluster/Dial.qml b/examples/ivicore/qface-tutorial/chapter4-simulation-behavior/instrument-cluster/Dial.qml new file mode 100644 index 0000000..a4b5c3f --- /dev/null +++ b/examples/ivicore/qface-tutorial/chapter4-simulation-behavior/instrument-cluster/Dial.qml @@ -0,0 +1,119 @@ +/**************************************************************************** +** +** Copyright (C) 2019 Luxoft Sweden AB +** Copyright (C) 2018 Pelagicore AG +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtIvi module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD-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. +** +** 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$ +** +** SPDX-License-Identifier: BSD-3-Clause +** +****************************************************************************/ + +import QtQuick 2.12 + +Item { + id: root + + width: 480 + height: 480 + + property real value: 0 + property int upDuration: 2000 + property int downDuration: 1000 + property string fillImage: "images/dial_fill_color_left.png" + property string circleRadius: "0.193" + property string dialCursor: "images/dial_cursor.png" + + Image { + id: meter + property real min: -83.5 + property real max: 157 + width: root.width + height: width - 1 + rotation: min + (max - min) * root.value + source: Qt.resolvedUrl(root.dialCursor) + } + + ShaderEffect { + anchors.fill: meter + property var pattern: Image { + source: Qt.resolvedUrl("images/dial_pattern.png") + } + property var fill: Image { + source: Qt.resolvedUrl(root.fillImage) + } + property real value: root.value + + fragmentShader: " +#define M_PI 3.141592653589793 +#define INNER " + root.circleRadius + " + +varying highp vec2 qt_TexCoord0; +uniform lowp float qt_Opacity; +uniform sampler2D pattern; +uniform sampler2D fill; +uniform lowp float value; + +void main() { + lowp vec4 pattern = texture2D(pattern, qt_TexCoord0); + lowp vec4 fill = texture2D(fill, qt_TexCoord0); + + lowp vec2 pos = vec2(qt_TexCoord0.x - 0.5, 0.501 - qt_TexCoord0.y); + lowp float d = length(pos); + lowp float angle = atan(pos.x, pos.y) / (2.0 * M_PI); + lowp float v = 0.66 * value - 0.33; + + // Flare pattern + lowp vec4 color = mix(pattern, vec4(0.0), smoothstep(v, v + 0.1, angle)); + // Gradient fill color + color += mix(fill, vec4(0.0), step(v, angle)); + // Punch out the center hole + color = mix(vec4(0.0), color, smoothstep(INNER - 0.001, INNER + 0.001, d)); + // Fade out below 0 + gl_FragColor = mix(color, vec4(0.0), smoothstep(-0.35, -0.5, angle)); +} + " + } +} diff --git a/examples/ivicore/qface-tutorial/chapter4-simulation-behavior/instrument-cluster/Fuel.qml b/examples/ivicore/qface-tutorial/chapter4-simulation-behavior/instrument-cluster/Fuel.qml new file mode 100644 index 0000000..46e9dee --- /dev/null +++ b/examples/ivicore/qface-tutorial/chapter4-simulation-behavior/instrument-cluster/Fuel.qml @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2019 Luxoft Sweden AB +** Copyright (C) 2018 Pelagicore AG +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtIvi module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD-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. +** +** 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$ +** +** SPDX-License-Identifier: BSD-3-Clause +** +****************************************************************************/ + +import QtQuick 2.1 + +Item { + id: root + + width: 0.73 * 720 + height: width - 1 + + property real value: 0 + + Item { + width: root.value * parent.width + height: parent.height + clip: true + Image { + width: root.width + height: root.height + source: Qt.resolvedUrl("images/fuel_level.png") + } + } + + Image { + id: fuel + anchors.fill: parent + source: Qt.resolvedUrl("images/fuel.png") + + } +} + diff --git a/examples/ivicore/qface-tutorial/chapter4-simulation-behavior/instrument-cluster/Label.qml b/examples/ivicore/qface-tutorial/chapter4-simulation-behavior/instrument-cluster/Label.qml new file mode 100644 index 0000000..d574080 --- /dev/null +++ b/examples/ivicore/qface-tutorial/chapter4-simulation-behavior/instrument-cluster/Label.qml @@ -0,0 +1,84 @@ +/**************************************************************************** +** +** Copyright (C) 2019 Luxoft Sweden AB +** Copyright (C) 2018 Pelagicore AG +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtIvi module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD-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. +** +** 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$ +** +** SPDX-License-Identifier: BSD-3-Clause +** +****************************************************************************/ + +import QtQuick 2.1 + +Item { + id: root + + property alias textObject: textElement + property alias text: textElement.text + property alias font: textElement.font + property alias fontSize: textElement.font.pixelSize + property alias color: textElement.color + property alias textFormat: textElement.textFormat + property alias horizontalAlignment: textElement.horizontalAlignment + property alias elide: textElement.elide + property alias wrapMode: textElement.wrapMode + property alias verticalAlignment: textElement.verticalAlignment + + Text { + id: textElement + + anchors.fill: parent + anchors.margins: 8 + + verticalAlignment: Text.AlignVCenter + + font.family: "Source Sans Pro" + font.pixelSize: 28 + font.weight: Font.Light + + color: "white" + } +} diff --git a/examples/ivicore/qface-tutorial/chapter4-simulation-behavior/instrument-cluster/LeftDial.qml b/examples/ivicore/qface-tutorial/chapter4-simulation-behavior/instrument-cluster/LeftDial.qml new file mode 100644 index 0000000..f57b8af --- /dev/null +++ b/examples/ivicore/qface-tutorial/chapter4-simulation-behavior/instrument-cluster/LeftDial.qml @@ -0,0 +1,121 @@ +/**************************************************************************** +** +** Copyright (C) 2019 Luxoft Sweden AB +** Copyright (C) 2018 Pelagicore AG +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtIvi module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD-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. +** +** 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$ +** +** SPDX-License-Identifier: BSD-3-Clause +** +****************************************************************************/ + +import QtQuick 2.1 +import QtGraphicalEffects 1.0 + +Item { + id: root + + width: 0.8 * 720 + height: 720 + + property real value: 0.0 + property bool metricSystem: false + + Image { + id: overlay + + width: 0.91 * root.width + height: 0.98 * width + anchors.right: parent.right + anchors.rightMargin: 0 + anchors.verticalCenter: parent.verticalCenter + source: Qt.resolvedUrl("images/left_dial.png") + } + + Text { + id: speedText + + anchors.verticalCenter: overlay.verticalCenter + anchors.horizontalCenter: overlay.horizontalCenter + anchors.verticalCenterOffset: -7 + anchors.horizontalCenterOffset: 5 + font.family: "Source Sans Pro" + font.pixelSize: 60 + font.letterSpacing: 4 + color: "white" + text: root.value + } + + Rectangle { + width: 60 + height: 1 + opacity: 0.4 + anchors.top: speedText.bottom + anchors.topMargin: -8 + anchors.horizontalCenter: overlay.horizontalCenter + anchors.horizontalCenterOffset: 2 + } + + Text { + id: mph + anchors.top: speedText.bottom + anchors.topMargin: -5 + anchors.horizontalCenter: overlay.horizontalCenter + anchors.horizontalCenterOffset: 2 + font.family: "Source Sans Pro" + font.pixelSize: 24 + color: "white" + text: root.metricSystem ? "km/h" : "mph" + } + + Dial { + width: 0.66 * root.height + height: width + anchors.centerIn: overlay + anchors.verticalCenterOffset: 2 + fillImage: "images/dial_fill_color_left.png" + value: root.value / 240 + } +} diff --git a/examples/ivicore/qface-tutorial/chapter4-simulation-behavior/instrument-cluster/RightDial.qml b/examples/ivicore/qface-tutorial/chapter4-simulation-behavior/instrument-cluster/RightDial.qml new file mode 100644 index 0000000..4c52a58 --- /dev/null +++ b/examples/ivicore/qface-tutorial/chapter4-simulation-behavior/instrument-cluster/RightDial.qml @@ -0,0 +1,228 @@ +/**************************************************************************** +** +** Copyright (C) 2019 Luxoft Sweden AB +** Copyright (C) 2018 Pelagicore AG +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtIvi module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD-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. +** +** 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$ +** +** SPDX-License-Identifier: BSD-3-Clause +** +****************************************************************************/ + +import QtQuick 2.1 + +Item { + id: root + + width: 0.8 * 720 + height: 720 + + property color warningColor: "transparent" + property string warningIcon + property string warningText + property int value + property alias fuelLevel: fuelMeter.value + + Item { + width: root.width/3 + height: 0.1 * root.width + anchors.bottom: overlay.top + anchors.left: parent.left + anchors.leftMargin: 0.2 * root.width + + Image { + id: gears + + width: 0.2 * root.width + height: 0.25 * width + anchors.bottom: parent.bottom + anchors.right: parent.right + source: Qt.resolvedUrl("images/P-R-N-D.png") + } + + Image { + id: plusMinus + anchors.bottom: parent.bottom + anchors.left: gears.right + anchors.leftMargin: 10 + source: Qt.resolvedUrl("images/+--.png") + } + } + + Image { + id: overlay + + width: 0.91 * root.width + height: 0.99 * width + + anchors.left: parent.left + anchors.leftMargin: 0 + anchors.verticalCenter: parent.verticalCenter + source: Qt.resolvedUrl("images/right_dial.png") + + Rectangle { + id: rect + width: circle.width + 5 + height: width + radius: width + color: "transparent" + border.color: root.warningColor + border.width: rect.borderWidth + anchors.centerIn: parent + anchors.horizontalCenterOffset: -3 + + property int borderWidth: 3 + + SequentialAnimation { + running: root.warningColor != "transparent" + loops: Animation.Infinite + NumberAnimation { + + target: rect + properties: "borderWidth" + from: 3 + to: 7 + duration: 500 + } + + NumberAnimation { + + target: rect + properties: "borderWidth" + from: 7 + to: 3 + duration: 500 + } + + onStopped: rect.borderWidth = 3 + + } + } + + Image { + id: circle + + width: root.width/2 + height: width + anchors.centerIn: parent + anchors.horizontalCenterOffset: -6 + anchors.verticalCenterOffset: 0 + source: Qt.resolvedUrl("images/middle-bkg.png") + + Image { + id: circle_overlay + + width: parent.width + height: parent.height + anchors.centerIn: parent + source: Qt.resolvedUrl("images/middle-circle.png") + } + + Image { + id: fuelSymbol + width: 70 + height: 70 + anchors.top: parent.top + anchors.topMargin: 55 + anchors.horizontalCenter: parent.horizontalCenter + anchors.horizontalCenterOffset: 0 + source: root.warningIcon + fillMode: Image.PreserveAspectFit + + } + + Item { + width: parent.width + height: parent.height/4 + anchors.centerIn: parent + anchors.verticalCenterOffset: 40 + + Rectangle { + id: speedText + width: parent.width - 80 + height: 40 + radius: 20 + anchors.horizontalCenter: parent.horizontalCenter + gradient: Gradient { + GradientStop { position: 0.0; color: Qt.darker("grey", 1.5) } + GradientStop { position: 0.4; color: "#0c0c0c" } + } + + Label { + width: parent.width + anchors.centerIn: parent + horizontalAlignment: Text.AlignHCenter + font.pixelSize: text.length > 10 ? 18 : 24 + font.bold: true + text: root.warningText + elide: Text.ElideMiddle + } + } + } + } + } + + Fuel { + id: fuelMeter + anchors.bottom: parent.bottom + anchors.bottomMargin: 0.05 * root.height + anchors.horizontalCenter: parent.horizontalCenter + anchors.horizontalCenterOffset: -20 + } + + Dial { + id: dial + + width: 0.69 * root.height + height: width + anchors.centerIn: overlay + anchors.verticalCenterOffset: 0 + anchors.horizontalCenterOffset: -5 + fillImage: "images/dial_fill_color.png" + circleRadius: "0.29" + dialCursor: "images/dial_cursor_right.png" + value: root.value / 7000 + } +} diff --git a/examples/ivicore/qface-tutorial/chapter4-simulation-behavior/instrument-cluster/Top.qml b/examples/ivicore/qface-tutorial/chapter4-simulation-behavior/instrument-cluster/Top.qml new file mode 100644 index 0000000..b43ef9b --- /dev/null +++ b/examples/ivicore/qface-tutorial/chapter4-simulation-behavior/instrument-cluster/Top.qml @@ -0,0 +1,131 @@ +/**************************************************************************** +** +** Copyright (C) 2019 Luxoft Sweden AB +** Copyright (C) 2018 Pelagicore AG +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtIvi module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD-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. +** +** 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$ +** +** SPDX-License-Identifier: BSD-3-Clause +** +****************************************************************************/ + +import QtQuick 2.1 + +Item { + id: root + width: 0.37 * 1920 + height: 0.12 * 720 + + property real temperature: 0 + + Image { + id: background + width: parent.width + height: parent.height + source: Qt.resolvedUrl("images/top_bar.png") + } + + Label { + id: timeText + anchors.verticalCenter: background.verticalCenter + anchors.left: background.left + anchors.leftMargin: 0.2 * background.width + + font.pixelSize: 0.42 * background.height + font.bold: true + + text: Qt.formatTime(currentDate, "hh:mm") + + property var currentDate: new Date(); + + Timer { + interval: 1000 + repeat: true + running: true + onTriggered: { + timeText.currentDate = new Date(); + } + } + } + + Item { + id: navigator + + width: 0.25 * background.width + height: background.height + anchors.verticalCenter: background.verticalCenter + anchors.horizontalCenter: background.horizontalCenter + + Row { + id: row + property int radius: 7 + anchors.centerIn: parent + anchors.verticalCenterOffset: -16 + spacing: 8 + + Repeater { + model: 3 + delegate: Rectangle { + height: row.radius * 2 + width: row.radius * 2 + radius: row.radius + color: 1 === index ? "white" : "#4d4d4d" + } + } + } + } + + Label { + id: temperatureText + anchors.verticalCenter: background.verticalCenter + anchors.left: navigator.right + anchors.leftMargin: 15 + + font.pixelSize: 0.42 * background.height + font.bold: true + + text: root.temperature + "°C" + } +} diff --git a/examples/ivicore/qface-tutorial/chapter4-simulation-behavior/instrument-cluster/app.qrc b/examples/ivicore/qface-tutorial/chapter4-simulation-behavior/instrument-cluster/app.qrc new file mode 100644 index 0000000..9794820 --- /dev/null +++ b/examples/ivicore/qface-tutorial/chapter4-simulation-behavior/instrument-cluster/app.qrc @@ -0,0 +1,11 @@ +<RCC> + <qresource prefix="/"> + <file>Cluster.qml</file> + <file>Top.qml</file> + <file>RightDial.qml</file> + <file>LeftDial.qml</file> + <file>Dial.qml</file> + <file>Fuel.qml</file> + <file>Label.qml</file> + </qresource> +</RCC> diff --git a/examples/ivicore/qface-tutorial/chapter4-simulation-behavior/instrument-cluster/instrument-cluster.pro b/examples/ivicore/qface-tutorial/chapter4-simulation-behavior/instrument-cluster/instrument-cluster.pro new file mode 100644 index 0000000..e52efd2 --- /dev/null +++ b/examples/ivicore/qface-tutorial/chapter4-simulation-behavior/instrument-cluster/instrument-cluster.pro @@ -0,0 +1,19 @@ +TARGET = chapter4-simulation-behavior +DESTDIR = .. + +QT += qml quick +CONFIG -= app_bundle + +SOURCES = main.cpp +RESOURCES += app.qrc \ + ../../images/images.qrc \ + +LIBS += -L$$OUT_PWD/../ -l$$qtLibraryTarget(QtIviInstrumentCluster) +INCLUDEPATH += $$OUT_PWD/../frontend +QMAKE_RPATHDIR += $ORIGIN + +# Additional import path used to resolve QML modules in Qt Creator's code model +QML_IMPORT_PATH = $$OUT_PWD/../frontend/qml + +target.path = $$[QT_INSTALL_EXAMPLES]/ivicore/qface-tutorial/chapter4-simulation-behavior/instrument-cluster +INSTALLS += target diff --git a/examples/ivicore/qface-tutorial/chapter4-simulation-behavior/instrument-cluster/main.cpp b/examples/ivicore/qface-tutorial/chapter4-simulation-behavior/instrument-cluster/main.cpp new file mode 100644 index 0000000..57b00b6 --- /dev/null +++ b/examples/ivicore/qface-tutorial/chapter4-simulation-behavior/instrument-cluster/main.cpp @@ -0,0 +1,66 @@ +/**************************************************************************** +** +** Copyright (C) 2019 Luxoft Sweden AB +** Copyright (C) 2018 Pelagicore AG +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtIvi module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD-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. +** +** 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$ +** +** SPDX-License-Identifier: BSD-3-Clause +** +****************************************************************************/ + +#include <QGuiApplication> +#include <QQmlApplicationEngine> + +int main(int argc, char *argv[]) +{ + QGuiApplication app(argc, argv); + + QQmlApplicationEngine engine; + engine.addImportPath(app.applicationDirPath() + "/imports"); + engine.load(QUrl(QStringLiteral("qrc:///Cluster.qml"))); + + return app.exec(); +} |