aboutsummaryrefslogtreecommitdiff
path: root/src/addressbar/urllineedit.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/addressbar/urllineedit.cpp')
-rw-r--r--src/addressbar/urllineedit.cpp42
1 files changed, 28 insertions, 14 deletions
diff --git a/src/addressbar/urllineedit.cpp b/src/addressbar/urllineedit.cpp
index 8aa03c7..d38acdc 100644
--- a/src/addressbar/urllineedit.cpp
+++ b/src/addressbar/urllineedit.cpp
@@ -13,16 +13,23 @@
#include <QShortcut>
#include <QTimer>
#include <QWidgetAction>
-#include <bookmarks/bookmarksview.h>
+#include <bookmarks/bookmarkswidget.h>
UrlLineEdit::UrlLineEdit(const QHash<QString, QString> &config, QWidget *parent)
: QLineEdit(parent)
+ , suggestionTimer(new QTimer(this))
, m_listView(new Completer(this))
{
setPlaceholderText(tr("Enter address"));
+ suggestionTimer->setSingleShot(true);
+ connect(suggestionTimer, &QTimer::timeout, this, &UrlLineEdit::search);
m_listView->setVisible(false);
- connect(this, &UrlLineEdit::textEdited, this, &UrlLineEdit::updateCompleter);
+ connect(this, &QLineEdit::textEdited, this, [this]() {
+ if(suggestionTimer->isActive())
+ suggestionTimer->stop();
+ suggestionTimer->start(100);
+ });
m_pageMenuAction = addAction(style()->standardIcon(QStyle::SP_DriveNetIcon), QLineEdit::LeadingPosition);
m_pageMenuAction->setShortcut(QKeySequence("F2"));
@@ -61,19 +68,25 @@ UrlLineEdit::UrlLineEdit(const QHash<QString, QString> &config, QWidget *parent)
});
}
-void UrlLineEdit::setCompleterModel(BookmarksView *model)
+UrlLineEdit::~UrlLineEdit()
{
- Q_CHECK_PTR(model);
- m_bookmarksModel = model;
+ suggestionTimer->stop();
}
+
void UrlLineEdit::connectWebView(WebView *view)
{
- Q_CHECK_PTR(view);
- m_view = view;
-
disconnect(urlChangedConnection);
+ if(view == nullptr) {
+ clear();
+ m_pageMenuAction->setMenu(nullptr);
+ m_toolsMenuAction->setMenu(nullptr);
+ return;
+ }
+
+ m_view = view;
+
setUrl(view->url());
m_pageMenuAction->setMenu(view->pageMenu());
m_toolsMenuAction->setMenu(view->toolsMenu());
@@ -95,15 +108,16 @@ void UrlLineEdit::setUrl(const QUrl &url)
setText(urlText);
}
-void UrlLineEdit::updateCompleter(const QString &text)
+void UrlLineEdit::search()
{
- if(m_bookmarksModel == nullptr) {
- return;
- }
+ Q_ASSERT_X(bookmarks != nullptr, "UrlLineEdit::search", "bookmarks is nullptr");
+ updateCompleter(bookmarks->search(text()));
+}
- const QList<QTreeWidgetItem *> res = m_bookmarksModel->findItems(text, Qt::MatchContains | Qt::MatchRecursive, 1);
- if(!m_listView->updateItems(res)) {
+void UrlLineEdit::updateCompleter(QStringList l)
+{
+ if(!m_listView->updateItems(l)) {
m_listView->hide();
return;
}