From 33767862888359beeb85fa2a41e7e24c3bbff933 Mon Sep 17 00:00:00 2001 From: vladest Date: Wed, 20 Sep 2017 17:02:54 +0200 Subject: [PATCH] Added text selection on focus. Added basic check for text within url input field to decide is this something for search or for goto. Limited popup list height to do not cover virtual keyboard --- interface/resources/qml/hifi/WebBrowser.qml | 37 ++++++++++++++++++--- interface/src/opensearch/opensearchengine.h | 2 +- 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/interface/resources/qml/hifi/WebBrowser.qml b/interface/resources/qml/hifi/WebBrowser.qml index 582e26bbeb..f1c6efde9a 100644 --- a/interface/resources/qml/hifi/WebBrowser.qml +++ b/interface/resources/qml/hifi/WebBrowser.qml @@ -39,7 +39,7 @@ Rectangle { id: searchEngine name: "Google"; //icon: ":icons/sites/google.png" - searchUrlTemplate: "https://www.google.com/search?client=qupzilla&q=%s"; + searchUrlTemplate: "https://www.google.com/search?client=hifibrowser&q={searchTerms}"; suggestionsUrlTemplate: "https://suggestqueries.google.com/complete/search?output=firefox&q=%s"; suggestionsUrl: "https://suggestqueries.google.com/complete/search?output=firefox&q=%s"; @@ -73,11 +73,14 @@ Rectangle { color: hifi.colors.baseGray; function goTo(url) { - if (url.indexOf("http") !== 0) { + //must be valid attempt to open an site with dot + if (url.indexOf("http") <= 0 && url.indexOf(".") > 0) { url = "http://" + url; + } else { + url = searchEngine.searchUrl(url) } + webEngineView.url = url - event.accepted = true; suggestionRequestTimer.stop() addressBar.popup.close() } @@ -125,6 +128,14 @@ Rectangle { goTo(textAt(index)) } + popup.bottomPadding: keyboard.height + + onFocusChanged: { + if (focus) { + addressBarInput.selectAll() + } + } + contentItem: QQControls.TextField { id: addressBarInput leftPadding: 26 @@ -132,8 +143,25 @@ Rectangle { text: addressBar.editText placeholderText: qsTr("Enter URL") font: addressBar.font + selectByMouse: true horizontalAlignment: Text.AlignLeft verticalAlignment: Text.AlignVCenter + onFocusChanged: { + if (focus) { + selectAll() + } + } + + Keys.onDeletePressed: { + editText = "" + } + + Keys.onPressed: { + if (event.key === Qt.Key_Return) { + goTo(editText) + event.accepted = true; + } + } Image { anchors.verticalCenter: parent.verticalCenter; @@ -167,6 +195,7 @@ Rectangle { Keys.onPressed: { if (event.key === Qt.Key_Return) { goTo(editText) + event.accepted = true; } } @@ -177,7 +206,7 @@ Rectangle { Layout.fillWidth: true editText: webEngineView.url - onAccepted: webEngineView.url = editText + onAccepted: goTo(editText) } HifiControls.WebGlyphButton { diff --git a/interface/src/opensearch/opensearchengine.h b/interface/src/opensearch/opensearchengine.h index 2b717fab7e..fa714b85d3 100644 --- a/interface/src/opensearch/opensearchengine.h +++ b/interface/src/opensearch/opensearchengine.h @@ -47,7 +47,6 @@ public: QString searchUrlTemplate() const; void setSearchUrlTemplate(const QString &searchUrl); - QUrl searchUrl(const QString &searchTerm) const; QByteArray getPostData(const QString &searchTerm) const; @@ -89,6 +88,7 @@ public: bool operator<(const OpenSearchEngine &other) const; public slots: + QUrl searchUrl(const QString &searchTerm) const; void requestSuggestions(const QString &searchTerm); void requestSearchResults(const QString &searchTerm);