File indexing completed on 2024-05-26 05:14:15

0001 /*  -*- c++ -*-
0002     SPDX-FileCopyrightText: 2008 Tobias Koenig <tokoe@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include "akonaditests_export.h"
0010 
0011 #include <QHash>
0012 #include <QObject>
0013 #include <QString>
0014 
0015 class QPluginLoader;
0016 
0017 namespace Akonadi
0018 {
0019 class AKONADI_TESTS_EXPORT PluginMetaData
0020 {
0021 public:
0022     PluginMetaData();
0023     PluginMetaData(const QString &lib, const QString &name, const QString &comment, const QString &cname);
0024 
0025     QString library;
0026     QString nameLabel;
0027     QString descriptionLabel;
0028     QString className;
0029     bool loaded;
0030 };
0031 
0032 class AKONADI_TESTS_EXPORT PluginLoader
0033 {
0034 public:
0035     ~PluginLoader();
0036 
0037     static PluginLoader *self();
0038 
0039     QStringList names() const;
0040 
0041     QObject *createForName(const QString &name);
0042 
0043     PluginMetaData infoForName(const QString &name) const;
0044 
0045     void scan();
0046 
0047 private:
0048     Q_DISABLE_COPY(PluginLoader)
0049     PluginLoader();
0050 
0051     static PluginLoader *mSelf;
0052     QHash<QString, QPluginLoader *> mPluginLoaders;
0053     QHash<QString, PluginMetaData> mPluginInfos;
0054 };
0055 
0056 }