/* SPDX-FileCopyrightText: 2010 Volker Lanz SPDX-FileCopyrightText: 2014-2021 Andrius Štikonas SPDX-FileCopyrightText: 2015 Teo Mrnjavac SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho SPDX-License-Identifier: GPL-3.0-or-later */ #include "backend/corebackendmanager.h" #include "backend/corebackend.h" #include #include #include #include #include #include #include #include struct CoreBackendManagerPrivate { CoreBackend *m_Backend; }; CoreBackendManager::CoreBackendManager() : d(std::make_unique()) { } CoreBackendManager::~CoreBackendManager() { } CoreBackendManager* CoreBackendManager::self() { static CoreBackendManager* instance = nullptr; if (instance == nullptr) instance = new CoreBackendManager; return instance; } CoreBackend* CoreBackendManager::backend() { return d->m_Backend; } QVector CoreBackendManager::list() const { return KPluginMetaData::findPlugins(QStringLiteral("kpmcore")); } bool CoreBackendManager::load(const QString& name) { if (backend()) unload(); QString path = QStringLiteral("kpmcore/") + name; KPluginLoader loader(path); KPluginFactory* factory = loader.factory(); KPluginMetaData metadata(path); if (factory != nullptr) { d->m_Backend = factory->create(nullptr); QString id = metadata.pluginId(); QString version = metadata.version(); if (id.isEmpty()) return false; backend()->setId(id); backend()->setVersion(version); qDebug() << "Loaded backend plugin: " << backend()->id(); return true; } qWarning() << "Could not load plugin for core backend " << name << ": " << loader.errorString(); return false; } void CoreBackendManager::unload() { }