diff options
Diffstat (limited to 'examples/positioning')
87 files changed, 0 insertions, 7303 deletions
diff --git a/examples/positioning/CMakeLists.txt b/examples/positioning/CMakeLists.txt deleted file mode 100644 index 414fc99a..00000000 --- a/examples/positioning/CMakeLists.txt +++ /dev/null @@ -1,14 +0,0 @@ -# Generated from positioning.pro. - -if(TARGET Qt::Widgets) - add_subdirectory(logfilepositionsource) -endif() -if(TARGET Qt::Quick) - add_subdirectory(satelliteinfo) -endif() -if(TARGET Qt::Quick) - add_subdirectory(geoflickr) -endif() -if(TARGET Qt::Network AND TARGET Qt::Quick) - add_subdirectory(weatherinfo) -endif() diff --git a/examples/positioning/geoflickr/CMakeLists.txt b/examples/positioning/geoflickr/CMakeLists.txt deleted file mode 100644 index a871b827..00000000 --- a/examples/positioning/geoflickr/CMakeLists.txt +++ /dev/null @@ -1,83 +0,0 @@ -# Generated from geoflickr.pro. - -cmake_minimum_required(VERSION 3.16) -project(geoflickr LANGUAGES CXX) - -set(CMAKE_INCLUDE_CURRENT_DIR ON) - -set(CMAKE_AUTOMOC ON) -set(CMAKE_AUTORCC ON) -set(CMAKE_AUTOUIC ON) - -if(NOT DEFINED INSTALL_EXAMPLESDIR) - set(INSTALL_EXAMPLESDIR "examples") -endif() - -set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/positioning/geoflickr") - -find_package(Qt6 COMPONENTS Core) -find_package(Qt6 COMPONENTS Gui) -find_package(Qt6 COMPONENTS Qml) -find_package(Qt6 COMPONENTS Quick) -find_package(Qt6 COMPONENTS Network) -find_package(Qt6 COMPONENTS Positioning) - -qt_add_executable(geoflickr - qmllocationflickr.cpp -) -set_target_properties(geoflickr PROPERTIES - WIN32_EXECUTABLE TRUE - MACOSX_BUNDLE TRUE -) -target_link_libraries(geoflickr PRIVATE - Qt::Core - Qt::Gui - Qt::Network - Qt::Positioning - Qt::Qml - Qt::Quick -) - - -# Resources: -set(flickr_resource_files - "flickr-90.qml" - "flickr.qml" - "flickrcommon/Progress.qml" - "flickrcommon/RestModel.qml" - "flickrcommon/ScrollBar.qml" - "flickrcommon/Slider.qml" - "flickrmobile/Button.qml" - "flickrmobile/GeoTab.qml" - "flickrmobile/GridDelegate.qml" - "flickrmobile/ImageDetails.qml" - "flickrmobile/ListDelegate.qml" - "flickrmobile/TitleBar.qml" - "flickrmobile/ToolBar.qml" - "flickrmobile/images/gloss.png" - "flickrmobile/images/lineedit.png" - "flickrmobile/images/lineedit.sci" - "flickrmobile/images/moon.png" - "flickrmobile/images/quit.png" - "flickrmobile/images/star.png" - "flickrmobile/images/stripes.png" - "flickrmobile/images/sun.png" - "flickrmobile/images/titlebar.png" - "flickrmobile/images/titlebar.sci" - "flickrmobile/images/toolbutton.png" - "flickrmobile/images/toolbutton.sci" - "flickrmobile/nmealog.txt" -) - -qt6_add_resources(geoflickr "flickr" - PREFIX - "/" - FILES - ${flickr_resource_files} -) - -install(TARGETS geoflickr - RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" - BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" - LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" -) diff --git a/examples/positioning/geoflickr/doc/images/qml-flickr-1.jpg b/examples/positioning/geoflickr/doc/images/qml-flickr-1.jpg Binary files differdeleted file mode 100644 index 42514ff0..00000000 --- a/examples/positioning/geoflickr/doc/images/qml-flickr-1.jpg +++ /dev/null diff --git a/examples/positioning/geoflickr/doc/src/geoflickr.qdoc b/examples/positioning/geoflickr/doc/src/geoflickr.qdoc deleted file mode 100644 index 86ec61f4..00000000 --- a/examples/positioning/geoflickr/doc/src/geoflickr.qdoc +++ /dev/null @@ -1,88 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2019 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** 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 Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \example geoflickr - \title GeoFlickr (QML) - \ingroup qtpositioning-examples - - \brief The GeoFlickr example shows how to use the user's current - position to fetch local content from a web service. - - This is a small example, illustrating one of the very core parts - of the \l{Qt Positioning} API: the ability to retrieve and use the - user's current geographic position. - - Key QML types shown in this example: - \list - \li \l {QtPositioning::PositionSource} {PositionSource} - \li \l [QML] {XmlListModel} - \endlist - - \image qml-flickr-1.jpg - - \include examples-run.qdocinc - - \section1 Retrieving the Current Position - - Retrieving the user's current position is achieved using the - \l PositionSource type. In this example, we instantiate the - \l PositionSource as part of the \c GeoTab component (the floating "window" - describing current position and status). - - \snippet geoflickr/flickrmobile/GeoTab.qml possrc - - When the "Locate and update" button is pressed, we first interrogate - the \l PositionSource to check if it has an available backend for - positioning data. If it does not, we fall back to using a pre-recorded - NMEA log for demonstration. We then instruct the \l PositionSource to - request a location \l {QtPositioning::PositionSource::}{update}. - - \snippet geoflickr/flickrmobile/GeoTab.qml locatebutton-top - \snippet geoflickr/flickrmobile/GeoTab.qml locatebutton-clicked - - To share the new position data with the rest of the application, we - use properties that we have created on the \c GeoTab component: - - \snippet geoflickr/flickrmobile/GeoTab.qml props - - \section1 Using the Current Position - - The longitude and latitude values retrieved here are eventually set - in the properties on the \c RestModel component. The \c RestModel is an - \l [QML] {XmlListModel}, which retrieves XML data from a URL and creates a - data model by parsing it. - - In this case, it retrieves data from the Flickr REST API online, - based on our current position - - \snippet geoflickr/flickrcommon/RestModel.qml restmodel - - This model data is then shown in a variety of \l {Qt Quick} views to - produce the example application. - -*/ diff --git a/examples/positioning/geoflickr/flickr-90.qml b/examples/positioning/geoflickr/flickr-90.qml deleted file mode 100644 index e3352747..00000000 --- a/examples/positioning/geoflickr/flickr-90.qml +++ /dev/null @@ -1,61 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples 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 { - width: 480; height: 320 - - Loader { - y: 320; rotation: -90 - transformOrigin: Item.TopLeft - source: "flickr.qml" - } -} diff --git a/examples/positioning/geoflickr/flickr.qml b/examples/positioning/geoflickr/flickr.qml deleted file mode 100644 index 8c975e38..00000000 --- a/examples/positioning/geoflickr/flickr.qml +++ /dev/null @@ -1,147 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples 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 QtQml.XmlListModel -import "flickrcommon" as Common -import "flickrmobile" as Mobile - -Item { - id: screen; width: 320; height: 480 - property bool inListView : false - - Rectangle { - id: background - anchors.fill: parent; color: "#343434"; - - Image { source: "flickrmobile/images/stripes.png"; fillMode: Image.Tile; anchors.fill: parent; opacity: 0.3 } - - Common.RestModel { - id: restModel - coordinate: geoTab.coordinate - } - - Item { - id: views - x: 2; width: parent.width - 4 - anchors.top: titleBar.bottom; anchors.bottom: toolBar.top - - Text { - text: qsTr("Network error") - font.pixelSize: 48 - fontSizeMode: Text.HorizontalFit - anchors.centerIn: parent - width: parent.width * 0.9 - visible: restModel.status === XmlListModel.Error - - } - - Mobile.GridDelegate { id: gridDelegate } - GridView { - x: (width/4-79)/2; y: x - id: photoGridView; model: restModel; delegate: gridDelegate; cacheBuffer: 100 - cellWidth: (parent.width-2)/4; cellHeight: cellWidth; width: parent.width; height: parent.height - 1; z: 6 - } - Mobile.ListDelegate { id: listDelegate } - ListView { - id: photoListView; model: restModel; delegate: listDelegate; z: 6 - width: parent.width; height: parent.height; x: -(parent.width * 1.5); cacheBuffer: 100; - } - states: State { - name: "ListView"; when: screen.inListView == true - PropertyChanges { target: photoListView; x: 0 } - PropertyChanges { target: photoGridView; x: -(parent.width * 1.5) } - } - - transitions: Transition { - NumberAnimation { properties: "x"; duration: 500; easing.type: Easing.InOutQuad } - } - } - Mobile.ImageDetails { id: imageDetails; width: parent.width; anchors.left: views.right; height: parent.height; z:1 } - Mobile.TitleBar { id: titleBar; z: 5; width: parent.width; height: 40; opacity: 0.9 } - Mobile.GeoTab { - id: geoTab; - x: 15; y:50; - } - Mobile.ToolBar { - id: toolBar; z: 5 - height: 40; anchors.bottom: parent.bottom; width: parent.width; opacity: 0.9 - button1Label: "Update"; button2Label: "View mode" - onButton1Clicked: restModel.reload() - onButton2Clicked: if (screen.inListView == true) screen.inListView = false; else screen.inListView = true - } - Connections { - target: imageDetails - function onClosed() { - if (background.state == "DetailedView") { - background.state = ''; - imageDetails.photoUrl = ""; - } - } - } - - states: State { - name: "DetailedView" - PropertyChanges { target: views; x: -parent.width } - PropertyChanges { target: geoTab; x: -parent.width } - PropertyChanges { target: toolBar; button1Label: "More..." } - PropertyChanges { - target: toolBar - onButton1Clicked: if (imageDetails.state=='') imageDetails.state='Back'; else imageDetails.state='' - } - PropertyChanges { target: toolBar; button2Label: "Back" } - PropertyChanges { target: toolBar; onButton2Clicked: imageDetails.closed() } - } - - transitions: Transition { - NumberAnimation { properties: "x"; duration: 500; easing.type: Easing.InOutQuad } - } - } -} diff --git a/examples/positioning/geoflickr/flickr.qrc b/examples/positioning/geoflickr/flickr.qrc deleted file mode 100644 index 1019f7d8..00000000 --- a/examples/positioning/geoflickr/flickr.qrc +++ /dev/null @@ -1,30 +0,0 @@ -<!DOCTYPE RCC><RCC version="1.0"> - <qresource prefix="/"> - <file>flickr.qml</file> - <file>flickr-90.qml</file> - <file>flickrcommon/Progress.qml</file> - <file>flickrcommon/RestModel.qml</file> - <file>flickrcommon/ScrollBar.qml</file> - <file>flickrcommon/Slider.qml</file> - <file>flickrmobile/Button.qml</file> - <file>flickrmobile/GeoTab.qml</file> - <file>flickrmobile/GridDelegate.qml</file> - <file>flickrmobile/ImageDetails.qml</file> - <file>flickrmobile/ListDelegate.qml</file> - <file>flickrmobile/nmealog.txt</file> - <file>flickrmobile/TitleBar.qml</file> - <file>flickrmobile/ToolBar.qml</file> - <file>flickrmobile/images/gloss.png</file> - <file>flickrmobile/images/lineedit.png</file> - <file>flickrmobile/images/lineedit.sci</file> - <file>flickrmobile/images/moon.png</file> - <file>flickrmobile/images/quit.png</file> - <file>flickrmobile/images/star.png</file> - <file>flickrmobile/images/stripes.png</file> - <file>flickrmobile/images/sun.png</file> - <file>flickrmobile/images/titlebar.png</file> - <file>flickrmobile/images/titlebar.sci</file> - <file>flickrmobile/images/toolbutton.png</file> - <file>flickrmobile/images/toolbutton.sci</file> - </qresource> -</RCC> diff --git a/examples/positioning/geoflickr/flickrcommon/Progress.qml b/examples/positioning/geoflickr/flickrcommon/Progress.qml deleted file mode 100644 index 36faffbc..00000000 --- a/examples/positioning/geoflickr/flickrcommon/Progress.qml +++ /dev/null @@ -1,82 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples 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 { - property real progress: 0 - - Rectangle { - anchors.fill: parent; smooth: true - border.color: "white"; border.width: 0; radius: height/2 - 2 - gradient: Gradient { - GradientStop { position: 0; color: "#66343434" } - GradientStop { position: 1.0; color: "#66000000" } - } - } - - Rectangle { - y: 2; height: parent.height-4; - x: 2; width: Math.max(parent.width * progress - 4, 0); - opacity: width < 1 ? 0 : 1; smooth: true - gradient: Gradient { - GradientStop { position: 0; color: "lightsteelblue" } - GradientStop { position: 1.0; color: "steelblue" } - } - radius: height/2 - 2 - } - - Text { - text: Math.round(progress * 100) + "%" - anchors.horizontalCenter: parent.horizontalCenter - anchors.verticalCenter: parent.verticalCenter - color: "white"; font.bold: true - } -} diff --git a/examples/positioning/geoflickr/flickrcommon/RestModel.qml b/examples/positioning/geoflickr/flickrcommon/RestModel.qml deleted file mode 100644 index 56cd4e84..00000000 --- a/examples/positioning/geoflickr/flickrcommon/RestModel.qml +++ /dev/null @@ -1,74 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples 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 QtQml.XmlListModel - -//! [restmodel] -XmlListModel { - property var coordinate - - source: "https://api.flickr.com/services/rest/?" + - "min_taken_date=2000-01-01+0:00:00&" + - "extras=date_taken&" + - "method=flickr.photos.search&" + - "per_page=30&" + - "sort=date-taken-desc&" + - "api_key=e36784df8a03fea04c22ed93318b291c&" + - "lat=" + coordinate.latitude + "&lon=" + coordinate.longitude; - query: "/rsp/photos/photo" - - XmlListModelRole { name: "title"; elementName: ""; attributeName: "title" } - XmlListModelRole { name: "datetaken"; elementName: ""; attributeName: "datetaken" } - XmlListModelRole { name: "farm"; elementName: ""; attributeName: "farm" } - XmlListModelRole { name: "server"; elementName: ""; attributeName: "server" } - XmlListModelRole { name: "id"; elementName: ""; attributeName: "id" } - XmlListModelRole { name: "secret"; elementName: ""; attributeName: "secret" } -} -//! [restmodel] diff --git a/examples/positioning/geoflickr/flickrcommon/ScrollBar.qml b/examples/positioning/geoflickr/flickrcommon/ScrollBar.qml deleted file mode 100644 index 4c6c21c9..00000000 --- a/examples/positioning/geoflickr/flickrcommon/ScrollBar.qml +++ /dev/null @@ -1,90 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples 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 { - id: container - - property var flickableArea - - Rectangle { - radius: 5 - color: "black" - opacity: 0.3 - border.color: "white" - border.width: 2 - x: 0 - y: flickableArea.visibleArea.yPosition * container.height - width: parent.width - height: flickableArea.visibleArea.heightRatio * container.height - } - states: [ - State { - name: "show" - when: flickableArea.movingVertically - PropertyChanges { - target: container - opacity: 1 - } - } - ] - transitions: [ - Transition { - from: "*" - to: "*" - NumberAnimation { - target: container - properties: "opacity" - duration: 400 - } - } - ] -} diff --git a/examples/positioning/geoflickr/flickrcommon/Slider.qml b/examples/positioning/geoflickr/flickrcommon/Slider.qml deleted file mode 100644 index f323ab22..00000000 --- a/examples/positioning/geoflickr/flickrcommon/Slider.qml +++ /dev/null @@ -1,86 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples 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 { - id: slider; width: 400; height: 16 - - // value is read/write. - property real value - onValueChanged: { handle.x = 2 + (value - minimum) * slider.xMax / (maximum - minimum); } - property real maximum: 1 - property real minimum: 1 - property int xMax: slider.width - handle.width - 4 - - Rectangle { - anchors.fill: parent - border.color: "white"; border.width: 0; radius: 8 - gradient: Gradient { - GradientStop { position: 0.0; color: "#66343434" } - GradientStop { position: 1.0; color: "#66000000" } - } - } - - Rectangle { - id: handle; smooth: true - x: slider.width / 2 - handle.width / 2; y: 2; width: 30; height: slider.height-4; radius: 6 - gradient: Gradient { - GradientStop { position: 0.0; color: "lightgray" } - GradientStop { position: 1.0; color: "gray" } - } - - MouseArea { - anchors.fill: parent; drag.target: parent - drag.axis: Drag.XAxis; drag.minimumX: 2; drag.maximumX: slider.xMax+2 - onPositionChanged: { value = (maximum - minimum) * (handle.x-2) / slider.xMax + minimum; } - } - } -} diff --git a/examples/positioning/geoflickr/flickrmobile/Button.qml b/examples/positioning/geoflickr/flickrmobile/Button.qml deleted file mode 100644 index 5f2fcba2..00000000 --- a/examples/positioning/geoflickr/flickrmobile/Button.qml +++ /dev/null @@ -1,88 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples 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 { - id: container - - signal clicked - - property string text - - BorderImage { - id: buttonImage - source: "images/toolbutton.sci" - width: container.width; height: container.height - } - BorderImage { - id: pressed - opacity: 0 - source: "images/toolbutton.sci" - width: container.width; height: container.height - } - MouseArea { - id: mouseRegion - anchors.fill: buttonImage - onClicked: { container.clicked(); } - } - Text { - color: "white" - anchors.centerIn: buttonImage; font.bold: true - text: container.text; style: Text.Raised; styleColor: "black" - } - states: [ - State { - name: "Pressed" - when: mouseRegion.pressed == true - PropertyChanges { target: pressed; opacity: 1 } - } - ] -} diff --git a/examples/positioning/geoflickr/flickrmobile/GeoTab.qml b/examples/positioning/geoflickr/flickrmobile/GeoTab.qml deleted file mode 100644 index 4a9a4aba..00000000 --- a/examples/positioning/geoflickr/flickrmobile/GeoTab.qml +++ /dev/null @@ -1,182 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples 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 QtPositioning - -Rectangle { - id: container - property int maxX: parent.width; property int maxY: parent.height -//! [props] - property var coordinate -//! [props] - - Binding { - target: container - property: "coordinate" - value: positionSource.position.coordinate - } - - width: 300; height: 130 - color: "blue" - opacity: 0.7 - border.color: "black" - border.width: 1 - radius: 5 - gradient: Gradient { - GradientStop {position: 0.0; color: "grey"} - GradientStop {position: 1.0; color: "black"} - } - MouseArea { - anchors.fill: parent - drag.target: parent - drag.axis: Drag.XandYAxis - drag.minimumX: -(parent.width * (2/3)); drag.maximumX: parent.maxX - (parent.width/3) - drag.minimumY: -(parent.height/2); drag.maximumY: parent.maxY - (parent.height/2) - } -//! [locatebutton-top] - Button { - id: locateButton - text: "Locate & update" -//! [locatebutton-top] - anchors {left: parent.left; leftMargin: 5} - y: 3; height: 32; width: parent.width - 10 -//! [locatebutton-clicked] - onClicked: { - if (positionSource.supportedPositioningMethods === - PositionSource.NoPositioningMethods) { - positionSource.nmeaSource = "nmealog.txt"; - sourceText.text = "(filesource): " + printableMethod(positionSource.supportedPositioningMethods); - } - positionSource.update(); - } - } -//! [locatebutton-clicked] -//! [possrc] - PositionSource { - id: positionSource - onPositionChanged: { planet.source = "images/sun.png"; } - - onSourceErrorChanged: { - if (sourceError == PositionSource.UpdateTimeoutError) { - activityText.fadeOut = true - return - } - - if (sourceError == PositionSource.NoError) - return - - console.log("Source error: " + sourceError) - activityText.fadeOut = true - stop() - } - } -//! [possrc] - function printableMethod(method) { - if (method === PositionSource.SatellitePositioningMethods) - return "Satellite"; - else if (method === PositionSource.NoPositioningMethods) - return "Not available" - else if (method === PositionSource.NonSatellitePositioningMethods) - return "Non-satellite" - else if (method === PositionSource.AllPositioningMethods) - return "Multiple" - return "source error"; - } - - Grid { - id: locationGrid - columns: 2 - anchors {left: parent.left; leftMargin: 5; top: locateButton.bottom; topMargin: 5} - spacing: 5 - Text {color: "white"; font.bold: true - text: "Lat:"; style: Text.Raised; styleColor: "black" - } - Text {id: latitudeValue; color: "white"; font.bold: true - text: positionSource.position.coordinate.latitude; style: Text.Raised; styleColor: "black"; - } - Text {color: "white"; font.bold: true - text: "Lon:"; style: Text.Raised; styleColor: "black" - } - Text {id: longitudeValue; color: "white"; font.bold: true - text: positionSource.position.coordinate.longitude; style: Text.Raised; styleColor: "black" - } - } - Image { - id: planet - anchors {top: locationGrid.bottom; left: parent.left; leftMargin: locationGrid.anchors.leftMargin} - source: "images/moon.png" - width: 30; height: 30 - } - Text {id: sourceText; color: "white"; font.bold: true; - anchors {left: planet.right; leftMargin: 5; verticalCenter: planet.verticalCenter} - text: "Source: " + printableMethod(positionSource.supportedPositioningMethods); style: Text.Raised; styleColor: "black"; - } - - Text { - id: activityText; color: "white"; font.bold: true; - anchors { top: planet.bottom; horizontalCenter: parent.horizontalCenter } - property bool fadeOut: false - - text: { - if (fadeOut) - return qsTr("Timeout occurred!"); - else if (positionSource.active) - return qsTr("Retrieving update...") - else - return "" - } - - Timer { - id: fadeoutTimer; repeat: false; interval: 3000; running: activityText.fadeOut - onTriggered: { activityText.fadeOut = false; } - } - } -} diff --git a/examples/positioning/geoflickr/flickrmobile/GridDelegate.qml b/examples/positioning/geoflickr/flickrmobile/GridDelegate.qml deleted file mode 100644 index 6d1e39c8..00000000 --- a/examples/positioning/geoflickr/flickrmobile/GridDelegate.qml +++ /dev/null @@ -1,124 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples 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.Window 2.0 - - Component { - id: photoDelegate - Item { - id: wrapper; width: 79; height: 79 - - function photoClicked() { - imageDetails.photoTitle = title; - imageDetails.photoDate = datetaken; - imageDetails.photoUrl = "http://farm" + farm + ".static.flickr.com/" + server + "/" + id + "_" + secret + ".jpg"; - console.log(imageDetails.photoUrl); - scaleMe.state = "Details"; - } - - Item { - anchors.centerIn: parent - scale: 0.0 - Behavior on scale { NumberAnimation { easing.type: Easing.InOutQuad} } - id: scaleMe - - Rectangle { height: 79; width: 79; id: blackRect; anchors.centerIn: parent; color: "black"; smooth: true } - Rectangle { - id: whiteRect; width: 76; height: 76; anchors.centerIn: parent; color: "#dddddd"; smooth: true - Image { id: thumb; - // source: imagePath; - source: imageDetails.photoUrl = "http://farm" + farm + ".static.flickr.com/" + server + "/" + id + "_" + secret + "_t.jpg" - width: parent.width; height: parent.height - x: 1; y: 1; smooth: true} - Image { source: "images/gloss.png" } - } - - Connections { - target: toolBar - function onButton2Clicked() { - if (scaleMe.state == 'Details' ) scaleMe.state = 'Show' - } - } - - states: [ - State { - name: "Show"; when: thumb.status == Image.Ready - PropertyChanges { target: scaleMe; scale: Math.round(Screen.pixelDensity / 4) } - }, - State { - name: "Details" - PropertyChanges { target: scaleMe; scale: Math.round(Screen.pixelDensity / 4)} - ParentChange { target: wrapper; parent: imageDetails.frontContainer } - PropertyChanges { target: wrapper; x: 20; y: 60; z: 1000 } - PropertyChanges { target: background; state: "DetailedView" } - } - ] - transitions: [ - Transition { - from: "Show"; to: "Details" - ParentAnimation { - NumberAnimation { properties: "x,y"; duration: 500; easing.type: Easing.InOutQuad } - } - }, - Transition { - from: "Details"; to: "Show" - SequentialAnimation { - ParentAnimation { - NumberAnimation { properties: "x,y"; duration: 500; easing.type: Easing.InOutQuad } - } - PropertyAction { targets: wrapper; properties: "z" } - } - } - ] - } - MouseArea { anchors.fill: wrapper; onClicked: { photoClicked() } } - } - } diff --git a/examples/positioning/geoflickr/flickrmobile/ImageDetails.qml b/examples/positioning/geoflickr/flickrmobile/ImageDetails.qml deleted file mode 100644 index 10c0dad9..00000000 --- a/examples/positioning/geoflickr/flickrmobile/ImageDetails.qml +++ /dev/null @@ -1,166 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples 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 "../flickrcommon" as Common - -Flipable { - id: container - - property var frontContainer: containerFront - property string photoTitle: "" - property string photoDate - property string photoUrl - property real prevScale: 1.0 - - signal closed - - transform: Rotation { - id: itemRotation - origin.x: container.width / 2; - axis.y: 1; axis.z: 0 - } - - front: Item { - id: containerFront; anchors.fill: container - - Rectangle { - anchors.fill: parent - color: "black"; opacity: 0.4 - } - - Column { - spacing: 10 - anchors { - left: parent.left; leftMargin: 20 - right: parent.right; rightMargin: 20 - top: parent.top; topMargin: 180 - } - Text { font.bold: true; color: "white"; elide: Text.ElideRight; text: container.photoTitle } - Text { color: "white"; elide: Text.ElideRight; text: "<b>Published:</b> " + container.photoDate } - } - } - - back: Item { - anchors.fill: container - - Rectangle { anchors.fill: parent; color: "black"; opacity: 0.4 } - - Common.Progress { - anchors.centerIn: parent; width: 200; height: 18 - progress: bigImage.progress; visible: bigImage.status != Image.Ready - } - - Flickable { - id: flickable; anchors.fill: parent; clip: true - contentWidth: imageContainer.width; contentHeight: imageContainer.height - - Item { - id: imageContainer - width: Math.max(bigImage.width * bigImage.scale, flickable.width); - height: Math.max(bigImage.height * bigImage.scale, flickable.height); - - Image { - id: bigImage; // source: container.photoUrl - source: container.photoUrl - scale: slider.value - anchors.centerIn: parent; smooth: !flickable.movingVertically - onStatusChanged : { - // Default scale shows the entire image. - if (status == Image.Ready && width != 0) { - slider.minimum = Math.min(flickable.width / width, flickable.height / height); - prevScale = Math.min(slider.minimum, 1); - slider.value = prevScale; - } - } - } - } - } - - Text { - text: "Image Unavailable" - visible: bigImage.status == Image.Error - anchors.centerIn: parent; color: "white"; font.bold: true - } - - Common.Slider { - id: slider; visible: { bigImage.status == Image.Ready && maximum > minimum } - anchors { - bottom: parent.bottom; bottomMargin: 65 - left: parent.left; leftMargin: 25 - right: parent.right; rightMargin: 25 - } - onValueChanged: { - if (bigImage.width * value > flickable.width) { - var xoff = (flickable.width/2 + flickable.contentX) * value / prevScale; - flickable.contentX = xoff - flickable.width/2; - } - if (bigImage.height * value > flickable.height) { - var yoff = (flickable.height/2 + flickable.contentY) * value / prevScale; - flickable.contentY = yoff - flickable.height/2; - } - prevScale = value; - } - } - } - - states: State { - name: "Back" - PropertyChanges { target: itemRotation; angle: 180 } - } - - transitions: Transition { - SequentialAnimation { - PropertyAction { target: bigImage; property: "smooth"; value: false } - NumberAnimation { easing.type: Easing.InOutQuad; properties: "angle"; duration: 500 } - PropertyAction { target: bigImage; property: "smooth"; value: !flickable.movingVertically } - } - } -} diff --git a/examples/positioning/geoflickr/flickrmobile/ListDelegate.qml b/examples/positioning/geoflickr/flickrmobile/ListDelegate.qml deleted file mode 100644 index f83f345c..00000000 --- a/examples/positioning/geoflickr/flickrmobile/ListDelegate.qml +++ /dev/null @@ -1,76 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples 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 - Component { - Item { - id: wrapper; width: wrapper.ListView.view.width; height: 86 - Item { - id: moveMe - Rectangle { color: "black"; opacity: index % 2 ? 0.2 : 0.4; height: 84; width: wrapper.width; y: 1 } - Rectangle { - x: 6; y: 4; width: 76; height: 76; color: "white"; smooth: true - - Image { - //source: imagePath; - source: "http://farm" + farm + ".static.flickr.com/" + server + "/" + id + "_" + secret + "_t.jpg" - width: parent.width; height: parent.height - x: 0; y: 0 } - - Image { source: "images/gloss.png" } - } - Column { - x: 92; width: wrapper.ListView.view.width - 95; y: 15; spacing: 2 - Text { text: title; color: "white"; width: parent.width; font.bold: true; elide: Text.ElideRight; style: Text.Raised; styleColor: "black" } - Text { text: datetaken; width: parent.width; elide: Text.ElideRight; color: "#cccccc"; style: Text.Raised; styleColor: "black" } - } - } - } -} diff --git a/examples/positioning/geoflickr/flickrmobile/TitleBar.qml b/examples/positioning/geoflickr/flickrmobile/TitleBar.qml deleted file mode 100644 index 883042ae..00000000 --- a/examples/positioning/geoflickr/flickrmobile/TitleBar.qml +++ /dev/null @@ -1,87 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples 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 { - id: titleBar - BorderImage { source: "images/titlebar.sci"; width: parent.width; height: parent.height + 14; y: -7 } - - Item { - id: container - width: (parent.width * 2) - 55 ; height: parent.height - - Image { - id: quitButton - anchors.left: parent.left//; anchors.leftMargin: 0 - anchors.verticalCenter: parent.verticalCenter - source: "images/quit.png" - MouseArea { - anchors.fill: parent - onClicked: Qt.quit() - } - } - - Text { - id: categoryText - anchors { - left: quitButton.right; leftMargin: 10; rightMargin: 10 - verticalCenter: parent.verticalCenter - } - elide: Text.ElideLeft - text: "GeoFlickr (QML)" - font.bold: true; color: "White"; style: Text.Raised; styleColor: "Black" - } - } - - transitions: Transition { - NumberAnimation { properties: "x"; easing.type: Easing.InOutQuad } - } -} diff --git a/examples/positioning/geoflickr/flickrmobile/ToolBar.qml b/examples/positioning/geoflickr/flickrmobile/ToolBar.qml deleted file mode 100644 index cb0a0fd7..00000000 --- a/examples/positioning/geoflickr/flickrmobile/ToolBar.qml +++ /dev/null @@ -1,74 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples 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 { - id: toolbar - - property alias button1Label: button1.text - property alias button2Label: button2.text - signal button1Clicked - signal button2Clicked - - BorderImage { source: "images/titlebar.sci"; width: parent.width; height: parent.height + 14; y: -7 } - - Button { - id: button1 - anchors.left: parent.left; anchors.leftMargin: 5; y: 3; width: 140; height: 32 - onClicked: toolbar.button1Clicked() - } - - Button { - id: button2 - anchors.right: parent.right; anchors.rightMargin: 5; y: 3; width: 140; height: 32 - onClicked: toolbar.button2Clicked() - } -} diff --git a/examples/positioning/geoflickr/flickrmobile/images/gloss.png b/examples/positioning/geoflickr/flickrmobile/images/gloss.png Binary files differdeleted file mode 100644 index dff2bd34..00000000 --- a/examples/positioning/geoflickr/flickrmobile/images/gloss.png +++ /dev/null diff --git a/examples/positioning/geoflickr/flickrmobile/images/lineedit.png b/examples/positioning/geoflickr/flickrmobile/images/lineedit.png Binary files differdeleted file mode 100644 index a6afb512..00000000 --- a/examples/positioning/geoflickr/flickrmobile/images/lineedit.png +++ /dev/null diff --git a/examples/positioning/geoflickr/flickrmobile/images/lineedit.sci b/examples/positioning/geoflickr/flickrmobile/images/lineedit.sci deleted file mode 100644 index 054bff78..00000000 --- a/examples/positioning/geoflickr/flickrmobile/images/lineedit.sci +++ /dev/null @@ -1,5 +0,0 @@ -border.left: 10 -border.top: 10 -border.bottom: 10 -border.right: 10 -source: lineedit.png diff --git a/examples/positioning/geoflickr/flickrmobile/images/moon.png b/examples/positioning/geoflickr/flickrmobile/images/moon.png Binary files differdeleted file mode 100644 index 1583ac83..00000000 --- a/examples/positioning/geoflickr/flickrmobile/images/moon.png +++ /dev/null diff --git a/examples/positioning/geoflickr/flickrmobile/images/quit.png b/examples/positioning/geoflickr/flickrmobile/images/quit.png Binary files differdeleted file mode 100644 index aef73853..00000000 --- a/examples/positioning/geoflickr/flickrmobile/images/quit.png +++ /dev/null diff --git a/examples/positioning/geoflickr/flickrmobile/images/star.png b/examples/positioning/geoflickr/flickrmobile/images/star.png Binary files differdeleted file mode 100644 index bdcd3690..00000000 --- a/examples/positioning/geoflickr/flickrmobile/images/star.png +++ /dev/null diff --git a/examples/positioning/geoflickr/flickrmobile/images/stripes.png b/examples/positioning/geoflickr/flickrmobile/images/stripes.png Binary files differdeleted file mode 100644 index 75d2bf6c..00000000 --- a/examples/positioning/geoflickr/flickrmobile/images/stripes.png +++ /dev/null diff --git a/examples/positioning/geoflickr/flickrmobile/images/sun.png b/examples/positioning/geoflickr/flickrmobile/images/sun.png Binary files differdeleted file mode 100644 index c5fd36ed..00000000 --- a/examples/positioning/geoflickr/flickrmobile/images/sun.png +++ /dev/null diff --git a/examples/positioning/geoflickr/flickrmobile/images/titlebar.png b/examples/positioning/geoflickr/flickrmobile/images/titlebar.png Binary files differdeleted file mode 100644 index aa35c9e1..00000000 --- a/examples/positioning/geoflickr/flickrmobile/images/titlebar.png +++ /dev/null diff --git a/examples/positioning/geoflickr/flickrmobile/images/titlebar.sci b/examples/positioning/geoflickr/flickrmobile/images/titlebar.sci deleted file mode 100644 index 0418d94c..00000000 --- a/examples/positioning/geoflickr/flickrmobile/images/titlebar.sci +++ /dev/null @@ -1,5 +0,0 @@ -border.left: 10 -border.top: 12 -border.bottom: 12 -border.right: 10 -source: titlebar.png diff --git a/examples/positioning/geoflickr/flickrmobile/images/toolbutton.png b/examples/positioning/geoflickr/flickrmobile/images/toolbutton.png Binary files differdeleted file mode 100644 index 11310013..00000000 --- a/examples/positioning/geoflickr/flickrmobile/images/toolbutton.png +++ /dev/null diff --git a/examples/positioning/geoflickr/flickrmobile/images/toolbutton.sci b/examples/positioning/geoflickr/flickrmobile/images/toolbutton.sci deleted file mode 100644 index 9e4f9653..00000000 --- a/examples/positioning/geoflickr/flickrmobile/images/toolbutton.sci +++ /dev/null @@ -1,5 +0,0 @@ -border.left: 15 -border.top: 4 -border.bottom: 4 -border.right: 15 -source: toolbutton.png diff --git a/examples/positioning/geoflickr/flickrmobile/nmealog.txt b/examples/positioning/geoflickr/flickrmobile/nmealog.txt deleted file mode 100644 index 8c8286dd..00000000 --- a/examples/positioning/geoflickr/flickrmobile/nmealog.txt +++ /dev/null @@ -1,1403 +0,0 @@ -$GPGGA,222437.000,2734.33926,S,15305.44310,E,1,07,1.3,50.6,M,39.2,M,,*72 -$GPGLL,2734.33926,S,15305.44310,E,222437.000,A,A*49 -$GPGSA,A,3,16,25,23,20,13,27,11,,,,,,2.3,1.3,1.9*3D -$GPGST,222437.000,13.3,7.4,6.6,85.1,6.0,6.8,13.7*56 -$GPGSV,3,1,10,16,49,115,42,25,39,269,36,23,58,176,29,20,72,335,35*75 -$GPGSV,3,2,10,19,02,028,,04,06,241,22,13,30,223,30,27,19,284,35*78 -$GPGSV,3,3,10,11,06,337,30,03,13,055,25*7C -$GPRMC,222437.000,A,2734.33926,S,15305.44310,E,33.9,157.8,030308,11.2,W,A*0F -$GPVTG,157.8,T,169.0,M,33.9,N,62.9,K,A*22 -$GPGGA,222438.000,2734.34821,S,15305.44697,E,1,07,1.2,50.8,M,39.2,M,,*79 -$GPGLL,2734.34821,S,15305.44697,E,222438.000,A,A*4D -$GPGSA,A,3,16,25,23,20,13,27,03,,,,,,2.1,1.2,1.7*33 -$GPGST,222438.000,12.4,6.4,9.3,16.2,6.1,8.3,16.4*5F -$GPGSV,3,1,10,16,49,115,41,25,39,269,36,23,58,176,28,20,72,335,36*74 -$GPGSV,3,2,10,19,02,028,,04,06,241,20,13,30,223,28,27,19,284,35*73 -$GPGSV,3,3,10,11,06,337,28,03,13,055,25*75 -$GPRMC,222438.000,A,2734.34821,S,15305.44697,E,33.8,158.3,030308,11.2,W,A*0E -$GPVTG,158.3,T,169.5,M,33.8,N,62.5,K,A*2E -$GPGGA,222439.000,2734.35696,S,15305.45072,E,1,06,1.7,51.2,M,39.2,M,,*78 -$GPGLL,2734.35696,S,15305.45072,E,222439.000,A,A*43 -$GPGSA,A,3,16,25,23,20,13,27,,,,,,,3.3,1.7,2.8*3A -$GPGST,222439.000,10.3,9.1,12.2,44.6,9.8,9.9,25.2*62 -$GPGSV,3,1,10,16,49,115,34,25,39,269,36,23,58,175,29,20,72,335,35*77 -$GPGSV,3,2,10,19,02,028,,04,06,241,20,13,30,223,27,27,19,284,32*7B -$GPGSV,3,3,10,11,06,337,28,03,14,055,25*72 -$GPRMC,222439.000,A,2734.35696,S,15305.45072,E,33.2,158.7,030308,11.2,W,A*0E -$GPVTG,158.7,T,169.9,M,33.2,N,61.5,K,A*2F -$GPGGA,222440.000,2734.36580,S,15305.45446,E,1,07,1.3,52.0,M,39.2,M,,*76 -$GPGLL,2734.36580,S,15305.45446,E,222440.000,A,A*49 -$GPGSA,A,3,16,25,23,20,13,27,11,,,,,,2.3,1.3,1.9*3D -$GPGST,222440.000,13.0,8.0,13.4,6.2,7.4,12.2,20.9*64 -$GPGSV,3,1,10,16,49,115,40,25,39,269,38,23,58,175,31,20,72,335,34*72 -$GPGSV,3,2,10,19,02,028,,04,06,241,20,13,30,223,26,27,19,284,30*78 -$GPGSV,3,3,10,11,06,337,26,03,14,055,25*7C -$GPRMC,222440.000,A,2734.36580,S,15305.45446,E,33.7,159.1,030308,11.2,W,A*06 -$GPVTG,159.1,T,170.3,M,33.7,N,62.4,K,A*2D -$GPGGA,222441.000,2734.37483,S,15305.45825,E,1,07,1.3,52.7,M,39.2,M,,*7A -$GPGLL,2734.37483,S,15305.45825,E,222441.000,A,A*42 -$GPGSA,A,3,16,25,23,20,13,27,11,,,,,,2.3,1.3,1.9*3D -$GPGST,222441.000,14.0,7.6,14.1,17.6,7.7,12.5,21.0*51 -$GPGSV,3,1,10,16,49,115,41,25,39,269,39,23,58,175,29,20,72,335,35*7A -$GPGSV,3,2,10,19,02,028,,04,06,241,20,13,30,223,24,27,19,284,30*7A -$GPGSV,3,3,10,11,06,337,28,03,14,055,25*72 -$GPRMC,222441.000,A,2734.37483,S,15305.45825,E,34.6,159.4,030308,11.2,W,A*0E -$GPVTG,159.4,T,170.6,M,34.6,N,64.1,K,A*28 -$GPGGA,222442.000,2734.38407,S,15305.46216,E,1,06,1.3,53.3,M,39.2,M,,*77 -$GPGLL,2734.38407,S,15305.46216,E,222442.000,A,A*4B -$GPGSA,A,3,16,25,20,13,27,11,,,,,,,2.3,1.3,1.9*3C -$GPGST,222442.000,16.6,7.0,14.4,14.6,7.0,12.8,21.6*5A -$GPGSV,3,1,10,16,49,115,40,25,39,269,38,23,58,175,22,20,72,335,35*71 -$GPGSV,3,2,10,19,02,028,,04,06,241,20,13,30,223,25,27,19,284,29*73 -$GPGSV,3,3,10,11,06,337,27,03,14,055,25*7D -$GPRMC,222442.000,A,2734.38407,S,15305.46216,E,35.5,159.3,030308,11.2,W,A*02 -$GPVTG,159.3,T,170.5,M,35.5,N,65.8,K,A*26 -$GPGGA,222443.000,2734.39347,S,15305.46609,E,1,05,1.8,53.8,M,39.2,M,,*7D -$GPGLL,2734.39347,S,15305.46609,E,222443.000,A,A*42 -$GPGSA,A,3,16,25,20,27,11,,,,,,,,2.8,1.8,2.1*35 -$GPGST,222443.000,11.3,6.5,14.6,14.5,6.6,13.0,18.4*5A -$GPGSV,3,1,10,16,49,115,40,25,39,269,38,23,58,175,22,20,72,335,36*72 -$GPGSV,3,2,10,19,02,028,,04,06,241,20,13,30,223,26,27,19,284,31*79 -$GPGSV,3,3,10,11,06,337,28,03,14,055,25*72 -$GPRMC,222443.000,A,2734.39347,S,15305.46609,E,36.2,159.4,030308,11.2,W,A*08 -$GPVTG,159.4,T,170.6,M,36.2,N,67.0,K,A*2C -$GPGGA,222444.000,2734.40297,S,15305.47000,E,1,06,1.3,54.1,M,39.2,M,,*70 -$GPGLL,2734.40297,S,15305.47000,E,222444.000,A,A*49 -$GPGSA,A,3,16,25,20,13,27,11,,,,,,,2.3,1.3,1.9*3C -$GPGST,222444.000,17.6,6.3,12.7,14.4,6.3,11.4,16.2*55 -$GPGSV,3,1,10,16,49,115,38,25,39,269,38,23,58,175,22,20,72,335,35*7E -$GPGSV,3,2,10,19,02,028,,04,06,241,20,13,30,223,25,27,19,284,29*73 -$GPGSV,3,3,10,11,06,337,25,03,14,055,23*79 -$GPRMC,222444.000,A,2734.40297,S,15305.47000,E,36.5,159.5,030308,11.2,W,A*05 -$GPVTG,159.5,T,170.8,M,36.5,N,67.5,K,A*21 -$GPGGA,222445.000,2734.41247,S,15305.47390,E,1,07,1.3,54.2,M,39.2,M,,*75 -$GPGLL,2734.41247,S,15305.47390,E,222445.000,A,A*4E -$GPGSA,A,3,16,25,23,20,13,27,11,,,,,,2.3,1.3,1.9*3D -$GPGST,222445.000,16.0,7.0,14.4,10.4,6.7,13.0,20.7*52 -$GPGSV,3,1,10,16,49,115,36,25,39,269,36,23,58,175,22,20,72,335,34*7F -$GPGSV,3,2,10,19,02,028,,04,06,241,20,13,30,223,26,27,19,284,31*79 -$GPGSV,3,3,10,11,06,337,26,03,14,055,23*7A -$GPRMC,222445.000,A,2734.41247,S,15305.47390,E,36.6,159.7,030308,11.2,W,A*03 -$GPVTG,159.7,T,170.9,M,36.6,N,67.8,K,A*2C -$GPGGA,222446.000,2734.42201,S,15305.47790,E,1,07,1.3,54.4,M,39.2,M,,*75 -$GPGLL,2734.42201,S,15305.47790,E,222446.000,A,A*48 -$GPGSA,A,3,16,25,23,20,13,27,11,,,,,,2.3,1.3,1.9*3D -$GPGST,222446.000,13.0,7.4,12.3,6.6,6.9,11.2,17.9*60 -$GPGSV,3,1,10,16,49,115,36,25,39,269,37,23,58,175,27,20,72,335,35*7A -$GPGSV,3,2,10,19,02,028,,04,06,241,23,13,30,223,30,27,19,284,32*7E -$GPGSV,3,3,10,11,06,337,27,03,14,055,23*7B -$GPRMC,222446.000,A,2734.42201,S,15305.47790,E,36.6,159.3,030308,11.2,W,A*01 -$GPVTG,159.3,T,170.5,M,36.6,N,67.7,K,A*2B -$GPGGA,222447.000,2734.43157,S,15305.48195,E,1,07,1.3,54.3,M,39.2,M,,*7E -$GPGLL,2734.43157,S,15305.48195,E,222447.000,A,A*44 -$GPGSA,A,3,16,25,23,20,13,27,11,,,,,,2.3,1.3,1.9*3D -$GPGST,222447.000,10.7,6.7,10.5,6.6,6.2,9.6,15.5*5B -$GPGSV,3,1,11,16,49,115,32,25,39,269,37,23,58,175,28,20,72,335,33*76 -$GPGSV,3,2,11,19,02,028,,04,06,241,23,13,30,223,30,27,19,284,32*7F -$GPGSV,3,3,11,11,06,337,29,01,,,19,03,14,055,23*7D -$GPRMC,222447.000,A,2734.43157,S,15305.48195,E,36.7,159.1,030308,11.2,W,A*0E -$GPVTG,159.1,T,170.3,M,36.7,N,67.9,K,A*20 -$GPGGA,222448.000,2734.44111,S,15305.48610,E,1,08,1.1,54.1,M,39.2,M,,*71 -$GPGLL,2734.44111,S,15305.48610,E,222448.000,A,A*44 -$GPGSA,A,3,16,25,23,20,13,27,11,03,,,,,2.0,1.1,1.6*30 -$GPGST,222448.000,20.4,10.5,8.8,52.5,8.7,9.1,15.2*6C -$GPGSV,3,1,11,16,49,115,27,25,39,269,38,23,58,175,26,20,72,335,31*71 -$GPGSV,3,2,11,19,02,028,,04,06,241,23,13,30,223,37,27,19,284,27*7C -$GPGSV,3,3,11,11,06,337,27,01,,,19,03,14,055,23*73 -$GPRMC,222448.000,A,2734.44111,S,15305.48610,E,36.8,158.7,030308,11.2,W,A*06 -$GPVTG,158.7,T,169.9,M,36.8,N,68.2,K,A*2E -$GPGGA,222449.000,2734.45068,S,15305.49044,E,1,08,1.1,53.6,M,39.2,M,,*78 -$GPGLL,2734.45068,S,15305.49044,E,222449.000,A,A*4D -$GPGSA,A,3,16,25,23,20,13,27,11,03,,,,,2.0,1.1,1.6*30 -$GPGST,222449.000,17.1,8.8,10.2,14.2,8.2,9.3,17.4*6D -$GPGSV,3,1,11,16,49,115,28,25,39,269,37,23,58,175,25,20,72,335,28*7A -$GPGSV,3,2,11,19,02,028,,04,06,241,23,13,30,223,37,27,19,284,32*78 -$GPGSV,3,3,11,11,06,337,27,01,,,19,03,14,055,24*74 -$GPRMC,222449.000,A,2734.45068,S,15305.49044,E,37.2,157.8,030308,11.2,W,A*04 -$GPVTG,157.8,T,169.0,M,37.2,N,68.9,K,A*27 -$GPGGA,222450.000,2734.46041,S,15305.49485,E,1,08,1.1,53.3,M,39.2,M,,*74 -$GPGLL,2734.46041,S,15305.49485,E,222450.000,A,A*44 -$GPGSA,A,3,16,25,23,20,13,27,11,03,,,,,2.0,1.1,1.6*30 -$GPGST,222450.000,17.4,8.9,12.7,10.1,11.5,8.2,16.5*5E -$GPGSV,3,1,11,16,49,115,25,25,39,269,36,23,58,175,30,20,72,336,28*71 -$GPGSV,3,2,11,19,02,028,,04,06,241,21,13,30,223,38,27,19,284,34*73 -$GPGSV,3,3,11,11,06,337,27,01,,,19,03,14,055,22*72 -$GPRMC,222450.000,A,2734.46041,S,15305.49485,E,37.7,157.9,030308,11.2,W,A*09 -$GPVTG,157.9,T,169.1,M,37.7,N,69.8,K,A*22 -$GPGGA,222451.000,2734.47033,S,15305.49924,E,1,08,1.1,53.1,M,39.2,M,,*75 -$GPGLL,2734.47033,S,15305.49924,E,222451.000,A,A*47 -$GPGSA,A,3,16,25,23,20,13,27,11,03,,,,,2.0,1.1,1.6*30 -$GPGST,222451.000,14.1,8.0,10.5,14.3,9.5,7.5,15.0*61 -$GPGSV,3,1,11,16,49,115,27,25,39,269,38,23,58,175,28,20,72,336,25*79 -$GPGSV,3,2,11,19,02,028,,04,06,241,21,13,30,223,38,27,19,284,34*73 -$GPGSV,3,3,11,11,06,337,24,01,,,19,03,14,055,25*76 -$GPRMC,222451.000,A,2734.47033,S,15305.49924,E,38.1,158.1,030308,11.2,W,A*04 -$GPVTG,158.1,T,169.3,M,38.1,N,70.5,K,A*2B -$GPGGA,222452.000,2734.48022,S,15305.50375,E,1,08,1.1,52.5,M,39.2,M,,*7A -$GPGLL,2734.48022,S,15305.50375,E,222452.000,A,A*4D -$GPGSA,A,3,16,25,23,20,13,27,11,03,,,,,2.0,1.1,1.6*30 -$GPGST,222452.000,24.1,13.9,9.7,80.6,12.7,9.0,21.0*54 -$GPGSV,3,1,11,16,49,115,29,25,39,269,38,23,58,175,27,20,72,336,30*7C -$GPGSV,3,2,11,19,02,028,,04,06,241,21,13,30,223,35,27,19,284,34*7E -$GPGSV,3,3,11,11,06,337,22,01,,,19,03,14,055,24*71 -$GPRMC,222452.000,A,2734.48022,S,15305.50375,E,38.3,157.9,030308,11.2,W,A*0B -$GPVTG,157.9,T,169.1,M,38.3,N,70.9,K,A*20 -$GPGGA,222453.000,2734.49019,S,15305.50802,E,1,06,1.7,52.1,M,39.2,M,,*75 -$GPGLL,2734.49019,S,15305.50802,E,222453.000,A,A*4E -$GPGSA,A,3,16,25,23,20,13,27,,,,,,,3.3,1.7,2.8*3A -$GPGST,222453.000,10.4,15.4,9.3,66.3,13.4,9.6,24.6*52 -$GPGSV,3,1,11,16,49,115,31,25,39,269,36,23,58,175,28,20,71,336,25*73 -$GPGSV,3,2,11,19,02,028,,04,06,241,21,13,30,223,33,27,19,284,31*7D -$GPGSV,3,3,11,11,06,337,22,01,,,19,03,14,055,24*71 -$GPRMC,222453.000,A,2734.49019,S,15305.50802,E,38.3,159.1,030308,11.2,W,A*0E -$GPVTG,159.1,T,170.3,M,38.3,N,70.9,K,A*2C -$GPGGA,222454.000,2734.50008,S,15305.51221,E,1,07,1.3,52.1,M,39.2,M,,*75 -$GPGLL,2734.50008,S,15305.51221,E,222454.000,A,A*4B -$GPGSA,A,3,16,25,23,20,13,27,11,,,,,,2.3,1.3,1.9*3D -$GPGST,222454.000,12.5,11.7,8.3,70.6,10.4,8.0,19.0*5E -$GPGSV,3,1,11,16,49,115,30,25,39,269,36,23,58,175,26,20,71,336,28*71 -$GPGSV,3,2,11,19,02,028,,04,06,241,21,13,30,223,32,27,19,284,30*7D -$GPGSV,3,3,11,11,06,337,24,01,,,18,03,14,055,24*76 -$GPRMC,222454.000,A,2734.50008,S,15305.51221,E,38.1,159.4,030308,11.2,W,A*0C -$GPVTG,159.4,T,170.6,M,38.1,N,70.5,K,A*22 -$GPGGA,222455.000,2734.50992,S,15305.51642,E,1,07,1.3,52.2,M,39.2,M,,*7C -$GPGLL,2734.50992,S,15305.51642,E,222455.000,A,A*41 -$GPGSA,A,3,16,25,23,20,13,27,11,,,,,,2.3,1.3,1.9*3D -$GPGST,222455.000,11.5,10.8,9.3,83.5,9.9,8.6,23.3*65 -$GPGSV,3,1,11,16,49,115,33,25,39,269,36,23,58,175,32,20,71,336,31*7F -$GPGSV,3,2,11,19,02,028,,04,06,241,21,13,30,223,29,27,19,284,29*7F -$GPGSV,3,3,11,11,06,337,28,01,,,18,03,14,055,24*7A -$GPRMC,222455.000,A,2734.50992,S,15305.51642,E,37.8,159.0,030308,11.2,W,A*04 -$GPVTG,159.0,T,170.2,M,37.8,N,70.0,K,A*21 -$GPGGA,222456.000,2734.51963,S,15305.52059,E,1,07,1.3,52.5,M,39.2,M,,*78 -$GPGLL,2734.51963,S,15305.52059,E,222456.000,A,A*42 -$GPGSA,A,3,16,25,23,20,13,27,11,,,,,,2.3,1.3,1.9*3D -$GPGST,222456.000,11.3,9.0,13.1,11.0,8.4,11.9,20.9*55 -$GPGSV,3,1,11,16,49,115,31,25,39,269,37,23,58,175,27,20,71,336,33*7A -$GPGSV,3,2,11,19,02,028,,04,06,241,19,13,30,223,29,27,19,284,32*7E -$GPGSV,3,3,11,11,06,337,30,01,,,18,03,14,055,24*73 -$GPRMC,222456.000,A,2734.51963,S,15305.52059,E,37.3,158.8,030308,11.2,W,A*05 -$GPVTG,158.8,T,170.0,M,37.3,N,69.1,K,A*28 -$GPGGA,222457.000,2734.52908,S,15305.52467,E,1,06,1.3,53.2,M,39.2,M,,*79 -$GPGLL,2734.52908,S,15305.52467,E,222457.000,A,A*44 -$GPGSA,A,3,16,25,20,13,27,11,,,,,,,2.3,1.3,1.9*3C -$GPGST,222457.000,20.4,7.8,12.0,8.1,7.3,10.9,17.9*63 -$GPGSV,3,1,11,16,49,115,37,25,39,269,37,23,58,175,24,20,71,336,35*79 -$GPGSV,3,2,11,19,02,028,,04,06,241,19,13,30,223,29,27,19,284,32*7E -$GPGSV,3,3,11,11,06,337,28,01,,,18,03,14,055,23*7D -$GPRMC,222457.000,A,2734.52908,S,15305.52467,E,36.2,158.7,030308,11.2,W,A*0C -$GPVTG,158.7,T,169.9,M,36.2,N,67.1,K,A*28 -$GPGGA,222458.000,2734.53845,S,15305.52866,E,1,06,1.6,54.2,M,39.2,M,,*70 -$GPGLL,2734.53845,S,15305.52866,E,222458.000,A,A*4F -$GPGSA,A,3,16,25,23,20,27,11,,,,,,,2.6,1.6,2.1*34 -$GPGST,222458.000,16.7,7.3,13.9,11.0,7.0,12.5,17.9*5D -$GPGSV,3,1,11,16,49,115,36,25,39,269,37,23,58,175,24,20,71,336,35*78 -$GPGSV,3,2,11,19,02,028,19,04,06,241,19,13,30,223,26,27,19,284,31*7A -$GPGSV,3,3,11,11,06,337,23,01,,,18,03,14,055,23*76 -$GPRMC,222458.000,A,2734.53845,S,15305.52866,E,35.9,159.1,030308,11.2,W,A*08 -$GPVTG,159.1,T,170.3,M,35.9,N,66.5,K,A*20 -$GPGGA,222459.000,2734.54772,S,15305.53309,E,1,08,1.1,55.6,M,39.2,M,,*72 -$GPGLL,2734.54772,S,15305.53309,E,222459.000,A,A*41 -$GPGSA,A,3,16,25,23,20,13,27,11,03,,,,,2.0,1.1,1.6*30 -$GPGST,222459.000,17.5,6.5,9.3,15.5,6.1,8.3,15.2*5C -$GPGSV,3,1,11,16,49,115,38,25,39,268,36,23,58,175,35,20,71,336,35*76 -$GPGSV,3,2,11,19,02,028,19,04,06,241,19,13,30,223,33,27,19,284,34*7B -$GPGSV,3,3,11,11,06,337,29,01,,,18,03,14,055,22*7D -$GPRMC,222459.000,A,2734.54772,S,15305.53309,E,35.9,156.8,030308,11.2,W,A*00 -$GPVTG,156.8,T,168.0,M,35.9,N,66.4,K,A*2D -$GPGGA,222500.000,2734.55655,S,15305.53845,E,1,08,1.1,56.1,M,39.2,M,,*7D -$GPGLL,2734.55655,S,15305.53845,E,222500.000,A,A*4A -$GPGSA,A,3,16,25,23,20,13,27,11,03,,,,,2.0,1.1,1.6*30 -$GPGST,222500.000,14.5,9.8,7.9,83.3,7.3,9.0,14.3*5C -$GPGSV,3,1,11,16,49,115,36,25,39,268,31,23,58,175,39,20,71,336,33*75 -$GPGSV,3,2,11,19,02,028,21,04,06,241,19,13,30,223,30,27,19,284,29*7F -$GPGSV,3,3,11,11,06,337,25,01,,,18,03,14,055,28*7B -$GPRMC,222500.000,A,2734.55655,S,15305.53845,E,35.9,151.6,030308,11.2,W,A*02 -$GPVTG,151.6,T,162.8,M,35.9,N,66.5,K,A*27 -$GPGGA,222501.000,2734.56495,S,15305.54489,E,1,08,1.1,57.0,M,39.2,M,,*7A -$GPGLL,2734.56495,S,15305.54489,E,222501.000,A,A*4D -$GPGSA,A,3,16,25,23,20,13,27,11,03,,,,,2.0,1.1,1.6*30 -$GPGST,222501.000,14.3,8.0,10.9,27.0,8.0,9.5,15.6*64 -$GPGSV,3,1,11,16,49,115,41,25,39,268,31,23,58,175,36,20,71,336,31*78 -$GPGSV,3,2,11,19,02,028,21,04,06,241,19,13,30,223,27,27,19,284,29*79 -$GPGSV,3,3,11,11,06,337,22,01,,,18,03,14,055,31*74 -$GPRMC,222501.000,A,2734.56495,S,15305.54489,E,36.5,145.7,030308,11.2,W,A*0E -$GPVTG,145.7,T,156.9,M,36.5,N,67.5,K,A*2B -$GPGGA,222502.000,2734.57337,S,15305.55181,E,1,06,1.5,57.9,M,39.2,M,,*78 -$GPGLL,2734.57337,S,15305.55181,E,222502.000,A,A*4C -$GPGSA,A,3,16,25,23,20,27,03,,,,,,,2.5,1.5,2.0*36 -$GPGST,222502.000,14.5,7.0,11.9,20.7,7.1,10.5,15.0*5F -$GPGSV,3,1,11,16,49,115,43,25,39,268,35,23,58,175,37,20,71,336,34*7A -$GPGSV,3,2,11,19,02,028,21,04,06,241,19,13,30,223,23,27,19,284,33*76 -$GPGSV,3,3,11,11,06,337,22,01,,,18,03,14,055,34*71 -$GPRMC,222502.000,A,2734.57337,S,15305.55181,E,37.4,143.8,030308,11.2,W,A*06 -$GPVTG,143.8,T,155.0,M,37.4,N,69.3,K,A*20 -$GPGGA,222503.000,2734.58184,S,15305.55887,E,1,08,1.1,58.5,M,39.2,M,,*7A -$GPGLL,2734.58184,S,15305.55887,E,222503.000,A,A*47 -$GPGSA,A,3,16,25,23,20,13,27,11,03,,,,,2.0,1.1,1.6*30 -$GPGST,222503.000,13.4,6.4,14.1,0.3,5.9,12.9,21.5*60 -$GPGSV,3,1,11,16,49,115,43,25,39,268,35,23,58,175,38,20,71,336,35*74 -$GPGSV,3,2,11,19,02,028,19,04,06,241,19,13,30,223,23,27,19,284,32*7C -$GPGSV,3,3,11,11,06,337,26,01,,,17,03,14,055,34*7A -$GPRMC,222503.000,A,2734.58184,S,15305.55887,E,37.8,143.4,030308,11.2,W,A*0D -$GPVTG,143.4,T,154.6,M,37.8,N,70.0,K,A*2C -$GPGGA,222504.000,2734.59032,S,15305.56580,E,1,07,1.2,58.9,M,39.2,M,,*79 -$GPGLL,2734.59032,S,15305.56580,E,222504.000,A,A*44 -$GPGSA,A,3,16,25,23,20,13,27,03,,,,,,2.1,1.2,1.7*33 -$GPGST,222504.000,24.6,6.2,13.3,3.6,5.7,12.2,20.2*67 -$GPGSV,3,1,11,16,49,115,43,25,39,268,35,23,58,175,39,20,71,336,35*75 -$GPGSV,3,2,11,19,02,028,19,04,06,241,19,13,30,223,22,27,19,284,31*7E -$GPGSV,3,3,11,11,06,337,25,01,,,17,03,14,055,30*7D -$GPRMC,222504.000,A,2734.59032,S,15305.56580,E,37.6,143.6,030308,11.2,W,A*02 -$GPVTG,143.6,T,154.8,M,37.6,N,69.7,K,A*21 -$GPGGA,222505.000,2734.59874,S,15305.57271,E,1,06,1.5,59.4,M,39.2,M,,*70 -$GPGLL,2734.59874,S,15305.57271,E,222505.000,A,A*47 -$GPGSA,A,3,16,25,23,20,27,03,,,,,,,2.5,1.5,2.0*36 -$GPGST,222505.000,17.4,5.5,11.8,3.4,5.0,10.8,17.3*61 -$GPGSV,3,1,11,16,49,115,44,25,39,268,35,23,58,175,39,20,71,336,36*71 -$GPGSV,3,2,11,19,02,028,21,04,06,241,19,13,30,223,24,27,19,284,31*73 -$GPGSV,3,3,11,11,06,337,,01,,,17,03,14,055,29*72 -$GPRMC,222505.000,A,2734.59874,S,15305.57271,E,37.3,143.7,030308,11.2,W,A*05 -$GPVTG,143.7,T,154.9,M,37.3,N,69.1,K,A*22 -$GPGGA,222506.000,2734.60703,S,15305.57943,E,1,07,1.2,60.1,M,39.2,M,,*75 -$GPGLL,2734.60703,S,15305.57943,E,222506.000,A,A*4B -$GPGSA,A,3,16,25,23,20,13,27,03,,,,,,2.1,1.2,1.7*33 -$GPGST,222506.000,16.1,6.2,11.7,15.3,6.1,10.4,17.4*54 -$GPGSV,3,1,11,16,49,115,43,25,39,268,34,23,58,175,37,20,71,336,36*79 -$GPGSV,3,2,11,19,02,028,21,04,06,241,,13,30,223,24,27,19,284,31*7B -$GPGSV,3,3,11,11,06,337,,01,,,17,03,14,055,28*73 -$GPRMC,222506.000,A,2734.60703,S,15305.57943,E,36.5,143.9,030308,11.2,W,A*00 -$GPVTG,143.9,T,155.1,M,36.5,N,67.6,K,A*2B -$GPGGA,222507.000,2734.61507,S,15305.58593,E,1,07,1.2,60.9,M,39.2,M,,*75 -$GPGLL,2734.61507,S,15305.58593,E,222507.000,A,A*43 -$GPGSA,A,3,16,25,23,20,13,27,03,,,,,,2.1,1.2,1.7*33 -$GPGST,222507.000,14.0,6.8,11.8,10.9,6.4,10.7,18.5*54 -$GPGSV,3,1,11,16,49,115,43,25,39,268,34,23,58,175,37,20,71,336,34*7B -$GPGSV,3,2,11,19,02,028,21,04,06,241,,13,30,223,29,27,19,284,34*73 -$GPGSV,3,3,11,11,06,337,,01,,,17,03,14,055,29*72 -$GPRMC,222507.000,A,2734.61507,S,15305.58593,E,35.4,143.9,030308,11.2,W,A*0A -$GPVTG,143.9,T,155.1,M,35.4,N,65.5,K,A*28 -$GPGGA,222508.000,2734.62275,S,15305.59221,E,1,06,1.7,61.8,M,39.2,M,,*70 -$GPGLL,2734.62275,S,15305.59221,E,222508.000,A,A*42 -$GPGSA,A,3,16,25,23,20,13,27,,,,,,,3.3,1.7,2.8*3A -$GPGST,222508.000,12.5,9.3,16.3,19.5,9.4,14.4,27.5*51 -$GPGSV,3,1,11,16,49,115,43,25,39,268,33,23,58,175,38,20,71,336,31*76 -$GPGSV,3,2,11,19,02,028,21,04,06,241,,13,30,223,30,27,19,284,35*7A -$GPGSV,3,3,11,11,06,337,,01,,,17,03,14,055,28*73 -$GPRMC,222508.000,A,2734.62275,S,15305.59221,E,33.9,143.9,030308,11.2,W,A*00 -$GPVTG,143.9,T,155.1,M,33.9,N,62.9,K,A*28 -$GPGGA,222509.000,2734.63006,S,15305.59817,E,1,06,1.7,62.7,M,39.2,M,,*75 -$GPGLL,2734.63006,S,15305.59817,E,222509.000,A,A*4B -$GPGSA,A,3,16,25,23,20,13,27,,,,,,,3.3,1.7,2.8*3A -$GPGST,222509.000,10.4,8.1,14.2,21.9,8.4,12.3,23.7*52 -$GPGSV,3,1,11,16,49,115,44,25,39,268,32,23,58,175,37,20,71,336,29*76 -$GPGSV,3,2,11,19,02,028,21,04,06,241,,13,30,223,28,27,19,284,35*73 -$GPGSV,3,3,11,11,06,337,,01,,,17,03,14,055,30*7A -$GPRMC,222509.000,A,2734.63006,S,15305.59817,E,32.2,143.9,030308,11.2,W,A*03 -$GPVTG,143.9,T,155.1,M,32.2,N,59.7,K,A*24 -$GPGGA,222510.000,2734.63706,S,15305.60376,E,1,06,1.7,63.5,M,39.2,M,,*7F -$GPGLL,2734.63706,S,15305.60376,E,222510.000,A,A*42 -$GPGSA,A,3,16,25,23,20,13,27,,,,,,,3.3,1.7,2.8*3A -$GPGST,222510.000,12.4,8.3,12.9,28.0,8.7,11.0,21.6*57 -$GPGSV,3,1,11,16,48,115,43,25,39,268,32,23,58,175,37,20,71,336,29*70 -$GPGSV,3,2,11,19,02,028,20,04,06,241,,13,30,223,31,27,19,284,35*7A -$GPGSV,3,3,11,11,06,337,,01,,,17,03,14,055,25*7E -$GPRMC,222510.000,A,2734.63706,S,15305.60376,E,30.6,144.3,030308,11.2,W,A*01 -$GPVTG,144.3,T,155.5,M,30.6,N,56.7,K,A*24 -$GPGGA,222511.000,2734.64376,S,15305.60904,E,1,07,1.2,64.4,M,39.2,M,,*77 -$GPGLL,2734.64376,S,15305.60904,E,222511.000,A,A*48 -$GPGSA,A,3,16,25,23,20,13,27,03,,,,,,2.1,1.2,1.7*33 -$GPGST,222511.000,14.6,5.7,10.5,2.7,5.2,9.6,15.0*5C -$GPGSV,3,1,11,16,48,115,44,25,39,268,32,23,58,175,37,20,71,336,28*76 -$GPGSV,3,2,11,19,02,028,20,04,06,241,23,13,30,223,29,27,19,284,36*71 -$GPGSV,3,3,11,11,06,337,,01,,,17,03,14,055,29*72 -$GPRMC,222511.000,A,2734.64376,S,15305.60904,E,29.1,144.2,030308,11.2,W,A*05 -$GPVTG,144.2,T,155.4,M,29.1,N,53.9,K,A*20 -$GPGGA,222512.000,2734.64992,S,15305.61405,E,1,07,1.2,65.4,M,39.2,M,,*78 -$GPGLL,2734.64992,S,15305.61405,E,222512.000,A,A*46 -$GPGSA,A,3,16,25,23,20,13,27,03,,,,,,2.1,1.2,1.7*33 -$GPGST,222512.000,13.4,17.0,5.7,85.6,5.3,15.5,23.6*5A -$GPGSV,3,1,11,16,48,115,45,25,39,268,33,23,58,175,38,20,71,336,28*79 -$GPGSV,3,2,11,19,02,028,20,04,06,241,23,13,30,223,26,27,19,284,33*7B -$GPGSV,3,3,11,11,06,337,24,01,,,17,03,14,055,27*7A -$GPRMC,222512.000,A,2734.64992,S,15305.61405,E,27.2,143.6,030308,11.2,W,A*05 -$GPVTG,143.6,T,154.8,M,27.2,N,50.5,K,A*2C -$GPGGA,222513.000,2734.65572,S,15305.61884,E,1,07,1.2,66.2,M,39.2,M,,*7A -$GPGLL,2734.65572,S,15305.61884,E,222513.000,A,A*41 -$GPGSA,A,3,16,25,23,20,13,27,03,,,,,,2.1,1.2,1.7*33 -$GPGST,222513.000,12.3,7.0,14.8,2.4,6.5,13.5,21.4*6D -$GPGSV,3,1,10,16,48,115,44,25,39,268,35,23,58,175,38,20,71,336,28*7F -$GPGSV,3,2,10,19,02,028,20,04,06,241,23,13,30,223,23,27,19,284,33*7F -$GPGSV,3,3,10,11,06,337,24,03,14,055,28*73 -$GPRMC,222513.000,A,2734.65572,S,15305.61884,E,25.8,143.6,030308,11.2,W,A*0A -$GPVTG,143.6,T,154.8,M,25.8,N,47.9,K,A*2E -$GPGGA,222514.000,2734.66155,S,15305.62364,E,1,06,1.5,67.0,M,39.2,M,,*7C -$GPGLL,2734.66155,S,15305.62364,E,222514.000,A,A*42 -$GPGSA,A,3,16,25,23,20,27,03,,,,,,,2.5,1.5,2.0*36 -$GPGST,222514.000,25.5,6.1,14.4,3.1,5.6,13.2,19.2*6A -$GPGSV,3,1,10,16,48,115,44,25,39,268,33,23,58,175,38,20,71,336,26*77 -$GPGSV,3,2,10,19,02,028,18,04,06,241,23,13,30,223,23,27,19,284,34*73 -$GPGSV,3,3,10,11,06,337,28,03,14,055,29*7E -$GPRMC,222514.000,A,2734.66155,S,15305.62364,E,25.9,143.6,030308,11.2,W,A*08 -$GPVTG,143.6,T,154.8,M,25.9,N,48.0,K,A*29 -$GPGGA,222515.000,2734.66761,S,15305.62860,E,1,06,1.5,67.5,M,39.2,M,,*76 -$GPGLL,2734.66761,S,15305.62860,E,222515.000,A,A*4D -$GPGSA,A,3,16,25,23,20,27,03,,,,,,,2.5,1.5,2.0*36 -$GPGST,222515.000,20.1,5.5,13.0,3.0,5.1,11.8,17.4*68 -$GPGSV,3,1,10,16,48,115,44,25,39,268,32,23,58,175,38,20,71,336,26*76 -$GPGSV,3,2,10,19,02,028,18,04,06,241,23,13,30,223,24,27,19,284,34*74 -$GPGSV,3,3,10,11,06,337,28,03,14,055,24*73 -$GPRMC,222515.000,A,2734.66761,S,15305.62860,E,26.9,143.7,030308,11.2,W,A*05 -$GPVTG,143.7,T,154.9,M,26.9,N,49.8,K,A*23 -$GPGGA,222516.000,2734.67384,S,15305.63376,E,1,06,1.5,68.2,M,39.2,M,,*7E -$GPGLL,2734.67384,S,15305.63376,E,222516.000,A,A*4D -$GPGSA,A,3,16,25,23,20,27,03,,,,,,,2.5,1.5,2.0*36 -$GPGST,222516.000,16.4,5.8,11.5,4.5,5.3,10.5,17.3*6A -$GPGSV,3,1,10,16,48,115,44,25,39,268,32,23,58,175,38,20,71,336,30*71 -$GPGSV,3,2,10,19,02,028,18,04,06,241,23,13,30,223,24,27,19,284,33*73 -$GPGSV,3,3,10,11,06,337,28,03,14,055,28*7F -$GPRMC,222516.000,A,2734.67384,S,15305.63376,E,27.7,143.8,030308,11.2,W,A*05 -$GPVTG,143.8,T,155.0,M,27.7,N,51.4,K,A*2E -$GPGGA,222517.000,2734.68035,S,15305.63901,E,1,06,1.5,68.8,M,39.2,M,,*79 -$GPGLL,2734.68035,S,15305.63901,E,222517.000,A,A*40 -$GPGSA,A,3,16,25,23,20,27,03,,,,,,,2.5,1.5,2.0*36 -$GPGST,222517.000,19.1,6.2,12.1,7.2,5.8,11.0,15.3*66 -$GPGSV,3,1,10,16,48,115,44,25,39,268,34,23,58,175,38,20,71,336,32*75 -$GPGSV,3,2,10,19,02,028,20,04,06,241,23,13,30,223,24,27,19,284,34*7F -$GPGSV,3,3,10,11,06,337,24,03,14,055,29*72 -$GPRMC,222517.000,A,2734.68035,S,15305.63901,E,28.6,144.1,030308,11.2,W,A*08 -$GPVTG,144.1,T,155.3,M,28.6,N,53.0,K,A*2B -$GPGGA,222518.000,2734.68718,S,15305.64446,E,1,07,1.4,69.1,M,39.2,M,,*7F -$GPGLL,2734.68718,S,15305.64446,E,222518.000,A,A*4E -$GPGSA,A,3,16,25,23,20,27,11,03,,,,,,2.4,1.4,1.9*3C -$GPGST,222518.000,13.8,5.5,10.6,5.8,5.1,9.6,13.4*54 -$GPGSV,3,1,10,16,48,115,43,25,39,268,33,23,58,175,37,20,71,336,35*7D -$GPGSV,3,2,10,19,02,028,20,04,06,241,18,13,30,223,24,27,19,284,33*70 -$GPGSV,3,3,10,11,06,337,22,03,14,055,33*7F -$GPRMC,222518.000,A,2734.68718,S,15305.64446,E,29.9,144.4,030308,11.2,W,A*0D -$GPVTG,144.4,T,155.6,M,29.9,N,55.3,K,A*20 -$GPGGA,222519.000,2734.69424,S,15305.65010,E,1,07,1.4,69.5,M,39.2,M,,*71 -$GPGLL,2734.69424,S,15305.65010,E,222519.000,A,A*44 -$GPGSA,A,3,16,25,23,20,27,11,03,,,,,,2.4,1.4,1.9*3C -$GPGST,222519.000,14.0,13.4,5.0,89.4,4.6,12.3,18.8*58 -$GPGSV,3,1,10,16,48,115,44,25,39,268,34,23,58,175,37,20,71,336,37*7F -$GPGSV,3,2,10,19,02,028,20,04,06,241,18,13,30,223,23,27,19,284,31*75 -$GPGSV,3,3,10,11,06,337,26,03,14,055,35*7D -$GPRMC,222519.000,A,2734.69424,S,15305.65010,E,31.0,144.4,030308,11.2,W,A*07 -$GPVTG,144.4,T,155.6,M,31.0,N,57.5,K,A*24 -$GPGGA,222520.000,2734.70163,S,15305.65604,E,1,07,1.4,69.6,M,39.2,M,,*75 -$GPGLL,2734.70163,S,15305.65604,E,222520.000,A,A*43 -$GPGSA,A,3,16,25,23,20,27,11,03,,,,,,2.4,1.4,1.9*3C -$GPGST,222520.000,9.8,11.6,4.7,89.0,4.3,10.6,15.9*6A -$GPGSV,3,1,10,16,48,115,44,25,39,268,35,23,58,175,39,20,71,336,36*71 -$GPGSV,3,2,10,19,02,028,20,04,06,241,19,13,30,223,23,27,19,284,31*74 -$GPGSV,3,3,10,11,06,337,31,03,14,055,37*79 -$GPRMC,222520.000,A,2734.70163,S,15305.65604,E,32.5,144.1,030308,11.2,W,A*03 -$GPVTG,144.1,T,155.3,M,32.5,N,60.2,K,A*21 -$GPGGA,222521.000,2734.70923,S,15305.66218,E,1,07,1.4,69.5,M,39.2,M,,*71 -$GPGLL,2734.70923,S,15305.66218,E,222521.000,A,A*44 -$GPGSA,A,3,16,25,23,20,27,11,03,,,,,,2.4,1.4,1.9*3C -$GPGST,222521.000,11.1,6.2,10.8,9.6,5.8,9.8,16.8*53 -$GPGSV,3,1,10,16,48,115,44,25,39,268,36,23,58,175,40,20,71,336,38*72 -$GPGSV,3,2,10,19,02,028,20,04,06,241,19,13,30,223,23,27,19,284,26*72 -$GPGSV,3,3,10,11,06,338,31,03,14,055,37*76 -$GPRMC,222521.000,A,2734.70923,S,15305.66218,E,33.5,144.0,030308,11.2,W,A*04 -$GPVTG,144.0,T,155.3,M,33.5,N,62.0,K,A*21 -$GPGGA,222522.000,2734.71700,S,15305.66845,E,1,06,1.5,69.1,M,39.2,M,,*7A -$GPGLL,2734.71700,S,15305.66845,E,222522.000,A,A*4B -$GPGSA,A,3,16,25,23,20,27,03,,,,,,,2.5,1.5,2.0*36 -$GPGST,222522.000,15.0,5.7,9.9,5.5,5.2,9.0,15.4*68 -$GPGSV,3,1,10,16,48,115,43,25,39,268,36,23,58,175,40,20,71,336,37*7A -$GPGSV,3,2,10,19,02,028,20,04,06,241,24,13,30,223,23,27,19,284,26*7C -$GPGSV,3,3,10,11,06,338,25,03,14,055,37*73 -$GPRMC,222522.000,A,2734.71700,S,15305.66845,E,34.2,144.1,030308,11.2,W,A*0A -$GPVTG,144.1,T,155.3,M,34.2,N,63.4,K,A*25 -$GPGGA,222523.000,2734.72487,S,15305.67483,E,1,07,1.4,68.6,M,39.2,M,,*75 -$GPGLL,2734.72487,S,15305.67483,E,222523.000,A,A*42 -$GPGSA,A,3,16,25,23,20,27,11,03,,,,,,2.4,1.4,1.9*3C -$GPGST,222523.000,13.8,5.2,10.1,3.9,4.8,9.2,13.8*5B -$GPGSV,3,1,10,16,48,115,44,25,39,268,37,23,58,175,41,20,71,336,35*7F -$GPGSV,3,2,10,19,02,028,20,04,06,241,24,13,30,223,23,27,19,284,26*7C -$GPGSV,3,3,10,11,06,338,23,03,14,055,31*73 -$GPRMC,222523.000,A,2734.72487,S,15305.67483,E,34.7,144.2,030308,11.2,W,A*05 -$GPVTG,144.2,T,155.4,M,34.7,N,64.3,K,A*24 -$GPGGA,222524.000,2734.73280,S,15305.68126,E,1,07,1.4,68.1,M,39.2,M,,*70 -$GPGLL,2734.73280,S,15305.68126,E,222524.000,A,A*40 -$GPGSA,A,3,16,25,23,20,27,11,03,,,,,,2.4,1.4,1.9*3C -$GPGST,222524.000,10.5,4.9,9.4,3.5,4.5,8.6,12.8*60 -$GPGSV,3,1,10,16,48,115,44,25,39,268,37,23,58,175,41,20,71,336,35*7F -$GPGSV,3,2,10,19,02,028,20,04,06,241,22,13,30,223,23,27,19,284,26*7A -$GPGSV,3,3,10,11,06,338,25,03,14,055,29*7C -$GPRMC,222524.000,A,2734.73280,S,15305.68126,E,35.0,144.2,030308,11.2,W,A*01 -$GPVTG,144.2,T,155.4,M,35.0,N,64.9,K,A*28 -$GPGGA,222525.000,2734.74083,S,15305.68778,E,1,07,1.4,67.7,M,39.2,M,,*73 -$GPGLL,2734.74083,S,15305.68778,E,222525.000,A,A*4A -$GPGSA,A,3,16,25,23,20,27,11,03,,,,,,2.4,1.4,1.9*3C -$GPGST,222525.000,10.3,5.2,13.4,3.6,4.8,12.3,20.4*6B -$GPGSV,3,1,10,16,48,115,43,25,39,268,38,23,58,175,40,20,71,336,36*75 -$GPGSV,3,2,10,19,02,028,20,04,06,241,22,13,30,223,23,27,19,284,23*7F -$GPGSV,3,3,10,11,06,338,27,03,14,055,36*70 -$GPRMC,222525.000,A,2734.74083,S,15305.68778,E,35.6,144.2,030308,11.2,W,A*0D -$GPVTG,144.2,T,155.4,M,35.6,N,65.9,K,A*2F -$GPGGA,222526.000,2734.74894,S,15305.69428,E,1,06,1.5,67.2,M,39.2,M,,*7C -$GPGLL,2734.74894,S,15305.69428,E,222526.000,A,A*40 -$GPGSA,A,3,16,25,23,20,27,03,,,,,,,2.5,1.5,2.0*36 -$GPGST,222526.000,8.0,5.7,12.0,2.6,5.2,10.9,17.4*54 -$GPGSV,3,1,10,16,48,115,43,25,39,268,37,23,58,175,40,20,71,336,35*79 -$GPGSV,3,2,10,19,02,028,20,04,06,241,22,13,30,223,23,27,19,284,24*78 -$GPGSV,3,3,10,11,06,338,27,03,14,055,39*7F -$GPRMC,222526.000,A,2734.74894,S,15305.69428,E,35.8,144.5,030308,11.2,W,A*0E -$GPVTG,144.5,T,155.7,M,35.8,N,66.3,K,A*2C -$GPGGA,222527.000,2734.75707,S,15305.70075,E,1,05,1.7,66.8,M,39.2,M,,*77 -$GPGLL,2734.75707,S,15305.70075,E,222527.000,A,A*41 -$GPGSA,A,3,16,25,23,20,03,,,,,,,,2.9,1.7,2.4*39 -$GPGST,222527.000,13.9,6.3,10.9,6.3,5.9,10.0,18.2*60 -$GPGSV,3,1,10,16,48,115,44,25,39,268,38,23,58,175,40,20,71,336,33*77 -$GPGSV,3,2,10,19,02,028,,04,06,241,25,13,30,223,23,27,19,284,26*7F -$GPGSV,3,3,10,11,06,338,,03,14,055,36*75 -$GPRMC,222527.000,A,2734.75707,S,15305.70075,E,35.8,144.6,030308,11.2,W,A*0C -$GPVTG,144.6,T,155.8,M,35.8,N,66.2,K,A*21 -$GPGGA,222528.000,2734.76518,S,15305.70724,E,1,06,1.5,66.1,M,39.2,M,,*7C -$GPGLL,2734.76518,S,15305.70724,E,222528.000,A,A*42 -$GPGSA,A,3,16,25,23,20,27,03,,,,,,,2.5,1.5,2.0*36 -$GPGST,222528.000,11.3,5.6,10.1,4.5,5.2,9.2,16.1*51 -$GPGSV,3,1,10,16,48,115,43,25,39,268,39,23,58,175,39,20,71,336,28*75 -$GPGSV,3,2,10,19,02,028,,04,06,241,25,13,30,223,23,27,19,284,26*7F -$GPGSV,3,3,10,11,06,338,,03,14,055,36*75 -$GPRMC,222528.000,A,2734.76518,S,15305.70724,E,35.7,144.4,030308,11.2,W,A*02 -$GPVTG,144.4,T,155.6,M,35.7,N,66.2,K,A*22 -$GPGGA,222529.000,2734.77313,S,15305.71385,E,1,06,1.5,66.1,M,39.2,M,,*7F -$GPGLL,2734.77313,S,15305.71385,E,222529.000,A,A*41 -$GPGSA,A,3,16,25,23,20,27,03,,,,,,,2.5,1.5,2.0*36 -$GPGST,222529.000,10.9,5.6,12.5,5.4,5.2,11.4,20.9*6F -$GPGSV,3,1,10,16,48,115,41,25,39,268,40,23,58,175,36,20,71,336,28*76 -$GPGSV,3,2,10,19,02,028,,04,06,241,25,13,30,223,23,27,19,284,24*7D -$GPGSV,3,3,10,11,06,338,27,03,14,055,30*76 -$GPRMC,222529.000,A,2734.77313,S,15305.71385,E,35.6,143.5,030308,11.2,W,A*06 -$GPVTG,143.5,T,154.7,M,35.6,N,65.8,K,A*2C -$GPGGA,222530.000,2734.78106,S,15305.72042,E,1,06,1.5,66.0,M,39.2,M,,*74 -$GPGLL,2734.78106,S,15305.72042,E,222530.000,A,A*4B -$GPGSA,A,3,16,25,23,20,27,03,,,,,,,2.5,1.5,2.0*36 -$GPGST,222530.000,9.4,5.4,18.9,2.4,4.9,17.3,30.6*54 -$GPGSV,3,1,10,16,48,115,40,25,39,268,40,23,58,175,36,20,71,336,28*77 -$GPGSV,3,2,10,19,02,028,,04,06,241,25,13,30,223,23,27,19,284,26*7F -$GPGSV,3,3,10,11,06,338,27,03,14,055,29*7E -$GPRMC,222530.000,A,2734.78106,S,15305.72042,E,35.5,143.7,030308,11.2,W,A*0D -$GPVTG,143.7,T,155.0,M,35.5,N,65.8,K,A*2B -$GPGGA,222531.000,2734.78918,S,15305.72691,E,1,05,4.4,66.0,M,39.2,M,,*7D -$GPGLL,2734.78918,S,15305.72691,E,222531.000,A,A*45 -$GPGSA,A,3,16,25,23,27,11,,,,,,,,9.3,4.4,8.2*36 -$GPGST,222531.000,9.1,8.5,53.9,3.2,8.2,49.2,81.3*56 -$GPGSV,3,1,10,16,48,115,40,25,39,268,39,23,58,175,37,20,71,336,28*78 -$GPGSV,3,2,10,19,02,028,,04,06,241,25,13,31,223,23,27,19,284,25*7D -$GPGSV,3,3,10,11,06,338,24,03,14,055,22*76 -$GPRMC,222531.000,A,2734.78918,S,15305.72691,E,35.9,144.5,030308,11.2,W,A*0A -$GPVTG,144.5,T,155.7,M,35.9,N,66.4,K,A*2A -$GPGGA,222532.000,2734.79737,S,15305.73347,E,1,06,1.5,66.0,M,39.2,M,,*74 -$GPGLL,2734.79737,S,15305.73347,E,222532.000,A,A*4B -$GPGSA,A,3,16,25,23,20,27,03,,,,,,,2.5,1.5,2.0*36 -$GPGST,222532.000,11.0,6.8,38.7,1.2,6.3,35.3,58.4*69 -$GPGSV,3,1,10,16,48,115,40,25,39,268,39,23,58,175,36,20,71,336,28*79 -$GPGSV,3,2,10,19,02,028,,04,06,241,25,13,31,223,24,27,19,284,23*7C -$GPGSV,3,3,10,11,06,338,24,03,14,055,30*75 -$GPRMC,222532.000,A,2734.79737,S,15305.73347,E,36.1,144.5,030308,11.2,W,A*0F -$GPVTG,144.5,T,155.7,M,36.1,N,66.9,K,A*2C -$GPGGA,222533.000,2734.80571,S,15305.74004,E,1,06,4.1,66.1,M,39.2,M,,*70 -$GPGLL,2734.80571,S,15305.74004,E,222533.000,A,A*4F -$GPGSA,A,3,16,25,23,27,11,03,,,,,,,8.3,4.1,7.3*3F -$GPGST,222533.000,9.4,6.1,45.5,0.4,5.6,41.6,69.5*50 -$GPGSV,3,1,10,16,48,115,40,25,39,268,39,23,58,175,37,20,71,336,28*78 -$GPGSV,3,2,10,19,02,028,,04,06,241,23,13,31,223,24,27,19,284,25*7C -$GPGSV,3,3,10,11,06,338,22,03,14,055,25*77 -$GPRMC,222533.000,A,2734.80571,S,15305.74004,E,36.6,145.0,030308,11.2,W,A*08 -$GPVTG,145.0,T,156.2,M,36.6,N,67.7,K,A*26 -$GPGGA,222534.000,2734.81441,S,15305.74656,E,1,06,1.8,65.2,M,39.2,M,,*79 -$GPGLL,2734.81441,S,15305.74656,E,222534.000,A,A*4A -$GPGSA,A,3,16,25,23,13,27,03,,,,,,,3.5,1.8,3.1*3A -$GPGST,222534.000,20.2,5.8,45.7,1.7,5.4,41.7,71.3*6C -$GPGSV,3,1,10,16,48,115,40,25,39,268,38,23,58,175,37,20,71,336,28*79 -$GPGSV,3,2,10,19,02,028,,04,06,241,23,13,31,223,25,27,19,284,25*7D -$GPGSV,3,3,10,11,06,338,22,03,14,055,31*72 -$GPRMC,222534.000,A,2734.81441,S,15305.74656,E,37.6,146.2,030308,11.2,W,A*0D -$GPVTG,146.2,T,157.5,M,37.6,N,69.7,K,A*2E -$GPGGA,222535.000,2734.82349,S,15305.75307,E,1,05,1.9,63.5,M,39.2,M,,*77 -$GPGLL,2734.82349,S,15305.75307,E,222535.000,A,A*47 -$GPGSA,A,3,16,25,23,13,03,,,,,,,,3.6,1.9,3.1*3D -$GPGST,222535.000,27.6,7.0,40.6,3.1,6.7,37.1,68.4*6C -$GPGSV,3,1,10,16,48,115,40,25,39,268,36,23,58,175,37,20,71,336,28*77 -$GPGSV,3,2,10,19,02,028,,04,06,241,20,13,31,223,25,27,19,284,23*78 -$GPGSV,3,3,10,11,06,338,22,03,14,055,26*74 -$GPRMC,222535.000,A,2734.82349,S,15305.75307,E,38.7,147.3,030308,11.2,W,A*0E -$GPVTG,147.3,T,158.6,M,38.7,N,71.7,K,A*25 -$GPGGA,222536.000,2734.83215,S,15305.75969,E,1,05,1.7,63.5,M,39.2,M,,*71 -$GPGLL,2734.83215,S,15305.75969,E,222536.000,A,A*4F -$GPGSA,A,3,16,25,23,20,03,,,,,,,,2.9,1.7,2.4*39 -$GPGST,222536.000,7.9,6.3,97.2,3.9,8.3,88.7,161.0*62 -$GPGSV,3,1,10,16,48,115,40,25,39,268,37,23,58,175,36,20,71,336,28*77 -$GPGSV,3,2,10,19,02,028,,04,06,241,20,13,31,223,25,27,19,284,23*78 -$GPGSV,3,3,10,11,06,338,22,03,14,055,26*74 -$GPRMC,222536.000,A,2734.83215,S,15305.75969,E,37.6,145.6,030308,11.2,W,A*0F -$GPVTG,145.6,T,156.8,M,37.6,N,69.7,K,A*25 -$GPGGA,222537.000,2734.84076,S,15305.76655,E,1,05,1.7,63.5,M,39.2,M,,*73 -$GPGLL,2734.84076,S,15305.76655,E,222537.000,A,A*4D -$GPGSA,A,3,16,25,23,20,03,,,,,,,,2.9,1.7,2.4*39 -$GPGST,222537.000,16.0,7.8,110.8,2.1,8.0,101.2,209.1*57 -$GPGSV,3,1,10,16,48,115,39,25,39,268,36,23,58,175,34,20,71,336,28*7A -$GPGSV,3,2,10,19,02,028,,04,06,241,22,13,31,223,25,27,19,284,23*7A -$GPGSV,3,3,10,11,06,338,22,03,14,055,25*77 -$GPRMC,222537.000,A,2734.84076,S,15305.76655,E,37.9,144.6,030308,11.2,W,A*03 -$GPVTG,144.6,T,155.8,M,37.9,N,70.3,K,A*24 -$GPGGA,222538.000,2734.84945,S,15305.77356,E,1,05,1.9,63.5,M,39.2,M,,*7C -$GPGLL,2734.84945,S,15305.77356,E,222538.000,A,A*4C -$GPGSA,A,3,16,25,23,13,03,,,,,,,,3.6,1.9,3.1*3D -$GPGST,222538.000,13.1,8.0,61.7,1.6,7.5,56.4,113.0*51 -$GPGSV,3,1,10,16,48,115,40,25,39,268,37,23,58,175,32,20,71,336,*79 -$GPGSV,3,2,10,19,02,028,,04,06,241,22,13,31,223,25,27,19,284,23*7A -$GPGSV,3,3,10,11,06,338,22,03,14,055,28*7A -$GPRMC,222538.000,A,2734.84945,S,15305.77356,E,38.4,144.2,030308,11.2,W,A*04 -$GPVTG,144.2,T,155.4,M,38.4,N,71.1,K,A*2D -$GPGGA,222539.000,2734.85792,S,15305.78022,E,1,05,1.9,63.5,M,39.2,M,,*77 -$GPGLL,2734.85792,S,15305.78022,E,222539.000,A,A*47 -$GPGSA,A,3,16,25,23,13,03,,,,,,,,3.6,1.9,3.1*3D -$GPGST,222539.000,6.4,7.5,72.7,1.5,7.1,66.5,137.2*68 -$GPGSV,3,1,10,16,48,115,40,25,39,268,38,23,58,175,32,20,71,336,*76 -$GPGSV,3,2,10,19,02,028,,04,06,241,22,13,31,223,25,27,19,284,23*7A -$GPGSV,3,3,10,11,06,338,22,03,14,055,28*7A -$GPRMC,222539.000,A,2734.85792,S,15305.78022,E,37.1,144.9,030308,11.2,W,A*0E -$GPVTG,144.9,T,156.1,M,37.1,N,68.7,K,A*24 -$GPGGA,222540.000,2734.86604,S,15305.78646,E,1,05,4.4,63.5,M,39.2,M,,*78 -$GPGLL,2734.86604,S,15305.78646,E,222540.000,A,A*40 -$GPGSA,A,3,16,25,23,27,11,,,,,,,,9.3,4.4,8.2*36 -$GPGST,222540.000,13.6,8.3,67.7,1.8,7.8,61.9,111.1*55 -$GPGSV,3,1,10,16,48,115,40,25,39,268,38,23,58,175,32,20,71,336,*76 -$GPGSV,3,2,10,19,02,028,,04,06,241,26,13,31,223,22,27,19,284,22*78 -$GPGSV,3,3,10,11,06,338,20,03,14,055,28*78 -$GPRMC,222540.000,A,2734.86604,S,15305.78646,E,35.3,145.6,030308,11.2,W,A*07 -$GPVTG,145.6,T,156.8,M,35.3,N,65.4,K,A*2D -$GPGGA,222541.000,2734.87421,S,15305.79222,E,1,06,1.8,63.5,M,39.2,M,,*70 -$GPGLL,2734.87421,S,15305.79222,E,222541.000,A,A*42 -$GPGSA,A,3,16,25,23,13,27,03,,,,,,,3.5,1.8,3.1*3A -$GPGST,222541.000,11.7,33.3,8.1,87.4,7.5,30.4,54.6*51 -$GPGSV,3,1,10,16,48,115,39,25,39,268,33,23,58,175,36,20,71,336,*77 -$GPGSV,3,2,10,19,02,028,,04,06,241,26,13,31,223,22,27,19,284,22*78 -$GPGSV,3,3,10,11,06,338,20,03,14,055,26*76 -$GPRMC,222541.000,A,2734.87421,S,15305.79222,E,34.6,147.7,030308,11.2,W,A*02 -$GPVTG,147.7,T,158.9,M,34.6,N,64.1,K,A*21 -$GPGGA,222542.000,2734.88135,S,15305.79765,E,1,06,1.8,63.5,M,39.2,M,,*7A -$GPGLL,2734.88135,S,15305.79765,E,222542.000,A,A*48 -$GPGSA,A,3,16,25,23,13,27,03,,,,,,,3.5,1.8,3.1*3A -$GPGST,222542.000,23.5,7.9,53.0,0.2,7.2,48.5,78.4*6F -$GPGSV,3,1,10,16,48,115,40,25,39,268,36,23,58,175,35,20,71,336,*7F -$GPGSV,3,2,10,19,02,028,,04,06,241,27,13,31,223,23,27,19,284,25*7F -$GPGSV,3,3,10,11,06,338,20,03,14,055,26*76 -$GPRMC,222542.000,A,2734.88135,S,15305.79765,E,31.0,145.8,030308,11.2,W,A*06 -$GPVTG,145.8,T,157.0,M,31.0,N,57.4,K,A*2C -$GPGGA,222543.000,2734.88798,S,15305.80287,E,1,07,1.2,63.0,M,39.2,M,,*7B -$GPGLL,2734.88798,S,15305.80287,E,222543.000,A,A*47 -$GPGSA,A,3,16,25,23,20,13,27,03,,,,,,2.1,1.2,1.7*33 -$GPGST,222543.000,18.8,6.7,28.4,0.5,6.1,26.0,41.8*62 -$GPGSV,3,1,10,16,48,115,40,25,39,268,39,23,58,175,35,20,71,336,21*73 -$GPGSV,3,2,10,19,02,028,,04,06,241,37,13,31,223,22,27,19,284,24*7E -$GPGSV,3,3,10,11,06,338,20,03,14,055,32*73 -$GPRMC,222543.000,A,2734.88798,S,15305.80287,E,29.0,144.8,030308,11.2,W,A*01 -$GPVTG,144.8,T,156.0,M,29.0,N,53.8,K,A*2D -$GPGGA,222544.000,2734.89328,S,15305.80767,E,1,06,1.8,62.9,M,39.2,M,,*7A -$GPGLL,2734.89328,S,15305.80767,E,222544.000,A,A*45 -$GPGSA,A,3,16,25,23,13,27,03,,,,,,,3.5,1.8,3.1*3A -$GPGST,222544.000,14.9,35.2,5.8,89.5,5.4,32.2,52.6*52 -$GPGSV,3,1,10,16,48,115,43,25,39,268,40,23,58,175,25,20,71,336,21*7F -$GPGSV,3,2,10,19,02,028,,04,06,241,28,13,31,223,30,27,19,284,29*7E -$GPGSV,3,3,10,11,06,338,20,03,14,055,33*72 -$GPRMC,222544.000,A,2734.89328,S,15305.80767,E,24.5,140.9,030308,11.2,W,A*0E -$GPVTG,140.9,T,152.1,M,24.5,N,45.3,K,A*29 -$GPGGA,222545.000,2734.89633,S,15305.81084,E,1,05,1.9,62.9,M,39.2,M,,*7D -$GPGLL,2734.89633,S,15305.81084,E,222545.000,A,A*40 -$GPGSA,A,3,16,25,23,13,03,,,,,,,,3.6,1.9,3.1*3D -$GPGST,222545.000,19.5,6.0,33.0,1.0,5.5,30.2,52.4*69 -$GPGSV,3,1,10,16,48,115,41,25,39,268,34,23,58,175,29,20,71,336,30*72 -$GPGSV,3,2,10,19,02,028,,04,06,241,25,13,31,223,29,27,19,284,30*73 -$GPGSV,3,3,10,11,06,338,20,03,14,055,30*71 -$GPRMC,222545.000,A,2734.89633,S,15305.81084,E,14.6,136.6,030308,11.2,W,A*05 -$GPVTG,136.6,T,147.8,M,14.6,N,27.0,K,A*2D -$GPGGA,222546.000,2734.89236,S,15305.81130,E,1,06,1.3,62.6,M,39.2,M,,*77 -$GPGLL,2734.89236,S,15305.81130,E,222546.000,A,A*4C -$GPGSA,A,3,16,25,23,20,13,03,,,,,,,2.3,1.3,1.9*3B -$GPGST,222546.000,11.5,5.6,15.6,0.9,5.2,14.3,26.4*6E -$GPGSV,3,1,10,16,48,115,35,25,39,268,40,23,58,175,41,20,71,336,38*74 -$GPGSV,3,2,10,19,02,028,,04,06,241,26,13,31,223,33,27,19,284,26*7C -$GPGSV,3,3,10,11,06,338,20,03,14,055,28*78 -$GPRMC,222546.000,A,2734.89236,S,15305.81130,E,16.9,2.1,030308,11.2,W,A*05 -$GPVTG,2.1,T,13.3,M,16.9,N,31.2,K,A*1F -$GPGGA,222547.000,2734.89429,S,15305.81239,E,1,05,2.3,62.5,M,39.2,M,,*77 -$GPGLL,2734.89429,S,15305.81239,E,222547.000,A,A*4F -$GPGSA,A,3,16,23,13,27,03,,,,,,,,4.6,2.3,3.9*39 -$GPGST,222547.000,11.4,38.3,9.7,69.8,14.7,33.0,49.2*6B -$GPGSV,3,1,10,16,48,115,32,25,39,268,37,23,58,175,42,20,71,336,37*7F -$GPGSV,3,2,10,19,02,028,,04,06,241,26,13,31,223,36,27,19,284,29*76 -$GPGSV,3,3,10,11,06,338,20,03,14,055,34*75 -$GPRMC,222547.000,A,2734.89429,S,15305.81239,E,8.4,154.5,030308,11.2,W,A*32 -$GPVTG,154.5,T,165.7,M,8.4,N,15.6,K,A*1D -$GPGGA,222548.000,2734.89474,S,15305.81253,E,1,07,1.2,62.0,M,39.2,M,,*79 -$GPGLL,2734.89474,S,15305.81253,E,222548.000,A,A*44 -$GPGSA,A,3,16,25,23,20,13,27,03,,,,,,2.1,1.2,1.7*33 -$GPGST,222548.000,11.0,12.3,7.9,86.0,7.3,11.3,20.6*5F -$GPGSV,3,1,10,16,48,115,34,25,39,268,36,23,58,175,42,20,71,336,38*77 -$GPGSV,3,2,10,19,02,028,,04,06,241,25,13,31,223,36,27,19,284,29*75 -$GPGSV,3,3,10,11,06,338,20,03,14,055,33*72 -$GPRMC,222548.000,A,2734.89474,S,15305.81253,E,0.3,353.0,030308,11.2,W,A*36 -$GPVTG,353.0,T,4.3,M,0.3,N,0.5,K,A*27 -$GPGGA,222549.000,2734.89490,S,15305.81265,E,1,04,2.0,61.8,M,39.2,M,,*7E -$GPGLL,2734.89490,S,15305.81265,E,222549.000,A,A*4A -$GPGSA,A,3,25,23,13,03,,,,,,,,,3.9,2.0,3.3*3D -$GPGST,222549.000,17.0,16.1,8.8,81.3,8.3,14.6,29.3*57 -$GPGSV,3,1,11,16,48,115,33,25,39,268,37,23,58,175,42,20,71,336,36*7E -$GPGSV,3,2,11,19,02,028,,04,06,241,25,13,31,223,35,27,19,284,30*7F -$GPGSV,3,3,11,11,06,338,20,01,,,21,03,14,055,33*71 -$GPRMC,222549.000,A,2734.89490,S,15305.81265,E,0.2,330.7,030308,11.2,W,A*3B -$GPVTG,330.7,T,341.9,M,0.2,N,0.3,K,A*2A -$GPGGA,222550.000,2734.89526,S,15305.81278,E,1,04,2.6,61.7,M,39.2,M,,*7F -$GPGLL,2734.89526,S,15305.81278,E,222550.000,A,A*42 -$GPGSA,A,3,16,25,23,13,,,,,,,,,6.1,2.6,5.6*31 -$GPGST,222550.000,13.4,12.4,27.3,43.1,18.9,19.8,52.9*5A -$GPGSV,3,1,11,16,48,115,30,25,39,268,38,23,58,175,42,20,71,336,37*73 -$GPGSV,3,2,11,19,02,028,,04,06,241,25,13,31,223,36,27,19,284,31*7D -$GPGSV,3,3,11,11,06,338,,01,,,21,03,14,055,32*72 -$GPRMC,222550.000,A,2734.89526,S,15305.81278,E,0.1,350.7,030308,11.2,W,A*36 -$GPVTG,350.7,T,1.9,M,0.1,N,0.2,K,A*29 -$GPGGA,222551.000,2734.89528,S,15305.81279,E,1,05,2.3,61.7,M,39.2,M,,*75 -$GPGLL,2734.89528,S,15305.81279,E,222551.000,A,A*4C -$GPGSA,A,3,16,23,13,27,03,,,,,,,,4.6,2.3,3.9*39 -$GPGST,222551.000,13.7,31.0,11.1,60.5,16.5,25.2,39.3*5F -$GPGSV,3,1,11,16,48,115,30,25,39,268,39,23,58,175,41,20,71,336,35*73 -$GPGSV,3,2,11,19,02,028,,04,06,241,23,13,31,223,36,27,19,284,31*7B -$GPGSV,3,3,11,11,06,338,,01,,,20,03,14,055,30*71 -$GPRMC,222551.000,A,2734.89528,S,15305.81279,E,0.1,345.0,030308,11.2,W,A*3B -$GPVTG,345.0,T,356.2,M,0.1,N,0.2,K,A*20 -$GPGGA,222552.000,2734.89550,S,15305.81288,E,1,05,2.1,61.7,M,39.2,M,,*75 -$GPGLL,2734.89550,S,15305.81288,E,222552.000,A,A*4E -$GPGSA,A,3,16,25,23,13,27,,,,,,,,4.7,2.1,4.2*32 -$GPGST,222552.000,11.7,11.5,20.8,20.0,11.8,18.2,39.1*55 -$GPGSV,3,1,11,16,48,115,31,25,39,268,40,23,58,175,42,20,71,336,35*7F -$GPGSV,3,2,11,19,02,028,,04,06,241,23,13,31,223,38,27,19,284,31*75 -$GPGSV,3,3,11,11,06,338,,01,,,20,03,14,055,30*71 -$GPRMC,222552.000,A,2734.89550,S,15305.81288,E,0.1,11.2,030308,11.2,W,A*09 -$GPVTG,11.2,T,22.5,M,0.1,N,0.2,K,A*27 -$GPGGA,222553.000,2734.89573,S,15305.81294,E,1,05,2.1,61.5,M,39.2,M,,*7A -$GPGLL,2734.89573,S,15305.81294,E,222553.000,A,A*43 -$GPGSA,A,3,16,25,23,13,27,,,,,,,,4.7,2.1,4.2*32 -$GPGST,222553.000,9.8,10.3,17.6,19.1,10.4,15.6,33.7*6C -$GPGSV,3,1,10,16,48,115,29,25,39,268,38,23,58,175,41,20,71,336,37*79 -$GPGSV,3,2,10,19,02,028,,04,06,241,23,13,31,223,39,27,19,284,30*74 -$GPGSV,3,3,10,11,06,338,,03,14,055,29*7B -$GPRMC,222553.000,A,2734.89573,S,15305.81294,E,0.1,351.8,030308,11.2,W,A*39 -$GPVTG,351.8,T,3.0,M,0.1,N,0.2,K,A*2C -$GPGGA,222554.000,2734.89591,S,15305.81298,E,1,04,2.6,61.4,M,39.2,M,,*7A -$GPGLL,2734.89591,S,15305.81298,E,222554.000,A,A*44 -$GPGSA,A,3,16,25,23,13,,,,,,,,,6.1,2.6,5.6*31 -$GPGST,222554.000,16.9,10.4,17.8,12.8,10.0,16.1,37.3*5F -$GPGSV,3,1,10,16,48,115,32,25,39,268,38,23,58,175,41,20,71,336,36*72 -$GPGSV,3,2,10,19,02,028,,04,06,241,23,13,31,223,38,27,19,284,31*74 -$GPGSV,3,3,10,11,06,338,,03,14,055,26*74 -$GPRMC,222554.000,A,2734.89591,S,15305.81298,E,0.1,334.9,030308,11.2,W,A*3C -$GPVTG,334.9,T,346.1,M,0.1,N,0.2,K,A*2D -$GPGGA,222555.000,2734.89607,S,15305.81301,E,1,04,2.6,61.2,M,39.2,M,,*70 -$GPGLL,2734.89607,S,15305.81301,E,222555.000,A,A*48 -$GPGSA,A,3,16,25,23,13,,,,,,,,,6.1,2.6,5.6*31 -$GPGST,222555.000,14.4,11.9,23.3,40.8,16.2,17.6,44.5*56 -$GPGSV,3,1,11,16,48,115,32,25,39,268,37,23,58,175,40,20,71,336,38*73 -$GPGSV,3,2,11,19,02,028,,04,06,241,23,13,31,223,37,27,19,284,30*7B -$GPGSV,3,3,11,11,06,338,,01,,,20,03,14,055,25*75 -$GPRMC,222555.000,A,2734.89607,S,15305.81301,E,0.1,6.2,030308,11.2,W,A*39 -$GPVTG,6.2,T,17.4,M,0.1,N,0.2,K,A*16 -$GPGGA,222556.000,2734.89612,S,15305.81301,E,1,04,2.6,61.1,M,39.2,M,,*74 -$GPGLL,2734.89612,S,15305.81301,E,222556.000,A,A*4F -$GPGSA,A,3,16,25,23,13,,,,,,,,,6.1,2.6,5.6*31 -$GPGST,222556.000,12.4,15.8,24.1,4.1,14.5,22.0,39.9*69 -$GPGSV,3,1,11,16,48,115,33,25,39,268,38,23,58,174,41,20,71,336,38*7D -$GPGSV,3,2,11,19,02,028,,04,06,242,23,13,31,223,38,27,19,284,32*75 -$GPGSV,3,3,11,11,06,338,,01,,,20,03,14,055,28*78 -$GPRMC,222556.000,A,2734.89612,S,15305.81301,E,0.1,21.8,030308,11.2,W,A*01 -$GPVTG,21.8,T,33.0,M,0.1,N,0.2,K,A*2B -$GPGGA,222557.000,2734.89635,S,15305.81337,E,1,05,2.1,61.0,M,39.2,M,,*72 -$GPGLL,2734.89635,S,15305.81337,E,222557.000,A,A*4E -$GPGSA,A,3,16,25,23,13,27,,,,,,,,4.7,2.1,4.2*32 -$GPGST,222557.000,10.3,13.0,15.0,5.2,11.9,13.7,32.7*6B -$GPGSV,3,1,10,16,48,115,33,25,39,268,38,23,58,174,41,20,71,336,36*72 -$GPGSV,3,2,10,19,02,028,,04,06,242,23,13,31,223,39,27,19,284,28*7E -$GPGSV,3,3,10,11,06,338,,03,14,055,31*72 -$GPRMC,222557.000,A,2734.89635,S,15305.81337,E,1.2,96.1,030308,11.2,W,A*07 -$GPVTG,96.1,T,107.3,M,1.2,N,2.2,K,A*1B -$GPGGA,222558.000,2734.89638,S,15305.81517,E,1,06,1.8,60.6,M,39.2,M,,*7A -$GPGLL,2734.89638,S,15305.81517,E,222558.000,A,A*48 -$GPGSA,A,3,16,25,23,13,27,03,,,,,,,3.5,1.8,3.1*3A -$GPGST,222558.000,18.6,12.9,7.5,72.4,7.5,11.4,21.9*57 -$GPGSV,3,1,10,16,48,115,39,25,39,268,38,23,58,174,37,20,71,336,26*78 -$GPGSV,3,2,10,19,02,028,,04,06,242,23,13,31,223,34,27,19,284,29*72 -$GPGSV,3,3,10,11,06,338,,03,14,055,30*73 -$GPRMC,222558.000,A,2734.89638,S,15305.81517,E,5.6,82.0,030308,11.2,W,A*05 -$GPVTG,82.0,T,93.2,M,5.6,N,10.3,K,A*10 -$GPGGA,222559.000,2734.89631,S,15305.81911,E,1,05,2.2,60.5,M,39.2,M,,*71 -$GPGLL,2734.89631,S,15305.81911,E,222559.000,A,A*4A -$GPGSA,A,3,16,25,23,20,27,,,,,,,,3.6,2.2,2.9*3A -$GPGST,222559.000,17.0,15.1,33.1,15.1,15.5,29.4,59.0*59 -$GPGSV,3,1,10,16,48,115,34,25,39,268,35,23,58,174,30,20,71,336,29*70 -$GPGSV,3,2,10,19,02,028,,04,06,242,23,13,31,223,35,27,19,284,28*72 -$GPGSV,3,3,10,11,06,338,,03,14,055,27*75 -$GPRMC,222559.000,A,2734.89631,S,15305.81911,E,12.5,87.6,030308,11.2,W,A*31 -$GPVTG,87.6,T,98.8,M,12.5,N,23.2,K,A*26 -$GPGGA,222600.000,2734.89436,S,15305.82359,E,1,06,1.8,61.2,M,39.2,M,,*72 -$GPGLL,2734.89436,S,15305.82359,E,222600.000,A,A*45 -$GPGSA,A,3,16,25,23,13,27,03,,,,,,,3.5,1.8,3.1*3A -$GPGST,222600.000,14.4,14.9,6.9,79.1,6.7,13.4,28.4*57 -$GPGSV,3,1,10,16,48,115,37,25,39,268,36,23,58,174,29,20,71,336,33*73 -$GPGSV,3,2,10,19,02,028,,04,06,242,23,13,31,223,39,27,19,284,28*7E -$GPGSV,3,3,10,11,06,338,,03,14,055,28*7A -$GPRMC,222600.000,A,2734.89436,S,15305.82359,E,15.9,62.5,030308,11.2,W,A*3D -$GPVTG,62.5,T,73.7,M,15.9,N,29.5,K,A*22 -$GPGGA,222601.000,2734.89190,S,15305.82850,E,1,06,1.8,60.5,M,39.2,M,,*7E -$GPGLL,2734.89190,S,15305.82850,E,222601.000,A,A*4F -$GPGSA,A,3,16,25,23,13,27,03,,,,,,,3.6,1.8,3.1*39 -$GPGST,222601.000,11.5,13.4,6.1,78.5,6.0,12.0,24.9*56 -$GPGSV,3,1,10,16,48,115,40,25,39,268,27,23,58,174,35,20,71,336,28*74 -$GPGSV,3,2,10,19,02,028,,04,06,242,,13,31,223,39,27,19,284,27*70 -$GPGSV,3,3,10,11,06,338,,03,14,055,23*71 -$GPRMC,222601.000,A,2734.89190,S,15305.82850,E,18.0,58.9,030308,11.2,W,A*36 -$GPVTG,58.9,T,70.1,M,18.0,N,33.4,K,A*2C -$GPGGA,222602.000,2734.88904,S,15305.83361,E,1,05,1.6,60.0,M,39.2,M,,*79 -$GPGLL,2734.88904,S,15305.83361,E,222602.000,A,A*40 -$GPGSA,A,3,16,23,20,13,03,,,,,,,,2.5,1.6,1.9*3F -$GPGST,222602.000,11.3,17.1,6.5,54.9,10.2,13.2,18.6*62 -$GPGSV,3,1,10,16,48,115,27,25,39,268,29,23,58,174,33,20,71,336,33*77 -$GPGSV,3,2,10,19,02,028,,04,06,242,,13,31,223,35,27,19,284,32*78 -$GPGSV,3,3,10,11,06,338,,03,14,055,24*76 -$GPRMC,222602.000,A,2734.88904,S,15305.83361,E,19.8,55.1,030308,11.2,W,A*35 -$GPVTG,55.1,T,66.3,M,19.8,N,36.7,K,A*23 -$GPGGA,222603.000,2734.88556,S,15305.83944,E,1,04,3.8,58.8,M,39.2,M,,*70 -$GPGLL,2734.88556,S,15305.83944,E,222603.000,A,A*47 -$GPGSA,A,3,25,23,20,27,,,,,,,,,6.5,3.8,5.2*3C -$GPGST,222603.000,12.6,48.6,15.6,66.9,41.3,21.9,62.5*59 -$GPGSV,3,1,10,16,48,115,23,25,39,268,29,23,58,174,31,20,71,337,37*74 -$GPGSV,3,2,10,19,02,028,,04,06,242,,13,31,223,34,27,19,284,26*7C -$GPGSV,3,3,10,11,06,338,,03,14,055,28*7A -$GPRMC,222603.000,A,2734.88556,S,15305.83944,E,22.7,54.4,030308,11.2,W,A*31 -$GPVTG,54.4,T,65.6,M,22.7,N,42.1,K,A*23 -$GPGGA,222604.000,2734.88238,S,15305.84546,E,1,04,4.4,57.8,M,39.2,M,,*75 -$GPGLL,2734.88238,S,15305.84546,E,222604.000,A,A*46 -$GPGSA,A,3,25,20,13,27,,,,,,,,,7.2,4.4,5.7*37 -$GPGST,222604.000,10.4,46.8,10.9,81.3,42.4,11.8,57.5*57 -$GPGSV,3,1,10,16,48,115,27,25,39,268,32,23,58,174,32,20,71,337,37*79 -$GPGSV,3,2,10,19,02,028,,04,06,242,,13,31,223,34,27,19,284,34*7F -$GPGSV,3,3,10,11,06,338,,03,14,055,29*7B -$GPRMC,222604.000,A,2734.88238,S,15305.84546,E,23.3,54.5,030308,11.2,W,A*34 -$GPVTG,54.5,T,65.7,M,23.3,N,43.2,K,A*24 -$GPGGA,222605.000,2734.87917,S,15305.85182,E,1,04,4.4,56.6,M,39.2,M,,*7F -$GPGLL,2734.87917,S,15305.85182,E,222605.000,A,A*43 -$GPGSA,A,3,25,20,13,27,,,,,,,,,7.2,4.4,5.7*37 -$GPGST,222605.000,14.3,40.3,10.1,81.5,36.5,10.7,49.8*58 -$GPGSV,3,1,10,16,48,115,24,25,39,268,32,23,58,174,33,20,71,337,37*7B -$GPGSV,3,2,10,19,02,028,,04,06,242,20,13,31,223,35,27,19,284,32*7A -$GPGSV,3,3,10,11,06,338,,03,14,055,26*74 -$GPRMC,222605.000,A,2734.87917,S,15305.85182,E,24.5,55.0,030308,11.2,W,A*34 -$GPVTG,55.0,T,66.2,M,24.5,N,45.3,K,A*20 -$GPGGA,222606.000,2734.87588,S,15305.85846,E,1,05,3.6,55.8,M,39.2,M,,*7E -$GPGLL,2734.87588,S,15305.85846,E,222606.000,A,A*4B -$GPGSA,A,3,25,23,20,13,27,,,,,,,,6.3,3.6,5.2*36 -$GPGST,222606.000,11.7,30.4,8.7,77.7,27.2,9.8,40.6*59 -$GPGSV,3,1,10,16,48,115,24,25,39,268,31,23,58,174,32,20,71,337,34*7A -$GPGSV,3,2,10,19,02,029,,04,06,242,20,13,31,223,35,27,19,284,34*7D -$GPGSV,3,3,10,11,06,338,,03,14,055,24*76 -$GPRMC,222606.000,A,2734.87588,S,15305.85846,E,25.3,55.9,030308,11.2,W,A*32 -$GPVTG,55.9,T,67.1,M,25.3,N,46.9,K,A*25 -$GPGGA,222607.000,2734.87218,S,15305.86543,E,1,06,1.8,55.5,M,39.2,M,,*78 -$GPGLL,2734.87218,S,15305.86543,E,222607.000,A,A*4F -$GPGSA,A,3,16,25,23,13,27,03,,,,,,,3.6,1.8,3.1*39 -$GPGST,222607.000,11.2,13.8,8.5,86.1,7.8,12.6,27.3*52 -$GPGSV,3,1,10,16,48,115,29,25,39,268,26,23,58,174,34,20,71,337,32*71 -$GPGSV,3,2,10,19,02,029,,04,06,242,27,13,31,223,36,27,19,284,30*7D -$GPGSV,3,3,10,11,06,338,,03,14,055,24*76 -$GPRMC,222607.000,A,2734.87218,S,15305.86543,E,26.0,57.6,030308,11.2,W,A*3B -$GPVTG,57.6,T,68.8,M,26.0,N,48.1,K,A*28 -$GPGGA,222608.000,2734.86867,S,15305.87251,E,1,06,1.8,55.1,M,39.2,M,,*75 -$GPGLL,2734.86867,S,15305.87251,E,222608.000,A,A*46 -$GPGSA,A,3,16,25,23,13,27,03,,,,,,,3.6,1.8,3.1*39 -$GPGST,222608.000,15.1,15.8,7.1,68.8,8.0,13.6,36.7*5C -$GPGSV,3,1,10,16,48,115,39,25,39,268,28,23,58,174,35,20,71,337,30*7D -$GPGSV,3,2,10,19,02,029,,04,06,242,27,13,31,223,40,27,19,284,28*75 -$GPGSV,3,3,10,11,06,338,,03,14,055,28*7A -$GPRMC,222608.000,A,2734.86867,S,15305.87251,E,25.9,60.7,030308,11.2,W,A*3D -$GPVTG,60.7,T,71.9,M,25.9,N,47.9,K,A*29 -$GPGGA,222609.000,2734.86555,S,15305.87973,E,1,06,1.8,54.7,M,39.2,M,,*74 -$GPGLL,2734.86555,S,15305.87973,E,222609.000,A,A*40 -$GPGSA,A,3,16,25,23,13,27,03,,,,,,,3.6,1.8,3.1*39 -$GPGST,222609.000,10.9,10.9,5.1,85.4,4.7,10.0,22.0*55 -$GPGSV,3,1,10,16,48,116,34,25,39,268,39,23,58,174,29,20,71,337,33*7D -$GPGSV,3,2,10,19,02,029,,04,06,242,24,13,31,223,42,27,19,284,23*7F -$GPGSV,3,3,10,11,06,338,,03,14,055,26*74 -$GPRMC,222609.000,A,2734.86555,S,15305.87973,E,25.7,64.3,030308,11.2,W,A*35 -$GPVTG,64.3,T,75.6,M,25.7,N,47.5,K,A*20 -$GPGGA,222610.000,2734.86253,S,15305.88695,E,1,05,1.9,54.1,M,39.2,M,,*71 -$GPGLL,2734.86253,S,15305.88695,E,222610.000,A,A*41 -$GPGSA,A,3,16,25,23,13,03,,,,,,,,3.7,1.9,3.1*3C -$GPGST,222610.000,11.1,14.6,7.4,64.7,8.3,12.4,28.7*57 -$GPGSV,3,1,10,16,48,116,29,25,39,268,42,23,58,174,28,20,71,337,32*7D -$GPGSV,3,2,10,19,02,029,,04,06,242,24,13,31,223,42,27,19,284,23*7F -$GPGSV,3,3,10,11,06,338,,03,14,055,24*76 -$GPRMC,222610.000,A,2734.86253,S,15305.88695,E,25.3,65.0,030308,11.2,W,A*32 -$GPVTG,65.0,T,76.3,M,25.3,N,46.8,K,A*2C -$GPGGA,222611.000,2734.85924,S,15305.89387,E,1,05,2.2,53.4,M,39.2,M,,*75 -$GPGLL,2734.85924,S,15305.89387,E,222611.000,A,A*4F -$GPGSA,A,3,16,25,23,20,13,,,,,,,,5.3,2.2,4.8*39 -$GPGST,222611.000,17.7,8.4,21.7,17.4,9.4,19.0,57.8*57 -$GPGSV,3,1,10,16,48,116,39,25,39,268,32,23,58,174,35,20,71,337,26*72 -$GPGSV,3,2,10,19,02,029,,04,06,242,31,13,31,223,39,27,19,284,24*70 -$GPGSV,3,3,10,11,06,338,,03,14,055,26*74 -$GPRMC,222611.000,A,2734.85924,S,15305.89387,E,24.9,61.4,030308,11.2,W,A*37 -$GPVTG,61.4,T,72.6,M,24.9,N,46.1,K,A*2F -$GPGGA,222612.000,2734.85516,S,15305.90007,E,1,07,1.2,53.3,M,39.2,M,,*7E -$GPGLL,2734.85516,S,15305.90007,E,222612.000,A,A*42 -$GPGSA,A,3,16,25,23,20,13,27,03,,,,,,2.1,1.2,1.7*33 -$GPGST,222612.000,15.5,16.3,8.2,77.8,8.0,14.7,27.8*50 -$GPGSV,3,1,10,16,48,116,29,25,39,268,29,23,58,174,30,20,71,337,34*7F -$GPGSV,3,2,10,19,02,029,,04,06,242,27,13,31,223,35,27,19,284,28*77 -$GPGSV,3,3,10,11,06,338,,03,14,055,25*77 -$GPRMC,222612.000,A,2734.85516,S,15305.90007,E,24.5,53.1,030308,11.2,W,A*32 -$GPVTG,53.1,T,64.3,M,24.5,N,45.4,K,A*23 -$GPGGA,222613.000,2734.85043,S,15305.90565,E,1,05,1.9,53.2,M,39.2,M,,*73 -$GPGLL,2734.85043,S,15305.90565,E,222613.000,A,A*47 -$GPGSA,A,3,16,25,20,13,27,,,,,,,,3.7,1.9,3.2*3A -$GPGST,222613.000,21.1,11.0,20.9,21.8,11.7,18.1,48.5*55 -$GPGSV,3,1,10,16,48,116,30,25,39,268,32,23,58,174,24,20,71,337,36*7A -$GPGSV,3,2,10,19,02,029,,04,06,242,22,13,31,223,35,27,19,284,29*73 -$GPGSV,3,3,10,11,06,338,,03,14,055,29*7B -$GPRMC,222613.000,A,2734.85043,S,15305.90565,E,24.9,45.4,030308,11.2,W,A*39 -$GPVTG,45.4,T,56.6,M,24.9,N,46.1,K,A*2F -$GPGGA,222614.000,2734.84523,S,15305.91064,E,1,05,1.9,53.2,M,39.2,M,,*73 -$GPGLL,2734.84523,S,15305.91064,E,222614.000,A,A*47 -$GPGSA,A,3,16,25,20,13,27,,,,,,,,3.7,1.9,3.2*3A -$GPGST,222614.000,18.8,16.8,28.3,28.1,18.2,24.0,43.4*54 -$GPGSV,3,1,10,16,48,116,27,25,39,268,30,23,58,174,32,20,71,337,35*7A -$GPGSV,3,2,10,19,02,029,,04,06,242,28,13,31,223,26,27,19,284,32*71 -$GPGSV,3,3,10,11,06,338,,03,14,055,30*73 -$GPRMC,222614.000,A,2734.84523,S,15305.91064,E,24.7,40.2,030308,11.2,W,A*34 -$GPVTG,40.2,T,51.4,M,24.7,N,45.7,K,A*22 -$GPGGA,222615.000,2734.84002,S,15305.91547,E,1,07,1.2,53.0,M,39.2,M,,*7B -$GPGLL,2734.84002,S,15305.91547,E,222615.000,A,A*44 -$GPGSA,A,3,16,25,23,20,13,27,03,,,,,,2.1,1.2,1.7*33 -$GPGST,222615.000,19.7,18.9,7.9,71.0,8.8,16.5,18.9*52 -$GPGSV,3,1,10,16,48,116,25,25,39,268,26,23,58,174,35,20,71,337,34*79 -$GPGSV,3,2,10,19,02,029,,04,06,242,24,13,31,223,25,27,19,284,30*7C -$GPGSV,3,3,10,11,06,338,,03,14,055,29*7B -$GPRMC,222615.000,A,2734.84002,S,15305.91547,E,24.1,38.7,030308,11.2,W,A*3B -$GPVTG,38.7,T,49.9,M,24.1,N,44.7,K,A*2B -$GPGGA,222616.000,2734.83488,S,15305.92024,E,1,07,1.2,53.1,M,39.2,M,,*7B -$GPGLL,2734.83488,S,15305.92024,E,222616.000,A,A*45 -$GPGSA,A,3,16,25,23,20,13,27,03,,,,,,2.1,1.2,1.7*33 -$GPGST,222616.000,18.1,15.8,11.2,70.8,10.8,14.1,19.9*51 -$GPGSV,3,1,10,16,48,116,27,25,39,268,29,23,58,174,34,20,71,337,30*71 -$GPGSV,3,2,10,19,02,029,,04,06,242,27,13,31,223,24,27,19,284,28*77 -$GPGSV,3,3,10,11,06,338,,03,14,055,32*71 -$GPRMC,222616.000,A,2734.83488,S,15305.92024,E,24.0,39.3,030308,11.2,W,A*3E -$GPVTG,39.3,T,50.5,M,24.0,N,44.5,K,A*29 -$GPGGA,222617.000,2734.82955,S,15305.92505,E,1,07,1.2,53.2,M,39.2,M,,*73 -$GPGLL,2734.82955,S,15305.92505,E,222617.000,A,A*4E -$GPGSA,A,3,16,25,23,20,13,27,03,,,,,,2.1,1.2,1.7*33 -$GPGST,222617.000,14.7,13.3,9.2,70.7,8.9,11.8,16.8*5B -$GPGSV,3,1,10,16,48,116,23,25,39,268,30,23,58,174,35,20,71,337,33*7F -$GPGSV,3,2,10,19,02,029,,04,06,242,25,13,31,223,25,27,19,284,26*7A -$GPGSV,3,3,10,11,06,338,,03,14,055,32*71 -$GPRMC,222617.000,A,2734.82955,S,15305.92505,E,24.7,38.8,030308,11.2,W,A*38 -$GPVTG,38.8,T,50.0,M,24.7,N,45.7,K,A*22 -$GPGGA,222618.000,2734.82405,S,15305.92991,E,1,07,1.2,53.5,M,39.2,M,,*72 -$GPGLL,2734.82405,S,15305.92991,E,222618.000,A,A*48 -$GPGSA,A,3,16,25,23,20,13,27,03,,,,,,2.1,1.2,1.7*33 -$GPGST,222618.000,13.7,14.7,7.8,77.2,7.6,13.2,24.3*54 -$GPGSV,3,1,10,16,48,116,27,25,39,268,30,23,58,174,36,20,71,337,32*79 -$GPGSV,3,2,10,19,02,029,,04,06,242,31,13,31,223,25,27,19,283,23*7D -$GPGSV,3,3,10,11,06,338,,03,14,056,32*72 -$GPRMC,222618.000,A,2734.82405,S,15305.92991,E,25.3,38.3,030308,11.2,W,A*30 -$GPVTG,38.3,T,49.5,M,25.3,N,46.8,K,A*2D -$GPGGA,222619.000,2734.81867,S,15305.93485,E,1,07,1.2,53.8,M,39.2,M,,*7C -$GPGLL,2734.81867,S,15305.93485,E,222619.000,A,A*4B -$GPGSA,A,3,16,25,23,20,13,27,03,,,,,,2.1,1.2,1.7*33 -$GPGST,222619.000,20.5,18.3,9.9,85.5,9.1,16.7,27.9*5A -$GPGSV,3,1,10,16,48,116,27,25,39,268,30,23,58,174,35,20,71,337,33*7B -$GPGSV,3,2,10,19,02,029,,04,06,242,29,13,31,223,23,27,19,283,23*72 -$GPGSV,3,3,10,11,06,338,,03,14,056,32*72 -$GPRMC,222619.000,A,2734.81867,S,15305.93485,E,25.3,39.2,030308,11.2,W,A*33 -$GPVTG,39.2,T,50.4,M,25.3,N,46.8,K,A*24 -$GPGGA,222620.000,2734.81344,S,15305.93979,E,1,05,1.6,53.8,M,39.2,M,,*74 -$GPGLL,2734.81344,S,15305.93979,E,222620.000,A,A*45 -$GPGSA,A,3,16,23,20,13,03,,,,,,,,2.5,1.6,1.9*3F -$GPGST,222620.000,18.2,14.7,21.1,9.8,19.1,13.7,29.8*64 -$GPGSV,3,1,10,16,48,116,26,25,39,268,30,23,58,174,33,20,71,337,34*7B -$GPGSV,3,2,10,19,02,029,,04,06,242,24,13,31,223,25,27,19,283,29*73 -$GPGSV,3,3,10,11,06,338,,03,14,056,33*73 -$GPRMC,222620.000,A,2734.81344,S,15305.93979,E,24.7,39.5,030308,11.2,W,A*3F -$GPVTG,39.5,T,50.7,M,24.7,N,45.8,K,A*26 -$GPGGA,222621.000,2734.80838,S,15305.94469,E,1,06,1.3,53.5,M,39.2,M,,*74 -$GPGLL,2734.80838,S,15305.94469,E,222621.000,A,A*4E -$GPGSA,A,3,16,25,23,20,13,03,,,,,,,2.3,1.3,1.9*3B -$GPGST,222621.000,14.6,11.8,13.4,39.2,11.7,11.4,21.8*5D -$GPGSV,3,1,10,16,48,116,25,25,39,268,31,23,58,174,33,20,71,337,37*7A -$GPGSV,3,2,10,19,03,029,,04,06,242,24,13,31,223,24,27,19,283,36*7D -$GPGSV,3,3,10,11,06,338,,03,14,056,32*72 -$GPRMC,222621.000,A,2734.80838,S,15305.94469,E,24.1,40.1,030308,11.2,W,A*38 -$GPVTG,40.1,T,51.3,M,24.1,N,44.7,K,A*21 -$GPGGA,222622.000,2734.80354,S,15305.94956,E,1,06,1.7,53.3,M,39.2,M,,*75 -$GPGLL,2734.80354,S,15305.94956,E,222622.000,A,A*4D -$GPGSA,A,3,16,25,23,20,13,27,,,,,,,3.3,1.7,2.9*3B -$GPGST,222622.000,13.2,10.2,17.1,41.6,12.5,13.2,30.8*59 -$GPGSV,3,1,10,16,48,116,26,25,39,268,31,23,58,174,26,20,71,337,39*73 -$GPGSV,3,2,10,19,03,029,,04,06,242,24,13,31,223,28,27,19,283,36*71 -$GPGSV,3,3,10,11,06,338,,03,14,056,35*75 -$GPRMC,222622.000,A,2734.80354,S,15305.94956,E,23.6,41.3,030308,11.2,W,A*38 -$GPVTG,41.3,T,52.5,M,23.6,N,43.7,K,A*20 -$GPGGA,222623.000,2734.79878,S,15305.95470,E,1,05,1.9,52.8,M,39.2,M,,*78 -$GPGLL,2734.79878,S,15305.95470,E,222623.000,A,A*47 -$GPGSA,A,3,16,25,20,13,27,,,,,,,,3.7,1.9,3.2*3A -$GPGST,222623.000,14.7,24.8,16.6,50.3,19.9,18.6,39.3*5E -$GPGSV,3,1,11,16,48,116,24,25,39,268,32,23,58,174,24,20,71,337,38*70 -$GPGSV,3,2,11,19,03,029,,04,06,242,24,13,31,223,32,27,19,283,34*79 -$GPGSV,3,3,11,11,06,338,,01,,,18,03,14,056,34*7D -$GPRMC,222623.000,A,2734.79878,S,15305.95470,E,24.0,43.4,030308,11.2,W,A*36 -$GPVTG,43.4,T,54.6,M,24.0,N,44.4,K,A*25 -$GPGGA,222624.000,2734.79400,S,15305.96019,E,1,05,1.9,52.3,M,39.2,M,,*7F -$GPGLL,2734.79400,S,15305.96019,E,222624.000,A,A*4B -$GPGSA,A,3,16,25,20,27,03,,,,,,,,2.7,1.9,2.0*39 -$GPGST,222624.000,12.3,24.0,7.9,80.2,8.0,21.7,15.3*5C -$GPGSV,3,1,11,16,48,116,23,25,39,268,32,23,58,174,26,20,71,337,37*7A -$GPGSV,3,2,11,19,03,029,,04,06,242,24,13,31,223,35,27,19,283,25*7E -$GPGSV,3,3,11,11,06,338,,01,,,18,03,14,056,31*78 -$GPRMC,222624.000,A,2734.79400,S,15305.96019,E,24.7,45.3,030308,11.2,W,A*3C -$GPVTG,45.3,T,56.6,M,24.7,N,45.7,K,A*23 -$GPGGA,222625.000,2734.78953,S,15305.96595,E,1,05,1.9,51.8,M,39.2,M,,*7D -$GPGLL,2734.78953,S,15305.96595,E,222625.000,A,A*41 -$GPGSA,A,3,16,25,20,13,27,,,,,,,,3.7,1.9,3.2*3A -$GPGST,222625.000,24.0,12.2,19.9,37.5,14.2,16.0,36.1*57 -$GPGSV,3,1,11,16,48,116,30,25,39,268,32,23,58,174,23,20,71,337,37*7D -$GPGSV,3,2,11,19,03,029,,04,06,242,25,13,31,223,36,27,19,283,25*7C -$GPGSV,3,3,11,11,06,338,,01,,,18,03,14,056,24*7C -$GPRMC,222625.000,A,2734.78953,S,15305.96595,E,24.8,47.9,030308,11.2,W,A*31 -$GPVTG,47.9,T,59.1,M,24.8,N,46.0,K,A*28 -$GPGGA,222626.000,2734.78516,S,15305.97172,E,1,05,2.5,51.1,M,39.2,M,,*79 -$GPGLL,2734.78516,S,15305.97172,E,222626.000,A,A*43 -$GPGSA,A,3,16,25,20,04,13,,,,,,,,4.2,2.5,3.3*37 -$GPGST,222626.000,20.2,12.6,23.1,19.8,13.0,20.2,38.4*5F -$GPGSV,3,1,11,16,48,116,31,25,39,268,32,23,58,174,25,20,71,337,38*75 -$GPGSV,3,2,11,19,03,029,,04,06,242,25,13,31,223,36,27,19,283,23*7A -$GPGSV,3,3,11,11,06,338,,01,,,18,03,14,056,24*7C -$GPRMC,222626.000,A,2734.78516,S,15305.97172,E,24.7,48.3,030308,11.2,W,A*39 -$GPVTG,48.3,T,59.5,M,24.7,N,45.7,K,A*22 -$GPGGA,222627.000,2734.78079,S,15305.97737,E,1,04,2.5,50.5,M,39.2,M,,*77 -$GPGLL,2734.78079,S,15305.97737,E,222627.000,A,A*49 -$GPGSA,A,3,16,23,20,13,,,,,,,,,5.8,2.5,5.2*39 -$GPGST,222627.000,16.3,12.4,42.2,11.3,13.5,37.9,90.0*51 -$GPGSV,3,1,11,16,48,116,28,25,39,268,32,23,58,174,25,20,71,337,37*72 -$GPGSV,3,2,11,19,03,029,,04,06,242,29,13,31,223,37,27,19,283,30*75 -$GPGSV,3,3,11,11,06,338,,01,,,18,03,14,056,24*7C -$GPRMC,222627.000,A,2734.78079,S,15305.97737,E,24.3,48.1,030308,11.2,W,A*35 -$GPVTG,48.1,T,59.3,M,24.3,N,45.1,K,A*24 -$GPGGA,222628.000,2734.77637,S,15305.98293,E,1,07,1.3,50.2,M,39.2,M,,*7E -$GPGLL,2734.77637,S,15305.98293,E,222628.000,A,A*41 -$GPGSA,A,3,16,25,23,04,13,27,03,,,,,,2.2,1.3,1.8*38 -$GPGST,222628.000,13.2,14.5,8.8,76.9,8.4,13.0,22.0*5F -$GPGSV,3,1,11,16,48,116,30,25,39,268,32,23,58,174,27,20,71,337,37*79 -$GPGSV,3,2,11,19,03,029,,04,06,242,32,13,31,223,37,27,19,283,28*76 -$GPGSV,3,3,11,11,06,338,,01,,,18,03,14,056,25*7D -$GPRMC,222628.000,A,2734.77637,S,15305.98293,E,23.9,48.5,030308,11.2,W,A*34 -$GPVTG,48.5,T,59.7,M,23.9,N,44.3,K,A*2A -$GPGGA,222629.000,2734.77226,S,15305.98850,E,1,08,1.1,49.5,M,39.2,M,,*7C -$GPGLL,2734.77226,S,15305.98850,E,222629.000,A,A*41 -$GPGSA,A,3,16,25,23,20,04,13,27,03,,,,,1.7,1.1,1.3*35 -$GPGST,222629.000,11.0,9.5,7.3,89.6,6.7,8.6,14.3*5E -$GPGSV,3,1,11,16,48,116,31,25,39,268,32,23,58,174,25,20,71,337,36*7B -$GPGSV,3,2,11,19,03,029,,04,06,242,30,13,31,223,37,27,19,283,28*74 -$GPGSV,3,3,11,11,06,338,,01,,,18,03,14,056,27*7F -$GPRMC,222629.000,A,2734.77226,S,15305.98850,E,23.5,49.4,030308,11.2,W,A*38 -$GPVTG,49.4,T,60.6,M,23.5,N,43.5,K,A*2C -$GPGGA,222630.000,2734.76859,S,15305.99361,E,1,04,3.5,49.4,M,39.2,M,,*74 -$GPGLL,2734.76859,S,15305.99361,E,222630.000,A,A*42 -$GPGSA,A,3,16,25,20,27,,,,,,,,,4.9,3.5,3.4*39 -$GPGST,222630.000,13.4,7.9,50.0,19.9,17.0,43.1,69.5*66 -$GPGSV,3,1,11,16,48,116,31,25,39,268,30,23,58,174,22,20,71,337,36*7E -$GPGSV,3,2,11,19,03,029,,04,06,242,32,13,31,223,35,27,19,283,24*78 -$GPGSV,3,3,11,11,06,338,18,01,,,18,03,14,056,29*78 -$GPRMC,222630.000,A,2734.76859,S,15305.99361,E,21.1,50.3,030308,11.2,W,A*32 -$GPVTG,50.3,T,61.5,M,21.1,N,39.1,K,A*2E -$GPGGA,222631.000,2734.76498,S,15305.99809,E,1,08,1.1,48.2,M,39.2,M,,*7C -$GPGLL,2734.76498,S,15305.99809,E,222631.000,A,A*47 -$GPGSA,A,3,16,25,23,20,04,13,27,03,,,,,1.7,1.1,1.3*35 -$GPGST,222631.000,18.4,10.8,5.8,77.6,5.6,9.7,13.2*63 -$GPGSV,3,1,11,16,48,116,32,25,39,268,31,23,58,174,22,20,71,337,35*7F -$GPGSV,3,2,11,19,03,029,,04,06,242,30,13,31,223,36,27,19,283,25*78 -$GPGSV,3,3,11,11,06,338,18,01,,,18,03,14,056,33*73 -$GPRMC,222631.000,A,2734.76498,S,15305.99809,E,19.4,47.4,030308,11.2,W,A*38 -$GPVTG,47.4,T,58.6,M,19.4,N,35.9,K,A*2C -$GPGGA,222632.000,2734.76359,S,15306.00162,E,1,08,1.1,49.6,M,39.2,M,,*77 -$GPGLL,2734.76359,S,15306.00162,E,222632.000,A,A*49 -$GPGSA,A,3,16,25,23,20,04,13,27,03,,,,,1.7,1.1,1.3*35 -$GPGST,222632.000,18.1,14.9,6.7,53.4,9.5,11.5,16.1*5A -$GPGSV,3,1,11,16,48,116,30,25,39,268,31,23,58,174,31,20,71,337,31*7B -$GPGSV,3,2,11,19,03,029,,04,06,242,22,13,31,223,37,27,19,283,29*76 -$GPGSV,3,3,11,11,06,338,24,01,,,18,03,14,056,25*7B -$GPRMC,222632.000,A,2734.76359,S,15306.00162,E,12.4,65.5,030308,11.2,W,A*3C -$GPVTG,65.5,T,76.7,M,12.4,N,22.9,K,A*2D -$GPGGA,222633.000,2734.76254,S,15306.00553,E,1,08,1.1,49.0,M,39.2,M,,*7A -$GPGLL,2734.76254,S,15306.00553,E,222633.000,A,A*42 -$GPGSA,A,3,16,25,23,20,04,13,27,03,,,,,1.7,1.1,1.3*35 -$GPGST,222633.000,13.9,12.3,5.8,55.3,7.8,9.7,13.7*62 -$GPGSV,3,1,10,16,48,116,35,25,39,268,35,23,58,174,30,20,71,337,35*7E -$GPGSV,3,2,10,19,03,029,,04,06,242,26,13,31,223,39,27,19,283,26*72 -$GPGSV,3,3,10,11,06,338,24,03,14,056,30*76 -$GPRMC,222633.000,A,2734.76254,S,15306.00553,E,12.9,72.5,030308,11.2,W,A*3C -$GPVTG,72.5,T,83.7,M,12.9,N,23.9,K,A*2D -$GPGGA,222634.000,2734.76305,S,15306.00850,E,1,08,1.1,48.4,M,39.2,M,,*73 -$GPGLL,2734.76305,S,15306.00850,E,222634.000,A,A*4E -$GPGSA,A,3,16,25,23,20,04,13,27,03,,,,,1.7,1.1,1.3*35 -$GPGST,222634.000,11.3,10.3,5.3,58.0,6.5,8.4,12.0*62 -$GPGSV,3,1,10,16,48,116,33,25,39,268,38,23,58,174,30,20,71,337,30*70 -$GPGSV,3,2,10,19,03,029,,04,06,242,29,13,31,223,34,27,19,283,30*77 -$GPGSV,3,3,10,11,06,338,23,03,14,056,25*75 -$GPRMC,222634.000,A,2734.76305,S,15306.00850,E,9.4,99.3,030308,11.2,W,A*04 -$GPVTG,99.3,T,110.5,M,9.4,N,17.3,K,A*2D -$GPGGA,222635.000,2734.76418,S,15306.01089,E,1,08,1.1,47.9,M,39.2,M,,*76 -$GPGLL,2734.76418,S,15306.01089,E,222635.000,A,A*49 -$GPGSA,A,3,16,25,23,20,04,13,27,03,,,,,1.7,1.1,1.3*35 -$GPGST,222635.000,13.4,9.3,7.7,66.3,7.3,8.3,14.0*50 -$GPGSV,3,1,10,16,48,116,36,25,39,268,31,23,58,174,37,20,71,337,36*7D -$GPGSV,3,2,10,19,03,029,,04,06,242,31,13,31,223,34,27,19,283,31*7F -$GPGSV,3,3,10,11,06,338,23,03,14,056,23*73 -$GPRMC,222635.000,A,2734.76418,S,15306.01089,E,8.3,116.7,030308,11.2,W,A*37 -$GPVTG,116.7,T,127.9,M,8.3,N,15.4,K,A*14 -$GPGGA,222636.000,2734.76577,S,15306.01258,E,1,07,1.7,47.9,M,39.2,M,,*7A -$GPGLL,2734.76577,S,15306.01258,E,222636.000,A,A*4C -$GPGSA,A,3,16,25,23,20,04,13,27,,,,,,2.8,1.7,2.3*3F -$GPGST,222636.000,10.6,11.9,8.1,45.4,9.3,9.3,18.8*65 -$GPGSV,3,1,10,16,48,116,41,25,39,268,35,23,58,174,40,20,71,337,33*7C -$GPGSV,3,2,10,19,03,029,,04,06,242,32,13,31,223,28,27,19,283,34*74 -$GPGSV,3,3,10,11,06,338,25,03,14,056,23*75 -$GPRMC,222636.000,A,2734.76577,S,15306.01258,E,7.6,135.7,030308,11.2,W,A*39 -$GPVTG,135.7,T,146.9,M,7.6,N,14.1,K,A*1C -$GPGGA,222637.000,2734.76759,S,15306.01422,E,1,07,1.7,47.8,M,39.2,M,,*7F -$GPGLL,2734.76759,S,15306.01422,E,222637.000,A,A*48 -$GPGSA,A,3,16,25,23,20,04,13,27,,,,,,2.8,1.7,2.3*3F -$GPGST,222637.000,8.9,7.2,10.9,44.4,8.4,8.5,17.1*59 -$GPGSV,3,1,10,16,48,116,44,25,39,268,36,23,58,174,33,20,71,337,33*7E -$GPGSV,3,2,10,19,03,029,,04,06,242,24,13,31,223,29,27,19,283,36*70 -$GPGSV,3,3,10,11,06,338,25,03,14,056,23*75 -$GPRMC,222637.000,A,2734.76759,S,15306.01422,E,8.0,140.6,030308,11.2,W,A*37 -$GPVTG,140.6,T,151.8,M,8.0,N,14.8,K,A*18 -$GPGGA,222638.000,2734.76957,S,15306.01592,E,1,06,2.0,47.6,M,39.2,M,,*71 -$GPGLL,2734.76957,S,15306.01592,E,222638.000,A,A*4D -$GPGSA,A,3,16,25,23,20,04,13,,,,,,,3.2,2.0,2.6*30 -$GPGST,222638.000,10.4,8.9,16.3,14.1,8.7,14.6,19.9*51 -$GPGSV,3,1,10,16,48,116,38,25,39,268,30,23,58,174,29,20,71,337,29*73 -$GPGSV,3,2,10,19,03,029,,04,06,242,28,13,31,223,31,27,19,283,29*7B -$GPGSV,3,3,10,11,06,338,21,03,14,056,23*71 -$GPRMC,222638.000,A,2734.76957,S,15306.01592,E,8.8,142.8,030308,11.2,W,A*36 -$GPVTG,142.8,T,154.0,M,8.8,N,16.2,K,A*19 -$GPGGA,222639.000,2734.77109,S,15306.01748,E,1,07,1.7,47.8,M,39.2,M,,*7C -$GPGLL,2734.77109,S,15306.01748,E,222639.000,A,A*4B -$GPGSA,A,3,16,25,23,20,04,13,27,,,,,,2.8,1.7,2.3*3F -$GPGST,222639.000,9.5,9.6,14.7,43.8,11.3,11.5,19.8*51 -$GPGSV,3,1,10,16,48,116,37,25,39,268,32,23,58,174,37,20,71,337,29*71 -$GPGSV,3,2,10,19,03,029,,04,06,242,28,13,31,223,31,27,19,283,27*75 -$GPGSV,3,3,10,11,06,338,21,03,14,056,23*71 -$GPRMC,222639.000,A,2734.77109,S,15306.01748,E,7.1,137.2,030308,11.2,W,A*3E -$GPVTG,137.2,T,148.4,M,7.1,N,13.1,K,A*18 -$GPGGA,222640.000,2734.77216,S,15306.02018,E,1,04,2.6,47.8,M,39.2,M,,*7F -$GPGLL,2734.77216,S,15306.02018,E,222640.000,A,A*49 -$GPGSA,A,3,16,25,23,13,,,,,,,,,6.2,2.6,5.6*32 -$GPGST,222640.000,20.0,11.7,22.3,7.0,10.9,20.3,46.8*65 -$GPGSV,3,1,10,16,48,116,32,25,39,268,29,23,58,174,24,20,71,337,25*70 -$GPGSV,3,2,10,19,03,029,,04,06,242,28,13,31,223,31,27,19,283,25*77 -$GPGSV,3,3,10,11,06,338,21,03,14,056,23*71 -$GPRMC,222640.000,A,2734.77216,S,15306.02018,E,9.4,114.2,030308,11.2,W,A*36 -$GPVTG,114.2,T,125.4,M,9.4,N,17.4,K,A*18 -$GPGGA,222641.000,2734.77543,S,15306.02149,E,1,04,2.6,47.7,M,39.2,M,,*73 -$GPGLL,2734.77543,S,15306.02149,E,222641.000,A,A*4A -$GPGSA,A,3,16,25,23,13,,,,,,,,,6.2,2.6,5.6*32 -$GPGST,222641.000,18.3,40.3,13.2,79.5,13.7,36.3,59.1*5E -$GPGSV,3,1,10,16,48,116,34,25,39,268,23,23,58,174,26,20,71,337,27*7C -$GPGSV,3,2,10,19,03,029,,04,06,242,28,13,31,223,31,27,19,283,23*71 -$GPGSV,3,3,10,11,06,338,21,03,14,056,23*71 -$GPRMC,222641.000,A,2734.77543,S,15306.02149,E,12.5,160.9,030308,11.2,W,A*06 -$GPVTG,160.9,T,172.1,M,12.5,N,23.1,K,A*2E -$GPGGA,222642.000,2734.77709,S,15306.02300,E,1,04,2.6,47.7,M,39.2,M,,*73 -$GPGLL,2734.77709,S,15306.02300,E,222642.000,A,A*4A -$GPGSA,A,3,16,20,04,13,,,,,,,,,4.3,2.6,3.4*35 -$GPGST,222642.000,15.8,14.5,71.8,20.7,26.3,61.6,97.2*58 -$GPGSV,3,1,10,16,48,116,41,25,40,268,23,23,58,174,27,20,71,337,34*73 -$GPGSV,3,2,10,19,03,029,,04,06,242,28,13,31,223,31,27,19,283,23*71 -$GPGSV,3,3,10,11,06,338,21,03,14,056,23*71 -$GPRMC,222642.000,A,2734.77709,S,15306.02300,E,7.5,140.7,030308,11.2,W,A*3E -$GPVTG,140.7,T,151.9,M,7.5,N,13.9,K,A*14 -$GPGGA,222643.000,2734.77831,S,15306.02427,E,1,04,2.6,47.5,M,39.2,M,,*76 -$GPGLL,2734.77831,S,15306.02427,E,222643.000,A,A*4D -$GPGSA,A,3,16,20,04,13,,,,,,,,,4.3,2.6,3.4*35 -$GPGST,222643.000,12.9,15.5,112.8,21.4,39.9,96.1,154.3*5C -$GPGSV,3,1,10,16,48,116,41,25,40,268,23,23,58,174,26,20,71,337,35*73 -$GPGSV,3,2,10,19,03,029,,04,06,242,28,13,31,223,31,27,19,283,23*71 -$GPGSV,3,3,10,11,06,338,21,03,14,056,23*71 -$GPRMC,222643.000,A,2734.77831,S,15306.02427,E,5.6,136.2,030308,11.2,W,A*3C -$GPVTG,136.2,T,147.4,M,5.6,N,10.4,K,A*15 -$GPGGA,222644.000,2734.77900,S,15306.02522,E,1,04,2.5,47.4,M,39.2,M,,*74 -$GPGLL,2734.77900,S,15306.02522,E,222644.000,A,A*4D -$GPGSA,A,3,16,23,20,13,,,,,,,,,5.8,2.5,5.2*39 -$GPGST,222644.000,11.9,32.3,39.9,23.1,35.5,30.7,165.7*69 -$GPGSV,3,1,10,16,48,116,38,25,40,268,23,23,58,174,25,20,71,337,37*7C -$GPGSV,3,2,10,19,03,029,,04,06,242,28,13,31,223,31,27,19,283,23*71 -$GPGSV,3,3,10,11,06,338,21,03,14,056,26*74 -$GPRMC,222644.000,A,2734.77900,S,15306.02522,E,3.7,127.8,030308,11.2,W,A*31 -$GPVTG,127.8,T,139.0,M,3.7,N,6.9,K,A*2F -$GPGGA,222645.000,2734.77991,S,15306.02594,E,1,04,3.4,47.4,M,39.2,M,,*70 -$GPGLL,2734.77991,S,15306.02594,E,222645.000,A,A*49 -$GPGSA,A,3,16,23,20,03,,,,,,,,,6.1,3.4,5.0*30 -$GPGST,222645.000,15.3,40.1,15.0,66.6,34.1,19.2,69.1*50 -$GPGSV,3,1,10,16,48,116,33,25,40,268,23,23,58,174,23,20,71,337,35*73 -$GPGSV,3,2,10,19,03,029,,04,06,242,28,13,31,223,31,27,19,283,23*71 -$GPGSV,3,3,10,11,06,338,21,03,14,056,30*73 -$GPRMC,222645.000,A,2734.77991,S,15306.02594,E,3.9,145.4,030308,11.2,W,A*33 -$GPVTG,145.4,T,156.6,M,3.9,N,7.2,K,A*2C -$GPGGA,222646.000,2734.78074,S,15306.02652,E,1,04,3.4,47.4,M,39.2,M,,*77 -$GPGLL,2734.78074,S,15306.02652,E,222646.000,A,A*4E -$GPGSA,A,3,16,23,20,03,,,,,,,,,6.1,3.4,5.0*30 -$GPGST,222646.000,14.8,53.5,15.6,78.9,48.1,16.9,76.9*50 -$GPGSV,3,1,11,16,48,116,32,25,40,268,23,23,58,174,26,20,71,337,32*71 -$GPGSV,3,2,11,19,03,029,,04,06,242,28,13,31,223,31,27,19,283,23*70 -$GPGSV,3,3,11,11,06,338,21,08,00,298,,03,14,056,34*4D -$GPRMC,222646.000,A,2734.78074,S,15306.02652,E,3.5,149.5,030308,11.2,W,A*35 -$GPVTG,149.5,T,160.7,M,3.5,N,6.6,K,A*2C -$GPGGA,222647.000,2734.78140,S,15306.02704,E,1,04,3.4,47.3,M,39.2,M,,*75 -$GPGLL,2734.78140,S,15306.02704,E,222647.000,A,A*4B -$GPGSA,A,3,16,23,20,03,,,,,,,,,6.1,3.4,5.0*30 -$GPGST,222647.000,11.7,42.4,13.1,77.7,38.0,14.3,60.9*53 -$GPGSV,3,1,11,16,48,116,37,25,40,268,23,23,58,174,31,20,71,337,36*76 -$GPGSV,3,2,11,19,03,029,,04,06,242,28,13,31,223,31,27,19,283,23*70 -$GPGSV,3,3,11,11,06,338,21,08,00,298,,03,14,056,34*4D -$GPRMC,222647.000,A,2734.78140,S,15306.02704,E,2.8,145.4,030308,11.2,W,A*31 -$GPVTG,145.4,T,156.6,M,2.8,N,5.1,K,A*2D -$GPGGA,222648.000,2734.78183,S,15306.02753,E,1,04,3.5,47.2,M,39.2,M,,*77 -$GPGLL,2734.78183,S,15306.02753,E,222648.000,A,A*49 -$GPGSA,A,3,16,23,20,03,,,,,,,,,6.1,3.5,5.0*31 -$GPGST,222648.000,11.3,35.2,16.9,76.3,31.5,16.9,53.8*53 -$GPGSV,3,1,11,16,48,116,35,25,40,267,23,23,58,174,37,20,71,337,35*7E -$GPGSV,3,2,11,19,03,029,,04,06,242,28,13,31,223,31,27,19,283,23*70 -$GPGSV,3,3,11,11,06,338,21,08,00,298,,03,14,056,35*4C -$GPRMC,222648.000,A,2734.78183,S,15306.02753,E,2.1,135.8,030308,11.2,W,A*31 -$GPVTG,135.8,T,147.1,M,2.1,N,3.9,K,A*26 -$GPGGA,222649.000,2734.78197,S,15306.02773,E,1,04,3.5,46.8,M,39.2,M,,*7A -$GPGLL,2734.78197,S,15306.02773,E,222649.000,A,A*4F -$GPGSA,A,3,16,23,20,03,,,,,,,,,6.1,3.5,5.0*31 -$GPGST,222649.000,13.9,60.8,14.8,84.0,55.3,14.7,79.7*52 -$GPGSV,3,1,11,16,48,116,31,25,40,267,23,23,58,174,36,20,71,337,31*7F -$GPGSV,3,2,11,19,03,029,,04,06,242,,13,31,223,,27,19,283,23*78 -$GPGSV,3,3,11,11,06,338,21,08,00,298,,03,14,056,29*41 -$GPRMC,222649.000,A,2734.78197,S,15306.02773,E,0.6,148.6,030308,11.2,W,A*36 -$GPVTG,148.6,T,159.8,M,0.6,N,1.2,K,A*28 -$GPGGA,222650.000,2734.78195,S,15306.02785,E,1,04,3.5,46.4,M,39.2,M,,*75 -$GPGLL,2734.78195,S,15306.02785,E,222650.000,A,A*4C -$GPGSA,A,3,16,23,20,03,,,,,,,,,6.1,3.5,5.0*31 -$GPGST,222650.000,11.4,48.0,12.9,83.3,43.6,12.8,63.8*5B -$GPGSV,3,1,11,16,48,116,30,25,40,267,23,23,58,174,33,20,71,337,30*7A -$GPGSV,3,2,11,19,03,029,,04,06,242,,13,31,223,,27,19,283,23*78 -$GPGSV,3,3,11,11,06,338,21,08,00,298,,03,14,056,26*4E -$GPRMC,222650.000,A,2734.78195,S,15306.02785,E,0.2,6.4,030308,11.2,W,A*38 -$GPVTG,6.4,T,17.6,M,0.2,N,0.3,K,A*10 -$GPGGA,222651.000,2734.78191,S,15306.02798,E,1,04,3.5,45.9,M,39.2,M,,*72 -$GPGLL,2734.78191,S,15306.02798,E,222651.000,A,A*45 -$GPGSA,A,3,16,23,20,03,,,,,,,,,6.1,3.5,5.0*31 -$GPGST,222651.000,9.8,40.0,12.0,82.4,36.3,11.9,53.8*6E -$GPGSV,3,1,11,16,48,116,28,25,40,267,,23,58,174,35,20,71,337,26*73 -$GPGSV,3,2,11,19,03,029,,04,06,242,,13,31,223,,27,19,283,*79 -$GPGSV,3,3,11,11,06,338,21,08,00,298,,03,14,056,28*40 -$GPRMC,222651.000,A,2734.78191,S,15306.02798,E,0.1,352.6,030308,11.2,W,A*32 -$GPVTG,352.6,T,3.8,M,0.1,N,0.3,K,A*28 -$GPGGA,222652.000,2734.78198,S,15306.02797,E,1,04,3.5,45.9,M,39.2,M,,*77 -$GPGLL,2734.78198,S,15306.02797,E,222652.000,A,A*40 -$GPGSA,A,3,16,23,20,03,,,,,,,,,6.1,3.5,5.0*31 -$GPGST,222652.000,21.7,41.2,15.0,83.8,37.5,14.2,91.6*58 -$GPGSV,3,1,11,16,48,116,24,25,40,267,,23,58,174,23,20,71,337,26*78 -$GPGSV,3,2,11,19,03,029,,04,06,242,,13,31,223,,27,19,283,*79 -$GPGSV,3,3,11,11,06,338,21,08,00,298,,03,14,056,24*4C -$GPRMC,222652.000,A,2734.78198,S,15306.02797,E,0.2,263.5,030308,11.2,W,A*34 -$GPVTG,263.5,T,274.7,M,0.2,N,0.3,K,A*26 -$GPGGA,222653.000,2734.78226,S,15306.02793,E,1,04,3.5,45.9,M,39.2,M,,*74 -$GPGLL,2734.78226,S,15306.02793,E,222653.000,A,A*43 -$GPGSA,A,3,16,23,20,03,,,,,,,,,6.1,3.5,5.0*31 -$GPGST,222653.000,18.8,36.4,20.7,81.4,33.0,19.3,78.6*5F -$GPGSV,3,1,11,16,48,116,24,25,40,267,,23,58,174,25,20,71,337,25*7D -$GPGSV,3,2,11,19,03,029,,04,06,242,,13,31,223,,27,20,283,*73 -$GPGSV,3,3,11,11,06,338,21,08,00,298,,03,14,056,24*4C -$GPRMC,222653.000,A,2734.78226,S,15306.02793,E,0.8,188.1,030308,11.2,W,A*3F -$GPVTG,188.1,T,199.3,M,0.8,N,1.5,K,A*2D -$GPGGA,222654.000,2734.78231,S,15306.02789,E,1,04,3.5,45.9,M,39.2,M,,*7E -$GPGLL,2734.78231,S,15306.02789,E,222654.000,A,A*49 -$GPGSA,A,3,16,23,20,03,,,,,,,,,6.1,3.5,5.0*31 -$GPGST,222654.000,14.4,23.3,16.5,69.8,20.7,16.0,57.9*5D -$GPGSV,3,1,11,16,48,116,34,25,40,267,,23,58,174,34,20,71,337,31*79 -$GPGSV,3,2,11,19,03,029,,04,06,242,,13,31,223,,27,20,283,*73 -$GPGSV,3,3,11,11,06,338,21,08,00,298,,03,14,056,31*48 -$GPRMC,222654.000,A,2734.78231,S,15306.02789,E,0.1,145.6,030308,11.2,W,A*3A -$GPVTG,145.6,T,156.8,M,0.1,N,0.2,K,A*2C -$GPGGA,222655.000,2734.78251,S,15306.02806,E,1,04,3.5,45.8,M,39.2,M,,*70 -$GPGLL,2734.78251,S,15306.02806,E,222655.000,A,A*46 -$GPGSA,A,3,16,23,20,03,,,,,,,,,6.1,3.5,5.0*31 -$GPGST,222655.000,12.0,28.1,14.0,78.7,25.3,13.6,52.5*54 -$GPGSV,3,1,11,16,48,116,40,25,40,267,,23,58,174,38,20,71,337,35*72 -$GPGSV,3,2,11,19,03,029,,04,06,242,,13,31,223,,27,20,283,*73 -$GPGSV,3,3,11,11,06,338,21,08,00,298,,03,14,056,36*4F -$GPRMC,222655.000,A,2734.78251,S,15306.02806,E,0.7,135.5,030308,11.2,W,A*37 -$GPVTG,135.5,T,146.8,M,0.7,N,1.2,K,A*2E -$GPGGA,222656.000,2734.78273,S,15306.02823,E,1,04,3.5,45.7,M,39.2,M,,*7B -$GPGLL,2734.78273,S,15306.02823,E,222656.000,A,A*42 -$GPGSA,A,3,16,23,20,03,,,,,,,,,6.1,3.5,5.0*31 -$GPGST,222656.000,9.9,24.8,12.2,76.6,22.2,12.0,44.0*69 -$GPGSV,3,1,11,16,48,116,38,25,40,267,,23,58,174,36,20,71,337,30*76 -$GPGSV,3,2,11,19,03,029,,04,06,242,,13,31,223,,27,20,283,*73 -$GPGSV,3,3,11,11,06,338,21,08,00,298,,03,14,056,35*4C -$GPRMC,222656.000,A,2734.78273,S,15306.02823,E,0.5,135.5,030308,11.2,W,A*31 -$GPVTG,135.5,T,146.7,M,0.5,N,1.0,K,A*21 -$GPGGA,222657.000,2734.78312,S,15306.02858,E,1,04,3.5,45.5,M,39.2,M,,*72 -$GPGLL,2734.78312,S,15306.02858,E,222657.000,A,A*49 -$GPGSA,A,3,16,23,20,03,,,,,,,,,6.1,3.5,5.0*31 -$GPGST,222657.000,8.4,22.4,10.9,74.9,19.9,11.0,38.1*60 -$GPGSV,3,1,11,16,48,116,37,25,40,267,,23,58,174,36,20,71,337,30*79 -$GPGSV,3,2,11,19,03,029,,04,06,242,,13,31,223,,27,20,283,*73 -$GPGSV,3,3,11,11,06,338,21,08,00,298,,03,14,056,34*4D -$GPRMC,222657.000,A,2734.78312,S,15306.02858,E,1.3,137.6,030308,11.2,W,A*3C -$GPVTG,137.6,T,148.8,M,1.3,N,2.4,K,A*21 -$GPGGA,222658.000,2734.78370,S,15306.02910,E,1,04,3.5,45.4,M,39.2,M,,*75 -$GPGLL,2734.78370,S,15306.02910,E,222658.000,A,A*4F -$GPGSA,A,3,16,23,20,03,,,,,,,,,6.1,3.5,5.0*31 -$GPGST,222658.000,11.5,25.4,19.7,45.8,20.9,20.7,46.1*53 -$GPGSV,3,1,11,16,48,116,34,25,40,267,18,23,58,174,36,20,71,337,32*71 -$GPGSV,3,2,11,19,03,029,,04,06,242,,13,31,223,,27,20,283,*73 -$GPGSV,3,3,11,11,06,338,,08,00,298,,03,14,056,32*48 -$GPRMC,222658.000,A,2734.78370,S,15306.02910,E,2.7,141.8,030308,11.2,W,A*32 -$GPVTG,141.8,T,153.0,M,2.7,N,5.0,K,A*28 -$GPGGA,222659.000,2734.78463,S,15306.02956,E,1,04,3.5,45.4,M,39.2,M,,*73 -$GPGLL,2734.78463,S,15306.02956,E,222659.000,A,A*49 -$GPGSA,A,3,16,23,20,03,,,,,,,,,6.1,3.5,5.0*31 -$GPGST,222659.000,10.9,34.8,17.8,79.2,31.4,17.1,52.2*5E -$GPGSV,3,1,11,16,48,116,32,25,40,267,18,23,58,174,37,20,71,337,32*76 -$GPGSV,3,2,11,19,03,029,,04,06,242,,13,31,223,,27,20,283,*73 -$GPGSV,3,3,11,11,06,338,,08,00,298,,03,14,056,26*4D -$GPRMC,222659.000,A,2734.78463,S,15306.02956,E,3.6,157.2,030308,11.2,W,A*39 -$GPVTG,157.2,T,168.4,M,3.6,N,6.7,K,A*2D -$GPGGA,222700.000,2734.78553,S,15306.02974,E,1,04,3.5,45.3,M,39.2,M,,*7B -$GPGLL,2734.78553,S,15306.02974,E,222700.000,A,A*46 -$GPGSA,A,3,16,23,20,03,,,,,,,,,6.1,3.5,5.0*31 -$GPGST,222700.000,13.4,30.5,15.4,80.9,27.6,14.6,58.2*5C -$GPGSV,3,1,11,16,48,116,38,25,40,267,18,23,58,174,42,20,71,337,34*78 -$GPGSV,3,2,11,19,03,029,,04,06,242,,13,31,223,,27,20,283,*73 -$GPGSV,3,3,11,11,06,338,,08,00,298,,03,14,056,30*4A -$GPRMC,222700.000,A,2734.78553,S,15306.02974,E,3.1,171.1,030308,11.2,W,A*36 -$GPVTG,171.1,T,182.3,M,3.1,N,5.7,K,A*2D -$GPGGA,222701.000,2734.78678,S,15306.02887,E,1,05,1.6,45.4,M,39.2,M,,*7A -$GPGLL,2734.78678,S,15306.02887,E,222701.000,A,A*40 -$GPGSA,A,3,16,23,20,13,03,,,,,,,,2.5,1.6,1.9*3F -$GPGST,222701.000,18.6,22.3,33.4,25.2,29.0,22.6,46.2*53 -$GPGSV,3,1,11,16,48,116,30,25,40,267,18,23,58,174,33,20,71,337,27*74 -$GPGSV,3,2,11,19,03,029,,04,06,242,,13,31,223,20,27,20,283,*71 -$GPGSV,3,3,11,11,06,338,,08,00,298,,03,14,056,27*4C -$GPRMC,222701.000,A,2734.78678,S,15306.02887,E,5.1,212.6,030308,11.2,W,A*37 -$GPVTG,212.6,T,223.8,M,5.1,N,9.5,K,A*27 -$GPGGA,222702.000,2734.78726,S,15306.02769,E,1,04,3.5,45.3,M,39.2,M,,*7B -$GPGLL,2734.78726,S,15306.02769,E,222702.000,A,A*46 -$GPGSA,A,3,16,23,20,03,,,,,,,,,6.1,3.5,5.0*31 -$GPGST,222702.000,14.7,49.5,20.8,84.3,45.1,19.5,72.8*5F -$GPGSV,3,1,11,16,48,116,36,25,40,267,18,23,58,174,40,20,71,337,31*71 -$GPGSV,3,2,11,19,03,029,,04,06,242,,13,31,223,20,27,20,283,*71 -$GPGSV,3,3,11,11,06,338,,08,00,298,,03,14,056,28*43 -$GPRMC,222702.000,A,2734.78726,S,15306.02769,E,4.2,246.4,030308,11.2,W,A*30 -$GPVTG,246.4,T,257.6,M,4.2,N,7.7,K,A*27 -$GPGGA,222703.000,2734.78745,S,15306.02617,E,1,05,1.6,45.3,M,39.2,M,,*77 -$GPGLL,2734.78745,S,15306.02617,E,222703.000,A,A*4A -$GPGSA,A,3,16,23,20,13,03,,,,,,,,2.5,1.6,1.9*3F -$GPGST,222703.000,12.3,16.0,23.0,21.5,20.3,15.6,33.1*53 -$GPGSV,3,1,11,16,48,116,31,25,40,267,18,23,58,174,29,20,70,337,23*7B -$GPGSV,3,2,11,19,03,029,,04,06,242,,13,31,223,22,27,20,283,*73 -$GPGSV,3,3,11,11,06,338,,08,00,298,,03,14,056,27*4C -$GPRMC,222703.000,A,2734.78745,S,15306.02617,E,4.9,265.5,030308,11.2,W,A*37 -$GPVTG,265.5,T,276.7,M,4.9,N,9.1,K,A*26 -$GPGGA,222704.000,2734.78730,S,15306.02555,E,1,04,3.5,45.3,M,39.2,M,,*77 -$GPGLL,2734.78730,S,15306.02555,E,222704.000,A,A*4A -$GPGSA,A,3,16,23,20,03,,,,,,,,,6.1,3.5,5.1*30 -$GPGST,222704.000,9.5,34.0,22.1,80.5,30.8,20.6,55.7*69 -$GPGSV,3,1,11,16,48,116,31,25,40,267,18,23,58,174,29,20,70,337,23*7B -$GPGSV,3,2,11,19,03,029,,04,06,242,,13,31,223,22,27,20,283,*73 -$GPGSV,3,3,11,11,06,338,,08,00,298,,03,14,056,31*4B -$GPRMC,222704.000,A,2734.78730,S,15306.02555,E,2.1,286.5,030308,11.2,W,A*34 -$GPVTG,286.5,T,297.7,M,2.1,N,3.9,K,A*28 -$GPGGA,222705.000,2734.78698,S,15306.02452,E,1,04,3.5,45.3,M,39.2,M,,*73 -$GPGLL,2734.78698,S,15306.02452,E,222705.000,A,A*4E -$GPGSA,A,3,16,23,20,03,,,,,,,,,6.1,3.5,5.1*30 -$GPGST,222705.000,93.8,65.1,31.9,84.0,59.3,29.7,94.1*5F -$GPGSV,3,1,11,16,48,116,29,25,40,267,18,23,58,174,29,20,70,337,23*72 -$GPGSV,3,2,11,19,03,029,,04,06,242,,13,31,223,22,27,20,283,*73 -$GPGSV,3,3,11,11,06,338,,08,00,298,,03,14,056,30*4A -$GPRMC,222705.000,A,2734.78698,S,15306.02452,E,3.6,290.3,030308,11.2,W,A*37 -$GPVTG,290.3,T,301.5,M,3.6,N,6.8,K,A*27 -$GPGGA,222706.000,2734.78686,S,15306.02339,E,1,04,3.5,45.3,M,39.2,M,,*75 -$GPGLL,2734.78686,S,15306.02339,E,222706.000,A,A*48 -$GPGSA,A,3,16,23,20,03,,,,,,,,,6.1,3.5,5.1*30 -$GPGST,222706.000,114.3,62.0,48.3,70.3,55.4,45.7,116.3*5B -$GPGSV,3,1,11,16,48,116,24,25,40,267,18,23,58,174,29,20,70,337,23*7F -$GPGSV,3,2,11,19,03,029,,04,06,242,,13,31,223,22,27,20,283,*73 -$GPGSV,3,3,11,11,06,338,,08,00,298,,03,14,056,24*4F -$GPRMC,222706.000,A,2734.78686,S,15306.02339,E,3.4,277.7,030308,11.2,W,A*3E -$GPVTG,277.7,T,288.9,M,3.4,N,6.3,K,A*2F -$GPGGA,222707.000,2734.78679,S,15306.02251,E,1,04,3.5,45.3,M,39.2,M,,*7B -$GPGLL,2734.78679,S,15306.02251,E,222707.000,A,A*46 -$GPGSA,A,3,16,23,20,03,,,,,,,,,6.1,3.5,5.1*30 -$GPGST,222707.000,128.0,90.0,67.0,53.0,75.4,69.6,158.6*55 -$GPGSV,3,1,11,16,48,116,24,25,40,267,18,23,58,174,29,20,70,337,23*7F -$GPGSV,3,2,11,19,03,029,,04,06,242,,13,31,223,22,27,20,283,*73 -$GPGSV,3,3,11,11,06,338,,08,00,298,,03,14,056,24*4F -$GPRMC,222707.000,A,2734.78679,S,15306.02251,E,,,030308,,,A*79 -$GPVTG,,T,,M,,N,,K,N*2C -$GPGGA,222708.000,2734.78673,S,15306.02181,E,1,05,1.6,45.3,M,39.2,M,,*70 -$GPGLL,2734.78673,S,15306.02181,E,222708.000,A,A*4D -$GPGSA,A,3,16,23,20,13,03,,,,,,,,2.5,1.6,1.9*3F -$GPGST,222708.000,66.8,93.0,70.5,62.6,69.3,81.1,141.7*6F -$GPGSV,3,1,11,16,48,116,24,25,40,267,,23,58,174,29,20,70,337,23*76 -$GPGSV,3,2,11,19,03,029,,04,06,242,,13,31,222,22,27,20,283,*72 -$GPGSV,3,3,11,11,06,338,,08,00,298,,03,14,056,24*4F -$GPRMC,222708.000,A,2734.78673,S,15306.02181,E,,,030308,,,A*72 -$GPVTG,,T,,M,,N,,K,N*2C -$GPGGA,222709.000,2734.78668,S,15306.02124,E,1,05,1.6,45.3,M,39.2,M,,*74 -$GPGLL,2734.78668,S,15306.02124,E,222709.000,A,A*49 -$GPGSA,A,2,16,23,20,13,03,,,,,,,,1.8,1.6,0.9*31 -$GPGST,222709.000,89.5,61.2,117.7,37.9,91.7,79.5,4.3*54 -$GPGSV,3,1,11,16,48,116,24,25,40,267,,23,58,174,29,20,70,337,23*76 -$GPGSV,3,2,11,19,03,029,,04,06,242,,13,31,222,22,27,20,283,*72 -$GPGSV,3,3,11,11,06,338,,08,00,298,,03,14,056,24*4F -$GPRMC,222709.000,A,2734.78668,S,15306.02124,E,,,030308,,,A*76 -$GPVTG,,T,,M,,N,,K,N*2C -$GPGGA,222710.000,2734.78664,S,15306.02080,E,1,05,1.6,45.3,M,39.2,M,,*7F -$GPGLL,2734.78664,S,15306.02080,E,222710.000,A,A*42 -$GPGSA,A,2,16,23,20,13,03,,,,,,,,1.8,1.6,0.9*31 -$GPGST,222710.000,117.0,82.3,157.6,39.0,121.7,107.9,3.9*62 -$GPGSV,3,1,11,16,48,116,24,25,40,267,,23,58,174,29,20,70,337,23*76 -$GPGSV,3,2,11,19,03,029,,04,06,242,,13,31,222,22,27,20,283,*72 -$GPGSV,3,3,11,11,06,338,,08,00,298,,03,14,056,24*4F -$GPRMC,222710.000,A,2734.78664,S,15306.02080,E,,,030308,,,A*7D -$GPVTG,,T,,M,,N,,K,N*2C -$GPGGA,222711.000,2734.78660,S,15306.02044,E,1,05,1.6,45.3,M,39.2,M,,*72 -$GPGLL,2734.78660,S,15306.02044,E,222711.000,A,A*4F -$GPGSA,A,2,16,23,20,13,03,,,,,,,,1.8,1.6,0.9*31 -$GPGST,222711.000,128.0,107.6,205.2,40.2,156.7,142.6,3.5*58 -$GPGSV,3,1,11,16,48,116,24,25,40,267,,23,58,174,29,20,70,337,23*76 -$GPGSV,3,2,11,19,03,029,,04,06,242,,13,31,222,22,27,20,283,*72 -$GPGSV,3,3,11,11,06,338,,08,00,298,,03,14,056,24*4F -$GPRMC,222711.000,A,2734.78660,S,15306.02044,E,,,030308,,,A*70 -$GPVTG,,T,,M,,N,,K,N*2C -$GPGGA,222712.000,2734.78658,S,15306.02015,E,1,05,1.6,45.3,M,39.2,M,,*7E -$GPGLL,2734.78658,S,15306.02015,E,222712.000,A,A*43 -$GPGSA,A,2,16,23,20,13,03,,,,,,,,1.8,1.6,0.9*31 -$GPGST,222712.000,128.0,137.2,261.1,41.4,197.4,183.9,3.2*51 -$GPGSV,3,1,11,16,48,116,24,25,40,267,,23,58,173,29,20,70,337,23*71 -$GPGSV,3,2,11,19,03,029,,04,06,242,,13,31,222,22,27,20,283,*72 -$GPGSV,3,3,11,11,06,338,,08,00,298,,03,14,056,24*4F -$GPRMC,222712.000,A,2734.78658,S,15306.02015,E,,,030308,,,A*7C
\ No newline at end of file diff --git a/examples/positioning/geoflickr/geoflickr.pro b/examples/positioning/geoflickr/geoflickr.pro deleted file mode 100644 index 0bbfecd8..00000000 --- a/examples/positioning/geoflickr/geoflickr.pro +++ /dev/null @@ -1,15 +0,0 @@ -TEMPLATE = app -TARGET = geoflickr - -QT += qml quick network positioning xmlpatterns -SOURCES += qmllocationflickr.cpp - -RESOURCES += \ - flickr.qrc - -OTHER_FILES += flickr.qml \ - flickrcommon/* \ - flickrmobile/* - -target.path = $$[QT_INSTALL_EXAMPLES]/positioning/geoflickr -INSTALLS += target diff --git a/examples/positioning/geoflickr/geoflickr.qmlproject b/examples/positioning/geoflickr/geoflickr.qmlproject deleted file mode 100644 index d4909f86..00000000 --- a/examples/positioning/geoflickr/geoflickr.qmlproject +++ /dev/null @@ -1,16 +0,0 @@ -import QmlProject 1.0 - -Project { - /* Include .qml, .js, and image files from current directory and subdirectories */ - QmlFiles { - directory: "." - } - JavaScriptFiles { - directory: "." - } - ImageFiles { - directory: "." - } - /* List of plugin directories passed to QML runtime */ - // importPaths: [ " ../exampleplugin " ] -} diff --git a/examples/positioning/geoflickr/qmllocationflickr.cpp b/examples/positioning/geoflickr/qmllocationflickr.cpp deleted file mode 100644 index 61176cb1..00000000 --- a/examples/positioning/geoflickr/qmllocationflickr.cpp +++ /dev/null @@ -1,68 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples 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$ -** -****************************************************************************/ - -#include <QGuiApplication> -#include <QtQuick/QQuickView> -#include <QtQml/QQmlEngine> - -int main(int argc, char *argv[]) -{ - QGuiApplication application(argc, argv); - const QString mainQmlApp = QStringLiteral("qrc:///flickr.qml"); - QQuickView view; - view.setSource(QUrl(mainQmlApp)); - view.setResizeMode(QQuickView::SizeRootObjectToView); - // Qt.quit() called in embedded .qml by default only emits - // quit() signal, so do this (optionally use Qt.exit()). - QObject::connect(view.engine(), SIGNAL(quit()), qApp, SLOT(quit())); - view.setGeometry(QRect(100, 100, 360, 640)); - view.show(); - return application.exec(); -} diff --git a/examples/positioning/logfilepositionsource/CMakeLists.txt b/examples/positioning/logfilepositionsource/CMakeLists.txt deleted file mode 100644 index b9064aea..00000000 --- a/examples/positioning/logfilepositionsource/CMakeLists.txt +++ /dev/null @@ -1,54 +0,0 @@ -# Generated from logfilepositionsource.pro. - -cmake_minimum_required(VERSION 3.16) -project(logfilepositionsource LANGUAGES CXX) - -set(CMAKE_INCLUDE_CURRENT_DIR ON) - -set(CMAKE_AUTOMOC ON) -set(CMAKE_AUTORCC ON) -set(CMAKE_AUTOUIC ON) - -if(NOT DEFINED INSTALL_EXAMPLESDIR) - set(INSTALL_EXAMPLESDIR "examples") -endif() - -set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/positioning/logfilepositionsource") - -find_package(Qt6 COMPONENTS Positioning) -find_package(Qt6 COMPONENTS Core) -find_package(Qt6 COMPONENTS Widgets) - -qt_add_executable(logfilepositionsource - clientapplication.cpp clientapplication.h - logfilepositionsource.cpp logfilepositionsource.h - main.cpp -) -set_target_properties(logfilepositionsource PROPERTIES - WIN32_EXECUTABLE TRUE - MACOSX_BUNDLE TRUE -) -target_link_libraries(logfilepositionsource PRIVATE - Qt::Core - Qt::Positioning - Qt::Widgets -) - - -# Resources: -set(logfile_resource_files - "simplelog.txt" -) - -qt6_add_resources(logfilepositionsource "logfile" - PREFIX - "/" - FILES - ${logfile_resource_files} -) - -install(TARGETS logfilepositionsource - RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" - BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" - LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" -) diff --git a/examples/positioning/logfilepositionsource/clientapplication.cpp b/examples/positioning/logfilepositionsource/clientapplication.cpp deleted file mode 100644 index 1dca07af..00000000 --- a/examples/positioning/logfilepositionsource/clientapplication.cpp +++ /dev/null @@ -1,72 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples 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$ -** -****************************************************************************/ -#include <QtCore> -#include <QTextEdit> - -#include "logfilepositionsource.h" -#include "clientapplication.h" - -ClientApplication::ClientApplication(QWidget *parent) - : QMainWindow(parent) -{ - textEdit = new QTextEdit; - setCentralWidget(textEdit); - - LogFilePositionSource *source = new LogFilePositionSource(this); - connect(source, SIGNAL(positionUpdated(QGeoPositionInfo)), - this, SLOT(positionUpdated(QGeoPositionInfo))); - - source->startUpdates(); -} - -void ClientApplication::positionUpdated(const QGeoPositionInfo &info) -{ - textEdit->append(QString("Position updated: Date/time = %1, Coordinate = %2").arg(info.timestamp().toString()).arg(info.coordinate().toString())); -} diff --git a/examples/positioning/logfilepositionsource/clientapplication.h b/examples/positioning/logfilepositionsource/clientapplication.h deleted file mode 100644 index 4ffd5486..00000000 --- a/examples/positioning/logfilepositionsource/clientapplication.h +++ /dev/null @@ -1,74 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples 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$ -** -****************************************************************************/ -#ifndef CLIENTAPPLICATION_H -#define CLIENTAPPLICATION_H - -#include <QMainWindow> - -QT_BEGIN_NAMESPACE -class QGeoPositionInfo; -class QTextEdit; -QT_END_NAMESPACE - -class ClientApplication : public QMainWindow -{ - Q_OBJECT -public: - ClientApplication(QWidget *parent = 0); - -private slots: - void positionUpdated(const QGeoPositionInfo &info); - -private: - QTextEdit *textEdit; -}; - - -#endif diff --git a/examples/positioning/logfilepositionsource/doc/src/logfilepositionsource.qdoc b/examples/positioning/logfilepositionsource/doc/src/logfilepositionsource.qdoc deleted file mode 100644 index 53eb274a..00000000 --- a/examples/positioning/logfilepositionsource/doc/src/logfilepositionsource.qdoc +++ /dev/null @@ -1,94 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** 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 Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! -\example logfilepositionsource -\title Log File Position Source (C++) -\ingroup qtpositioning-examples - -\brief Logfile Position Source shows how to create and work with a custom - position source. It can be useful for simulating GPS data, or when the - data is received in some custom format. - -\include examples-run.qdocinc - -\section1 Creating custom Position Source - -In this example, the data is read from a text file, \e simplelog.txt. The file -specifies position data using a simple text format: it contains one position -update per line, where each line contains a date/time, a latitude and a -longitude, separated by spaces. The date/time is in ISO 8601 format and the -latitude and longitude are in degrees decimal format. -Here is an excerpt from \e simplelog.txt: - -\code -2009-08-24T22:25:01 -27.576082 153.092415 -2009-08-24T22:25:02 -27.576223 153.092530 -2009-08-24T22:25:03 -27.576364 153.092648 -\endcode - -We create a custom \c LogFilePositionSource class, which derives from -\l QGeoPositionInfoSource. It reads position data from the file and distributes -it via the \l {QGeoPositionInfoSource::}{positionUpdated()} signal. - -The resulting time and position information is then displayed on the screen as -simple text in date/time and latitude/longitude format. - -Here is the definition of the \c LogFilePositionSource class: - -\quotefromfile logfilepositionsource/logfilepositionsource.h -\skipto class LogFilePositionSource -\printuntil }; - -The main methods overrided by the subclass are: - -\list - \li \l{QGeoPositionInfoSource::startUpdates()}{startUpdates()}: called by client applications - to start regular position updates. - \li \l{QGeoPositionInfoSource::stopUpdates()}{stopUpdates()}: called by client applications to - stop regular position updates. - \li \l{QGeoPositionInfoSource::requestUpdate()}{requestUpdate()}: called by client applications - to request a single update, with a specified timeout. -\endlist - -When a position update is available, the subclass emits the -\l{QGeoPositionInfoSource::positionUpdated()}{positionUpdated()} signal. - -Here are the key methods in the class implementation: - -\quotefromfile logfilepositionsource/logfilepositionsource.cpp -\skipto LogFilePositionSource::LogFilePositionSource -\printuntil /^\}/ -\skipto LogFilePositionSource::startUpdates -\printuntil /^\}/ -\skipto LogFilePositionSource::stopUpdates -\printuntil /^\}/ -\skipto LogFilePositionSource::requestUpdate -\printuntil /^\}/ -\printuntil LogFilePositionSource::readNextPosition -\printuntil /^\}/ -*/ diff --git a/examples/positioning/logfilepositionsource/logfile.qrc b/examples/positioning/logfilepositionsource/logfile.qrc deleted file mode 100644 index 61213949..00000000 --- a/examples/positioning/logfilepositionsource/logfile.qrc +++ /dev/null @@ -1,5 +0,0 @@ -<RCC> - <qresource prefix="/"> - <file>simplelog.txt</file> - </qresource> -</RCC> diff --git a/examples/positioning/logfilepositionsource/logfilepositionsource.cpp b/examples/positioning/logfilepositionsource/logfilepositionsource.cpp deleted file mode 100644 index 31bb0cc3..00000000 --- a/examples/positioning/logfilepositionsource/logfilepositionsource.cpp +++ /dev/null @@ -1,136 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples 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$ -** -****************************************************************************/ -#include <QtCore> - -#include "logfilepositionsource.h" - -LogFilePositionSource::LogFilePositionSource(QObject *parent) - : QGeoPositionInfoSource(parent), - logFile(new QFile(this)), - timer(new QTimer(this)) -{ - connect(timer, SIGNAL(timeout()), this, SLOT(readNextPosition())); - - logFile->setFileName(":/simplelog.txt"); - if (!logFile->open(QIODevice::ReadOnly)) - qWarning() << "Error: cannot open source file" << logFile->fileName(); -} - -QGeoPositionInfo LogFilePositionSource::lastKnownPosition(bool /*fromSatellitePositioningMethodsOnly*/) const -{ - return lastPosition; -} - -LogFilePositionSource::PositioningMethods LogFilePositionSource::supportedPositioningMethods() const -{ - return AllPositioningMethods; -} - -int LogFilePositionSource::minimumUpdateInterval() const -{ - return 500; -} - -void LogFilePositionSource::startUpdates() -{ - lastError = QGeoPositionInfoSource::NoError; - int interval = updateInterval(); - if (interval < minimumUpdateInterval()) - interval = minimumUpdateInterval(); - - timer->start(interval); -} - -void LogFilePositionSource::stopUpdates() -{ - timer->stop(); -} - -void LogFilePositionSource::requestUpdate(int /*timeout*/) -{ - // For simplicity, ignore timeout - assume that if data is not available - // now, no data will be added to the file later - lastError = QGeoPositionInfoSource::NoError; - if (logFile->canReadLine()) { - readNextPosition(); - } else { - lastError = QGeoPositionInfoSource::UpdateTimeoutError; - emit QGeoPositionInfoSource::errorOccurred(lastError); - } -} - -void LogFilePositionSource::readNextPosition() -{ - QByteArray line = logFile->readLine().trimmed(); - if (!line.isEmpty()) { - QList<QByteArray> data = line.split(' '); - double latitude; - double longitude; - bool hasLatitude = false; - bool hasLongitude = false; - QDateTime timestamp = QDateTime::fromString(QString(data.value(0)), Qt::ISODate); - latitude = data.value(1).toDouble(&hasLatitude); - longitude = data.value(2).toDouble(&hasLongitude); - - if (hasLatitude && hasLongitude && timestamp.isValid()) { - QGeoCoordinate coordinate(latitude, longitude); - QGeoPositionInfo info(coordinate, timestamp); - if (info.isValid()) { - lastPosition = info; - emit positionUpdated(info); - } - } - } -} - -QGeoPositionInfoSource::Error LogFilePositionSource::error() const -{ - return lastError; -} diff --git a/examples/positioning/logfilepositionsource/logfilepositionsource.h b/examples/positioning/logfilepositionsource/logfilepositionsource.h deleted file mode 100644 index aca72ab2..00000000 --- a/examples/positioning/logfilepositionsource/logfilepositionsource.h +++ /dev/null @@ -1,88 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples 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$ -** -****************************************************************************/ -#ifndef LOGFILEPOSITIONSOURCE_H -#define LOGFILEPOSITIONSOURCE_H - -#include <QtPositioning/qgeopositioninfosource.h> - -QT_BEGIN_NAMESPACE -class QFile; -class QTimer; -QT_END_NAMESPACE - -class LogFilePositionSource : public QGeoPositionInfoSource -{ - Q_OBJECT -public: - LogFilePositionSource(QObject *parent = 0); - - QGeoPositionInfo lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const override; - - PositioningMethods supportedPositioningMethods() const override; - int minimumUpdateInterval() const override; - Error error() const override; - -public slots: - virtual void startUpdates() override; - virtual void stopUpdates() override; - - virtual void requestUpdate(int timeout = 5000) override; - -private slots: - void readNextPosition(); - -private: - QFile *logFile; - QTimer *timer; - QGeoPositionInfo lastPosition; - Error lastError = QGeoPositionInfoSource::NoError; -}; - -#endif diff --git a/examples/positioning/logfilepositionsource/logfilepositionsource.pro b/examples/positioning/logfilepositionsource/logfilepositionsource.pro deleted file mode 100644 index cb9e30ae..00000000 --- a/examples/positioning/logfilepositionsource/logfilepositionsource.pro +++ /dev/null @@ -1,16 +0,0 @@ -TEMPLATE = app -TARGET = logfilepositionsource -QT = positioning core widgets - - -HEADERS = logfilepositionsource.h \ - clientapplication.h -SOURCES = logfilepositionsource.cpp \ - clientapplication.cpp \ - main.cpp - -RESOURCES += \ - logfile.qrc - -target.path = $$[QT_INSTALL_EXAMPLES]/positioning/logfilepositionsource -INSTALLS += target diff --git a/examples/positioning/logfilepositionsource/main.cpp b/examples/positioning/logfilepositionsource/main.cpp deleted file mode 100644 index dcc05a1a..00000000 --- a/examples/positioning/logfilepositionsource/main.cpp +++ /dev/null @@ -1,62 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples 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$ -** -****************************************************************************/ -#include <QApplication> - -#include "clientapplication.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - ClientApplication client; - client.show(); - - return app.exec(); -} diff --git a/examples/positioning/logfilepositionsource/simplelog.txt b/examples/positioning/logfilepositionsource/simplelog.txt deleted file mode 100644 index d016b2a8..00000000 --- a/examples/positioning/logfilepositionsource/simplelog.txt +++ /dev/null @@ -1,156 +0,0 @@ -2009-08-24T22:24:37 -27.572321 153.090718 -2009-08-24T22:24:38 -27.572470 153.090783 -2009-08-24T22:24:39 -27.572616 153.090845 -2009-08-24T22:24:40 -27.572763 153.090908 -2009-08-24T22:24:41 -27.572914 153.090971 -2009-08-24T22:24:42 -27.573068 153.091036 -2009-08-24T22:24:43 -27.573224 153.091102 -2009-08-24T22:24:44 -27.573383 153.091167 -2009-08-24T22:24:45 -27.573541 153.091232 -2009-08-24T22:24:46 -27.573700 153.091298 -2009-08-24T22:24:47 -27.573860 153.091366 -2009-08-24T22:24:48 -27.574019 153.091435 -2009-08-24T22:24:49 -27.574178 153.091507 -2009-08-24T22:24:50 -27.574340 153.091581 -2009-08-24T22:24:51 -27.574506 153.091654 -2009-08-24T22:24:52 -27.574670 153.091729 -2009-08-24T22:24:53 -27.574836 153.091800 -2009-08-24T22:24:54 -27.575001 153.091870 -2009-08-24T22:24:55 -27.575165 153.091940 -2009-08-24T22:24:56 -27.575327 153.092010 -2009-08-24T22:24:57 -27.575485 153.092078 -2009-08-24T22:24:58 -27.575641 153.092144 -2009-08-24T22:24:59 -27.575795 153.092218 -2009-08-24T22:25:00 -27.575942 153.092308 -2009-08-24T22:25:01 -27.576082 153.092415 -2009-08-24T22:25:02 -27.576223 153.092530 -2009-08-24T22:25:03 -27.576364 153.092648 -2009-08-24T22:25:04 -27.576505 153.092763 -2009-08-24T22:25:05 -27.576646 153.092879 -2009-08-24T22:25:06 -27.576784 153.092990 -2009-08-24T22:25:07 -27.576918 153.093099 -2009-08-24T22:25:08 -27.577046 153.093204 -2009-08-24T22:25:09 -27.577168 153.093303 -2009-08-24T22:25:10 -27.577284 153.093396 -2009-08-24T22:25:11 -27.577396 153.093484 -2009-08-24T22:25:12 -27.577499 153.093568 -2009-08-24T22:25:13 -27.577595 153.093647 -2009-08-24T22:25:14 -27.577692 153.093727 -2009-08-24T22:25:15 -27.577793 153.093810 -2009-08-24T22:25:16 -27.577897 153.093896 -2009-08-24T22:25:17 -27.578006 153.093984 -2009-08-24T22:25:18 -27.578120 153.094074 -2009-08-24T22:25:19 -27.578237 153.094168 -2009-08-24T22:25:20 -27.578360 153.094267 -2009-08-24T22:25:21 -27.578487 153.094370 -2009-08-24T22:25:22 -27.578617 153.094474 -2009-08-24T22:25:23 -27.578748 153.094581 -2009-08-24T22:25:24 -27.578880 153.094688 -2009-08-24T22:25:25 -27.579014 153.094796 -2009-08-24T22:25:26 -27.579149 153.094905 -2009-08-24T22:25:27 -27.579285 153.095012 -2009-08-24T22:25:28 -27.579420 153.095121 -2009-08-24T22:25:29 -27.579552 153.095231 -2009-08-24T22:25:30 -27.579684 153.095340 -2009-08-24T22:25:31 -27.579820 153.095449 -2009-08-24T22:25:32 -27.579956 153.095558 -2009-08-24T22:25:33 -27.580095 153.095667 -2009-08-24T22:25:34 -27.580240 153.095776 -2009-08-24T22:25:35 -27.580392 153.095885 -2009-08-24T22:25:36 -27.580536 153.095995 -2009-08-24T22:25:37 -27.580679 153.096109 -2009-08-24T22:25:38 -27.580824 153.096226 -2009-08-24T22:25:39 -27.580965 153.096337 -2009-08-24T22:25:40 -27.581101 153.096441 -2009-08-24T22:25:41 -27.581237 153.096537 -2009-08-24T22:25:42 -27.581356 153.096628 -2009-08-24T22:25:43 -27.581466 153.096714 -2009-08-24T22:25:44 -27.581555 153.096795 -2009-08-24T22:25:45 -27.581606 153.096847 -2009-08-24T22:25:46 -27.581539 153.096855 -2009-08-24T22:25:47 -27.581572 153.096873 -2009-08-24T22:25:48 -27.581579 153.096875 -2009-08-24T22:25:49 -27.581582 153.096878 -2009-08-24T22:25:50 -27.581588 153.096880 -2009-08-24T22:25:51 -27.581588 153.096880 -2009-08-24T22:25:52 -27.581592 153.096881 -2009-08-24T22:25:53 -27.581596 153.096882 -2009-08-24T22:25:54 -27.581599 153.096883 -2009-08-24T22:25:55 -27.581601 153.096883 -2009-08-24T22:25:56 -27.581602 153.096883 -2009-08-24T22:25:57 -27.581606 153.096890 -2009-08-24T22:25:58 -27.581606 153.096919 -2009-08-24T22:25:59 -27.581605 153.096985 -2009-08-24T22:26:00 -27.581573 153.097060 -2009-08-24T22:26:01 -27.581532 153.097142 -2009-08-24T22:26:02 -27.581484 153.097227 -2009-08-24T22:26:03 -27.581426 153.097324 -2009-08-24T22:26:04 -27.581373 153.097424 -2009-08-24T22:26:05 -27.581320 153.097530 -2009-08-24T22:26:06 -27.581265 153.097641 -2009-08-24T22:26:07 -27.581203 153.097757 -2009-08-24T22:26:08 -27.581144 153.097875 -2009-08-24T22:26:09 -27.581093 153.097995 -2009-08-24T22:26:10 -27.581042 153.098116 -2009-08-24T22:26:11 -27.580987 153.098231 -2009-08-24T22:26:12 -27.580919 153.098334 -2009-08-24T22:26:13 -27.580841 153.098428 -2009-08-24T22:26:14 -27.580754 153.098511 -2009-08-24T22:26:15 -27.580667 153.098591 -2009-08-24T22:26:16 -27.580581 153.098671 -2009-08-24T22:26:17 -27.580492 153.098751 -2009-08-24T22:26:18 -27.580401 153.098832 -2009-08-24T22:26:19 -27.580311 153.098914 -2009-08-24T22:26:20 -27.580224 153.098996 -2009-08-24T22:26:21 -27.580140 153.099078 -2009-08-24T22:26:22 -27.580059 153.099159 -2009-08-24T22:26:23 -27.579980 153.099245 -2009-08-24T22:26:24 -27.579900 153.099336 -2009-08-24T22:26:25 -27.579826 153.099433 -2009-08-24T22:26:26 -27.579753 153.099529 -2009-08-24T22:26:27 -27.579680 153.099623 -2009-08-24T22:26:28 -27.579606 153.099716 -2009-08-24T22:26:29 -27.579538 153.099808 -2009-08-24T22:26:30 -27.579477 153.099893 -2009-08-24T22:26:31 -27.579416 153.099968 -2009-08-24T22:26:32 -27.579393 153.100027 -2009-08-24T22:26:33 -27.579376 153.100092 -2009-08-24T22:26:34 -27.579384 153.100142 -2009-08-24T22:26:35 -27.579403 153.100181 -2009-08-24T22:26:36 -27.579429 153.100210 -2009-08-24T22:26:37 -27.579460 153.100237 -2009-08-24T22:26:38 -27.579493 153.100265 -2009-08-24T22:26:39 -27.579518 153.100291 -2009-08-24T22:26:40 -27.579536 153.100336 -2009-08-24T22:26:41 -27.579591 153.100358 -2009-08-24T22:26:42 -27.579618 153.100383 -2009-08-24T22:26:43 -27.579639 153.100404 -2009-08-24T22:26:44 -27.579650 153.100420 -2009-08-24T22:26:45 -27.579665 153.100432 -2009-08-24T22:26:46 -27.579679 153.100442 -2009-08-24T22:26:47 -27.579690 153.100451 -2009-08-24T22:26:48 -27.579697 153.100459 -2009-08-24T22:26:49 -27.579700 153.100462 -2009-08-24T22:26:50 -27.579699 153.100464 -2009-08-24T22:26:51 -27.579699 153.100466 -2009-08-24T22:26:52 -27.579700 153.100466 -2009-08-24T22:26:53 -27.579704 153.100466 -2009-08-24T22:26:54 -27.579705 153.100465 -2009-08-24T22:26:55 -27.579708 153.100468 -2009-08-24T22:26:56 -27.579712 153.100471 -2009-08-24T22:26:57 -27.579719 153.100476 -2009-08-24T22:26:58 -27.579728 153.100485 -2009-08-24T22:26:59 -27.579744 153.100493 -2009-08-24T22:27:00 -27.579759 153.100496 -2009-08-24T22:27:01 -27.579780 153.100481 -2009-08-24T22:27:02 -27.579788 153.100462 -2009-08-24T22:27:03 -27.579791 153.100436 -2009-08-24T22:27:04 -27.579788 153.100426 -2009-08-24T22:27:05 -27.579783 153.100409 -2009-08-24T22:27:06 -27.579781 153.100390 -2009-08-24T22:27:07 -27.579780 153.100375 -2009-08-24T22:27:08 -27.579779 153.100364 -2009-08-24T22:27:09 -27.579778 153.100354 -2009-08-24T22:27:10 -27.579777 153.100347 -2009-08-24T22:27:11 -27.579777 153.100341 -2009-08-24T22:27:12 -27.579776 153.100336 diff --git a/examples/positioning/positioning.pro b/examples/positioning/positioning.pro deleted file mode 100644 index 50c328b3..00000000 --- a/examples/positioning/positioning.pro +++ /dev/null @@ -1,9 +0,0 @@ -TEMPLATE = subdirs - -qtHaveModule(widgets): SUBDIRS += logfilepositionsource -qtHaveModule(quick) { - SUBDIRS += satelliteinfo - - qtHaveModule(xmlpatterns): SUBDIRS += geoflickr - qtHaveModule(network): SUBDIRS += weatherinfo -} diff --git a/examples/positioning/satelliteinfo/CMakeLists.txt b/examples/positioning/satelliteinfo/CMakeLists.txt deleted file mode 100644 index dd90a6e1..00000000 --- a/examples/positioning/satelliteinfo/CMakeLists.txt +++ /dev/null @@ -1,49 +0,0 @@ -# Generated from satelliteinfo.pro. - -cmake_minimum_required(VERSION 3.16) -project(satelliteinfo LANGUAGES CXX) - -set(CMAKE_INCLUDE_CURRENT_DIR ON) - -set(CMAKE_AUTOMOC ON) -set(CMAKE_AUTORCC ON) -set(CMAKE_AUTOUIC ON) - -if(NOT DEFINED INSTALL_EXAMPLESDIR) - set(INSTALL_EXAMPLESDIR "examples") -endif() - -set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/positioning/satelliteinfo") - -find_package(Qt6 COMPONENTS Core) -find_package(Qt6 COMPONENTS Gui) -find_package(Qt6 COMPONENTS Quick) -find_package(Qt6 COMPONENTS Positioning) - -qt_add_executable(satelliteinfo - main.cpp - satellitemodel.cpp satellitemodel.h -) -set_target_properties(satelliteinfo PROPERTIES - WIN32_EXECUTABLE TRUE - MACOSX_BUNDLE TRUE -) -target_link_libraries(satelliteinfo PRIVATE - Qt::Core - Qt::Gui - Qt::Positioning - Qt::Quick -) - -qt_add_qml_module(satelliteinfo - URI Local - VERSION 1.0 - QML_FILES satelliteinfo.qml - NO_RESOURCE_TARGET_PATH -) - -install(TARGETS satelliteinfo - RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" - BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" - LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" -) diff --git a/examples/positioning/satelliteinfo/doc/images/example-satelliteinfo.png b/examples/positioning/satelliteinfo/doc/images/example-satelliteinfo.png Binary files differdeleted file mode 100644 index aa9a217c..00000000 --- a/examples/positioning/satelliteinfo/doc/images/example-satelliteinfo.png +++ /dev/null diff --git a/examples/positioning/satelliteinfo/doc/src/satelliteinfo.qdoc b/examples/positioning/satelliteinfo/doc/src/satelliteinfo.qdoc deleted file mode 100644 index fb314ea3..00000000 --- a/examples/positioning/satelliteinfo/doc/src/satelliteinfo.qdoc +++ /dev/null @@ -1,134 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** 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 Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \example satelliteinfo - \title SatelliteInfo (C++/QML) - - \brief The SatelliteInfo example shows the available satellites - at the user's current position and marks the satellites - currently contributing to the GPS fix as pink. - - \ingroup qtpositioning-examples - - Key \l{Qt Positioning} classes used in this example: - - \list - \li \l{QGeoSatelliteInfo} - \li \l{QGeoSatelliteInfoSource} - \endlist - - \image ../images/example-satelliteinfo.png - - The example displays the signal strength of all satellites in view. Any - satellite that is currently used to calculate the GPS fix is marked pink. - The number at the bottom of each signal bar is the individual satellite - identifier. - - The application operates in three different modes: - - \table - \header - \li Application mode - \li Description - \row - \li running - \li The application continuously queries the system for satellite updates. When new data - is available it will be displayed. - \row - \li stopped - \li The application stops updating the satellite information. - \row - \li single - \li The application makes a single update request with a timeout of 10s. The display - remains empty until the request was answered by the system. - \endtable - - If the platform does not provide satellite information, the application - automatically switches into a demo mode, whereby it continuously switches - between predefined sets of satellite data. - - \include examples-run.qdocinc - - \section1 Satellite Info Model - - The key part of this example is the \c SatelliteModel data model. It - represents the information about the satellites. - It uses the \l Q_PROPERTY and \l QML_ELEMENT macros, so that it can be - available from QML. - - \snippet satelliteinfo/satellitemodel.h 0 - \snippet satelliteinfo/satellitemodel.h 1 - \snippet satelliteinfo/satellitemodel.h 2 - - The \c SatelliteModel object creates an instance of - \l QGeoSatelliteInfoSource using the \l {QGeoSatelliteInfoSource::} - {createDefaultSource()} method. Once the source is created, the - \l {QGeoSatelliteInfoSource::}{satellitesInViewUpdated()} and - \l {QGeoSatelliteInfoSource::}{satellitesInUseUpdated()} signals are used - to notify about the changes in satellite information. - - \snippet satelliteinfo/satellitemodel.cpp 0 - - The aforementioned signals provide the lists of \l QGeoSatelliteInfo - objects that represent satellites in view and satellites in use, - respectively. This data is used to update the model. - - \snippet satelliteinfo/satellitemodel.cpp 1 - - If the satellite info source is not available, demo data is used to simulate - satellite information updates. - - \snippet satelliteinfo/satellitemodel.cpp 2 - - The model is later used in QML to visualize the data. - - \section1 Exposing the Model to QML - - To expose \c SatelliteModel to QML, we use the \l QML_ELEMENT macro. - See the \l QQmlEngine class documentation for more details on it. - - To make the type available in QML, we need to update our build accordingly. - - \section2 CMake Build - - For a CMake-based build, we need to add the following to the - \c {CMakeLists.txt}: - - \quotefromfile satelliteinfo/CMakeLists.txt - \skipto qt_add_qml_module(satelliteinfo - \printuntil ) - - \section2 qmake Build - - For a qmake build, we need to modify the \c {satelliteinfo.pro} file in the - following way: - - \quotefromfile satelliteinfo/satelliteinfo.pro - \skipto CONFIG - \printuntil QML_IMPORT_MAJOR_VERSION -*/ diff --git a/examples/positioning/satelliteinfo/main.cpp b/examples/positioning/satelliteinfo/main.cpp deleted file mode 100644 index 4a96c4c9..00000000 --- a/examples/positioning/satelliteinfo/main.cpp +++ /dev/null @@ -1,71 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples 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$ -** -****************************************************************************/ - -#include <QtGui/QGuiApplication> -#include <QtQml/qqml.h> -#include <QtQml/QQmlEngine> -#include <QtQuick/QQuickView> -#include "satellitemodel.h" - -int main(int argc, char *argv[]) -{ - QGuiApplication app(argc, argv); - - QQuickView view; - view.setSource(QStringLiteral("qrc:///satelliteinfo.qml")); - view.setResizeMode(QQuickView::SizeRootObjectToView); - - QObject::connect(view.engine(), SIGNAL(quit()), qApp, SLOT(quit())); - view.show(); - - return app.exec(); -} - - diff --git a/examples/positioning/satelliteinfo/satelliteinfo.pro b/examples/positioning/satelliteinfo/satelliteinfo.pro deleted file mode 100644 index ebee0945..00000000 --- a/examples/positioning/satelliteinfo/satelliteinfo.pro +++ /dev/null @@ -1,26 +0,0 @@ -TEMPLATE = app -TARGET = satelliteinfo - -QT += quick positioning - -CONFIG += qmltypes -QML_IMPORT_NAME = Local -QML_IMPORT_MAJOR_VERSION = 1 - -SOURCES += main.cpp \ - satellitemodel.cpp - -HEADERS += \ - satellitemodel.h - -OTHER_FILES += \ - satelliteinfo.qml - -RESOURCES += \ - satelliteinfo.qrc - -target.path = $$[QT_INSTALL_EXAMPLES]/positioning/satelliteinfo -INSTALLS += target - - - diff --git a/examples/positioning/satelliteinfo/satelliteinfo.qml b/examples/positioning/satelliteinfo/satelliteinfo.qml deleted file mode 100644 index ef0c965e..00000000 --- a/examples/positioning/satelliteinfo/satelliteinfo.qml +++ /dev/null @@ -1,316 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples 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 Local 1.0 - -Rectangle { - id: page - width: 360 - height: 360 - - SatelliteModel { - id: satelliteModel - running: true - onErrorFound: function(code) { - 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 - } - } - } - } - } - } -} - diff --git a/examples/positioning/satelliteinfo/satelliteinfo.qrc b/examples/positioning/satelliteinfo/satelliteinfo.qrc deleted file mode 100644 index 8745f87e..00000000 --- a/examples/positioning/satelliteinfo/satelliteinfo.qrc +++ /dev/null @@ -1,5 +0,0 @@ -<RCC> - <qresource prefix="/"> - <file>satelliteinfo.qml</file> - </qresource> -</RCC> diff --git a/examples/positioning/satelliteinfo/satellitemodel.cpp b/examples/positioning/satelliteinfo/satellitemodel.cpp deleted file mode 100644 index 77c89035..00000000 --- a/examples/positioning/satelliteinfo/satellitemodel.cpp +++ /dev/null @@ -1,324 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples 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$ -** -****************************************************************************/ - -#include "satellitemodel.h" -#include <QTimer> -#include <QDebug> - -//! [0] -SatelliteModel::SatelliteModel(QObject *parent) : - QAbstractListModel(parent), source(0), m_componentCompleted(false), m_running(false), - m_runningRequested(false), demo(false), isSingle(false), singleRequestServed(false) -{ - source = QGeoSatelliteInfoSource::createDefaultSource(this); - if (!demo && !source) { - qWarning() << "No satellite data source found. Changing to demo mode."; - demo = true; - } - if (!demo) { - source->setUpdateInterval(3000); - connect(source, SIGNAL(satellitesInViewUpdated(QList<QGeoSatelliteInfo>)), - this, SLOT(satellitesInViewUpdated(QList<QGeoSatelliteInfo>))); - connect(source, SIGNAL(satellitesInUseUpdated(QList<QGeoSatelliteInfo>)), - this, SLOT(satellitesInUseUpdated(QList<QGeoSatelliteInfo>))); - connect(source, SIGNAL(errorOccurred(QGeoSatelliteInfoSource::Error)), - this, SLOT(error(QGeoSatelliteInfoSource::Error))); - } - - if (demo) { - timer = new QTimer(this); - connect(timer, SIGNAL(timeout()), this, SLOT(updateDemoData())); - timer->start(3000); - } -} -//! [0] - -int SatelliteModel::rowCount(const QModelIndex &parent) const -{ - Q_UNUSED(parent); - if (!source && !demo) - return 0; - - return knownSatellites.count(); -} - -QVariant SatelliteModel::data(const QModelIndex &index, int role) const -{ - if (!demo && !source) - return QVariant(); - - if (!index.isValid() || index.row() < 0) - return QVariant(); - - if (index.row() >= knownSatellites.count()) { - qWarning() << "SatelliteModel: Index out of bound"; - return QVariant(); - } - - const QGeoSatelliteInfo &info = knownSatellites.at(index.row()); - switch (role) { - case IdentifierRole: - return info.satelliteIdentifier(); - case InUseRole: - return satellitesInUse.contains(info.satelliteIdentifier()); - case SignalStrengthRole: - return info.signalStrength(); - case ElevationRole: - if (!info.hasAttribute(QGeoSatelliteInfo::Elevation)) - return QVariant(); - return info.attribute(QGeoSatelliteInfo::Elevation); - case AzimuthRole: - if (!info.hasAttribute(QGeoSatelliteInfo::Azimuth)) - return QVariant(); - return info.attribute(QGeoSatelliteInfo::Azimuth); - default: - break; - - } - - return QVariant(); -} - -QHash<int, QByteArray> SatelliteModel::roleNames() const -{ - QHash<int, QByteArray> roleNames; - roleNames.insert(IdentifierRole, "satelliteIdentifier"); - roleNames.insert(InUseRole, "isInUse"); - roleNames.insert(SignalStrengthRole, "signalStrength"); - roleNames.insert(ElevationRole, "elevation"); - roleNames.insert(AzimuthRole, "azimuth"); - return roleNames; -} - -void SatelliteModel::componentComplete() -{ - m_componentCompleted = true; - if (m_runningRequested) - setRunning(true); -} - -bool SatelliteModel::running() const -{ - return m_running; -} - -bool SatelliteModel::isSingleRequest() const -{ - return isSingle; -} - -void SatelliteModel::setSingleRequest(bool single) -{ - if (running()) { - qWarning() << "Cannot change single request mode while running"; - return; - } - - if (single != isSingle) { //flag changed - isSingle = single; - emit singleRequestChanged(); - } -} - -void SatelliteModel::setRunning(bool isActive) -{ - if (!source && !demo) - return; - - if (!m_componentCompleted) { - m_runningRequested = isActive; - return; - } - - if (m_running == isActive) - return; - - m_running = isActive; - - if (m_running) { - clearModel(); - if (demo) - timer->start(2000); - else if (isSingleRequest()) - source->requestUpdate(10000); - else - source->startUpdates(); - - if (demo) - singleRequestServed = false; - } else { - if (demo) - timer->stop(); - else if (!isSingleRequest()) - source->stopUpdates(); - } - - - Q_EMIT runningChanged(); -} - -int SatelliteModel::entryCount() const -{ - return knownSatellites.count(); -} - -bool SatelliteModel::canProvideSatelliteInfo() const -{ - return !demo; -} - -void SatelliteModel::clearModel() -{ - beginResetModel(); - knownSatelliteIds.clear(); - knownSatellites.clear(); - satellitesInUse.clear(); - endResetModel(); -} - -//! [2] -void SatelliteModel::updateDemoData() -{ - static bool flag = true; - QList<QGeoSatelliteInfo> satellites; - if (flag) { - for (int i = 0; i<5; i++) { - QGeoSatelliteInfo info; - info.setSatelliteIdentifier(i); - info.setSignalStrength(20 + 20*i); - satellites.append(info); - } - } else { - for (int i = 0; i<9; i++) { - QGeoSatelliteInfo info; - info.setSatelliteIdentifier(i*2); - info.setSignalStrength(20 + 10*i); - satellites.append(info); - } - } - - - satellitesInViewUpdated(satellites); - flag ? satellitesInUseUpdated(QList<QGeoSatelliteInfo>() << satellites.at(2)) - : satellitesInUseUpdated(QList<QGeoSatelliteInfo>() << satellites.at(3)); - flag = !flag; - - emit errorFound(flag); - - if (isSingleRequest() && !singleRequestServed) { - singleRequestServed = true; - setRunning(false); - } -} -//! [2] - -void SatelliteModel::error(QGeoSatelliteInfoSource::Error error) -{ - emit errorFound((int)error); -} - -QT_BEGIN_NAMESPACE -inline bool operator<(const QGeoSatelliteInfo& a, const QGeoSatelliteInfo& b) -{ - return a.satelliteIdentifier() < b.satelliteIdentifier(); -} -QT_END_NAMESPACE - -//! [1] -void SatelliteModel::satellitesInViewUpdated(const QList<QGeoSatelliteInfo> &infos) -{ - if (!running()) - return; - - int oldEntryCount = knownSatellites.count(); - - - QSet<int> satelliteIdsInUpdate; - foreach (const QGeoSatelliteInfo &info, infos) - satelliteIdsInUpdate.insert(info.satelliteIdentifier()); - - QSet<int> toBeRemoved = knownSatelliteIds - satelliteIdsInUpdate; - - //We reset the model as in reality just about all entry values change - //and there are generally a lot of inserts and removals each time - //Hence we don't bother with complex model update logic beyond resetModel() - beginResetModel(); - - knownSatellites = infos; - - //sort them for presentation purposes - std::sort(knownSatellites.begin(), knownSatellites.end()); - - //remove old "InUse" data - //new satellites are by default not in "InUse" - //existing satellites keep their "inUse" state - satellitesInUse -= toBeRemoved; - - knownSatelliteIds = satelliteIdsInUpdate; - endResetModel(); - - if (oldEntryCount != knownSatellites.count()) - emit entryCountChanged(); -} - -void SatelliteModel::satellitesInUseUpdated(const QList<QGeoSatelliteInfo> &infos) -{ - if (!running()) - return; - - beginResetModel(); - - satellitesInUse.clear(); - foreach (const QGeoSatelliteInfo &info, infos) - satellitesInUse.insert(info.satelliteIdentifier()); - - endResetModel(); -} -//! [1] diff --git a/examples/positioning/satelliteinfo/satellitemodel.h b/examples/positioning/satelliteinfo/satellitemodel.h deleted file mode 100644 index 18d94a59..00000000 --- a/examples/positioning/satelliteinfo/satellitemodel.h +++ /dev/null @@ -1,140 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples 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$ -** -****************************************************************************/ - -#ifndef SATELLITEMODEL_H -#define SATELLITEMODEL_H - -#include <QAbstractListModel> -#include <QSet> -#include <QtQml/qqml.h> -#include <QtQml/QQmlParserStatus> -#include <QtPositioning/QGeoSatelliteInfoSource> - -QT_FORWARD_DECLARE_CLASS(QTimer) -QT_FORWARD_DECLARE_CLASS(QGeoSatelliteInfoSource) - -//! [0] -class SatelliteModel : public QAbstractListModel, public QQmlParserStatus -{ - Q_OBJECT - Q_PROPERTY(bool running READ running WRITE setRunning NOTIFY runningChanged) - Q_PROPERTY(bool satelliteInfoAvailable READ canProvideSatelliteInfo NOTIFY canProvideSatelliteInfoChanged) - Q_PROPERTY(int entryCount READ entryCount NOTIFY entryCountChanged) - Q_PROPERTY(bool singleRequestMode READ isSingleRequest WRITE setSingleRequest NOTIFY singleRequestChanged) - Q_INTERFACES(QQmlParserStatus) - QML_ELEMENT -public: - explicit SatelliteModel(QObject *parent = 0); - - enum { - IdentifierRole = Qt::UserRole + 1, - InUseRole, - SignalStrengthRole, - ElevationRole, - AzimuthRole - }; - - //From QAbstractListModel - int rowCount(const QModelIndex &parent) const override; - QVariant data(const QModelIndex &index, int role) const override; - QHash<int, QByteArray> roleNames() const override; - - //From QQmlParserStatus - void classBegin() override {} - void componentComplete() override; -//! [0] - - bool running() const; - void setRunning(bool isActive); - - bool isSingleRequest() const; - void setSingleRequest(bool single); - - int entryCount() const; - - bool canProvideSatelliteInfo() const; - -//! [1] -signals: - void runningChanged(); - void entryCountChanged(); - void errorFound(int code); - void canProvideSatelliteInfoChanged(); - void singleRequestChanged(); - -public slots: - void clearModel(); - void updateDemoData(); -//! [1] - -private slots: - void error(QGeoSatelliteInfoSource::Error); - void satellitesInViewUpdated(const QList<QGeoSatelliteInfo> &infos); - void satellitesInUseUpdated(const QList<QGeoSatelliteInfo> &infos); - -private: - QGeoSatelliteInfoSource *source; - bool m_componentCompleted; - bool m_running; - bool m_runningRequested; - QList <QGeoSatelliteInfo> knownSatellites; - QSet<int> knownSatelliteIds; - QSet<int> satellitesInUse; - bool demo; - QTimer *timer; - bool isSingle; - bool singleRequestServed; -//! [2] -}; -//! [2] - -QML_DECLARE_TYPE(SatelliteModel) - -#endif // SATELLITEMODEL_H diff --git a/examples/positioning/weatherinfo/CMakeLists.txt b/examples/positioning/weatherinfo/CMakeLists.txt deleted file mode 100644 index 63e13830..00000000 --- a/examples/positioning/weatherinfo/CMakeLists.txt +++ /dev/null @@ -1,74 +0,0 @@ -# Generated from weatherinfo.pro. - -cmake_minimum_required(VERSION 3.16) -project(weatherinfo LANGUAGES CXX) - -set(CMAKE_INCLUDE_CURRENT_DIR ON) - -set(CMAKE_AUTOMOC ON) -set(CMAKE_AUTORCC ON) -set(CMAKE_AUTOUIC ON) - -if(NOT DEFINED INSTALL_EXAMPLESDIR) - set(INSTALL_EXAMPLESDIR "examples") -endif() - -set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/positioning/weatherinfo") - -find_package(Qt6 COMPONENTS Core) -find_package(Qt6 COMPONENTS Gui) -find_package(Qt6 COMPONENTS Network) -find_package(Qt6 COMPONENTS Positioning) -find_package(Qt6 COMPONENTS Qml) -find_package(Qt6 COMPONENTS Quick) - -qt_add_executable(weatherinfo - appmodel.cpp appmodel.h - providerbackend.cpp providerbackend.h - openweathermapbackend.cpp openweathermapbackend.h - weatherapibackend.cpp weatherapibackend.h - main.cpp -) -set_target_properties(weatherinfo PROPERTIES - WIN32_EXECUTABLE TRUE - MACOSX_BUNDLE TRUE -) -target_link_libraries(weatherinfo PRIVATE - Qt::Core - Qt::Gui - Qt::Network - Qt::Positioning - Qt::Qml - Qt::Quick -) - -qt_add_qml_module(weatherinfo - URI WeatherInfo - VERSION 1.0 - QML_FILES - components/BigForecastIcon.qml - components/ForecastIcon.qml - components/WeatherIcon.qml - weatherinfo.qml - RESOURCES - icons/weather-few-clouds.png - icons/weather-fog.png - icons/weather-haze.png - icons/weather-icy.png - icons/weather-overcast.png - icons/weather-showers.png - icons/weather-sleet.png - icons/weather-snow.png - icons/weather-storm.png - icons/weather-sunny-very-few-clouds.png - icons/weather-sunny.png - icons/weather-thundershower.png - icons/weather-showers-scattered.png - NO_RESOURCE_TARGET_PATH -) - -install(TARGETS weatherinfo - RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" - BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" - LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" -) diff --git a/examples/positioning/weatherinfo/appmodel.cpp b/examples/positioning/weatherinfo/appmodel.cpp deleted file mode 100644 index a5f207f1..00000000 --- a/examples/positioning/weatherinfo/appmodel.cpp +++ /dev/null @@ -1,514 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples 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$ -** -****************************************************************************/ - -#include "appmodel.h" -#include "openweathermapbackend.h" -#include "weatherapibackend.h" - -#include <QGeoPositionInfoSource> -#include <QGeoPositionInfo> -#include <QGeoCircle> -#include <QLoggingCategory> - -Q_LOGGING_CATEGORY(requestsLog, "wapp.requests") - -WeatherData::WeatherData(QObject *parent) : - QObject(parent) -{ -} - -WeatherData::WeatherData(const WeatherData &other) : - QObject(nullptr), - m_dayOfWeek(other.m_dayOfWeek), - m_weather(other.m_weather), - m_weatherDescription(other.m_weatherDescription), - m_temperature(other.m_temperature) -{ -} - -WeatherData::WeatherData(const WeatherInfo &other) - : QObject(nullptr), - m_dayOfWeek(other.m_dayOfWeek), - m_weather(other.m_weatherIconId), - m_weatherDescription(other.m_weatherDescription), - m_temperature(other.m_temperature) -{ -} - -QString WeatherData::dayOfWeek() const -{ - return m_dayOfWeek; -} - -/*! - * The icon value is based on OpenWeatherMap.org icon set. For details - * see http://bugs.openweathermap.org/projects/api/wiki/Weather_Condition_Codes - * - * e.g. 01d ->sunny day - * - * The icon string will be translated to - * http://openweathermap.org/img/w/01d.png - */ -QString WeatherData::weatherIcon() const -{ - return m_weather; -} - -QString WeatherData::weatherDescription() const -{ - return m_weatherDescription; -} - -QString WeatherData::temperature() const -{ - return m_temperature; -} - -void WeatherData::setDayOfWeek(const QString &value) -{ - m_dayOfWeek = value; - emit dataChanged(); -} - -void WeatherData::setWeatherIcon(const QString &value) -{ - m_weather = value; - emit dataChanged(); -} - -void WeatherData::setWeatherDescription(const QString &value) -{ - m_weatherDescription = value; - emit dataChanged(); -} - -void WeatherData::setTemperature(const QString &value) -{ - m_temperature = value; - emit dataChanged(); -} - -/* - The class is used as a cache for the weather information. - It contains a map to cache weather for cities. - The gps location is cached separately. - - For the coordiante search we do not compare the coordinate directly, but - check if it's within a circle of 3 km radius (we assume that the weather - does not really change within that radius). - - The cache returns a pair with empty location and weather data if no data - is found, or if the data is outdated. -*/ -class WeatherDataCache -{ -public: - WeatherDataCache() = default; - - using WeatherDataPair = QPair<QString, QList<WeatherInfo>>; - - WeatherDataPair getWeatherData(const QString &name) const; - WeatherDataPair getWeatherData(const QGeoCoordinate &coordinate) const; - - void addCacheElement(const LocationInfo &location, const QList<WeatherInfo> &info); - - static bool isCacheResultValid(const WeatherDataPair &result); - -private: - struct CacheItem - { - qint64 m_cacheTime; - QList<WeatherInfo> m_weatherData; - }; - - QMap<QString, CacheItem> m_cityCache; - - QGeoCoordinate m_gpsLocation; - QString m_gpsName; - CacheItem m_gpsData; - - static const qint64 kCacheTimeoutInterval = 3600; // 1 hour - static const int kCircleRadius = 3000; // 3 km -}; - -WeatherDataCache::WeatherDataPair WeatherDataCache::getWeatherData(const QString &name) const -{ - if (m_cityCache.contains(name)) { - const qint64 currentTime = QDateTime::currentSecsSinceEpoch(); - const auto &item = m_cityCache.value(name); - if (currentTime - item.m_cacheTime < kCacheTimeoutInterval) - return qMakePair(name, item.m_weatherData); - } - return qMakePair(QString(), QList<WeatherInfo>()); -} - -WeatherDataCache::WeatherDataPair WeatherDataCache::getWeatherData(const QGeoCoordinate &coordinate) const -{ - if (m_gpsLocation.isValid() && !m_gpsName.isEmpty()) { - const QGeoCircle area(m_gpsLocation, kCircleRadius); - if (area.contains(coordinate)) { - const qint64 currentTime = QDateTime::currentSecsSinceEpoch(); - if (currentTime - m_gpsData.m_cacheTime < kCacheTimeoutInterval) - return qMakePair(m_gpsName, m_gpsData.m_weatherData); - } - } - return qMakePair(QString(), QList<WeatherInfo>()); -} - -void WeatherDataCache::addCacheElement(const LocationInfo &location, const QList<WeatherInfo> &info) -{ - // It it expected that we have valid QGeoCoordinate only when the weather - // is received based on coordinates. - const qint64 currentTime = QDateTime::currentSecsSinceEpoch(); - if (location.m_coordinate.isValid()) { - m_gpsLocation = location.m_coordinate; - m_gpsName = location.m_name; - m_gpsData = { currentTime, info }; - } else { - m_cityCache[location.m_name] = { currentTime, info }; - } -} - -bool WeatherDataCache::isCacheResultValid(const WeatherDataCache::WeatherDataPair &result) -{ - return !result.first.isEmpty() && !result.second.isEmpty(); -} - -class AppModelPrivate -{ -public: - QGeoPositionInfoSource *src = nullptr; - QGeoCoordinate coord; - QString city; - WeatherData now; - QList<WeatherData*> forecast; - QQmlListProperty<WeatherData> *fcProp = nullptr; - bool ready = false; - bool useGps = true; - WeatherDataCache m_dataCache; - ProviderBackend *m_currentBackend = nullptr; - QList<ProviderBackend*> m_supportedBackends; - qsizetype m_currentBackendIndex = 0; -}; - -static void forecastAppend(QQmlListProperty<WeatherData> *prop, WeatherData *val) -{ - Q_UNUSED(val); - Q_UNUSED(prop); -} - -static WeatherData *forecastAt(QQmlListProperty<WeatherData> *prop, qsizetype index) -{ - AppModelPrivate *d = static_cast<AppModelPrivate*>(prop->data); - return d->forecast.at(index); -} - -static qsizetype forecastCount(QQmlListProperty<WeatherData> *prop) -{ - AppModelPrivate *d = static_cast<AppModelPrivate*>(prop->data); - return d->forecast.size(); -} - -static void forecastClear(QQmlListProperty<WeatherData> *prop) -{ - static_cast<AppModelPrivate*>(prop->data)->forecast.clear(); -} - -//! [0] -AppModel::AppModel(QObject *parent) : - QObject(parent), - d(new AppModelPrivate) -{ -//! [0] - d->fcProp = new QQmlListProperty<WeatherData>(this, d, forecastAppend, - forecastCount, - forecastAt, - forecastClear); - - d->m_supportedBackends.push_back(new OpenWeatherMapBackend(this)); - d->m_supportedBackends.push_back(new WeatherApiBackend(this)); - registerBackend(0); - -//! [1] - d->src = QGeoPositionInfoSource::createDefaultSource(this); - - if (d->src) { - d->useGps = true; - connect(d->src, SIGNAL(positionUpdated(QGeoPositionInfo)), - this, SLOT(positionUpdated(QGeoPositionInfo))); - connect(d->src, SIGNAL(errorOccurred(QGeoPositionInfoSource::Error)), - this, SLOT(positionError(QGeoPositionInfoSource::Error))); - d->src->startUpdates(); - } else { - d->useGps = false; - d->city = "Brisbane"; - emit cityChanged(); - requestWeatherByCity(); - } -} -//! [1] - -AppModel::~AppModel() -{ - if (d->src) - d->src->stopUpdates(); - if (d->fcProp) - delete d->fcProp; - foreach (WeatherData *inf, d->forecast) - delete inf; - d->forecast.clear(); - delete d; -} - -//! [2] -void AppModel::positionUpdated(QGeoPositionInfo gpsPos) -{ - d->coord = gpsPos.coordinate(); - - if (!d->useGps) - return; - - requestWeatherByCoordinates(); -} -//! [2] - -void AppModel::positionError(QGeoPositionInfoSource::Error e) -{ - Q_UNUSED(e); - qWarning() << "Position source error. Falling back to simulation mode."; - - // activate simulation mode - if (d->useGps) { - d->useGps = false; - d->city = "Brisbane"; - emit cityChanged(); - requestWeatherByCity(); - } -} - -void AppModel::refreshWeather() -{ - if (d->city.isEmpty()) { - qCDebug(requestsLog) << "refreshing weather skipped (no city)"; - return; - } - qCDebug(requestsLog) << "refreshing weather"; - requestWeatherByCity(); -} - -void AppModel::handleWeatherData(const LocationInfo &location, - const QList<WeatherInfo> &weatherDetails) -{ - if (applyWeatherData(location.m_name, weatherDetails)) - d->m_dataCache.addCacheElement(location, weatherDetails); -} - -void AppModel::switchToNextBackend() -{ - deregisterCurrentBackend(); - registerBackend(d->m_currentBackendIndex + 1); - if (d->m_currentBackend) { - // repeat the query - if (d->useGps) - requestWeatherByCoordinates(); - else - requestWeatherByCity(); - } else { - qWarning("The application has iterated through all of the weather backends, " - "and none of them seems to respond now. Please wait until any of the " - "backends becomes available again."); - } -} - -bool AppModel::applyWeatherData(const QString &city, const QList<WeatherInfo> &weatherDetails) -{ - // Check that we didn't get outdated weather data. The city should match, - // if only we do not use GPS. - if (city != d->city && !d->useGps) - return false; - - if (city != d->city && d->useGps) { - d->city = city; - emit cityChanged(); - } - - // delete previous forecast - foreach (WeatherData *inf, d->forecast) - delete inf; - d->forecast.clear(); - - // The first item in the list represents current weather. - if (!weatherDetails.isEmpty()) { - d->now.setTemperature(weatherDetails.first().m_temperature); - d->now.setWeatherIcon(weatherDetails.first().m_weatherIconId); - d->now.setWeatherDescription(weatherDetails.first().m_weatherDescription); - } - - // The other items represent weather forecast. The amount of items depends - // on the provider backend. - for (qsizetype i = 1; i < weatherDetails.size(); ++i) { - WeatherData *forecastEntry = new WeatherData(weatherDetails.at(i)); - d->forecast.append(forecastEntry); - } - - if (!d->ready) { - d->ready = true; - emit readyChanged(); - } - - emit weatherChanged(); - - return true; -} - -void AppModel::requestWeatherByCoordinates() -{ - const auto cacheResult = d->m_dataCache.getWeatherData(d->coord); - if (WeatherDataCache::isCacheResultValid(cacheResult)) - applyWeatherData(cacheResult.first, cacheResult.second); - else if (d->m_currentBackend) - d->m_currentBackend->requestWeatherInfo(d->coord); -} - -void AppModel::requestWeatherByCity() -{ - const auto cacheResult = d->m_dataCache.getWeatherData(d->city); - if (WeatherDataCache::isCacheResultValid(cacheResult)) - applyWeatherData(cacheResult.first, cacheResult.second); - else if (d->m_currentBackend) - d->m_currentBackend->requestWeatherInfo(d->city); -} - -void AppModel::registerBackend(qsizetype index) -{ - if (index >= 0 && index < d->m_supportedBackends.size()) { - d->m_currentBackend = d->m_supportedBackends.at(index); - d->m_currentBackendIndex = index; - connect(d->m_currentBackend, &ProviderBackend::weatherInformation, - this, &AppModel::handleWeatherData); - connect(d->m_currentBackend, &ProviderBackend::errorOccurred, - this, &AppModel::switchToNextBackend); - } -} - -void AppModel::deregisterCurrentBackend() -{ - if (d->m_currentBackend) { - disconnect(d->m_currentBackend, &ProviderBackend::weatherInformation, - this, &AppModel::handleWeatherData); - disconnect(d->m_currentBackend, &ProviderBackend::errorOccurred, - this, &AppModel::switchToNextBackend); - d->m_currentBackend = nullptr; - } -} - -bool AppModel::hasValidCity() const -{ - return (!(d->city.isEmpty()) && d->city.size() > 1 && d->city != ""); -} - -bool AppModel::hasValidWeather() const -{ - return hasValidCity() && (!(d->now.weatherIcon().isEmpty()) && - (d->now.weatherIcon().size() > 1) && - d->now.weatherIcon() != ""); -} - -WeatherData *AppModel::weather() const -{ - return &(d->now); -} - -QQmlListProperty<WeatherData> AppModel::forecast() const -{ - return *(d->fcProp); -} - -bool AppModel::ready() const -{ - return d->ready; -} - -bool AppModel::hasSource() const -{ - return (d->src != NULL); -} - -bool AppModel::useGps() const -{ - return d->useGps; -} - -void AppModel::setUseGps(bool value) -{ - d->useGps = value; - if (value) { - d->city = ""; - emit cityChanged(); - emit weatherChanged(); - // if we already have a valid GPS position, do not wait until it - // updates, but query the city immediately - if (d->coord.isValid()) - requestWeatherByCoordinates(); - } - emit useGpsChanged(); -} - -QString AppModel::city() const -{ - return d->city; -} - -void AppModel::setCity(const QString &value) -{ - d->city = value; - emit cityChanged(); - requestWeatherByCity(); -} diff --git a/examples/positioning/weatherinfo/appmodel.h b/examples/positioning/weatherinfo/appmodel.h deleted file mode 100644 index 73a9d06a..00000000 --- a/examples/positioning/weatherinfo/appmodel.h +++ /dev/null @@ -1,190 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples 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$ -** -****************************************************************************/ - -#ifndef APPMODEL_H -#define APPMODEL_H - -#include <QtCore/QObject> -#include <QtCore/QString> -#include <QtNetwork/QNetworkReply> -#include <QtQml/QQmlListProperty> -#include <QtQml/qqml.h> - -#include <QtPositioning/QGeoPositionInfoSource> - -#include "providerbackend.h" - -//! [0] -class WeatherData : public QObject { - Q_OBJECT - Q_PROPERTY(QString dayOfWeek - READ dayOfWeek WRITE setDayOfWeek - NOTIFY dataChanged) - Q_PROPERTY(QString weatherIcon - READ weatherIcon WRITE setWeatherIcon - NOTIFY dataChanged) - Q_PROPERTY(QString weatherDescription - READ weatherDescription WRITE setWeatherDescription - NOTIFY dataChanged) - Q_PROPERTY(QString temperature - READ temperature WRITE setTemperature - NOTIFY dataChanged) - QML_ANONYMOUS - -public: - explicit WeatherData(QObject *parent = 0); - WeatherData(const WeatherData &other); - WeatherData(const WeatherInfo &other); - - QString dayOfWeek() const; - QString weatherIcon() const; - QString weatherDescription() const; - QString temperature() const; - - void setDayOfWeek(const QString &value); - void setWeatherIcon(const QString &value); - void setWeatherDescription(const QString &value); - void setTemperature(const QString &value); - -signals: - void dataChanged(); -//! [0] -private: - QString m_dayOfWeek; - QString m_weather; - QString m_weatherDescription; - QString m_temperature; -//! [1] -}; -//! [1] - -Q_DECLARE_METATYPE(WeatherData) - -class AppModelPrivate; -//! [2] -class AppModel : public QObject -{ - Q_OBJECT - Q_PROPERTY(bool ready - READ ready - NOTIFY readyChanged) - Q_PROPERTY(bool hasSource - READ hasSource - NOTIFY readyChanged) - Q_PROPERTY(bool hasValidCity - READ hasValidCity - NOTIFY cityChanged) - Q_PROPERTY(bool hasValidWeather - READ hasValidWeather - NOTIFY weatherChanged) - Q_PROPERTY(bool useGps - READ useGps WRITE setUseGps - NOTIFY useGpsChanged) - Q_PROPERTY(QString city - READ city WRITE setCity - NOTIFY cityChanged) - Q_PROPERTY(WeatherData *weather - READ weather - NOTIFY weatherChanged) - Q_PROPERTY(QQmlListProperty<WeatherData> forecast - READ forecast - NOTIFY weatherChanged) - QML_ELEMENT - -public: - explicit AppModel(QObject *parent = 0); - ~AppModel(); - - bool ready() const; - bool hasSource() const; - bool useGps() const; - bool hasValidCity() const; - bool hasValidWeather() const; - void setUseGps(bool value); - - QString city() const; - void setCity(const QString &value); - - WeatherData *weather() const; - QQmlListProperty<WeatherData> forecast() const; - -public slots: - Q_INVOKABLE void refreshWeather(); - -//! [2] -private slots: - void positionUpdated(QGeoPositionInfo gpsPos); - void positionError(QGeoPositionInfoSource::Error e); - void handleWeatherData(const LocationInfo &location, const QList<WeatherInfo> &weatherDetails); - void switchToNextBackend(); - -//! [3] -signals: - void readyChanged(); - void useGpsChanged(); - void cityChanged(); - void weatherChanged(); -//! [3] - -private: - bool applyWeatherData(const QString &city, const QList<WeatherInfo> &weatherDetails); - void requestWeatherByCoordinates(); - void requestWeatherByCity(); - void registerBackend(qsizetype index); - void deregisterCurrentBackend(); - - - AppModelPrivate *d; - -//! [4] -}; -//! [4] - -#endif // APPMODEL_H diff --git a/examples/positioning/weatherinfo/components/BigForecastIcon.qml b/examples/positioning/weatherinfo/components/BigForecastIcon.qml deleted file mode 100644 index 9fa854a0..00000000 --- a/examples/positioning/weatherinfo/components/BigForecastIcon.qml +++ /dev/null @@ -1,92 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples 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 { - id: current - - property string topText: "20*" - property string bottomText: "Mostly cloudy" - property string weatherIcon: "sunny" - property real smallSide: (current.width < current.height ? current.width : current.height) - - Text { - text: current.topText - font.pointSize: 28 - anchors { - top: current.top - left: current.left - topMargin: 5 - leftMargin: 5 - } - } - - WeatherIcon { - weatherIcon: current.weatherIcon - anchors.centerIn: parent - anchors.verticalCenterOffset: -15 - width: current.smallSide - height: current.smallSide - } - - Text { - text: current.bottomText - font.pointSize: 23 - wrapMode: Text.WordWrap - width: parent.width - horizontalAlignment: Text.AlignRight - anchors { - bottom: current.bottom - right: current.right - rightMargin: 5 - } - } -} diff --git a/examples/positioning/weatherinfo/components/ForecastIcon.qml b/examples/positioning/weatherinfo/components/ForecastIcon.qml deleted file mode 100644 index ecf9a463..00000000 --- a/examples/positioning/weatherinfo/components/ForecastIcon.qml +++ /dev/null @@ -1,99 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples 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 { - id: top - - property string topText: "Mon" - property string weatherIcon: "sunny" - property string bottomText: "22*/23*" - - Text { - id: dayText - horizontalAlignment: Text.AlignHCenter - width: top.width - text: top.topText - - anchors.top: parent.top - anchors.topMargin: top.height / 5 - dayText.paintedHeight - anchors.horizontalCenter: parent.horizontalCenter - } - - WeatherIcon { - id: icon - weatherIcon: top.weatherIcon - - property real side: { - var h = 3 * top.height / 5 - if (top.width < h) - top.width; - else - h; - } - - width: icon.side - height: icon.side - - anchors.centerIn: parent - } - - Text { - id: tempText - horizontalAlignment: Text.AlignHCenter - width: top.width - text: top.bottomText - - anchors.bottom: parent.bottom - anchors.bottomMargin: top.height / 5 - tempText.paintedHeight - anchors.horizontalCenter: parent.horizontalCenter - } -} diff --git a/examples/positioning/weatherinfo/components/WeatherIcon.qml b/examples/positioning/weatherinfo/components/WeatherIcon.qml deleted file mode 100644 index 47832c0e..00000000 --- a/examples/positioning/weatherinfo/components/WeatherIcon.qml +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples 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 { - id: container - - property string weatherIcon: "sunny" - - Image { - id: img - source: "../icons/weather-" + container.weatherIcon + ".png" - smooth: true - anchors.fill: parent - } -} diff --git a/examples/positioning/weatherinfo/doc/images/example-weatherinfo.png b/examples/positioning/weatherinfo/doc/images/example-weatherinfo.png Binary files differdeleted file mode 100644 index 3a1c6c24..00000000 --- a/examples/positioning/weatherinfo/doc/images/example-weatherinfo.png +++ /dev/null diff --git a/examples/positioning/weatherinfo/doc/src/weatherinfo.qdoc b/examples/positioning/weatherinfo/doc/src/weatherinfo.qdoc deleted file mode 100644 index 7d9cab6f..00000000 --- a/examples/positioning/weatherinfo/doc/src/weatherinfo.qdoc +++ /dev/null @@ -1,164 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** 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 Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \example weatherinfo - \title Weather Info (C++/QML) - - \brief The Weather Info example shows how to use the user's current position - to retrieve local content from a web service in a C++ plugin for QML. - - \ingroup qtpositioning-examples - - Key \l{Qt Positioning} classes used in this example: - - \list - \li \l{QGeoPositionInfo} - \li \l{QGeoPositionInfoSource} - \endlist - - \image ../images/example-weatherinfo.png - - \include examples-run.qdocinc - - \section1 Weather Data Providers - - The example uses two unrelated weather data providers: - - \list - \li \l {http://www.openweathermap.org}{OpenWeather} - \li \l {https://www.weatherapi.com/}{WeatherAPI.com} - \endlist - - The provider to be used is selected automatically at runtime and can be - changed if the selected provider is not available. However, it can't be - specified manually. - - \note Free plans are used for both providers, which implies certain - limitations on the amount of weather requests. If the limits are exceeded, - the providers become temporary unavailable. When both providers are - unavailable, the application would not be able to show any weather - information. In this case it is required to wait until at least one of the - providers becomes available again. - - \section1 Application Data Models - - The key part of this example is the application's data model, contained - in the \c WeatherData and \c AppModel classes. \c WeatherData represents - the weather information taken from the HTTP service. It is a simple data - class, but we use \l Q_PROPERTY to expose it nicely to QML later. - It also uses \l QML_ANONYMOUS macro, which makes it recognized in QML. - - \snippet weatherinfo/appmodel.h 0 - \snippet weatherinfo/appmodel.h 1 - - \c AppModel models the state of the entire application. At startup, we - get the platform's default position source using - \l QGeoPositionInfoSource::createDefaultSource(). - - \snippet weatherinfo/appmodel.cpp 0 - \snippet weatherinfo/appmodel.cpp 1 - - If no default source is available, we take a static position and fetch - weather for that. If, however, we do have a position source, we connect - its \l {QGeoPositionInfoSource::}{positionUpdated()} signal to a slot on the - \c AppModel and call \l {QGeoPositionInfoSource::}{startUpdates()}, which - begins regular updates of device position. - - When a position update is received, we use the longitude and latitude - of the returned coordinate to retrieve weather data for the specified - location. - - \snippet weatherinfo/appmodel.cpp 2 - - To inform the UI about this process, the \c cityChanged() signal is emitted - when a new city is used, and the \c weatherChanged() signal whenever a - weather update occurs. - - The model also uses \l QML_ELEMENT macro, which makes it available in QML. - - \snippet weatherinfo/appmodel.h 2 - \snippet weatherinfo/appmodel.h 3 - \snippet weatherinfo/appmodel.h 4 - - We use a \l QQmlListProperty for the weather forecast information, - which contains the weather forecast for the next days (the number of days - is provider-specific). This makes it easy to access the forecast from QML. - - \section1 Expose Custom Models to QML - - To expose the models to the QML UI layer, we use the \l QML_ELEMENT and - \l QML_ANONYMOUS macros. See the \l QQmlEngine class description for more - details on these macros. - - To make the types available in QML, we need to update our build accordingly. - - \section2 CMake Build - - For a CMake-based build, we need to add the following to the - \c {CMakeLists.txt}: - - \quotefromfile weatherinfo/CMakeLists.txt - \skipto qt_add_qml_module(weatherinfo - \printuntil ) - - \section2 qmake Build - - For a qmake build, we need to modify the \c {weatherinfo.pro} file in the - following way: - - \quotefromfile weatherinfo/weatherinfo.pro - \skipto CONFIG - \printuntil QML_IMPORT_MAJOR_VERSION - - \section1 Instantiate the Models in QML - - Finally, in the actual QML, we instantiate the \c {AppModel}: - - \snippet weatherinfo/weatherinfo.qml 0 - \snippet weatherinfo/weatherinfo.qml 1 - \snippet weatherinfo/weatherinfo.qml 2 - - Once the model is instantiated like this, we can use its properties - elsewhere in the QML document: - - \snippet weatherinfo/weatherinfo.qml 3 - \snippet weatherinfo/weatherinfo.qml 4 - - \section1 Files and Attributions - - The example bundles the following images from Third-Party sources: - - \table - \row - \li \l{weatherinfo-tango-icons}{Tango Icons} - \li Public Domain - \row - \li \l{weatherinfo-tango-weather-pack}{Tango Weather Icon Pack by Darkobra} - \li Public Domain - \endtable -*/ diff --git a/examples/positioning/weatherinfo/icons/README.txt b/examples/positioning/weatherinfo/icons/README.txt deleted file mode 100644 index d3841532..00000000 --- a/examples/positioning/weatherinfo/icons/README.txt +++ /dev/null @@ -1,5 +0,0 @@ -The scalable icons are from: - -http://tango.freedesktop.org/Tango_Icon_Library -http://darkobra.deviantart.com/art/Tango-Weather-Icon-Pack-98024429 - diff --git a/examples/positioning/weatherinfo/icons/qt_attribution.json b/examples/positioning/weatherinfo/icons/qt_attribution.json deleted file mode 100644 index 23bbe386..00000000 --- a/examples/positioning/weatherinfo/icons/qt_attribution.json +++ /dev/null @@ -1,28 +0,0 @@ -[ - { - "Id": "weatherinfo-tango-weather-pack", - "Name": "Tango Weather Icon Pack by Darkobra", - "QDocModule": "qtpositioning", - "QtUsage": "Used in the \"Weather Info (C++/QML)\" example", - "QtParts": [ "examples" ], - "Description": "74 brand spankin' new Tango icons for your viewing pleasure.", - "Homepage": "https://www.deviantart.com/darkobra/art/Tango-Weather-Icon-Pack-98024429", - - "License": "Public Domain", - "Copyright": "Copyright DarKobra (C Stark)", - "Files": "weather-fog.png weather-haze.png weather-icy.png weather-sleet.png weather-sunny.png weather-sunny-very-few-clouds.png weather-sunny-few-clouds.png weather-thunder-shower.png" - }, - { - "Id": "weatherinfo-tango-icons", - "Name": "Tango Icons", - "QDocModule": "qtpositioning", - "QtUsage": "Used in the \"Weather Info (C++/QML)\" example", - "QtParts": [ "examples" ], - "Description": "The Tango Desktop Project exists to help create a consistent graphical user interface experience for free and Open Source software. ", - "Homepage": "http://tango.freedesktop.org/Tango_Desktop_Project", - - "License": "Public Domain", - "Copyright": "Copyright Tango Project contributors", - "Files": "weather-few-clouds.png weather-overcast.png weather-showers.png weather-storm.png weather-snow.png weather-showers-scattered.png" - } -] diff --git a/examples/positioning/weatherinfo/icons/weather-few-clouds.png b/examples/positioning/weatherinfo/icons/weather-few-clouds.png Binary files differdeleted file mode 100644 index a8000ef0..00000000 --- a/examples/positioning/weatherinfo/icons/weather-few-clouds.png +++ /dev/null diff --git a/examples/positioning/weatherinfo/icons/weather-fog.png b/examples/positioning/weatherinfo/icons/weather-fog.png Binary files differdeleted file mode 100644 index 9ffe9c4a..00000000 --- a/examples/positioning/weatherinfo/icons/weather-fog.png +++ /dev/null diff --git a/examples/positioning/weatherinfo/icons/weather-haze.png b/examples/positioning/weatherinfo/icons/weather-haze.png Binary files differdeleted file mode 100644 index ae6f13eb..00000000 --- a/examples/positioning/weatherinfo/icons/weather-haze.png +++ /dev/null diff --git a/examples/positioning/weatherinfo/icons/weather-icy.png b/examples/positioning/weatherinfo/icons/weather-icy.png Binary files differdeleted file mode 100644 index 18d20384..00000000 --- a/examples/positioning/weatherinfo/icons/weather-icy.png +++ /dev/null diff --git a/examples/positioning/weatherinfo/icons/weather-overcast.png b/examples/positioning/weatherinfo/icons/weather-overcast.png Binary files differdeleted file mode 100644 index 9d50f77f..00000000 --- a/examples/positioning/weatherinfo/icons/weather-overcast.png +++ /dev/null diff --git a/examples/positioning/weatherinfo/icons/weather-showers-scattered.png b/examples/positioning/weatherinfo/icons/weather-showers-scattered.png Binary files differdeleted file mode 100644 index d3e5b166..00000000 --- a/examples/positioning/weatherinfo/icons/weather-showers-scattered.png +++ /dev/null diff --git a/examples/positioning/weatherinfo/icons/weather-showers.png b/examples/positioning/weatherinfo/icons/weather-showers.png Binary files differdeleted file mode 100644 index 07489aaa..00000000 --- a/examples/positioning/weatherinfo/icons/weather-showers.png +++ /dev/null diff --git a/examples/positioning/weatherinfo/icons/weather-sleet.png b/examples/positioning/weatherinfo/icons/weather-sleet.png Binary files differdeleted file mode 100644 index 3d225895..00000000 --- a/examples/positioning/weatherinfo/icons/weather-sleet.png +++ /dev/null diff --git a/examples/positioning/weatherinfo/icons/weather-snow.png b/examples/positioning/weatherinfo/icons/weather-snow.png Binary files differdeleted file mode 100644 index e7426e3c..00000000 --- a/examples/positioning/weatherinfo/icons/weather-snow.png +++ /dev/null diff --git a/examples/positioning/weatherinfo/icons/weather-storm.png b/examples/positioning/weatherinfo/icons/weather-storm.png Binary files differdeleted file mode 100644 index 6b6b366a..00000000 --- a/examples/positioning/weatherinfo/icons/weather-storm.png +++ /dev/null diff --git a/examples/positioning/weatherinfo/icons/weather-sunny-very-few-clouds.png b/examples/positioning/weatherinfo/icons/weather-sunny-very-few-clouds.png Binary files differdeleted file mode 100644 index 133bcb29..00000000 --- a/examples/positioning/weatherinfo/icons/weather-sunny-very-few-clouds.png +++ /dev/null diff --git a/examples/positioning/weatherinfo/icons/weather-sunny.png b/examples/positioning/weatherinfo/icons/weather-sunny.png Binary files differdeleted file mode 100644 index 0fac921d..00000000 --- a/examples/positioning/weatherinfo/icons/weather-sunny.png +++ /dev/null diff --git a/examples/positioning/weatherinfo/icons/weather-thundershower.png b/examples/positioning/weatherinfo/icons/weather-thundershower.png Binary files differdeleted file mode 100644 index 1aff1639..00000000 --- a/examples/positioning/weatherinfo/icons/weather-thundershower.png +++ /dev/null diff --git a/examples/positioning/weatherinfo/main.cpp b/examples/positioning/weatherinfo/main.cpp deleted file mode 100644 index a002a244..00000000 --- a/examples/positioning/weatherinfo/main.cpp +++ /dev/null @@ -1,74 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples 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$ -** -****************************************************************************/ - -#include <QtGui/QGuiApplication> -#include <QtQuick/QQuickView> -#include <QtQml/QQmlEngine> -#include <QtQml/QQmlContext> -#include <QtQuick/QQuickItem> -#include <QLoggingCategory> - -#include "appmodel.h" - -int main(int argc, char *argv[]) -{ - QLoggingCategory::setFilterRules("wapp.*.debug=false"); - QGuiApplication application(argc, argv); - - const QString mainQmlApp = QStringLiteral("qrc:///weatherinfo.qml"); - QQuickView view; - view.setSource(QUrl(mainQmlApp)); - view.setResizeMode(QQuickView::SizeRootObjectToView); - - QObject::connect(view.engine(), SIGNAL(quit()), qApp, SLOT(quit())); - view.setGeometry(QRect(100, 100, 360, 640)); - view.show(); - return application.exec(); -} diff --git a/examples/positioning/weatherinfo/openweathermapbackend.cpp b/examples/positioning/weatherinfo/openweathermapbackend.cpp deleted file mode 100644 index 0a77579b..00000000 --- a/examples/positioning/weatherinfo/openweathermapbackend.cpp +++ /dev/null @@ -1,265 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples 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$ -** -****************************************************************************/ - -#include "openweathermapbackend.h" - -#include <QNetworkAccessManager> -#include <QNetworkReply> -#include <QUrlQuery> -#include <QJsonDocument> -#include <QJsonObject> -#include <QJsonValue> -#include <QJsonArray> -#include <QGeoCoordinate> -#include <QLoggingCategory> - -Q_DECLARE_LOGGING_CATEGORY(requestsLog) - -static constexpr auto kZeroKelvin = 273.15; - -static QString niceTemperatureString(double t) -{ - return QString::number(qRound(t - kZeroKelvin)) + QChar(0xB0); -} - -/* - Converts weather code to a string that will be used to show the icon. - The possible strings are based on the icon names. The icon name is built up - as follows: - weather-[mystring].png - where [mystring] is the value returned by this method. - Check resources for the full list of available icons. -*/ -static QString weatherCodeToString(const QString &code) -{ - if (code == u"01d" || code == u"01n") - return "sunny"; - else if (code == u"02d" || code == u"02n") - return "sunny-very-few-clouds"; - else if (code == u"03d" || code == u"03n") - return "few-clouds"; - else if (code == u"04d" || code == u"04n") - return "overcast"; - else if (code == u"09d" || code == u"09n" || code == u"10d" || code == u"10n") - return "showers"; - else if (code == u"11d" || code == u"11n") - return "thundershower"; - else if (code == u"13d" || code == u"13n") - return "snow"; - else if (code == u"50d" || code == u"50n") - return "fog"; - - return "sunny"; // default choice -} - -static void parseWeatherDescription(const QJsonObject &object, WeatherInfo &info) -{ - const QJsonArray weatherArray = object.value(u"weather").toArray(); - if (!weatherArray.isEmpty()) { - const QJsonObject obj = weatherArray.first().toObject(); - info.m_weatherDescription = obj.value(u"description").toString(); - info.m_weatherIconId = weatherCodeToString(obj.value(u"icon").toString()); - } else { - qCDebug(requestsLog, "An empty weather array is returned."); - } -} - -OpenWeatherMapBackend::OpenWeatherMapBackend(QObject *parent) - : ProviderBackend(parent), - m_networkManager(new QNetworkAccessManager(this)), - m_appId(QStringLiteral("36496bad1955bf3365448965a42b9eac")) -{ -} - -void OpenWeatherMapBackend::requestWeatherInfo(const QString &city) -{ - QUrlQuery query; - query.addQueryItem(QStringLiteral("q"), city); - - requestCurrentWeather(query, QGeoCoordinate()); -} - -void OpenWeatherMapBackend::requestWeatherInfo(const QGeoCoordinate &coordinate) -{ - QUrlQuery query; - query.addQueryItem(QStringLiteral("lat"), QString::number(coordinate.latitude())); - query.addQueryItem(QStringLiteral("lon"), QString::number(coordinate.longitude())); - - requestCurrentWeather(query, coordinate); -} - -void OpenWeatherMapBackend::handleCurrentWeatherReply(QNetworkReply *reply, - const QGeoCoordinate &coordinate) -{ - if (!reply) { - emit errorOccurred(); - return; - } - bool parsed = false; - if (!reply->error()) { - // extract info about current weather - const QJsonDocument document = QJsonDocument::fromJson(reply->readAll()); - const QJsonObject documentObject = document.object(); - - LocationInfo currentLocation; - currentLocation.m_name = documentObject.value(u"name").toString(); - if (coordinate.isValid()) - currentLocation.m_coordinate = coordinate; - qCDebug(requestsLog) << "Got current weather for" << currentLocation.m_name; - - WeatherInfo currentWeather; - - parseWeatherDescription(documentObject, currentWeather); - - const QJsonObject mainObject = documentObject.value(u"main").toObject(); - const QJsonValue tempValue = mainObject.value(u"temp"); - if (tempValue.isDouble()) - currentWeather.m_temperature = niceTemperatureString(tempValue.toDouble()); - else - qCDebug(requestsLog, "Failed to parse current temperature."); - - parsed = !currentLocation.m_name.isEmpty() && !currentWeather.m_temperature.isEmpty(); - - if (parsed) { - // request forecast - requestWeatherForecast(currentLocation, currentWeather); - } - } - if (!parsed) { - emit errorOccurred(); - if (reply->error()) - qCDebug(requestsLog) << reply->errorString(); - else - qCDebug(requestsLog, "Failed to parse current weather JSON."); - } - - reply->deleteLater(); -} - -void OpenWeatherMapBackend::handleWeatherForecastReply(QNetworkReply *reply, - const LocationInfo &location, - const WeatherInfo ¤tWeather) -{ - if (!reply) { - emit errorOccurred(); - return; - } - if (!reply->error()) { - QJsonDocument document = QJsonDocument::fromJson(reply->readAll()); - const QJsonObject documentObject = document.object(); - - QList<WeatherInfo> weatherDetails; - // current weather will be the first in the list - weatherDetails << currentWeather; - - QJsonArray daysList = documentObject.value(u"list").toArray(); - // include current day as well - for (qsizetype i = 0; i < daysList.size(); ++i) { - QJsonObject dayObject = daysList.at(i).toObject(); - WeatherInfo info; - - const QDateTime dt = QDateTime::fromSecsSinceEpoch(dayObject.value(u"dt").toInteger()); - info.m_dayOfWeek = dt.toString(u"ddd"); - - const QJsonObject tempObject = dayObject.value(u"temp").toObject(); - - const QJsonValue minTemp = tempObject.value(u"min"); - const QJsonValue maxTemp = tempObject.value(u"max"); - if (minTemp.isDouble() && maxTemp.isDouble()) { - info.m_temperature = niceTemperatureString(minTemp.toDouble()) + QChar('/') - + niceTemperatureString(maxTemp.toDouble()); - } else { - qCDebug(requestsLog, "Failed to parse min or max temperature."); - } - - parseWeatherDescription(dayObject, info); - - if (!info.m_temperature.isEmpty() && !info.m_weatherIconId.isEmpty()) - weatherDetails.push_back(info); - } - - emit weatherInformation(location, weatherDetails); - } else { - emit errorOccurred(); - qCDebug(requestsLog) << reply->errorString(); - } - - reply->deleteLater(); -} - -void OpenWeatherMapBackend::requestCurrentWeather(QUrlQuery &query, - const QGeoCoordinate &coordinate) -{ - QUrl url("http://api.openweathermap.org/data/2.5/weather"); - query.addQueryItem(QStringLiteral("mode"), QStringLiteral("json")); - query.addQueryItem(QStringLiteral("APPID"), m_appId); - url.setQuery(query); - - QNetworkReply *reply = m_networkManager->get(QNetworkRequest(url)); - connect(reply, &QNetworkReply::finished, this, - [this, reply, coordinate]() { handleCurrentWeatherReply(reply, coordinate); }); -} - -void OpenWeatherMapBackend::requestWeatherForecast(const LocationInfo &location, - const WeatherInfo ¤tWeather) -{ - QUrl url("http://api.openweathermap.org/data/2.5/forecast/daily"); - QUrlQuery query; - query.addQueryItem(QStringLiteral("q"), location.m_name); - query.addQueryItem(QStringLiteral("mode"), QStringLiteral("json")); - query.addQueryItem(QStringLiteral("cnt"), QStringLiteral("4")); - query.addQueryItem(QStringLiteral("APPID"), m_appId); - url.setQuery(query); - - QNetworkReply *reply = m_networkManager->get(QNetworkRequest(url)); - connect(reply, &QNetworkReply::finished, this, [this, reply, location, currentWeather]() { - handleWeatherForecastReply(reply, location, currentWeather); - }); -} diff --git a/examples/positioning/weatherinfo/openweathermapbackend.h b/examples/positioning/weatherinfo/openweathermapbackend.h deleted file mode 100644 index 7f4e5f97..00000000 --- a/examples/positioning/weatherinfo/openweathermapbackend.h +++ /dev/null @@ -1,85 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples 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$ -** -****************************************************************************/ - -#ifndef OPENWEATHERMAPBACKEND_H -#define OPENWEATHERMAPBACKEND_H - -#include "providerbackend.h" - -QT_BEGIN_NAMESPACE -class QNetworkAccessManager; -class QNetworkReply; -class QUrlQuery; -QT_END_NAMESPACE - -class OpenWeatherMapBackend : public ProviderBackend -{ - Q_OBJECT -public: - explicit OpenWeatherMapBackend(QObject *parent = nullptr); - ~OpenWeatherMapBackend() = default; - - void requestWeatherInfo(const QString &city) override; - void requestWeatherInfo(const QGeoCoordinate &coordinate) override; - -private slots: - void handleCurrentWeatherReply(QNetworkReply *reply, const QGeoCoordinate &coordinate); - void handleWeatherForecastReply(QNetworkReply *reply, const LocationInfo &location, - const WeatherInfo ¤tWeather); - -private: - void requestCurrentWeather(QUrlQuery &query, const QGeoCoordinate &coordinate); - void requestWeatherForecast(const LocationInfo &location, const WeatherInfo ¤tWeather); - - QNetworkAccessManager *m_networkManager; - const QString m_appId; -}; - -#endif // OPENWEATHERMAPBACKEND_H diff --git a/examples/positioning/weatherinfo/providerbackend.cpp b/examples/positioning/weatherinfo/providerbackend.cpp deleted file mode 100644 index 30c45209..00000000 --- a/examples/positioning/weatherinfo/providerbackend.cpp +++ /dev/null @@ -1,53 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples 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$ -** -****************************************************************************/ - -#include "providerbackend.h" - -ProviderBackend::ProviderBackend(QObject *parent) : QObject(parent) { } diff --git a/examples/positioning/weatherinfo/providerbackend.h b/examples/positioning/weatherinfo/providerbackend.h deleted file mode 100644 index c59f6c49..00000000 --- a/examples/positioning/weatherinfo/providerbackend.h +++ /dev/null @@ -1,90 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples 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$ -** -****************************************************************************/ - -#ifndef PROVIDERBACKEND_H -#define PROVIDERBACKEND_H - -#include <QObject> -#include <QGeoCoordinate> - -struct WeatherInfo -{ - QString m_dayOfWeek; - QString m_weatherIconId; - QString m_weatherDescription; - QString m_temperature; -}; - -struct LocationInfo -{ - QString m_name; - QGeoCoordinate m_coordinate; -}; - -class ProviderBackend : public QObject -{ - Q_OBJECT -public: - explicit ProviderBackend(QObject *parent = nullptr); - - virtual void requestWeatherInfo(const QString &city) = 0; - virtual void requestWeatherInfo(const QGeoCoordinate &coordinate) = 0; - -signals: - // The first element in weatherDetails represents current weather. - // Next are the weather forecast, including the current day. - // The LocationInfo object should contain valid coordinate only when it was - // initially used to request the weather. If the city name was used, an - // empty coordinate is expected to be transferred. - void weatherInformation(const LocationInfo &location, const QList<WeatherInfo> &weatherDetails); - void errorOccurred(); -}; - -#endif // PROVIDERBACKEND_H diff --git a/examples/positioning/weatherinfo/weatherapibackend.cpp b/examples/positioning/weatherinfo/weatherapibackend.cpp deleted file mode 100644 index a98f7dbb..00000000 --- a/examples/positioning/weatherinfo/weatherapibackend.cpp +++ /dev/null @@ -1,266 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples 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$ -** -****************************************************************************/ - -#include "weatherapibackend.h" - -#include <QNetworkAccessManager> -#include <QNetworkReply> -#include <QUrlQuery> -#include <QJsonDocument> -#include <QJsonObject> -#include <QJsonValue> -#include <QJsonArray> -#include <QLoggingCategory> - -Q_DECLARE_LOGGING_CATEGORY(requestsLog) - -static QString niceTemperatureString(double t) -{ - return QString::number(qRound(t)) + QChar(0xB0); -} - -/* - Converts weather code to a string that will be used to show the icon. - The possible strings are based on the icon names. The icon name is built up - as follows: - weather-[mystring].png - where [mystring] is the value returned by this method. - Check resources for the full list of available icons. -*/ -static QString weatherCodeToString(int code) -{ - switch (code) { - case 1000: - return "sunny"; - case 1003: - return "sunny-very-few-clouds"; - case 1006: - return "few-clouds"; - case 1009: - return "overcast"; - case 1030: - case 1135: - case 1147: - return "fog"; - case 1063: - case 1072: - case 1150: - case 1153: - case 1168: - case 1171: - case 1180: - case 1183: - case 1186: - case 1189: - case 1198: - return "showers-scattered"; - case 1066: - case 1069: - case 1114: - case 1117: - case 1210: - case 1213: - case 1216: - case 1219: - case 1222: - case 1225: - case 1237: - case 1255: - case 1258: - case 1261: - case 1264: - case 1279: - case 1282: - return "snow"; - case 1087: - return "storm"; - case 1192: - case 1195: - case 1201: - case 1240: - case 1243: - case 1246: - return "showers"; - case 1204: - case 1207: - case 1249: - case 1252: - return "sleet"; - case 1273: - case 1276: - return "thundershower"; - default: - return "sunny"; - } - - return "sunny"; // default choice -} - -static void parseWeatherDescription(const QJsonObject &object, WeatherInfo &info) -{ - const QJsonObject conditionObject = object.value(u"condition").toObject(); - info.m_weatherDescription = conditionObject.value(u"text").toString(); - info.m_weatherIconId = weatherCodeToString(conditionObject.value(u"code").toInt()); -} - -WeatherApiBackend::WeatherApiBackend(QObject *parent) - : ProviderBackend(parent), - m_networkManager(new QNetworkAccessManager(this)), - m_apiKey(QStringLiteral("8edde160c63c4be6b77101828211208")) -{ -} - -void WeatherApiBackend::requestWeatherInfo(const QString &city) -{ - generateWeatherRequest(city, QGeoCoordinate()); -} - -void WeatherApiBackend::requestWeatherInfo(const QGeoCoordinate &coordinate) -{ - const QString coordinateStr = - QString("%1,%2").arg(coordinate.latitude()).arg(coordinate.longitude()); - generateWeatherRequest(coordinateStr, coordinate); -} - -void WeatherApiBackend::handleWeatherForecastReply(QNetworkReply *reply, - const QGeoCoordinate &coordinate) -{ - if (!reply) { - emit errorOccurred(); - return; - } - bool parsed = false; - if (!reply->error()) { - QJsonDocument document = QJsonDocument::fromJson(reply->readAll()); - const QJsonObject documentObject = document.object(); - const QJsonObject locationObject = documentObject.value(u"location").toObject(); - - // extract location name - LocationInfo location; - location.m_name = locationObject.value(u"name").toString(); - if (coordinate.isValid()) - location.m_coordinate = coordinate; - qCDebug(requestsLog) << "Got weather for" << location.m_name; - - // extract current weather - WeatherInfo currentWeather; - - const QJsonObject currentWeatherObject = documentObject.value(u"current").toObject(); - const QJsonValue temperature = currentWeatherObject.value(u"temp_c"); - if (temperature.isDouble()) - currentWeather.m_temperature = niceTemperatureString(temperature.toDouble()); - - parseWeatherDescription(currentWeatherObject, currentWeather); - - parsed = !location.m_name.isEmpty() && !currentWeather.m_temperature.isEmpty(); - - if (parsed) { - QList<WeatherInfo> weatherDetails; - weatherDetails << currentWeather; - - // extract forecast details - const QJsonObject forecastObject = documentObject.value(u"forecast").toObject(); - const QJsonArray forecastDays = forecastObject.value(u"forecastday").toArray(); - for (qsizetype i = 0; i < forecastDays.size(); ++i) { - const QJsonObject dayInfo = forecastDays.at(i).toObject(); - WeatherInfo info; - - const QDateTime dt = - QDateTime::fromSecsSinceEpoch(dayInfo.value(u"date_epoch").toInteger()); - info.m_dayOfWeek = dt.toString(u"ddd"); - - const QJsonObject dayObject = dayInfo.value(u"day").toObject(); - const QJsonValue minTemp = dayObject.value(u"mintemp_c"); - const QJsonValue maxTemp = dayObject.value(u"maxtemp_c"); - if (minTemp.isDouble() && maxTemp.isDouble()) { - info.m_temperature = niceTemperatureString(minTemp.toDouble()) + QChar('/') - + niceTemperatureString(maxTemp.toDouble()); - } else { - qCDebug(requestsLog, "Failed to parse min or max temperature."); - } - - parseWeatherDescription(dayObject, info); - - if (!info.m_temperature.isEmpty() && !info.m_weatherIconId.isEmpty()) - weatherDetails.push_back(info); - } - - emit weatherInformation(location, weatherDetails); - } - } - if (!parsed) { - emit errorOccurred(); - if (reply->error()) - qCDebug(requestsLog) << reply->errorString(); - else - qCDebug(requestsLog, "Failed to parse weather JSON."); - } - - reply->deleteLater(); -} - -void WeatherApiBackend::generateWeatherRequest(const QString &locationString, - const QGeoCoordinate &coordinate) -{ - QUrl url("https://api.weatherapi.com/v1/forecast.json"); - - QUrlQuery query; - query.addQueryItem(QStringLiteral("key"), m_apiKey); - query.addQueryItem(QStringLiteral("q"), locationString); - query.addQueryItem(QStringLiteral("days"), QStringLiteral("4")); - query.addQueryItem(QStringLiteral("aqi"), QStringLiteral("no")); - query.addQueryItem(QStringLiteral("alerts"), QStringLiteral("no")); - - url.setQuery(query); - - QNetworkReply *reply = m_networkManager->get(QNetworkRequest(url)); - connect(reply, &QNetworkReply::finished, this, - [this, reply, coordinate]() { handleWeatherForecastReply(reply, coordinate); }); -} diff --git a/examples/positioning/weatherinfo/weatherapibackend.h b/examples/positioning/weatherinfo/weatherapibackend.h deleted file mode 100644 index dce078a1..00000000 --- a/examples/positioning/weatherinfo/weatherapibackend.h +++ /dev/null @@ -1,80 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples 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$ -** -****************************************************************************/ - -#ifndef WEATHERAPIBACKEND_H -#define WEATHERAPIBACKEND_H - -#include "providerbackend.h" - -QT_BEGIN_NAMESPACE -class QNetworkAccessManager; -class QNetworkReply; -QT_END_NAMESPACE - -class WeatherApiBackend : public ProviderBackend -{ - Q_OBJECT -public: - explicit WeatherApiBackend(QObject *parent = nullptr); - - void requestWeatherInfo(const QString &city) override; - void requestWeatherInfo(const QGeoCoordinate &coordinate) override; - -private slots: - void handleWeatherForecastReply(QNetworkReply *reply, const QGeoCoordinate &coordinate); - -private: - void generateWeatherRequest(const QString &locationString, const QGeoCoordinate &coordinate); - - QNetworkAccessManager *m_networkManager; - const QString m_apiKey; -}; - -#endif // WEATHERAPIBACKEND_H diff --git a/examples/positioning/weatherinfo/weatherinfo.pro b/examples/positioning/weatherinfo/weatherinfo.pro deleted file mode 100644 index eb88ca42..00000000 --- a/examples/positioning/weatherinfo/weatherinfo.pro +++ /dev/null @@ -1,31 +0,0 @@ -TEMPLATE = app -TARGET = weatherinfo - -QT += core network positioning qml quick - -CONFIG += qmltypes -QML_IMPORT_NAME = WeatherInfo -QML_IMPORT_MAJOR_VERSION = 1 - -SOURCES += main.cpp \ - appmodel.cpp \ - openweathermapbackend.cpp \ - providerbackend.cpp \ - weatherapibackend.cpp - -OTHER_FILES += weatherinfo.qml \ - components/WeatherIcon.qml \ - components/ForecastIcon.qml \ - components/BigForecastIcon.qml \ - icons/* - - -RESOURCES += weatherinfo.qrc - -HEADERS += appmodel.h \ - openweathermapbackend.h \ - providerbackend.h \ - weatherapibackend.h - -target.path = $$[QT_INSTALL_EXAMPLES]/positioning/weatherinfo -INSTALLS += target diff --git a/examples/positioning/weatherinfo/weatherinfo.qml b/examples/positioning/weatherinfo/weatherinfo.qml deleted file mode 100644 index 62bbe7d7..00000000 --- a/examples/positioning/weatherinfo/weatherinfo.qml +++ /dev/null @@ -1,208 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples 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 "components" -//! [0] -import WeatherInfo 1.0 - -Item { - id: window -//! [0] - width: 360 - height: 640 - - state: "loading" - - states: [ - State { - name: "loading" - PropertyChanges { target: main; opacity: 0 } - PropertyChanges { target: wait; opacity: 1 } - }, - State { - name: "ready" - PropertyChanges { target: main; opacity: 1 } - PropertyChanges { target: wait; opacity: 0 } - } - ] -//! [1] - AppModel { - id: appModel - onReadyChanged: { - if (appModel.ready) - window.state = "ready" - else - window.state = "loading" - } - } -//! [1] - Item { - id: wait - anchors.fill: parent - - Text { - text: "Loading weather data..." - anchors.centerIn: parent - font.pointSize: 18 - } - } - - Item { - id: main - anchors.fill: parent - - Column { - spacing: 6 - - anchors { - fill: parent - topMargin: 6; bottomMargin: 6; leftMargin: 6; rightMargin: 6 - } - - Rectangle { - width: parent.width - height: 25 - color: "lightgrey" - - Text { - text: (appModel.hasValidCity ? appModel.city : "Unknown location") + (appModel.useGps ? " (GPS)" : "") - anchors.fill: parent - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - } - - MouseArea { - anchors.fill: parent - onClicked: { - if (appModel.useGps) { - appModel.useGps = false - appModel.city = "Brisbane" - } else { - switch (appModel.city) { - case "Brisbane": - appModel.city = "Oslo" - break - case "Oslo": - appModel.city = "Helsinki" - break - case "Helsinki": - appModel.city = "New York" - break - case "New York": - appModel.useGps = true - break - } - } - } - } - } - -//! [3] - BigForecastIcon { - id: current - - width: main.width -12 - height: 2 * (main.height - 25 - 12) / 3 - - weatherIcon: (appModel.hasValidWeather - ? appModel.weather.weatherIcon - : "sunny") -//! [3] - topText: (appModel.hasValidWeather - ? appModel.weather.temperature - : "??") - bottomText: (appModel.hasValidWeather - ? appModel.weather.weatherDescription - : "No weather data") - - MouseArea { - anchors.fill: parent - onClicked: { - appModel.refreshWeather() - } - } -//! [4] - } -//! [4] - - Row { - id: iconRow - spacing: 6 - - width: main.width - 12 - height: (main.height - 25 - 24) / 3 - - property int daysCount: appModel.forecast.length - property real iconWidth: (daysCount > 0) ? (iconRow.width / daysCount) - 10 - : iconRow.width - property real iconHeight: iconRow.height - - Repeater { - model: appModel.forecast - ForecastIcon { - id: forecast1 - width: iconRow.iconWidth - height: iconRow.iconHeight - - topText: (appModel.hasValidWeather ? - modelData.dayOfWeek : "??") - bottomText: (appModel.hasValidWeather ? - modelData.temperature : "??/??") - weatherIcon: (appModel.hasValidWeather ? - modelData.weatherIcon : "sunny") - } - } - } - } - } -//! [2] -} -//! [2] diff --git a/examples/positioning/weatherinfo/weatherinfo.qrc b/examples/positioning/weatherinfo/weatherinfo.qrc deleted file mode 100644 index 1578fa9d..00000000 --- a/examples/positioning/weatherinfo/weatherinfo.qrc +++ /dev/null @@ -1,21 +0,0 @@ -<RCC> - <qresource prefix="/"> - <file>weatherinfo.qml</file> - <file>components/BigForecastIcon.qml</file> - <file>components/ForecastIcon.qml</file> - <file>components/WeatherIcon.qml</file> - <file>icons/weather-few-clouds.png</file> - <file>icons/weather-fog.png</file> - <file>icons/weather-haze.png</file> - <file>icons/weather-icy.png</file> - <file>icons/weather-overcast.png</file> - <file>icons/weather-showers.png</file> - <file>icons/weather-sleet.png</file> - <file>icons/weather-snow.png</file> - <file>icons/weather-storm.png</file> - <file>icons/weather-sunny-very-few-clouds.png</file> - <file>icons/weather-sunny.png</file> - <file>icons/weather-thundershower.png</file> - <file>icons/weather-showers-scattered.png</file> - </qresource> -</RCC> |