From 1f225de11c4350b966019fcaaa140bd7f4721348 Mon Sep 17 00:00:00 2001 From: nowrep Date: Fri, 10 Aug 2012 18:06:29 +0200 Subject: [PATCH] Added option to choose what to suggest in address bar - History and Bookmarks History only Bookmarks only Nothing --- .../completer/locationcompletermodel.cpp | 77 +++++++------ .../completer/locationcompletermodel.h | 7 ++ src/lib/navigation/locationbarsettings.cpp | 3 + src/lib/navigation/locationbarsettings.h | 1 + src/lib/preferences/preferences.cpp | 2 + src/lib/preferences/preferences.ui | 109 +++++++++++++----- 6 files changed, 138 insertions(+), 61 deletions(-) diff --git a/src/lib/navigation/completer/locationcompletermodel.cpp b/src/lib/navigation/completer/locationcompletermodel.cpp index 7b46e8841..cb32db74b 100644 --- a/src/lib/navigation/completer/locationcompletermodel.cpp +++ b/src/lib/navigation/completer/locationcompletermodel.cpp @@ -16,6 +16,7 @@ * along with this program. If not, see . * ============================================================ */ #include "locationcompletermodel.h" +#include "locationbarsettings.h" #include "iconprovider.h" #include "mainapplication.h" @@ -42,53 +43,59 @@ void LocationCompleterModel::refreshCompletions(const QString &string) clear(); + Type showType = (Type) LocationBarSettings::showLocationSuggestions; + int limit = string.size() < 3 ? 25 : 15; QString searchString = QString("%%1%").arg(string); QList urlList; - QSqlQuery query; - query.prepare("SELECT id, url, title, icon FROM bookmarks WHERE title LIKE ? OR url LIKE ? LIMIT ?"); - query.addBindValue(searchString); - query.addBindValue(searchString); - query.addBindValue(limit); - query.exec(); - while (query.next()) { - QStandardItem* item = new QStandardItem(); - const QUrl &url = query.value(1).toUrl(); + if (showType == HistoryAndBookmarks || showType == Bookmarks) { + query.prepare("SELECT id, url, title, icon FROM bookmarks WHERE title LIKE ? OR url LIKE ? LIMIT ?"); + query.addBindValue(searchString); + query.addBindValue(searchString); + query.addBindValue(limit); + query.exec(); + + while (query.next()) { + QStandardItem* item = new QStandardItem(); + const QUrl &url = query.value(1).toUrl(); + + item->setIcon(qIconProvider->iconFromImage(QImage::fromData(query.value(3).toByteArray()))); + item->setText(url.toEncoded()); + item->setData(query.value(0), IdRole); + item->setData(query.value(2), TitleRole); + item->setData(QVariant(true), BookmarkRole); + appendRow(item); + urlList.append(url); + } - item->setIcon(qIconProvider->iconFromImage(QImage::fromData(query.value(3).toByteArray()))); - item->setText(url.toEncoded()); - item->setData(query.value(0), IdRole); - item->setData(query.value(2), TitleRole); - item->setData(QVariant(true), BookmarkRole); - appendRow(item); - urlList.append(url); + limit -= query.size(); } - limit -= query.size(); - - query.prepare("SELECT id, url, title FROM history WHERE title LIKE ? OR url LIKE ? ORDER BY count DESC LIMIT ?"); - query.addBindValue(searchString); - query.addBindValue(searchString); - query.addBindValue(limit); - query.exec(); + if (showType == HistoryAndBookmarks || showType == History) { + query.prepare("SELECT id, url, title FROM history WHERE title LIKE ? OR url LIKE ? ORDER BY count DESC LIMIT ?"); + query.addBindValue(searchString); + query.addBindValue(searchString); + query.addBindValue(limit); + query.exec(); - while (query.next()) { - QStandardItem* item = new QStandardItem(); - const QUrl &url = query.value(1).toUrl(); + while (query.next()) { + QStandardItem* item = new QStandardItem(); + const QUrl &url = query.value(1).toUrl(); - if (urlList.contains(url)) { - continue; - } + if (urlList.contains(url)) { + continue; + } - item->setIcon(_iconForUrl(url)); - item->setText(url.toEncoded()); - item->setData(query.value(0), IdRole); - item->setData(query.value(2), TitleRole); - item->setData(QVariant(false), BookmarkRole); + item->setIcon(_iconForUrl(url)); + item->setText(url.toEncoded()); + item->setData(query.value(0), IdRole); + item->setData(query.value(2), TitleRole); + item->setData(QVariant(false), BookmarkRole); - appendRow(item); + appendRow(item); + } } } diff --git a/src/lib/navigation/completer/locationcompletermodel.h b/src/lib/navigation/completer/locationcompletermodel.h index 6ad18bd33..89546e8da 100644 --- a/src/lib/navigation/completer/locationcompletermodel.h +++ b/src/lib/navigation/completer/locationcompletermodel.h @@ -38,6 +38,13 @@ signals: public slots: private: + enum Type { + HistoryAndBookmarks = 0, + History = 1, + Bookmarks = 2, + Nothing = 3 + }; + QString m_lastCompletion; }; diff --git a/src/lib/navigation/locationbarsettings.cpp b/src/lib/navigation/locationbarsettings.cpp index 952ee90b1..8a48a5751 100644 --- a/src/lib/navigation/locationbarsettings.cpp +++ b/src/lib/navigation/locationbarsettings.cpp @@ -22,6 +22,8 @@ bool LocationBarSettings::selectAllOnDoubleClick = false; bool LocationBarSettings::selectAllOnClick = false; bool LocationBarSettings::addCountryWithAlt = false; + +int LocationBarSettings::showLocationSuggestions = 0; bool LocationBarSettings::showSearchSuggestions = false; LocationBarSettings::LocationBarSettings() @@ -36,6 +38,7 @@ void LocationBarSettings::loadSettings() selectAllOnDoubleClick = settings.value("SelectAllTextOnDoubleClick", true).toBool(); selectAllOnClick = settings.value("SelectAllTextOnClick", false).toBool(); addCountryWithAlt = settings.value("AddCountryDomainWithAltKey", true).toBool(); + showLocationSuggestions = settings.value("showSuggestions", 0).toInt(); settings.endGroup(); settings.beginGroup("SearchEngines"); diff --git a/src/lib/navigation/locationbarsettings.h b/src/lib/navigation/locationbarsettings.h index 7d04af98a..6673878c5 100644 --- a/src/lib/navigation/locationbarsettings.h +++ b/src/lib/navigation/locationbarsettings.h @@ -30,6 +30,7 @@ public: static bool selectAllOnClick; static bool addCountryWithAlt; + static int showLocationSuggestions; static bool showSearchSuggestions; }; diff --git a/src/lib/preferences/preferences.cpp b/src/lib/preferences/preferences.cpp index 85c58a4a9..533207664 100644 --- a/src/lib/preferences/preferences.cpp +++ b/src/lib/preferences/preferences.cpp @@ -176,6 +176,7 @@ Preferences::Preferences(QupZilla* mainClass, QWidget* parent) //AddressBar settings.beginGroup("AddressBar"); + ui->addressbarCompletion->setCurrentIndex(settings.value("showSuggestions", 0).toInt()); ui->selectAllOnFocus->setChecked(settings.value("SelectAllTextOnDoubleClick", true).toBool()); ui->selectAllOnClick->setChecked(settings.value("SelectAllTextOnClick", false).toBool()); ui->addCountryWithAlt->setChecked(settings.value("AddCountryDomainWithAltKey", true).toBool()); @@ -873,6 +874,7 @@ void Preferences::saveSettings() //OTHER //AddressBar settings.beginGroup("AddressBar"); + settings.setValue("showSuggestions", ui->addressbarCompletion->currentIndex()); settings.setValue("SelectAllTextOnDoubleClick", ui->selectAllOnFocus->isChecked()); settings.setValue("SelectAllTextOnClick", ui->selectAllOnClick->isChecked()); settings.setValue("AddCountryDomainWithAltKey", ui->addCountryWithAlt->isChecked()); diff --git a/src/lib/preferences/preferences.ui b/src/lib/preferences/preferences.ui index b45f63466..92b7e5042 100644 --- a/src/lib/preferences/preferences.ui +++ b/src/lib/preferences/preferences.ui @@ -646,42 +646,42 @@ - + Activate last tab when closing active tab - + Open new tabs after active tab - + Don't quit upon closing last tab - + Ask when closing multiple tabs - + Closed tabs list instead of opened in tab bar - + Qt::Vertical @@ -694,35 +694,35 @@ - + <b>Address Bar behaviour</b> - + Select all text by double clicking in address bar - + Select all text by clicking in address bar - + Add .co.uk domain by pressing ALT key - + Qt::Vertical @@ -735,8 +735,22 @@ - + + + + Automatically switch to newly opened tab + + + + + + + + Show tab previews + + + @@ -747,7 +761,7 @@ - 40 + 10 20 @@ -762,19 +776,62 @@ - - - - Show tab previews - - - - - - - Automatically switch to newly opened tab - - + + + + + + Suggest when typing into address bar: + + + + + + + + 170 + 0 + + + + + History and Bookmarks + + + + + History + + + + + Bookmarks + + + + + Nothing + + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 40 + 20 + + + + +