File indexing completed on 2025-09-14 05:30:45
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 using namespace Qt::StringLiterals; 0019 0020 Falkon::Falkon(QObject *parent) 0021 : QObject(parent) 0022 , m_startupProfile(getStartupProfileDir()) 0023 , m_favicon(FaviconFromBlob::falkon(m_startupProfile, this)) 0024 { 0025 } 0026 0027 QList<BookmarkMatch> Falkon::match(const QString &term, bool addEverything) 0028 { 0029 QList<BookmarkMatch> matches; 0030 for (const auto &bookmark : std::as_const(m_falkonBookmarkEntries)) { 0031 const auto obj = bookmark.toObject(); 0032 const QString url = obj.value(QStringLiteral("url")).toString(); 0033 BookmarkMatch bookmarkMatch(m_favicon->iconFor(url), term, obj.value(QStringLiteral("name")).toString(), url); 0034 bookmarkMatch.addTo(matches, addEverything); 0035 } 0036 return matches; 0037 } 0038 0039 void Falkon::prepare() 0040 { 0041 m_falkonBookmarkEntries = readChromeFormatBookmarks(m_startupProfile + QStringLiteral("/bookmarks.json")); 0042 } 0043 0044 void Falkon::teardown() 0045 { 0046 m_falkonBookmarkEntries = QJsonArray(); 0047 } 0048 0049 QString Falkon::getStartupProfileDir() 0050 { 0051 const QString profilesIni = QStandardPaths::locate(QStandardPaths::ConfigLocation, QStringLiteral("/falkon/profiles/profiles.ini")); 0052 const QString startupProfile = KSharedConfig::openConfig(profilesIni)->group(u"Profiles"_s).readEntry("startProfile", u"default"_s).remove("\""); 0053 return QFileInfo(profilesIni).dir().absoluteFilePath(startupProfile); 0054 }