29 : QStandardItemModel(parent)
41 for (QStandardItem *item : items) {
42 item->setIcon(QPixmap::fromImage(item->data(
ImageRole).value<QImage>()));
44 if (item->icon().isNull()) {
47 appendRow(QList<QStandardItem*>{item});
53 QList<QStandardItem*> items;
54 for (
int i = 0;
i < rowCount(); ++
i) {
55 QStandardItem *it = item(
i);
65 if (text.isEmpty() || text == QLatin1String(
"www.")) {
69 bool withoutWww = text.startsWith(QLatin1Char(
'w')) && !text.startsWith(QLatin1String(
"www."));
70 QString query =
QSL(
"SELECT url FROM history WHERE ");
73 query.append(QLatin1String(
"url NOT LIKE ? AND url NOT LIKE ? AND "));
76 query.append(QLatin1String(
"url LIKE ? OR url LIKE ? OR "));
79 query.append(QLatin1String(
"(url LIKE ? OR url LIKE ?) ORDER BY date DESC LIMIT 1"));
82 sqlQuery.prepare(query);
85 sqlQuery.addBindValue(
QSL(
"http://www.%"));
86 sqlQuery.addBindValue(
QSL(
"https://www.%"));
87 sqlQuery.addBindValue(
QSL(
"http://%1%").arg(text));
88 sqlQuery.addBindValue(
QSL(
"https://%1%").arg(text));
91 sqlQuery.addBindValue(
QSL(
"http://%1%").arg(text));
92 sqlQuery.addBindValue(
QSL(
"https://%1%").arg(text));
93 sqlQuery.addBindValue(
QSL(
"http://www.%1%").arg(text));
94 sqlQuery.addBindValue(
QSL(
"https://www.%1%").arg(text));
102 QStringList searchList;
103 QString query = QLatin1String(
"SELECT id, url, title, count FROM history WHERE ");
106 query.append(QLatin1String(
"title LIKE ? OR url LIKE ? "));
109 searchList = searchString.split(QLatin1Char(
' '), Qt::SkipEmptyParts);
110 const int slSize = searchList.size();
111 for (
int i = 0;
i < slSize; ++
i) {
112 query.append(QLatin1String(
"(title LIKE ? OR url LIKE ?) "));
113 if (
i < slSize - 1) {
114 query.append(QLatin1String(
"AND "));
119 query.append(QLatin1String(
"ORDER BY date DESC LIMIT ?"));
122 sqlQuery.prepare(query);
125 sqlQuery.addBindValue(
QSL(
"%%1%").arg(searchString));
126 sqlQuery.addBindValue(
QSL(
"%%1%").arg(searchString));
129 for (
const QString &str : std::as_const(searchList)) {
130 sqlQuery.addBindValue(
QSL(
"%%1%").arg(str));
131 sqlQuery.addBindValue(
QSL(
"%%1%").arg(str));
135 sqlQuery.addBindValue(limit);
140void LocationCompleterModel::setTabPosition(QStandardItem* item)
const
150 const QUrl url = item->data(
UrlRole).toUrl();
151 const QList<BrowserWindow*> windows =
mApp->windows();
154 QList<WebTab*> tabs = window->tabWidget()->allTabs();
155 for (
int i = 0;
i < tabs.count(); ++
i) {
157 if (tab->
url() == url) {
166void LocationCompleterModel::refreshTabPositions()
const
168 for (
int row = 0; row < rowCount(); ++row) {
169 QStandardItem* itm = item(row);
static QIcon emptyWebIcon()
LocationCompleterModel(QObject *parent=nullptr)
void setCompletions(const QList< QStandardItem * > &items)
void addCompletions(const QList< QStandardItem * > &items)
static QSqlQuery createHistoryQuery(const QString &searchString, int limit, bool exactMatch=false)
static QSqlQuery createDomainQuery(const QString &text)
QList< QStandardItem * > suggestionItems() const
static SqlDatabase * instance()