From 68dfc20b8f8d8ff583c4e06ddb61a9986ccb7df7 Mon Sep 17 00:00:00 2001 From: megabigbug Date: Tue, 20 Jul 2010 22:07:04 +0200 Subject: history review: - remove AwesomeUrlCompletion class - add an QHash to the history manager: each url have a visit counter - sort history urls by visit count TODO: - reintroduce bookmark item in url resolver (broken when AwesomeUrlCompletion was removed) --- src/urlbar/urlresolver.cpp | 138 ++++----------------------------------------- src/urlbar/urlresolver.h | 50 +--------------- 2 files changed, 14 insertions(+), 174 deletions(-) (limited to 'src/urlbar') diff --git a/src/urlbar/urlresolver.cpp b/src/urlbar/urlresolver.cpp index d457e1fb..50f1692f 100644 --- a/src/urlbar/urlresolver.cpp +++ b/src/urlbar/urlresolver.cpp @@ -162,7 +162,7 @@ UrlSearchList UrlResolver::orderedSearchItems() UrlSearchList commonList; int commonResutls = 0; - + //prefer items which are history items als well bookmarks item //if there are more than 1000 bookmark results, the performance impact is noticeable if(bookmarksResults < 1000) @@ -300,16 +300,23 @@ UrlSearchList UrlResolver::webSearchesResolution() // STEP 3 = history completion UrlSearchList UrlResolver::historyResolution() { - AwesomeUrlCompletion *historyCompletion = Application::historyManager()->completionObject(); - return historyCompletion->substringCompletion(_typedString); + QList mostVisited = Application::historyManager()->findMostVisited(_typedString); + UrlSearchList list; + foreach (HistoryHashItem i, mostVisited) + { + UrlSearchItem gItem(UrlSearchItem::History, i.url, i.title); + list << gItem; + } + return list; } // STEP 4 = bookmarks completion UrlSearchList UrlResolver::bookmarksResolution() { - AwesomeUrlCompletion *bookmarkCompletion = Application::bookmarkProvider()->completionObject(); - return bookmarkCompletion->substringCompletion(_typedString); + UrlSearchList list; + //AwesomeUrlCompletion *bookmarkCompletion = Application::bookmarkProvider()->completionObject(); + return list; } @@ -333,124 +340,3 @@ UrlSearchItem UrlResolver::privilegedItem(UrlSearchList* list) } return UrlSearchItem(); } - -// ------------------------------------------------------------------------------------------------------ - - -AwesomeUrlCompletion::AwesomeUrlCompletion() -{ - m_resetCompletion = true; -} - - -AwesomeUrlCompletion::~AwesomeUrlCompletion() -{ - -} - - -void AwesomeUrlCompletion::addItem(const UrlSearchItem& itemToAdd) -{ - bool match = false; - QTime myTime; - myTime.start(); - for(int i = 0; i < m_items.count(); i++) - { - //check if item is already in list; the items are equal if the url and the title are equal - if(m_items[i] == itemToAdd) - { - match = true; - //TODO: check what to do if comment or bookmarkPath are different - if(m_items[i] < itemToAdd) - { - m_items[i].visitDateTime = itemToAdd.visitDateTime; - } - m_items[i].visitCount += itemToAdd.visitCount; - } - } - if(!match) - { - m_items.append(itemToAdd); - } - m_resetCompletion = true; -} - - -void AwesomeUrlCompletion::removeItem(const UrlSearchItem& item) -{ - m_resetCompletion = m_items.removeOne(item); -} - - -void AwesomeUrlCompletion::setOrder(KCompletion::CompOrder) -{ - //TODO -} - - -void AwesomeUrlCompletion::updateTitle(const UrlSearchItem& item, const QString& newTitle) -{ - foreach(UrlSearchItem i, m_items) - { - if(i == item) - { - i.title = newTitle; - } - } - m_resetCompletion = true; -} - - -void AwesomeUrlCompletion::clear() -{ - m_items.clear(); - m_resetCompletion = true; -} - - -UrlSearchList AwesomeUrlCompletion::substringCompletion(const QString& completionString) -{ - UrlSearchList* searchList; - UrlSearchList tempList; - - if(!m_resetCompletion) - { - if(completionString.length() <= 1) - { - m_resetCompletion = true; - } - if(!m_resetCompletion && completionString.length() < m_lastCompletionString.length()) - { - m_resetCompletion = true; - } - if(!m_resetCompletion && !completionString.startsWith(m_lastCompletionString, Qt::CaseInsensitive)) - { - m_resetCompletion = true; - } - } - - if(m_resetCompletion) - { - searchList = &m_items; - m_resetCompletion = false; - } - else - { - searchList = &m_filteredItems; - } - - Q_FOREACH(const UrlSearchItem &i, *searchList) - { - //TODO: split string and also search for each word if the are more than one word separated with space - if( i.url.contains(completionString, Qt::CaseInsensitive) - || i.title.contains(completionString, Qt::CaseInsensitive) - || i.description.contains(completionString, Qt::CaseInsensitive) - ) - { - tempList.append(i); - } - } - m_lastCompletionString = completionString; - m_filteredItems = tempList; - return m_filteredItems; -} diff --git a/src/urlbar/urlresolver.h b/src/urlbar/urlresolver.h index 83228140..0ba93921 100644 --- a/src/urlbar/urlresolver.h +++ b/src/urlbar/urlresolver.h @@ -33,14 +33,11 @@ // KDE Includes #include -#include + // Qt Includes #include #include -#include - -class AwesomeUrlCompletion; class UrlSearchItem { @@ -58,25 +55,19 @@ public: int type; QString url; QString title; - QDateTime visitDateTime; - int visitCount; QString description; QString bookmarkPath; UrlSearchItem(const UrlSearchItem &item) : type(item.type), url(item.url), title(item.title), - visitDateTime(item.visitDateTime), - visitCount(item.visitCount), description(item.description), bookmarkPath(item.bookmarkPath) {}; - + UrlSearchItem() : type(UrlSearchItem::Undefined), url(QString()), title(QString()), - visitDateTime(QDateTime()), - visitCount(0), description(QString()), bookmarkPath(QString()) {}; @@ -84,16 +75,12 @@ public: UrlSearchItem(const int &_type, const QString &_url, const QString &_title = QString(), - const QDateTime &visitDateTime = QDateTime(), - const int &visitCount = 0, const QString &description = QString(), const QString &bookmarkPath = QString() ) : type(_type), url(_url), title(_title), - visitDateTime(visitDateTime), - visitCount(visitCount), description(description), bookmarkPath(bookmarkPath) {}; @@ -102,16 +89,6 @@ public: { return i.url == url;//TODO && i.title == title; } - - inline bool operator <(const UrlSearchItem &i) const - { - return visitDateTime < i.visitDateTime; - } - - inline bool operator >(const UrlSearchItem &i) const - { - return visitDateTime > i.visitDateTime; - } }; typedef QList UrlSearchList; @@ -141,27 +118,4 @@ private: // ------------------------------------------------------------------------------ - -/** - * This class represents all searchable item for the awesomebar. - */ -class AwesomeUrlCompletion// : public KCompletion -{ -public: - AwesomeUrlCompletion(); - ~AwesomeUrlCompletion(); - void addItem(const UrlSearchItem& item); - void removeItem(const UrlSearchItem& item); - void setOrder(KCompletion::CompOrder); - void updateTitle(const UrlSearchItem& item, const QString& newTitle); - void clear(); - UrlSearchList substringCompletion(const QString& completionString); - -private: - UrlSearchList m_items; - UrlSearchList m_filteredItems; - bool m_resetCompletion; - QString m_lastCompletionString; -}; - #endif // URL_RESOLVER_H -- cgit v1.2.1 From dadd2ac929daa925bf7c91379e064427241afc1f Mon Sep 17 00:00:00 2001 From: megabigbug Date: Tue, 20 Jul 2010 23:12:45 +0200 Subject: remove useless bookmarkPath attribute of UrlSearchItem add a regexp for detect url of search engines remove url that are detected from history suggestions --- src/urlbar/urlresolver.cpp | 28 +++++++++++++++++++++++----- src/urlbar/urlresolver.h | 13 +++++-------- 2 files changed, 28 insertions(+), 13 deletions(-) (limited to 'src/urlbar') diff --git a/src/urlbar/urlresolver.cpp b/src/urlbar/urlresolver.cpp index 50f1692f..115f0295 100644 --- a/src/urlbar/urlresolver.cpp +++ b/src/urlbar/urlresolver.cpp @@ -31,6 +31,7 @@ #include "application.h" #include "historymanager.h" #include "bookmarksmanager.h" +#include "searchengine.h" // KDE Includes #include @@ -59,7 +60,7 @@ QRegExp UrlResolver::_browseRegexp; - +QRegExp UrlResolver::_searchEnginesRegexp; UrlResolver::UrlResolver(const QString &typedUrl) : _typedString(typedUrl.trimmed()) @@ -90,6 +91,18 @@ UrlResolver::UrlResolver(const QString &typedUrl) _browseRegexp = QRegExp('(' + protocol + ")|(" + localhost + ")|(" + local + ")|(" + address + ")|(" + ipv6 + ")|(" + ipv4 +')'); } + if ( _searchEnginesRegexp.isEmpty() ) + { + QString reg; + QString engineUrl; + foreach(KService::Ptr s, SearchEngine::favorites()) + { + engineUrl = QRegExp::escape(s->property("Query").toString()).replace("\\\\\\{@\\}","[\\d\\w-.]+"); + if (reg.isEmpty()) reg = "(" + engineUrl + ")"; + else reg = reg + "|(" + engineUrl + ")"; + } + _searchEnginesRegexp = QRegExp(reg); + } } @@ -300,12 +313,17 @@ UrlSearchList UrlResolver::webSearchesResolution() // STEP 3 = history completion UrlSearchList UrlResolver::historyResolution() { - QList mostVisited = Application::historyManager()->findMostVisited(_typedString); + QList found = Application::historyManager()->find(_typedString); + qSort(found); + UrlSearchList list; - foreach (HistoryHashItem i, mostVisited) + foreach (HistoryHashItem i, found) { - UrlSearchItem gItem(UrlSearchItem::History, i.url, i.title); - list << gItem; + if (_searchEnginesRegexp.indexIn(i.url) == -1) //filter all urls that are search engine results + { + UrlSearchItem gItem(UrlSearchItem::History, i.url, i.title); + list << gItem; + } } return list; } diff --git a/src/urlbar/urlresolver.h b/src/urlbar/urlresolver.h index 0ba93921..190064eb 100644 --- a/src/urlbar/urlresolver.h +++ b/src/urlbar/urlresolver.h @@ -61,28 +61,24 @@ public: UrlSearchItem(const UrlSearchItem &item) : type(item.type), url(item.url), title(item.title), - description(item.description), - bookmarkPath(item.bookmarkPath) + description(item.description) {}; UrlSearchItem() : type(UrlSearchItem::Undefined), url(QString()), title(QString()), - description(QString()), - bookmarkPath(QString()) + description(QString()) {}; UrlSearchItem(const int &_type, const QString &_url, const QString &_title = QString(), - const QString &description = QString(), - const QString &bookmarkPath = QString() + const QString &description = QString() ) : type(_type), url(_url), title(_title), - description(description), - bookmarkPath(bookmarkPath) + description(description) {}; inline bool operator==(const UrlSearchItem &i) const @@ -114,6 +110,7 @@ private: UrlSearchItem privilegedItem(UrlSearchList* list); static QRegExp _browseRegexp; + static QRegExp _searchEnginesRegexp; }; // ------------------------------------------------------------------------------ -- cgit v1.2.1 From 29222348be2aea93de9d9fc937996d0b7474308d Mon Sep 17 00:00:00 2001 From: megabigbug Date: Wed, 21 Jul 2010 17:13:17 +0200 Subject: reintroduce bookmark suggestions --- src/urlbar/urlresolver.cpp | 9 +++++++-- src/urlbar/urlresolver.h | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) (limited to 'src/urlbar') diff --git a/src/urlbar/urlresolver.cpp b/src/urlbar/urlresolver.cpp index 115f0295..753dd002 100644 --- a/src/urlbar/urlresolver.cpp +++ b/src/urlbar/urlresolver.cpp @@ -315,7 +315,7 @@ UrlSearchList UrlResolver::historyResolution() { QList found = Application::historyManager()->find(_typedString); qSort(found); - + UrlSearchList list; foreach (HistoryHashItem i, found) { @@ -333,7 +333,12 @@ UrlSearchList UrlResolver::historyResolution() UrlSearchList UrlResolver::bookmarksResolution() { UrlSearchList list; - //AwesomeUrlCompletion *bookmarkCompletion = Application::bookmarkProvider()->completionObject(); + QList found = Application::bookmarkProvider()->find(_typedString); + foreach (KBookmark b, found) + { + UrlSearchItem gItem(UrlSearchItem::History, b.url().url(), b.fullText()); + list << gItem; + } return list; } diff --git a/src/urlbar/urlresolver.h b/src/urlbar/urlresolver.h index 190064eb..c79ce184 100644 --- a/src/urlbar/urlresolver.h +++ b/src/urlbar/urlresolver.h @@ -84,7 +84,7 @@ public: inline bool operator==(const UrlSearchItem &i) const { return i.url == url;//TODO && i.title == title; - } + } }; typedef QList UrlSearchList; -- cgit v1.2.1 From 82c52bd0097bb71d3594d32f18617ad5c7466d6d Mon Sep 17 00:00:00 2001 From: megabigbug Date: Wed, 21 Jul 2010 17:25:56 +0200 Subject: fix suggestion type --- src/urlbar/urlresolver.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/urlbar') diff --git a/src/urlbar/urlresolver.cpp b/src/urlbar/urlresolver.cpp index 753dd002..f0fd257b 100644 --- a/src/urlbar/urlresolver.cpp +++ b/src/urlbar/urlresolver.cpp @@ -336,7 +336,7 @@ UrlSearchList UrlResolver::bookmarksResolution() QList found = Application::bookmarkProvider()->find(_typedString); foreach (KBookmark b, found) { - UrlSearchItem gItem(UrlSearchItem::History, b.url().url(), b.fullText()); + UrlSearchItem gItem(UrlSearchItem::Bookmark, b.url().url(), b.fullText()); list << gItem; } return list; -- cgit v1.2.1