Warning, /education/marble/src/apps/marble-maps/SearchField.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 // SPDX-FileCopyrightText: 2015 Dennis Nienhüser <nienhueser@kde.org> 0005 // SPDX-FileCopyrightText: 2015 Mikhail Ivchenko <ematirov@gmail.com> 0006 // 0007 0008 import QtQuick 2.3 0009 import QtQuick.Controls 1.3 0010 import QtQuick.Controls.Styles 1.3 0011 0012 Item { 0013 id: root 0014 height: field.height 0015 0016 property alias query: field.text 0017 property alias hasFocus: field.activeFocus 0018 0019 property alias completionModel: completion.model 0020 property bool busy: false 0021 0022 signal searchRequested(string query) 0023 signal completionRequested(string query) 0024 signal cleared() 0025 signal menuButtonClicked() 0026 0027 function search(query) { 0028 routingManager.clearSearchResultPlacemarks(); 0029 query = query.trim(); 0030 if(query.toLowerCase() === "ok marble" || query.toLowerCase() === "okdbg") { 0031 app.state = "developer"; 0032 } else if(query !== "") { 0033 root.busy = true; 0034 searchRequested(query); 0035 field.focus = false; 0036 } 0037 } 0038 0039 SystemPalette{ 0040 id: palette 0041 colorGroup: SystemPalette.Active 0042 } 0043 0044 Rectangle { 0045 anchors.fill: parent 0046 color: palette.base 0047 border.color: palette.shadow 0048 border.width: 1 0049 } 0050 0051 FlatButton { 0052 id: menuButton 0053 anchors.verticalCenter: parent.verticalCenter 0054 anchors.left: parent.left 0055 anchors.leftMargin: 10 0056 height: 0.7 * field.height 0057 width: height 0058 imageSource: "qrc:///menu.png" 0059 0060 MouseArea { 0061 anchors.fill: parent 0062 onClicked: root.menuButtonClicked() 0063 } 0064 } 0065 0066 TextField { 0067 id: field 0068 anchors.left: menuButton.right 0069 anchors.right: parent.right 0070 0071 placeholderText: qsTr("Search") 0072 font.pointSize: 16 0073 textColor: palette.text 0074 inputMethodHints: Qt.ImhNoPredictiveText 0075 onAccepted: root.search(text) 0076 onTextChanged: root.completionRequested(text) 0077 0078 BusyIndicator { 0079 id: searchBusyIndicator 0080 anchors.verticalCenter: parent.verticalCenter 0081 anchors.right: clearButton.visible ? clearButton.left : clearButton.right 0082 anchors.rightMargin: 10 0083 visible: running 0084 height: 0.7 * field.height 0085 width: height 0086 running: root.busy 0087 0088 style: BusyIndicatorStyle { 0089 indicator: Image { 0090 visible: control.running 0091 source: "busy_indicator.png" 0092 RotationAnimator on rotation { 0093 running: control.running 0094 loops: Animation.Infinite 0095 duration: 1500 0096 from: 0 ; to: 360 0097 } 0098 } 0099 } 0100 } 0101 0102 FlatButton { 0103 id: clearButton 0104 anchors.verticalCenter: parent.verticalCenter 0105 anchors.right: searchButton.visible ? searchButton.left : parent.right 0106 anchors.rightMargin: 10 0107 height: 0.7 * field.height 0108 width: height 0109 visible: field.text !== "" 0110 imageSource: "qrc:///clear.png" 0111 0112 MouseArea { 0113 anchors.fill: parent 0114 onClicked: { 0115 app.selectedPlacemark = null; 0116 app.state = "none" 0117 routingManager.clearSearchResultPlacemarks(); 0118 field.text = ""; 0119 field.focus = true; 0120 cleared(); 0121 } 0122 } 0123 } 0124 0125 FlatButton { 0126 id: searchButton 0127 anchors.verticalCenter: parent.verticalCenter 0128 anchors.right: parent.right 0129 anchors.rightMargin: 10 0130 height: 0.7 * field.height 0131 width: height 0132 visible: !root.busy 0133 enabled: field.text !== "" 0134 imageSource: "qrc:///search.png" 0135 onClicked: root.search(field.text) 0136 } 0137 } 0138 0139 Completion { 0140 id: completion 0141 anchors { 0142 top: parent.bottom 0143 left: parent.left 0144 right: parent.right 0145 } 0146 height: delegateHeight * Math.min(2,count) 0147 visible: count > 0 && field.activeFocus 0148 onItemSelected: { 0149 field.text = name; 0150 search(name); 0151 } 0152 } 0153 }