From 1553bf6ba7614abaf09ef86f36407bc07c309bc8 Mon Sep 17 00:00:00 2001 From: Andrea Diamantini Date: Wed, 12 May 2010 11:47:02 +0200 Subject: Add timer to UrlBar suggestions This is based on the Cedric's patch about and I changed it to save a bit of work to rekonq to not resolve urls that not will be displayed :) --- src/urlbar/completionwidget.h | 3 ++- src/urlbar/urlbar.cpp | 24 +++++++++++++++++++++++- src/urlbar/urlbar.h | 6 ++++++ 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/urlbar/completionwidget.h b/src/urlbar/completionwidget.h index fc0798e7..4ce8248d 100644 --- a/src/urlbar/completionwidget.h +++ b/src/urlbar/completionwidget.h @@ -61,9 +61,10 @@ public: _searchEngine = engine; }; + void suggestUrls(const QString &text); + private slots: void itemChosen(ListItem *item, Qt::MouseButton = Qt::LeftButton); - void suggestUrls(const QString &text); signals: void chosenUrl(const KUrl &, Rekonq::OpenType); diff --git a/src/urlbar/urlbar.cpp b/src/urlbar/urlbar.cpp index ad0f34a1..e1e542b7 100644 --- a/src/urlbar/urlbar.cpp +++ b/src/urlbar/urlbar.cpp @@ -75,6 +75,7 @@ UrlBar::UrlBar(QWidget *parent) , _tab(0) , _privateMode(false) , _icon(new IconButton(this)) + , _suggestionTimer(new QTimer(this)) { // initial style setStyleSheet(QString("UrlBar { padding: 0 0 0 %1px;} ").arg(_icon->sizeHint().width())); @@ -108,6 +109,9 @@ UrlBar::UrlBar(QWidget *parent) // load typed urls connect(this, SIGNAL(returnPressed(const QString &)), this, SLOT(loadTyped(const QString &))); + _suggestionTimer->setSingleShot(true); + connect(_suggestionTimer, SIGNAL(timeout()), this, SLOT(suggest())); + activateSuggestions(true); } @@ -316,11 +320,12 @@ void UrlBar::activateSuggestions(bool b) connect(_box.data(), SIGNAL(chosenUrl(const KUrl &, Rekonq::OpenType)), this, SLOT(activated(const KUrl &, Rekonq::OpenType))); // activate suggestions on edit text - connect(this, SIGNAL(textChanged(const QString &)), _box.data(), SLOT(suggestUrls(const QString &))); + connect(this, SIGNAL(textChanged(const QString &)), this, SLOT(detectTypedString(const QString &))); } } else { + disconnect(this, SIGNAL(textChanged(const QString &)), this, SLOT(detectTypedString(const QString &))); removeEventFilter(_box.data()); _box.data()->deleteLater(); } @@ -389,3 +394,20 @@ void UrlBar::resizeEvent(QResizeEvent *event) KLineEdit::resizeEvent(event); } + + +void UrlBar::detectTypedString(const QString &typed) +{ + Q_UNUSED(typed); + + if(_suggestionTimer->isActive()) + _suggestionTimer->stop(); + _suggestionTimer->start(200); +} + + +void UrlBar::suggest() +{ + if(!_box.isNull()) + _box.data()->suggestUrls( text() ); +} \ No newline at end of file diff --git a/src/urlbar/urlbar.h b/src/urlbar/urlbar.h index b644f84f..cda8a2e1 100644 --- a/src/urlbar/urlbar.h +++ b/src/urlbar/urlbar.h @@ -46,6 +46,7 @@ class QLinearGradient; class QWidget; class CompletionWidget; class WebTab; +class QTimer; class IconButton : public QToolButton @@ -97,6 +98,9 @@ private slots: void loadTyped(const QString &); void clearRightIcons(); + + void detectTypedString(const QString &); + void suggest(); protected: void paintEvent(QPaintEvent *event); @@ -116,6 +120,8 @@ private: IconButton *_icon; IconButtonPointerList _rightIconsList; + + QTimer *_suggestionTimer; }; -- cgit v1.2.1