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 }