35 lines
775 B
C++
35 lines
775 B
C++
|
|
#ifndef MANIFESTSCANNER_H
|
||
|
|
#define MANIFESTSCANNER_H
|
||
|
|
|
||
|
|
#include <QObject>
|
||
|
|
#include <QStringList>
|
||
|
|
#include <QMap>
|
||
|
|
#include "PluginManifest.h"
|
||
|
|
|
||
|
|
class ManifestScanner : public QObject
|
||
|
|
{
|
||
|
|
Q_OBJECT
|
||
|
|
|
||
|
|
public:
|
||
|
|
explicit ManifestScanner(QObject *parent = nullptr);
|
||
|
|
|
||
|
|
void setPluginDirectories(const QStringList &dirs);
|
||
|
|
QStringList pluginDirectories() const;
|
||
|
|
|
||
|
|
QList<PluginManifest> scanAll();
|
||
|
|
QList<PluginManifest> discoveredPlugins() const;
|
||
|
|
|
||
|
|
static QString findManifestFile(const QString &pluginDir);
|
||
|
|
|
||
|
|
signals:
|
||
|
|
void pluginDiscovered(const PluginManifest &manifest);
|
||
|
|
void scanComplete(int totalCount);
|
||
|
|
|
||
|
|
private:
|
||
|
|
QList<PluginManifest> scanDirectory(const QString &dir);
|
||
|
|
QStringList m_pluginDirs;
|
||
|
|
QList<PluginManifest> m_discovered;
|
||
|
|
};
|
||
|
|
|
||
|
|
#endif
|