Warning, /education/marble/src/apps/marble-maps/NavigationManager.qml is written in an unsupported language. File is not indexed.

0001 // SPDX-License-Identifier: LGPL-2.1-or-later
0002 //
0003 // SPDX-FileCopyrightText: 2015 Gábor Péterffy <peterffy95@gmail.com>
0004 //
0005 
0006 
0007 import QtQuick 2.3
0008 import QtQuick.Controls 1.3
0009 import QtQuick.Window 2.2
0010 
0011 import org.kde.marble 0.20
0012 
0013 Item {
0014     id: root
0015     property var marbleItem: null
0016     property var tts: null
0017     property alias snappedPositionMarkerScreenPosition: navigation.screenPosition
0018     property alias screenAccuracy: navigation.screenAccuracy
0019     property alias deviated: navigation.deviated
0020     property bool hasRoute: false
0021     property alias guidanceModeEnabled: navigation.guidanceModeEnabled
0022 
0023     onVisibleChanged: {
0024         if (visible) {
0025             marbleItem.setZoomToMaximumLevel();
0026             marbleItem.centerOnCurrentPosition();
0027         }
0028 
0029         navigation.guidanceModeEnabled = visible;
0030     }
0031 
0032     Settings {
0033         id: settings
0034         Component.onDestruction: {
0035             settings.setValue("Navigation", "muted", muteButton.muted)
0036         }
0037     }
0038 
0039     BorderImage {
0040         anchors.fill: infoBar
0041         anchors.margins: -14
0042         visible: infoBar.visible
0043         border { top: 14; left: 14; right: 14; bottom: 14 }
0044         source: "qrc:///border_shadow.png"
0045     }
0046 
0047     NavigationInfoBar {
0048         id: infoBar
0049         anchors {
0050             top: parent.top
0051             left: parent.left
0052             right: parent.right
0053         }
0054         visible: root.hasRoute
0055         instructionIcon: navigation.nextInstructionImage.replace("qrc:/", "qrc:///");
0056         distance: navigation.nextInstructionDistance;
0057         destinationDistance: navigation.destinationDistance
0058     }
0059 
0060     CircularButton {
0061         id: muteButton
0062         visible: root.hasRoute
0063 
0064         property bool muted: settings.value("Navigation", "muted") === "true"
0065 
0066         anchors.right: infoBar.right
0067         anchors.rightMargin: Screen.pixelDensity * 3
0068         anchors.top: infoBar.bottom
0069         anchors.topMargin: Screen.pixelDensity * 5
0070         iconSource: muted ? "qrc:///material/volume-off.svg" : "qrc:///material/volume-on.svg"
0071         onClicked: muted = !muted
0072     }
0073 
0074     Navigation {
0075         id: navigation
0076         marbleQuickItem: marbleItem
0077 
0078         onVoiceNavigationAnnouncementChanged: {
0079             if (root.visible && root.hasRoute && !muteButton.muted) {
0080                 textToSpeechClient.readText(voiceNavigationAnnouncement);
0081             }
0082         }
0083     }
0084 }