Warning, /network/angelfish/src/contents/ui/NavigationEntrySheet.qml is written in an unsupported language. File is not indexed.
0001 // SPDX-FileCopyrightText: 2019 Simon Schmeisser <s.schmeisser@gmx.net> 0002 // SPDX-FileCopyrightText: 2019 Jonah BrĂ¼chert <jbb@kaidan.im> 0003 // 0004 // SPDX-License-Identifier: GPL-2.0-or-later 0005 0006 import QtQuick 2.7 0007 import QtQuick.Controls 2.2 as Controls 0008 import QtQuick.Layouts 1.2 0009 0010 import org.kde.kirigami 2.5 as Kirigami 0011 import org.kde.angelfish 1.0 0012 0013 import "regex-weburl.js" as RegexWebUrl 0014 0015 Controls.Drawer { 0016 id: overlay 0017 dragMargin: 0 0018 edge: Qt.BottomEdge 0019 width: parent.width 0020 0021 bottomPadding: 0 0022 topPadding: 0 0023 rightPadding: 0 0024 leftPadding: 0 0025 0026 property int buttonSize: Kirigami.Units.gridUnit * 2 0027 property int fullHeight: 0.9 * rootPage.height 0028 property bool openedState: false 0029 0030 contentHeight: fullHeight - topPadding - bottomPadding 0031 contentWidth: parent.width - rightPadding - leftPadding 0032 contentItem: Item { 0033 width: parent.width 0034 height: parent.height 0035 0036 RowLayout { 0037 id: editRow 0038 anchors.top: parent.top 0039 anchors.horizontalCenter: parent.horizontalCenter 0040 height: Kirigami.Units.gridUnit * 3 0041 width: parent.width - Kirigami.Units.gridUnit 0042 0043 Controls.ToolButton { 0044 Layout.preferredWidth: buttonSize 0045 Layout.preferredHeight: buttonSize 0046 0047 icon.name: "window-minimize" 0048 0049 Kirigami.Theme.inherit: true 0050 0051 onClicked: overlay.close() 0052 } 0053 0054 Controls.TextField { 0055 id: urlInput 0056 0057 Layout.fillWidth: true 0058 clip: true 0059 focus: false 0060 inputMethodHints: Qt.ImhUrlCharactersOnly | (rootPage.privateMode ? Qt.ImhNoPredictiveText : Qt.ImhNone) 0061 Kirigami.Theme.inherit: true 0062 0063 onActiveFocusChanged: if (activeFocus) selectAll() 0064 onAccepted: applyUrl() 0065 onDisplayTextChanged: { 0066 if (!openedState) return; // avoid filtering 0067 if (displayText === "" || displayText.length > 2) { 0068 urlFilter.filter = displayText; 0069 timer.running = false; 0070 } 0071 else timer.running = true; 0072 } 0073 Keys.onEscapePressed: if (overlay.sheetOpen) overlay.close() 0074 0075 Timer { 0076 id: timer 0077 repeat: false 0078 interval: Math.max(1000, 3000 - urlInput.displayText.length * 1000) 0079 onTriggered: urlFilter.filter = urlInput.displayText 0080 } 0081 0082 function applyUrl() { 0083 if (text.match(RegexWebUrl.re_weburl) || text.startsWith("chrome://")) { 0084 currentWebView.url = UrlUtils.urlFromUserInput(text); 0085 } else { 0086 currentWebView.url = UrlUtils.urlFromUserInput(Settings.searchBaseUrl + text); 0087 } 0088 overlay.close(); 0089 } 0090 } 0091 0092 Controls.ToolButton { 0093 Layout.preferredWidth: buttonSize 0094 Layout.preferredHeight: buttonSize 0095 0096 icon.name: "go-next" 0097 0098 Kirigami.Theme.inherit: true 0099 0100 onClicked: urlInput.applyUrl(); 0101 } 0102 } 0103 0104 ListView { 0105 id: listView 0106 0107 anchors { 0108 bottom: parent.bottom 0109 left: parent.left 0110 right: parent.right 0111 top: editRow.bottom 0112 } 0113 0114 boundsBehavior: Flickable.StopAtBounds 0115 clip: true 0116 0117 delegate: UrlDelegate { 0118 showRemove: false 0119 onClicked: { 0120 currentWebView.url = url; 0121 overlay.close(); 0122 } 0123 highlightText: urlFilter.filter 0124 width: parent && parent.width 0125 } 0126 0127 model: BookmarksHistoryModel { 0128 id: urlFilter 0129 active: openedState 0130 history: true 0131 } 0132 } 0133 } 0134 0135 onOpened: { 0136 // check if the drawer was just slightly slided 0137 if (openedState) return; 0138 urlInput.text = currentWebView.requestedUrl; 0139 urlInput.forceActiveFocus(); 0140 urlInput.selectAll(); 0141 urlFilter.filter = ""; 0142 openedState = true; 0143 listView.positionViewAtBeginning(); 0144 } 0145 0146 onClosed: { 0147 openedState = false; 0148 currentWebView.forceActiveFocus(); 0149 } 0150 }