File indexing completed on 2024-05-19 16:41:36
0001 /* 0002 SPDX-FileCopyrightText: 2020 Alexander Lohnau <alexander.lohnau@gmx.de> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "falkon.h" 0008 #include "favicon.h" 0009 #include "faviconfromblob.h" 0010 #include <KConfigGroup> 0011 #include <KSharedConfig> 0012 #include <QDir> 0013 #include <QFile> 0014 #include <QJsonArray> 0015 #include <QJsonDocument> 0016 #include <QStandardPaths> 0017 0018 Falkon::Falkon(QObject *parent) 0019 : QObject(parent) 0020 , m_startupProfile(getStartupProfileDir()) 0021 , m_favicon(FaviconFromBlob::falkon(m_startupProfile, this)) 0022 { 0023 } 0024 0025 QList<BookmarkMatch> Falkon::match(const QString &term, bool addEverything) 0026 { 0027 QList<BookmarkMatch> matches; 0028 for (const auto &bookmark : qAsConst(m_falkonBookmarkEntries)) { 0029 const auto obj = bookmark.toObject(); 0030 const QString url = obj.value(QStringLiteral("url")).toString(); 0031 BookmarkMatch bookmarkMatch(m_favicon->iconFor(url), term, obj.value(QStringLiteral("name")).toString(), url); 0032 bookmarkMatch.addTo(matches, addEverything); 0033 } 0034 return matches; 0035 } 0036 0037 void Falkon::prepare() 0038 { 0039 m_falkonBookmarkEntries = readChromeFormatBookmarks(m_startupProfile + QStringLiteral("/bookmarks.json")); 0040 } 0041 0042 void Falkon::teardown() 0043 { 0044 m_falkonBookmarkEntries = QJsonArray(); 0045 } 0046 0047 QString Falkon::getStartupProfileDir() 0048 { 0049 const QString profilesIni = QStandardPaths::locate(QStandardPaths::ConfigLocation, QStringLiteral("/falkon/profiles/profiles.ini")); 0050 const QString startupProfile = KSharedConfig::openConfig(profilesIni)->group("Profiles").readEntry("startProfile", QStringLiteral("default")).remove("\""); 0051 return QFileInfo(profilesIni).dir().absoluteFilePath(startupProfile); 0052 }