mirror of
https://invent.kde.org/network/falkon.git
synced 2024-12-20 18:56:34 +01:00
parent
7323fb1cad
commit
65a47fd450
@ -63,87 +63,6 @@ bool Bookmarks::showOnlyIconsInToolbar() const
|
|||||||
return m_showOnlyIconsInToolbar;
|
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 << "<!DOCTYPE NETSCAPE-Bookmark-file-1>" << endl;
|
|
||||||
out << "<!-- This is an automatically generated file." << endl;
|
|
||||||
out << " It will be read and overwritten." << endl;
|
|
||||||
out << " DO NOT EDIT! -->" << endl;
|
|
||||||
out << "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=UTF-8\">" << endl;
|
|
||||||
out << "<TITLE>Bookmarks</TITLE>" << endl;
|
|
||||||
out << "<H1>Bookmarks</H1>" << endl;
|
|
||||||
|
|
||||||
out << "<DL><p>" << endl;
|
|
||||||
|
|
||||||
QString indent = " ";
|
|
||||||
QList<QPair<QString, bool> > allFolders;
|
|
||||||
|
|
||||||
QPair<QString, bool> menu;
|
|
||||||
menu.first = "bookmarksMenu";
|
|
||||||
menu.second = false;
|
|
||||||
|
|
||||||
QPair<QString, bool> 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<QString, bool> 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<QString, bool> pair = allFolders.at(i);
|
|
||||||
|
|
||||||
out << indent << "<DT><H3 TOOLBAR_SUBFOLDER=\"" << (pair.second ? "yes" : "no") << "\">" << pair.first << "</H3>" << endl;
|
|
||||||
out << indent << "<DL><p>" << 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 << "<DT><A HREF=\"" << url << "\">" << title << "</A>" << endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
out << indent << "</DL><p>" << 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 << "<DT><A HREF=\"" << url << "\">" << title << "</A>" << endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
out << "</DL><p>" << endl;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
BookmarkItem* Bookmarks::rootItem() const
|
BookmarkItem* Bookmarks::rootItem() const
|
||||||
{
|
{
|
||||||
return m_root;
|
return m_root;
|
||||||
@ -196,10 +115,10 @@ QList<BookmarkItem*> Bookmarks::searchBookmarks(const QUrl &url) const
|
|||||||
return items;
|
return items;
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<BookmarkItem*> Bookmarks::searchBookmarks(const QString &string, Qt::CaseSensitivity sensitive) const
|
QList<BookmarkItem*> Bookmarks::searchBookmarks(const QString &string, int limit, Qt::CaseSensitivity sensitive) const
|
||||||
{
|
{
|
||||||
QList<BookmarkItem*> items;
|
QList<BookmarkItem*> items;
|
||||||
search(&items, m_root, string, sensitive);
|
search(&items, m_root, string, limit, sensitive);
|
||||||
return items;
|
return items;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -467,16 +386,20 @@ void Bookmarks::search(QList<BookmarkItem*>* items, BookmarkItem* parent, const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Bookmarks::search(QList<BookmarkItem*>* items, BookmarkItem* parent, const QString &string, Qt::CaseSensitivity sensitive) const
|
void Bookmarks::search(QList<BookmarkItem*>* items, BookmarkItem* parent, const QString &string, int limit, Qt::CaseSensitivity sensitive) const
|
||||||
{
|
{
|
||||||
Q_ASSERT(items);
|
Q_ASSERT(items);
|
||||||
Q_ASSERT(parent);
|
Q_ASSERT(parent);
|
||||||
|
|
||||||
|
if (limit == items->count()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
switch (parent->type()) {
|
switch (parent->type()) {
|
||||||
case BookmarkItem::Root:
|
case BookmarkItem::Root:
|
||||||
case BookmarkItem::Folder:
|
case BookmarkItem::Folder:
|
||||||
foreach (BookmarkItem* child, parent->children()) {
|
foreach (BookmarkItem* child, parent->children()) {
|
||||||
search(items, child, string, sensitive);
|
search(items, child, string, limit, sensitive);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -39,7 +39,6 @@ public:
|
|||||||
void saveSettings();
|
void saveSettings();
|
||||||
|
|
||||||
bool showOnlyIconsInToolbar() const;
|
bool showOnlyIconsInToolbar() const;
|
||||||
void exportToHtml(const QString &fileName);
|
|
||||||
|
|
||||||
BookmarkItem* rootItem() const;
|
BookmarkItem* rootItem() const;
|
||||||
BookmarkItem* toolbarFolder() const;
|
BookmarkItem* toolbarFolder() const;
|
||||||
@ -54,8 +53,8 @@ public:
|
|||||||
|
|
||||||
// Search bookmarks (urls only) for exact url match
|
// Search bookmarks (urls only) for exact url match
|
||||||
QList<BookmarkItem*> searchBookmarks(const QUrl &url) const;
|
QList<BookmarkItem*> searchBookmarks(const QUrl &url) const;
|
||||||
// Search bookmarks (urls only) for contains match through all properties
|
// Search bookmarks for contains match through all properties
|
||||||
QList<BookmarkItem*> searchBookmarks(const QString &string, Qt::CaseSensitivity sensitive = Qt::CaseInsensitive) const;
|
QList<BookmarkItem*> searchBookmarks(const QString &string, int limit = -1, Qt::CaseSensitivity sensitive = Qt::CaseInsensitive) const;
|
||||||
|
|
||||||
void addBookmark(BookmarkItem* parent, BookmarkItem* item);
|
void addBookmark(BookmarkItem* parent, BookmarkItem* item);
|
||||||
void insertBookmark(BookmarkItem* parent, int row, BookmarkItem* item);
|
void insertBookmark(BookmarkItem* parent, int row, BookmarkItem* item);
|
||||||
@ -86,7 +85,7 @@ private:
|
|||||||
QVariantList writeBookmarks(BookmarkItem* parent);
|
QVariantList writeBookmarks(BookmarkItem* parent);
|
||||||
|
|
||||||
void search(QList<BookmarkItem*>* items, BookmarkItem* parent, const QUrl &url) const;
|
void search(QList<BookmarkItem*>* items, BookmarkItem* parent, const QUrl &url) const;
|
||||||
void search(QList<BookmarkItem*>* items, BookmarkItem* parent, const QString &string, Qt::CaseSensitivity sensitive) const;
|
void search(QList<BookmarkItem*>* items, BookmarkItem* parent, const QString &string, int limit, Qt::CaseSensitivity sensitive) const;
|
||||||
|
|
||||||
BookmarkItem* m_root;
|
BookmarkItem* m_root;
|
||||||
BookmarkItem* m_folderToolbar;
|
BookmarkItem* m_folderToolbar;
|
||||||
|
@ -34,9 +34,16 @@ LocationCompleterModel::LocationCompleterModel(QObject* parent)
|
|||||||
|
|
||||||
static bool countBiggerThan(const QStandardItem* i1, const QStandardItem* i2)
|
static bool countBiggerThan(const QStandardItem* i1, const QStandardItem* i2)
|
||||||
{
|
{
|
||||||
|
// 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() >
|
return i1->data(LocationCompleterModel::CountRole).toInt() >
|
||||||
i2->data(LocationCompleterModel::CountRole).toInt();
|
i2->data(LocationCompleterModel::CountRole).toInt();
|
||||||
}
|
}
|
||||||
|
return i1Bookmark;
|
||||||
|
}
|
||||||
|
|
||||||
void LocationCompleterModel::refreshCompletions(const QString &string)
|
void LocationCompleterModel::refreshCompletions(const QString &string)
|
||||||
{
|
{
|
||||||
@ -54,20 +61,19 @@ void LocationCompleterModel::refreshCompletions(const QString &string)
|
|||||||
|
|
||||||
clear();
|
clear();
|
||||||
|
|
||||||
Type showType = (Type) qzSettings->showLocationSuggestions;
|
const int bookmarksLimit = 10;
|
||||||
|
const int historyLimit = 20;
|
||||||
int limit = string.size() < 3 ? 25 : 15;
|
|
||||||
QList<QUrl> urlList;
|
QList<QUrl> urlList;
|
||||||
QList<QStandardItem*> itemList;
|
QList<QStandardItem*> itemList;
|
||||||
|
Type showType = (Type) qzSettings->showLocationSuggestions;
|
||||||
|
|
||||||
if (showType == HistoryAndBookmarks || showType == Bookmarks) {
|
if (showType == HistoryAndBookmarks || showType == Bookmarks) {
|
||||||
QList<BookmarkItem*> bookmarks = mApp->bookmarks()->searchBookmarks(string);
|
QList<BookmarkItem*> bookmarks = mApp->bookmarks()->searchBookmarks(string, bookmarksLimit);
|
||||||
|
|
||||||
foreach (BookmarkItem* bookmark, bookmarks) {
|
foreach (BookmarkItem* bookmark, bookmarks) {
|
||||||
Q_ASSERT(bookmark->isUrl());
|
Q_ASSERT(bookmark->isUrl());
|
||||||
|
|
||||||
QStandardItem* item = new QStandardItem();
|
QStandardItem* item = new QStandardItem();
|
||||||
|
|
||||||
item->setIcon(bookmark->icon());
|
item->setIcon(bookmark->icon());
|
||||||
item->setText(bookmark->url().toEncoded());
|
item->setText(bookmark->url().toEncoded());
|
||||||
item->setData(-1, IdRole);
|
item->setData(-1, IdRole);
|
||||||
@ -83,18 +89,20 @@ void LocationCompleterModel::refreshCompletions(const QString &string)
|
|||||||
urlList.append(bookmark->url());
|
urlList.append(bookmark->url());
|
||||||
itemList.append(item);
|
itemList.append(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
limit -= itemList.count();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (showType == HistoryAndBookmarks || showType == History) {
|
if (showType == HistoryAndBookmarks || showType == History) {
|
||||||
QSqlQuery query = createQuery(string, "count DESC", urlList, limit);
|
QSqlQuery query = createQuery(string, historyLimit);
|
||||||
query.exec();
|
query.exec();
|
||||||
|
|
||||||
while (query.next()) {
|
while (query.next()) {
|
||||||
QStandardItem* item = new QStandardItem();
|
|
||||||
const QUrl url = query.value(1).toUrl();
|
const QUrl url = query.value(1).toUrl();
|
||||||
|
|
||||||
|
if (urlList.contains(url)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
QStandardItem* item = new QStandardItem();
|
||||||
item->setIcon(_iconForUrl(url));
|
item->setIcon(_iconForUrl(url));
|
||||||
item->setText(url.toEncoded());
|
item->setText(url.toEncoded());
|
||||||
item->setData(query.value(0), IdRole);
|
item->setData(query.value(0), IdRole);
|
||||||
@ -183,8 +191,7 @@ QString LocationCompleterModel::completeDomain(const QString &text)
|
|||||||
return sqlQuery.value(0).toUrl().host();
|
return sqlQuery.value(0).toUrl().host();
|
||||||
}
|
}
|
||||||
|
|
||||||
QSqlQuery LocationCompleterModel::createQuery(const QString &searchString, const QString &orderBy,
|
QSqlQuery LocationCompleterModel::createQuery(const QString &searchString, int limit, bool exactMatch)
|
||||||
const QList<QUrl> &alreadyFound, int limit, bool exactMatch)
|
|
||||||
{
|
{
|
||||||
QStringList searchList;
|
QStringList searchList;
|
||||||
QString query = QLatin1String("SELECT id, url, title, count FROM history WHERE ");
|
QString query = QLatin1String("SELECT id, url, title, count FROM history WHERE ");
|
||||||
@ -203,16 +210,6 @@ 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;
|
QSqlQuery sqlQuery;
|
||||||
@ -229,10 +226,6 @@ QSqlQuery LocationCompleterModel::createQuery(const QString &searchString, const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (const QUrl &url, alreadyFound) {
|
|
||||||
sqlQuery.addBindValue(url);
|
|
||||||
}
|
|
||||||
|
|
||||||
sqlQuery.addBindValue(limit);
|
sqlQuery.addBindValue(limit);
|
||||||
|
|
||||||
return sqlQuery;
|
return sqlQuery;
|
||||||
|
@ -61,7 +61,7 @@ private:
|
|||||||
Nothing = 4
|
Nothing = 4
|
||||||
};
|
};
|
||||||
|
|
||||||
QSqlQuery createQuery(const QString &searchString, const QString &orderBy, const QList<QUrl> &alreadyFound,
|
QSqlQuery createQuery(const QString &searchString,
|
||||||
int limit, bool exactMatch = false);
|
int limit, bool exactMatch = false);
|
||||||
|
|
||||||
TabPosition tabPositionForUrl(const QUrl &url) const;
|
TabPosition tabPositionForUrl(const QUrl &url) const;
|
||||||
|
Loading…
Reference in New Issue
Block a user