diff options
Diffstat (limited to 'src/addressbar/urllineedit.cpp')
-rw-r--r-- | src/addressbar/urllineedit.cpp | 42 |
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; } |