1#include "pluginstore.h"
3#include <QPluginLoader>
4#include <QCoreApplication>
13PluginStore::PluginStore(QObject *parent) : QObject(parent) {
15 QTimer::singleShot(100,
this, SLOT(init()));
19PluginStore *PluginStore::pluginStore(QObject *parent) {
20 if (m_pluginStore == NULL) {
22 qFatal(
"PluginStore::pluginStore(NULL)");
30void PluginStore::init() {
32 QStringList plugindirs;
33 plugindirs << QCoreApplication::applicationDirPath()+
"/plugins";
34 plugindirs <<
"/usr/lib/fotomonserver/plugins";
35 for (
int i=0; i<plugindirs.size(); i++) {
36 QDir dir(plugindirs[i]);
37 PDEBUG <<
"path:" << dir.absolutePath();
38 QStringList files = dir.entryList(QStringList() <<
"lib*.so", QDir::Files);
39 for (
int f=0; f<files.size(); f++) {
40 plugins << dir.absolutePath()+
"/"+files[f];
44 for (
int i=0; i<plugins.size(); i++) {
45 const QString& filename = plugins[i];
46 QPluginLoader *loader =
new QPluginLoader(
this);
47 loader->setFileName(filename);
49 if (!loader->load()) {
50 PDEBUG << filename << loader->errorString();
53 QObject *x = loader->instance();
55 PDEBUG <<
"Loader instance() == NULL" << filename;
60 PDEBUG <<
"plugin == NULL" << filename;
65 PDEBUG <<
"Loaded" << plugin->description();
71QStringList PluginStore::pluginNames()
const {
73 for (
int i=0; i<m_plugins.size(); i++) {
74 names << m_plugins[i]->description();
Interface pro pluginy serveru.
Jmenný prostor pro obsluhu konkrétních HTTP požadavků aplikace.