Warning, /plasma/aura-browser/app/qml/LocalURLSearchHandler.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 SPDX-FileCopyrightText: 2022 Aditya Mehra <aix.m@outlook.com>
0003
0004 SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006
0007 import QtQuick 2.12
0008 import QtQuick.Controls 2.12
0009 import QtQuick.Window 2.12
0010 import QtWebEngine 1.7
0011 import QtWebChannel 1.0
0012 import QtQuick.Layouts 1.12
0013 import QtQuick.LocalStorage 2.12
0014 import "code/RecentStorage.js" as RecentStorage
0015 import "code/Utils.js" as Utils
0016 import Aura 1.0 as Aura
0017 import QtQuick.VirtualKeyboard 2.4
0018 import Qt5Compat.GraphicalEffects
0019 import org.kde.kirigami as Kirigami
0020
0021 Popup {
0022 id: webpageUrlEntryDrawer
0023 width: parent.width * 0.8
0024 height: parent.height * 0.8
0025 x: (parent.width - width) / 2
0026 y: (parent.height - height) / 2
0027 padding: Kirigami.Units.largeSpacing
0028 modal: true
0029 dim: true
0030
0031 Overlay.modal: Rectangle {
0032 Kirigami.Theme.colorSet: Kirigami.Theme.View
0033 color: Qt.rgba(Kirigami.Theme.backgroundColor.r, Kirigami.Theme.backgroundColor.g, Kirigami.Theme.backgroundColor.b, 0.9)
0034 }
0035
0036 background: Rectangle {
0037 color: Kirigami.Theme.backgroundColor
0038 layer.enabled: true
0039 layer.effect: DropShadow {
0040 horizontalOffset: 0
0041 verticalOffset: 2
0042 radius: 8.0
0043 samples: 17
0044 color: Qt.rgba(0,0,0,0.6)
0045 }
0046 }
0047
0048 function autoAppend(model, getinputstring, setinputstring) {
0049 for(var i = 0; i < model.count; ++i)
0050 if (getinputstring(model.get(i))){
0051 return true
0052 }
0053 return null
0054 }
0055
0056 function evalAutoLogic() {
0057 if (suggestionsBox.currentIndex === -1) {
0058 } else {
0059 suggestionsBox.complete(suggestionsBox.currentItem)
0060 }
0061 }
0062
0063 onOpened: {
0064 localurlEntrie.forceActiveFocus()
0065 }
0066
0067 ListModel {
0068 id: completionItems
0069 }
0070
0071 contentItem: Item {
0072 id: entryLayout
0073
0074 RowLayout {
0075 id: localHeaderAreaURLandSearchField
0076 anchors.top: parent.top
0077 anchors.left: parent.left
0078 anchors.right: parent.right
0079 anchors.margins: Kirigami.Units.smallSpacing
0080
0081 Kirigami.Heading {
0082 id: localUrlSearchFieldLabel
0083 level: 1
0084 text: i18n("Enter URL / Search Term")
0085 color: Kirigami.Theme.textColor
0086 width: parent.width
0087 horizontalAlignment: Qt.AlignLeft
0088 Layout.alignment: Qt.AlignLeft
0089 }
0090
0091 Label {
0092 id: localUrlSearchFieldBackBtnLabel
0093 text: i18n("Press 'esc' or the [←] Back button to close")
0094 Layout.alignment: Qt.AlignRight
0095 color: Kirigami.Theme.textColor
0096 }
0097 }
0098
0099 Kirigami.Separator {
0100 id: localUrlSearchFieldheaderSept
0101 anchors.top: localHeaderAreaURLandSearchField.bottom
0102 width: parent.width
0103 height: 1
0104 }
0105
0106 TextField {
0107 id: localurlEntrie
0108 width: parent.width
0109 anchors.top: localUrlSearchFieldheaderSept.bottom
0110 anchors.topMargin: Kirigami.Units.largeSpacing
0111 height: Kirigami.Units.gridUnit * 5
0112 placeholderText: i18n("Enter Search Term or URL")
0113 color: Kirigami.Theme.textColor
0114 inputMethodHints: Qt.ImhNoAutoUppercase | Qt.ImhNoPredictiveText
0115 background: Rectangle {
0116 color: Qt.lighter(Kirigami.Theme.backgroundColor, 1.2)
0117 border.color: localurlEntrie.activeFocus ? Kirigami.Theme.highlightColor : Kirigami.Theme.disabledTextColor
0118 border.width: 1
0119 }
0120
0121 onAccepted: {
0122 var evaluateExist = webpageUrlEntryDrawer.autoAppend(completionItems, function(item) { return item.name === localurlEntrie.text }, localurlEntrie.text)
0123 if(evaluateExist === null){
0124 completionItems.append({"name": localurlEntrie.text, "randcolor": Utils.genRandomColor().toString()});
0125 }
0126 var setUrl = Utils.checkURL(localurlEntrie.text)
0127 if(setUrl){
0128 webView.url = localurlEntrie.text
0129 } else {
0130 var searchTypeUrl
0131 if(Aura.GlobalSettings.defaultSearchEngine == "Google"){
0132 searchTypeUrl = "https://www.google.com/search?q=" + localurlEntrie.text
0133 } else if (Aura.GlobalSettings.defaultSearchEngine == "DDG") {
0134 searchTypeUrl = "https://duckduckgo.com/?q=" + localurlEntrie.text
0135 }
0136 webView.url = searchTypeUrl
0137 }
0138 webpageUrlEntryDrawer.close()
0139 }
0140
0141 onTextChanged: {
0142 webpageUrlEntryDrawer.evalAutoLogic();
0143 }
0144
0145 Keys.onDownPressed: (event)=> {
0146 if(!inputPanel.active && suggestionsBox.visible){
0147 suggestionsBox.forceActiveFocus()
0148 }
0149 }
0150 }
0151
0152 SuggestionsBox {
0153 id: suggestionsBox
0154 model: completionItems
0155 width: parent.width
0156 anchors.top: localurlEntrie.bottom
0157 anchors.bottom: parent.bottom
0158 anchors.left: parent.left
0159 anchors.right: parent.right
0160 filter: localurlEntrie.text
0161 property: "name"
0162 onItemSelected: complete(item)
0163
0164 function complete(item) {
0165 if (item !== undefined) {
0166 localurlEntrie.text = item.name
0167 }
0168 }
0169 }
0170 }
0171 }