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());
}
const QStringList &PluginContainer::typeNames()
QString PluginContainer::typeToString(const SnorePlugin::PluginTypes t)
{
static QStringList out;
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;
return SnorePlugin::staticMetaObject.enumerator(SnorePlugin::staticMetaObject.indexOfEnumerator("PluginType")).valueToKey(t);
}
const QList<SnorePlugin::PluginTypes> &PluginContainer::types()
@ -135,9 +126,10 @@ void PluginContainer::updatePluginCache()
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();
QPluginLoader loader(file.absoluteFilePath());
@ -154,8 +146,8 @@ void PluginContainer::updatePluginCache()
loader.unload();
continue;
}
PluginContainer *info = new PluginContainer(file.fileName(), sp->name() ,PluginContainer::typeFromString(type));
s_pluginCache[info->type()].insert(info->name(),info);
PluginContainer *info = new PluginContainer(file.fileName(), sp->name() ,type);
s_pluginCache[type].insert(info->name(),info);
plugins << info;
snoreDebug( SNORE_DEBUG ) << "added" << info->name() << "to cache";
}

View File

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

View File

@ -55,7 +55,7 @@ SnoreCore::~SnoreCore()
void SnoreCore::loadPlugins( SnorePlugin::PluginTypes types )
{
Q_D(SnoreCore);
foreach ( PluginContainer *info, PluginContainer::pluginCache(types).values())
foreach( PluginContainer *info, PluginContainer::pluginCache(types).values())
{
switch(info->type())
{
@ -75,7 +75,11 @@ void SnoreCore::loadPlugins( SnorePlugin::PluginTypes types )
continue;
}
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;
}
@ -123,25 +127,19 @@ const QHash<QString, Application> &SnoreCore::aplications() const
const QStringList SnoreCore::notificationBackends() const
{
Q_D(const SnoreCore);
QStringList out(d->m_plugins.values(SnorePlugin::BACKEND));
qSort(out);
return out;
return d->m_plugins.value(SnorePlugin::BACKEND);
}
const QStringList SnoreCore::notificationFrontends() const
{
Q_D(const SnoreCore);
QStringList out(d->m_plugins.values(SnorePlugin::FRONTEND));
qSort(out);
return out;
return d->m_plugins.value(SnorePlugin::FRONTEND);
}
const QStringList SnoreCore::secondaryNotificationBackends() const
{
Q_D(const SnoreCore);
QStringList out(d->m_plugins.values(SnorePlugin::SECONDARY_BACKEND));
qSort(out);
return out;
return d->m_plugins.value(SnorePlugin::SECONDARY_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)
{
Q_Q(SnoreCore);
if( m_plugins.contains(SnorePlugin::BACKEND, backend))
if( m_plugins[SnorePlugin::BACKEND].contains(backend))
{
return q->setPrimaryNotificationBackend(backend);
}

View File

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