/* * This file is part of smolbote. It's copyrighted by the contributors recorded * in the version control history of the file, available from its original * location: https://neueland.iserlohn-fortress.net/smolbote.hg * * SPDX-License-Identifier: GPL-3.0 */ #include "profilemanager.h" #include #include #include #include QMap ProfileManager::profiles; ProfileManager::ProfileManager(QObject *parent) : QObject(parent) { } WebProfile *ProfileManager::loadProfile(const QString &path, const QHash &defaults) { WebProfile *profile = nullptr; #ifdef QT_DEBUG qDebug("==> Reading profile config : %s", qUtf8Printable(path)); #endif const QString id = QFileInfo(path).baseName(); QSettings config(path, QSettings::IniFormat); if(config.value("otr", true).toBool()) { profile = new WebProfile(config.value("name", id).toString(), path, nullptr); } else { profile = new WebProfile(id, config.value("name", id).toString(), path, nullptr); } Q_CHECK_PTR(profile); profiles.insert(id, profile); profile->setSearch(config.value("search", defaults.value("profile.search")).toString()); profile->setHomepage(config.value("homepage", defaults.value("profile.homepage")).toUrl()); profile->setNewtab(config.value("newtab", defaults.value("profile.newtab")).toUrl()); config.beginGroup("properties"); { const auto keys = config.childKeys(); for(const QString &key : keys) { #ifdef QT_DEBUG qDebug("- set property %s to %s", qUtf8Printable(key), qUtf8Printable(config.value(key).toString())); #endif profile->setProperty(qUtf8Printable(key), config.value(key)); } } config.endGroup(); // properties config.beginGroup("attributes"); { const auto keys = config.childKeys(); auto *settings = profile->settings(); for(const QString &key : keys) { #ifdef QT_DEBUG qDebug("- set attribute %s to %s", qUtf8Printable(key), qUtf8Printable(config.value(key).toString())); #endif auto attribute = static_cast(key.toInt()); settings->setAttribute(attribute, config.value(key).toBool()); } } config.endGroup(); return profile; } const QString ProfileManager::id(WebProfile *profile) { return profiles.key(profile); } WebProfile *ProfileManager::profile(const QString &id) { if(profiles.contains(id)) return profiles.value(id); else return nullptr; } const QMap &ProfileManager::profileList() { return profiles; }