File indexing completed on 2024-05-05 03:57:09

0001 /*
0002     SPDX-FileCopyrightText: 2015 Aleix Pol i Gonzalez <aleixpol@blue-systems.com>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-or-later
0005 */
0006 
0007 #include "actions.h"
0008 #include "backends/abstractpersonaction.h"
0009 #include "kpeople_debug.h"
0010 #include <KPeople/PersonData>
0011 
0012 #include <KPluginFactory>
0013 #include <KPluginMetaData>
0014 
0015 #include <QAction>
0016 
0017 namespace KPeople
0018 {
0019 static QList<AbstractPersonAction *> actionsPlugins()
0020 {
0021     QList<AbstractPersonAction *> actionPlugins;
0022     const QList<KPluginMetaData> personPluginList = KPluginMetaData::findPlugins(QStringLiteral("kpeople/actions"));
0023     for (const KPluginMetaData &data : personPluginList) {
0024         auto pluginResult = KPluginFactory::instantiatePlugin<AbstractPersonAction>(data);
0025         if (pluginResult) {
0026             qCDebug(KPEOPLE_LOG) << "found plugin" << data.fileName();
0027             AbstractPersonAction *plugin = pluginResult.plugin;
0028             actionPlugins << plugin;
0029         } else {
0030             qCDebug(KPEOPLE_LOG) << "could not load plugin" << data.fileName() << pluginResult.errorText;
0031         }
0032     }
0033 
0034     return actionPlugins;
0035 }
0036 
0037 QList<QAction *> actionsForPerson(const QString &contactUri, QObject *parent)
0038 {
0039     PersonData person(contactUri);
0040 
0041     QList<QAction *> actions;
0042     const auto lst = actionsPlugins();
0043     for (KPeople::AbstractPersonAction *plugin : lst) {
0044         actions << plugin->actionsForPerson(person, parent);
0045     }
0046 
0047     return actions;
0048 }
0049 
0050 }
0051 
0052 #include "moc_actions.cpp"