diff --git a/src/lib/bookmarks/bookmarks.cpp b/src/lib/bookmarks/bookmarks.cpp
index 844c6f9a2..1a5170e57 100644
--- a/src/lib/bookmarks/bookmarks.cpp
+++ b/src/lib/bookmarks/bookmarks.cpp
@@ -63,87 +63,6 @@ bool Bookmarks::showOnlyIconsInToolbar() const
return m_showOnlyIconsInToolbar;
}
-void Bookmarks::exportToHtml(const QString &fileName)
-{
- Q_UNUSED(fileName)
-#if 0
- QFile file(fileName);
-
- if (!file.open(QFile::WriteOnly | QFile::Truncate)) {
- qWarning() << "Bookmarks::exportHtml Cannot open file for writing!" << file.errorString();
- }
-
- QTextStream out(&file);
-
- out << "" << endl;
- out << "" << endl;
- out << "" << endl;
- out << "
Bookmarks" << endl;
- out << "Bookmarks
" << endl;
-
- out << "" << endl;
-
- QString indent = " ";
- QList > allFolders;
-
- QPair menu;
- menu.first = "bookmarksMenu";
- menu.second = false;
-
- QPair toolbar;
- toolbar.first = "bookmarksToolbar";
- toolbar.second = false;
-
- allFolders.append(menu);
- allFolders.append(toolbar);
-
- QSqlQuery query;
- query.exec("SELECT name, subfolder FROM folders");
-
- while (query.next()) {
- QPair pair;
- pair.first = query.value(0).toString();
- pair.second = query.value(1).toString() == QLatin1String("yes");
-
- allFolders.append(pair);
- }
-
- for (int i = 0; i < allFolders.size(); ++i) {
- QPair pair = allFolders.at(i);
-
- out << indent << "" << pair.first << "
" << endl;
- out << indent << "" << endl;
-
- QSqlQuery q;
- q.prepare("SELECT title, url FROM bookmarks WHERE folder = ?");
- q.addBindValue(pair.first);
- q.exec();
-
- while (q.next()) {
- QString title = q.value(0).toString();
- QString url = q.value(1).toString();
-
- out << indent << indent << "
- " << title << "" << endl;
- }
-
- out << indent << "
" << endl;
- }
-
- query.exec("SELECT title, url FROM bookmarks WHERE folder='' OR folder='unsorted'");
-
- while (query.next()) {
- QString title = query.value(0).toString();
- QString url = query.value(1).toString();
-
- out << indent << "
- " << title << "" << endl;
- }
-
- out << "
" << endl;
-#endif
-}
-
BookmarkItem* Bookmarks::rootItem() const
{
return m_root;
@@ -196,10 +115,10 @@ QList Bookmarks::searchBookmarks(const QUrl &url) const
return items;
}
-QList Bookmarks::searchBookmarks(const QString &string, Qt::CaseSensitivity sensitive) const
+QList Bookmarks::searchBookmarks(const QString &string, int limit, Qt::CaseSensitivity sensitive) const
{
QList items;
- search(&items, m_root, string, sensitive);
+ search(&items, m_root, string, limit, sensitive);
return items;
}
@@ -467,16 +386,20 @@ void Bookmarks::search(QList* items, BookmarkItem* parent, const
}
}
-void Bookmarks::search(QList* items, BookmarkItem* parent, const QString &string, Qt::CaseSensitivity sensitive) const
+void Bookmarks::search(QList* items, BookmarkItem* parent, const QString &string, int limit, Qt::CaseSensitivity sensitive) const
{
Q_ASSERT(items);
Q_ASSERT(parent);
+ if (limit == items->count()) {
+ return;
+ }
+
switch (parent->type()) {
case BookmarkItem::Root:
case BookmarkItem::Folder:
foreach (BookmarkItem* child, parent->children()) {
- search(items, child, string, sensitive);
+ search(items, child, string, limit, sensitive);
}
break;
diff --git a/src/lib/bookmarks/bookmarks.h b/src/lib/bookmarks/bookmarks.h
index d0fda69bf..9a9ba02c2 100644
--- a/src/lib/bookmarks/bookmarks.h
+++ b/src/lib/bookmarks/bookmarks.h
@@ -39,7 +39,6 @@ public:
void saveSettings();
bool showOnlyIconsInToolbar() const;
- void exportToHtml(const QString &fileName);
BookmarkItem* rootItem() const;
BookmarkItem* toolbarFolder() const;
@@ -54,8 +53,8 @@ public:
// Search bookmarks (urls only) for exact url match
QList searchBookmarks(const QUrl &url) const;
- // Search bookmarks (urls only) for contains match through all properties
- QList searchBookmarks(const QString &string, Qt::CaseSensitivity sensitive = Qt::CaseInsensitive) const;
+ // Search bookmarks for contains match through all properties
+ QList searchBookmarks(const QString &string, int limit = -1, Qt::CaseSensitivity sensitive = Qt::CaseInsensitive) const;
void addBookmark(BookmarkItem* parent, BookmarkItem* item);
void insertBookmark(BookmarkItem* parent, int row, BookmarkItem* item);
@@ -86,7 +85,7 @@ private:
QVariantList writeBookmarks(BookmarkItem* parent);
void search(QList* items, BookmarkItem* parent, const QUrl &url) const;
- void search(QList* items, BookmarkItem* parent, const QString &string, Qt::CaseSensitivity sensitive) const;
+ void search(QList* items, BookmarkItem* parent, const QString &string, int limit, Qt::CaseSensitivity sensitive) const;
BookmarkItem* m_root;
BookmarkItem* m_folderToolbar;
diff --git a/src/lib/navigation/completer/locationcompletermodel.cpp b/src/lib/navigation/completer/locationcompletermodel.cpp
index 4c9448ba6..abb24595c 100644
--- a/src/lib/navigation/completer/locationcompletermodel.cpp
+++ b/src/lib/navigation/completer/locationcompletermodel.cpp
@@ -34,8 +34,15 @@ LocationCompleterModel::LocationCompleterModel(QObject* parent)
static bool countBiggerThan(const QStandardItem* i1, const QStandardItem* i2)
{
- return i1->data(LocationCompleterModel::CountRole).toInt() >
- i2->data(LocationCompleterModel::CountRole).toInt();
+ // Move bookmarks up
+ bool i1Bookmark = i1->data(LocationCompleterModel::BookmarkRole).toBool();
+ bool i2Bookmark = i2->data(LocationCompleterModel::BookmarkRole).toBool();
+
+ if (i1Bookmark && i2Bookmark) {
+ return i1->data(LocationCompleterModel::CountRole).toInt() >
+ i2->data(LocationCompleterModel::CountRole).toInt();
+ }
+ return i1Bookmark;
}
void LocationCompleterModel::refreshCompletions(const QString &string)
@@ -54,20 +61,19 @@ void LocationCompleterModel::refreshCompletions(const QString &string)
clear();
- Type showType = (Type) qzSettings->showLocationSuggestions;
-
- int limit = string.size() < 3 ? 25 : 15;
+ const int bookmarksLimit = 10;
+ const int historyLimit = 20;
QList urlList;
QList itemList;
+ Type showType = (Type) qzSettings->showLocationSuggestions;
if (showType == HistoryAndBookmarks || showType == Bookmarks) {
- QList bookmarks = mApp->bookmarks()->searchBookmarks(string);
+ QList bookmarks = mApp->bookmarks()->searchBookmarks(string, bookmarksLimit);
foreach (BookmarkItem* bookmark, bookmarks) {
Q_ASSERT(bookmark->isUrl());
QStandardItem* item = new QStandardItem();
-
item->setIcon(bookmark->icon());
item->setText(bookmark->url().toEncoded());
item->setData(-1, IdRole);
@@ -83,18 +89,20 @@ void LocationCompleterModel::refreshCompletions(const QString &string)
urlList.append(bookmark->url());
itemList.append(item);
}
-
- limit -= itemList.count();
}
if (showType == HistoryAndBookmarks || showType == History) {
- QSqlQuery query = createQuery(string, "count DESC", urlList, limit);
+ QSqlQuery query = createQuery(string, historyLimit);
query.exec();
while (query.next()) {
- QStandardItem* item = new QStandardItem();
const QUrl url = query.value(1).toUrl();
+ if (urlList.contains(url)) {
+ continue;
+ }
+
+ QStandardItem* item = new QStandardItem();
item->setIcon(_iconForUrl(url));
item->setText(url.toEncoded());
item->setData(query.value(0), IdRole);
@@ -183,8 +191,7 @@ QString LocationCompleterModel::completeDomain(const QString &text)
return sqlQuery.value(0).toUrl().host();
}
-QSqlQuery LocationCompleterModel::createQuery(const QString &searchString, const QString &orderBy,
- const QList &alreadyFound, int limit, bool exactMatch)
+QSqlQuery LocationCompleterModel::createQuery(const QString &searchString, int limit, bool exactMatch)
{
QStringList searchList;
QString query = QLatin1String("SELECT id, url, title, count FROM history WHERE ");
@@ -203,17 +210,7 @@ QSqlQuery LocationCompleterModel::createQuery(const QString &searchString, const
}
}
- for (int i = 0; i < alreadyFound.count(); i++) {
- query.append(QLatin1String("AND (NOT url=?) "));
- }
-
- query.append(QLatin1String("GROUP BY url "));
-
- if (!orderBy.isEmpty()) {
- query.append(QLatin1String("ORDER BY ") + orderBy);
- }
-
- query.append(QLatin1String(" LIMIT ?"));
+ query.append(QLatin1String("LIMIT ?"));
QSqlQuery sqlQuery;
sqlQuery.prepare(query);
@@ -229,10 +226,6 @@ QSqlQuery LocationCompleterModel::createQuery(const QString &searchString, const
}
}
- foreach (const QUrl &url, alreadyFound) {
- sqlQuery.addBindValue(url);
- }
-
sqlQuery.addBindValue(limit);
return sqlQuery;
diff --git a/src/lib/navigation/completer/locationcompletermodel.h b/src/lib/navigation/completer/locationcompletermodel.h
index cc1f2442f..d1d06a3ed 100644
--- a/src/lib/navigation/completer/locationcompletermodel.h
+++ b/src/lib/navigation/completer/locationcompletermodel.h
@@ -61,7 +61,7 @@ private:
Nothing = 4
};
- QSqlQuery createQuery(const QString &searchString, const QString &orderBy, const QList &alreadyFound,
+ QSqlQuery createQuery(const QString &searchString,
int limit, bool exactMatch = false);
TabPosition tabPositionForUrl(const QUrl &url) const;