File indexing completed on 2024-05-12 05:14:53
0001 /* 0002 * pluginmanager.h - plugin manager 0003 * Program: kalarm 0004 * SPDX-FileCopyrightText: 2022 David Jarvie <djarvie@kde.org> 0005 * 0006 * SPDX-License-Identifier: LGPL-2.0-or-later 0007 */ 0008 0009 #include "pluginmanager.h" 0010 0011 #include "pluginbase.h" 0012 #include "kalarmpluginlib_debug.h" 0013 0014 #include <KPluginFactory> 0015 #include <KPluginMetaData> 0016 0017 namespace 0018 { 0019 QString pluginVersion() 0020 { 0021 return QStringLiteral("1.0"); 0022 } 0023 } 0024 0025 0026 PluginManager::PluginManager(QObject* parent) 0027 : QObject(parent) 0028 { 0029 loadPlugins(); 0030 } 0031 0032 PluginManager::~PluginManager() = default; 0033 0034 PluginManager* PluginManager::instance() 0035 { 0036 static PluginManager theInstance; 0037 return &theInstance; 0038 } 0039 0040 void PluginManager::loadPlugins() 0041 { 0042 // Reset existing plugin data 0043 mAkonadiPlugin = nullptr; 0044 0045 // Load plugins which are available 0046 const QList<KPluginMetaData> plugins = KPluginMetaData::findPlugins( 0047 QStringLiteral("pim6/kalarm")); 0048 0049 for (const auto& metaData : plugins) 0050 { 0051 qCDebug(KALARMPLUGINLIB_LOG) << "PluginManager::loadPlugins: found " << metaData.pluginId(); 0052 if (pluginVersion() != metaData.version()) 0053 qCWarning(KALARMPLUGINLIB_LOG) << "Error! Plugin" << metaData.name() << "has wrong version"; 0054 else 0055 { 0056 // Load the plugin 0057 auto plugin = KPluginFactory::instantiatePlugin<PluginBase>(metaData, this).plugin; 0058 if (plugin) 0059 { 0060 if (metaData.pluginId() == QStringLiteral("akonadi")) 0061 mAkonadiPlugin = (AkonadiPlugin*)plugin; 0062 } 0063 } 0064 } 0065 } 0066 0067 AkonadiPlugin* PluginManager::akonadiPlugin() const 0068 { 0069 return mAkonadiPlugin; 0070 } 0071 0072 #include "moc_pluginmanager.cpp" 0073 0074 // vim: et sw=4: