summaryrefslogtreecommitdiff
path: root/examples/positioning/satelliteinfo/satelliteinfo.qml
diff options
context:
space:
mode:
authorAlex Blasche <alexander.blasche@digia.com>2013-11-12 16:44:46 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-02-07 13:11:44 +0100
commit4ffe71bde6ab97f4760896cd13c97747b6bfb9d1 (patch)
treecd9ba3ea75214044db35523ae17d954f2a699c72 /examples/positioning/satelliteinfo/satelliteinfo.qml
parent56d501290a7e62d0a97b7c43d755042aa5d1cb49 (diff)
downloadqtlocation-4ffe71bde6ab97f4760896cd13c97747b6bfb9d1.tar.gz
Add new Satellite Information example
[ChangeLog][QtPositioning] New SatelliteInfo example added. The example displays the signal strength of surrounding satellites. The example employs a demo mode on those platforms which don't provide satellite information Change-Id: I573266c7a4429c0d2f1bcdfeb01af52ad02efba7 Reviewed-by: Aaron McCarthy <mccarthy.aaron@gmail.com> Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
Diffstat (limited to 'examples/positioning/satelliteinfo/satelliteinfo.qml')
-rw-r--r--examples/positioning/satelliteinfo/satelliteinfo.qml304
1 files changed, 304 insertions, 0 deletions
diff --git a/examples/positioning/satelliteinfo/satelliteinfo.qml b/examples/positioning/satelliteinfo/satelliteinfo.qml
new file mode 100644
index 00000000..f3fc5a78
--- /dev/null
+++ b/examples/positioning/satelliteinfo/satelliteinfo.qml
@@ -0,0 +1,304 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** 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 Digia Plc and its Subsidiary(-ies) 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 Local 1.0
+
+Rectangle {
+ id: page
+ width: 360
+ height: 360
+
+ SatelliteModel {
+ id: satelliteModel
+ running: true
+ onErrorFound: errorLabel.text = qsTr("Last Error: %1", "%1=error number").arg(code)
+ }
+
+ Item {
+ id: header
+ height: column.height + 30
+ width: parent.width
+ state: "running"
+
+ anchors.top: parent.top
+
+ function toggle()
+ {
+ switch (header.state) {
+ case "single": header.state = "running"; break;
+ default:
+ case "running": header.state = "stopped"; break;
+ case "stopped": header.state = "single"; break;
+ }
+ }
+
+ function enterSingle()
+ {
+ satelliteModel.singleRequestMode = true;
+ satelliteModel.running = true;
+ }
+
+ function enterRunning()
+ {
+ satelliteModel.running = false;
+ satelliteModel.singleRequestMode = false;
+ satelliteModel.running = true;
+ }
+
+ states: [
+ State {
+ name: "stopped"
+ PropertyChanges { target: startStop; bText: qsTr("Single") }
+ PropertyChanges {
+ target: modeLabel; text: qsTr("Current Mode: stopped")
+ }
+ PropertyChanges { target: satelliteModel; running: false; }
+ },
+ State {
+ name: "single"
+ PropertyChanges { target: startStop; bText: qsTr("Start") }
+ PropertyChanges {
+ target: modeLabel; text: qsTr("Current Mode: single")
+ }
+ StateChangeScript { script: header.enterSingle(); }
+ },
+ State {
+ name: "running"
+ PropertyChanges { target: startStop; bText: qsTr("Stop") }
+ PropertyChanges {
+ target: modeLabel; text: qsTr("Current Mode: running")
+ }
+ StateChangeScript { script: header.enterRunning(); }
+ }
+ ]
+
+ Column {
+ id: column
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.left: parent.left
+ anchors.margins: 7
+ Text {
+ id: overview
+ text: satelliteModel.satelliteInfoAvailable
+ ? qsTr("Known Satellites")
+ : qsTr("Known Satellites (Demo Mode)")
+ font.pointSize: 12
+ }
+
+ Text {
+ id: modeLabel
+ font.pointSize: 12
+ }
+
+ Text {
+ id: errorLabel
+ text: qsTr("Last Error: None")
+ font.pointSize: 12
+ }
+ }
+ Rectangle {
+ id: startStop
+ border.color: "black"
+ border.width: 3
+ anchors.right: parent.right
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.margins: 7
+ radius: 10
+ height: maxField.height*1.4
+ width: maxField.width*1.4
+
+ property string bText: qsTr("Stop");
+
+ Text { //need this for sizing
+ id: maxField
+ text: qsTr("Single")
+ font.pointSize: 13
+ opacity: 0
+ }
+
+ Text {
+ id: buttonText
+ anchors.centerIn: parent
+ text: startStop.bText
+ font.pointSize: 13
+ }
+
+ MouseArea {
+ anchors.fill: parent
+ onPressed: { startStop.color = "lightGray" }
+ onClicked: { header.toggle() }
+ onReleased: { startStop.color = "white" }
+ }
+ }
+ }
+
+ Rectangle {
+ anchors.top: header.bottom
+ anchors.bottom: parent.bottom
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.margins: rect.myMargin
+ border.width: 3
+ radius: 10
+ border.color: "black"
+
+ Item {
+ id: rect
+ anchors.fill: parent
+ anchors.margins: myMargin
+ property int myMargin: 7
+
+ Row {
+ id: view
+ property int rows: repeater.model.entryCount
+ property int singleWidth: ((rect.width - scale.width)/rows )-rect.myMargin
+ spacing: rect.myMargin
+
+ Rectangle {
+ id: scale
+ width: strengthLabel.width+10
+ height: rect.height
+ color: "#32cd32"
+ Text {
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: lawngreenRect.top
+ font.pointSize: 11
+ text: "50"
+ }
+ Text {
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.top: parent.top
+ font.pointSize: 11
+ text: "100"
+ }
+
+ Rectangle {
+ id: redRect
+ width: parent.width
+ color: "red"
+ height: parent.height*10/100
+ anchors.bottom: parent.bottom
+ Text {
+ id: strengthLabel
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: parent.bottom
+ font.pointSize: 11
+ text: "00"
+ }
+ }
+ Rectangle {
+ id: orangeRect
+ height: parent.height*10/100
+ anchors.bottom: redRect.top
+ width: parent.width
+ color: "#ffa500"
+ Text {
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: parent.bottom
+ font.pointSize: 11
+ text: "10"
+ }
+ }
+ Rectangle {
+ id: goldRect
+ height: parent.height*10/100
+ anchors.bottom: orangeRect.top
+ width: parent.width
+ color: "#ffd700"
+ Text {
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: parent.bottom
+ font.pointSize: 11
+ text: "20"
+ }
+ }
+ Rectangle {
+ id: yellowRect
+ height: parent.height*10/100
+ anchors.bottom: goldRect.top
+ width: parent.width
+ color: "yellow"
+ Text {
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: parent.bottom
+ font.pointSize: 11
+ text: "30"
+ }
+ }
+ Rectangle {
+ id: lawngreenRect
+ height: parent.height*10/100
+ anchors.bottom: yellowRect.top
+ width: parent.width
+ color: "#7cFc00"
+ Text {
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: parent.bottom
+ font.pointSize: 11
+ text: "40"
+ }
+ }
+ }
+
+ Repeater {
+ id: repeater
+ model: satelliteModel
+ delegate: Rectangle {
+ height: rect.height
+ width: view.singleWidth
+ Rectangle {
+ anchors.bottom: parent.bottom
+ width: parent.width
+ height: parent.height*signalStrength/100
+ color: isInUse ? "#7FFF0000" : "#7F0000FF"
+ }
+ Text {
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: parent.bottom
+ text: satelliteIdentifier
+ }
+ }
+ }
+ }
+ }
+ }
+}
+