This commit is contained in:
Patrick von Reth 2014-02-15 12:34:08 +01:00
parent 1567e2d2a6
commit 8e45af0901
5 changed files with 19 additions and 29 deletions

View File

@ -85,18 +85,9 @@ SnorePlugin::PluginTypes PluginContainer::typeFromString(const QString &t)
return (SnorePlugin::PluginTypes)SnorePlugin::staticMetaObject.enumerator(SnorePlugin::staticMetaObject.indexOfEnumerator("PluginType")).keyToValue(t.toUpper().toLatin1()); return (SnorePlugin::PluginTypes)SnorePlugin::staticMetaObject.enumerator(SnorePlugin::staticMetaObject.indexOfEnumerator("PluginType")).keyToValue(t.toUpper().toLatin1());
} }
const QStringList &PluginContainer::typeNames() QString PluginContainer::typeToString(const SnorePlugin::PluginTypes t)
{ {
static QStringList out; return SnorePlugin::staticMetaObject.enumerator(SnorePlugin::staticMetaObject.indexOfEnumerator("PluginType")).valueToKey(t);
if(out.isEmpty())
{
QMetaEnum e = SnorePlugin::staticMetaObject.enumerator(SnorePlugin::staticMetaObject.indexOfEnumerator("PluginType"));
for(int i=0;i<e.keyCount();++i)
{
out << QString::fromLatin1(e.key(i));
}
}
return out;
} }
const QList<SnorePlugin::PluginTypes> &PluginContainer::types() const QList<SnorePlugin::PluginTypes> &PluginContainer::types()
@ -135,9 +126,10 @@ void PluginContainer::updatePluginCache()
QList<PluginContainer*> plugins; QList<PluginContainer*> plugins;
foreach(const QString &type,PluginContainer::typeNames()) foreach(const SnorePlugin::PluginTypes type,PluginContainer::types())
{ {
foreach (const QFileInfo &file, pluginDir().entryInfoList(QStringList(QString("libsnore_%1_*.%2").arg(type.toLower(), pluginExtention())), QDir::Files, QDir::Name | QDir::IgnoreCase )) foreach(const QFileInfo &file, pluginDir().entryInfoList(
QStringList(QString("libsnore_%1_*.%2").arg(typeToString(type).toLower(), pluginExtention())), QDir::Files))
{ {
snoreDebug( SNORE_DEBUG ) << "adding" << file.absoluteFilePath(); snoreDebug( SNORE_DEBUG ) << "adding" << file.absoluteFilePath();
QPluginLoader loader(file.absoluteFilePath()); QPluginLoader loader(file.absoluteFilePath());
@ -154,8 +146,8 @@ void PluginContainer::updatePluginCache()
loader.unload(); loader.unload();
continue; continue;
} }
PluginContainer *info = new PluginContainer(file.fileName(), sp->name() ,PluginContainer::typeFromString(type)); PluginContainer *info = new PluginContainer(file.fileName(), sp->name() ,type);
s_pluginCache[info->type()].insert(info->name(),info); s_pluginCache[type].insert(info->name(),info);
plugins << info; plugins << info;
snoreDebug( SNORE_DEBUG ) << "added" << info->name() << "to cache"; snoreDebug( SNORE_DEBUG ) << "added" << info->name() << "to cache";
} }

View File

@ -47,7 +47,7 @@ public:
static SnorePlugin::PluginTypes typeFromString(const QString &t); static SnorePlugin::PluginTypes typeFromString(const QString &t);
static const QStringList &typeNames(); static QString typeToString(const SnorePlugin::PluginTypes t);
static const QList<SnorePlugin::PluginTypes> &types(); static const QList<SnorePlugin::PluginTypes> &types();
private: private:

View File

@ -55,7 +55,7 @@ SnoreCore::~SnoreCore()
void SnoreCore::loadPlugins( SnorePlugin::PluginTypes types ) void SnoreCore::loadPlugins( SnorePlugin::PluginTypes types )
{ {
Q_D(SnoreCore); Q_D(SnoreCore);
foreach ( PluginContainer *info, PluginContainer::pluginCache(types).values()) foreach( PluginContainer *info, PluginContainer::pluginCache(types).values())
{ {
switch(info->type()) switch(info->type())
{ {
@ -75,7 +75,11 @@ void SnoreCore::loadPlugins( SnorePlugin::PluginTypes types )
continue; continue;
} }
snoreDebug( SNORE_DEBUG ) << info->name() << "is a" << info->type(); snoreDebug( SNORE_DEBUG ) << info->name() << "is a" << info->type();
d->m_plugins.insert(info->type(), info->name()); d->m_plugins[info->type()].append(info->name());
}
foreach( SnorePlugin::PluginTypes type, PluginContainer::types())
{
qSort(d->m_plugins[type]);
} }
snoreDebug( SNORE_INFO ) << "Loaded Plugins:" << d->m_plugins; snoreDebug( SNORE_INFO ) << "Loaded Plugins:" << d->m_plugins;
} }
@ -123,25 +127,19 @@ const QHash<QString, Application> &SnoreCore::aplications() const
const QStringList SnoreCore::notificationBackends() const const QStringList SnoreCore::notificationBackends() const
{ {
Q_D(const SnoreCore); Q_D(const SnoreCore);
QStringList out(d->m_plugins.values(SnorePlugin::BACKEND)); return d->m_plugins.value(SnorePlugin::BACKEND);
qSort(out);
return out;
} }
const QStringList SnoreCore::notificationFrontends() const const QStringList SnoreCore::notificationFrontends() const
{ {
Q_D(const SnoreCore); Q_D(const SnoreCore);
QStringList out(d->m_plugins.values(SnorePlugin::FRONTEND)); return d->m_plugins.value(SnorePlugin::FRONTEND);
qSort(out);
return out;
} }
const QStringList SnoreCore::secondaryNotificationBackends() const const QStringList SnoreCore::secondaryNotificationBackends() const
{ {
Q_D(const SnoreCore); Q_D(const SnoreCore);
QStringList out(d->m_plugins.values(SnorePlugin::SECONDARY_BACKEND)); return d->m_plugins.value(SnorePlugin::SECONDARY_BACKEND);
qSort(out);
return out;
} }
bool SnoreCore::setPrimaryNotificationBackend ( const QString &backend ) bool SnoreCore::setPrimaryNotificationBackend ( const QString &backend )

View File

@ -57,7 +57,7 @@ void SnoreCorePrivate::notificationActionInvoked(Notification notification) cons
bool SnoreCorePrivate::setBackendIfAvailible(const QString &backend) bool SnoreCorePrivate::setBackendIfAvailible(const QString &backend)
{ {
Q_Q(SnoreCore); Q_Q(SnoreCore);
if( m_plugins.contains(SnorePlugin::BACKEND, backend)) if( m_plugins[SnorePlugin::BACKEND].contains(backend))
{ {
return q->setPrimaryNotificationBackend(backend); return q->setPrimaryNotificationBackend(backend);
} }

View File

@ -74,7 +74,7 @@ private:
QHash<QString,Application> m_applications; QHash<QString,Application> m_applications;
QMultiHash<SnorePlugin::PluginTypes, QString> m_plugins; QHash<SnorePlugin::PluginTypes, QStringList> m_plugins;
QPointer<SnoreBackend> m_notificationBackend; QPointer<SnoreBackend> m_notificationBackend;