/* ============================================================ * The rekonq project * ============================================================ * SPDX-License-Identifier: GPL-2.0-or-later * Copyright (C) 2008-2012 by Andrea Diamantini * Copyright (C) 2009-2011 by Lionel Chauvin * SPDX-License-Identifier: GPL-3.0-only * Copyright (C) 2022 aqua * ============================================================ */ // local includes #include "searchengine.hpp" struct SearchEnginePrivate { SearchEnginePrivate() = default; ~SearchEnginePrivate() noexcept { for (auto *i : engines) delete i; } bool isLoaded = false; QList engines; SearchEngine *defaultEngine = nullptr; }; Q_GLOBAL_STATIC(SearchEnginePrivate, d) SearchEngine *SearchEngine::defaultEngine() { Q_ASSERT(d->isLoaded); return d->defaultEngine; } QList SearchEngine::engines() { Q_ASSERT(d->isLoaded); return d->engines; } void SearchEngine::reload(RekonqSettings *settings) { Q_CHECK_PTR(settings); settings->beginGroup("SearchEngines"); const auto defaultId = settings->value("default").toString(); const auto list = settings->value("engines").toStringList(); for (const auto &id : list) { auto *e = new SearchEngine(id, settings); d->engines.append(e); if (id == defaultId) d->defaultEngine = e; } settings->endGroup(); d->isLoaded = true; } SearchEngine::SearchEngine(const QString &id, RekonqSettings *settings) : m_id(id) { settings->beginGroup("SearchEngines." + id); m_name = settings->value("name").toString(); m_url = settings->value("url").toString(); m_enabled = settings->value("enabled").toBool(); settings->endGroup(); }