QList<BookmarkMatch> Opera::match( const QString& term, bool addEverything ) { QList<BookmarkMatch> matches; QLatin1String nameStart("\tNAME="); QLatin1String urlStart("\tURL="); QLatin1String descriptionStart("\tDESCRIPTION="); // search foreach (const QString & entry, m_operaBookmarkEntries) { QStringList entryLines = entry.split(QStringLiteral("\n")); if (!entryLines.first().startsWith(QStringLiteral("#URL"))) { continue; // skip folder entries } entryLines.pop_front(); QString name; QString url; QString description; foreach (const QString & line, entryLines) { if (line.startsWith(nameStart)) { name = line.mid( QString(nameStart).length() ).simplified(); } else if (line.startsWith(urlStart)) { url = line.mid( QString(urlStart).length() ).simplified(); } else if (line.startsWith(descriptionStart)) { description = line.mid(QString(descriptionStart).length()) .simplified(); } } BookmarkMatch bookmarkMatch(m_favicon, term, name, url, description); bookmarkMatch.addTo(matches, addEverything); }
QList< BookmarkMatch > KDEBrowser::match(const QString& term, bool addEverything) { KBookmarkGroup bookmarkGroup = m_bookmarkManager->root(); QList< BookmarkMatch > matches; QStack<KBookmarkGroup> groups; KBookmark bookmark = bookmarkGroup.first(); while (!bookmark.isNull()) { // if (!context.isValid()) { // return; // } TODO: restore? if (bookmark.isSeparator()) { bookmark = bookmarkGroup.next(bookmark); continue; } if (bookmark.isGroup()) { // descend //kDebug (kdbg_code) << "descending into" << bookmark.text(); groups.push(bookmarkGroup); bookmarkGroup = bookmark.toGroup(); bookmark = bookmarkGroup.first(); while (bookmark.isNull() && !groups.isEmpty()) { // if (!context.isValid()) { // return; // } TODO: restore? bookmark = bookmarkGroup; bookmarkGroup = groups.pop(); bookmark = bookmarkGroup.next(bookmark); } continue; } BookmarkMatch bookmarkMatch(m_favicon, term, bookmark.text(), bookmark.url().url() ); bookmarkMatch.addTo(matches, addEverything); bookmark = bookmarkGroup.next(bookmark); while (bookmark.isNull() && !groups.isEmpty()) { // if (!context.isValid()) { // return; // } // TODO: restore? bookmark = bookmarkGroup; bookmarkGroup = groups.pop(); //kDebug(kdbg_code) << "ascending from" << bookmark.text() << "to" << bookmarkGroup.text(); bookmark = bookmarkGroup.next(bookmark); } } return matches; }
QList< BookmarkMatch > Firefox::match(const QString& term, bool addEverything) { QList< BookmarkMatch > matches; if (!m_fetchsqlite) { return matches; } //qDebug() << "Firefox bookmark: match " << term; QString tmpTerm = term; QString query; if (addEverything) { query = QString("SELECT moz_bookmarks.fk, moz_bookmarks.title, moz_places.url," \ "moz_places.favicon_id FROM moz_bookmarks, moz_places WHERE " \ "moz_bookmarks.type = 1 AND moz_bookmarks.fk = moz_places.id"); } else { const QString escapedTerm = tmpTerm.replace('\'', "\\'"); query = QString("SELECT moz_bookmarks.fk, moz_bookmarks.title, moz_places.url," \ "moz_places.favicon_id FROM moz_bookmarks, moz_places WHERE " \ "moz_bookmarks.type = 1 AND moz_bookmarks.fk = moz_places.id AND " \ "(moz_bookmarks.title LIKE '%" + escapedTerm + "%' or moz_places.url LIKE '%" + escapedTerm + "%')"); } QList<QVariantMap> results = m_fetchsqlite->query(query, QMap<QString, QVariant>()); foreach(QVariantMap result, results) { const QString title = result.value("title").toString(); const QUrl url = result.value("url").toUrl(); if (url.scheme().contains("place")) { //Don't use bookmarks with empty title, url or Firefox intern url //qDebug() << "element " << url << " was not added"; continue; } BookmarkMatch bookmarkMatch( m_favicon, term, title, url.toString()); bookmarkMatch.addTo(matches, addEverything); } return matches; }