/* SPDX-FileCopyrightText: 2013 David Edmundson SPDX-FileCopyrightText: 2018 Igor Poboiko SPDX-License-Identifier: LGPL-2.1-or-later */ #ifndef PERSON_PLUGIN_MANAGER_H #define PERSON_PLUGIN_MANAGER_H #include #include #include namespace KPeople { class AbstractPersonAction; class BasePersonsDataSource; /*! \class KPeople::PersonPluginManager \inmodule KPeople \inheaderfile KPeople/PersonPluginManager \brief This class allows applications to manage DataSource plugins. It can be useful if an application wants to use custom DataSource, without exposing it to other KPeople-based applications (i.e. without installing a system-wide plugin) Another use-case is that it allows to pass custom arguments to DataSources (i.e. an ItemModel which will be used as a source of data) \since 5.51 */ class KPEOPLE_EXPORT PersonPluginManager { public: /*! * Use this if you explicitly don't want KPeople to autoload all the * available data source plugins. * * The default behavior is to autoload them */ static void setAutoloadDataSourcePlugins(bool autoloadDataSourcePlugins); /*! * */ static QList dataSourcePlugins(); /*! * Adds custom data source. If DataSource with such \a sourceId was already loaded, we override it * * Takes ownership of the \a source */ static void addDataSource(const QString &sourceId, BasePersonsDataSource *source); /*! * */ static BasePersonsDataSource *dataSource(const QString &sourceId); /*! * Instead of loading datasources from plugins, set sources manually * This is for unit tests only */ static void setDataSourcePlugins(const QHash &dataSources); /*! * Creates a contact with the specified \a properties * Returns if it could be done successfully * * \since 5.62 */ static bool addContact(const QVariantMap &properties); /*! * Deletes a contact with the specified \a uri * Returns true if the contact was deleted * * \since 5.62 */ static bool deleteContact(const QString &uri); }; } #endif // PERSON_PLUGIN_MANAGER_H