This commit is contained in:
Patrick von Reth 2015-05-19 14:51:30 +02:00
parent d795a81a1d
commit 58657bfd5b
3 changed files with 16 additions and 22 deletions

View File

@ -129,7 +129,7 @@ QString SnorePlugin::typeToString(const SnorePlugin::PluginTypes t)
return SnorePlugin::staticMetaObject.enumerator(SnorePlugin::staticMetaObject.indexOfEnumerator("PluginType")).valueToKey(t); return SnorePlugin::staticMetaObject.enumerator(SnorePlugin::staticMetaObject.indexOfEnumerator("PluginType")).valueToKey(t);
} }
const QList<SnorePlugin::PluginTypes> &SnorePlugin::types() QList<SnorePlugin::PluginTypes> SnorePlugin::types()
{ {
static QList<SnorePlugin::PluginTypes> t; static QList<SnorePlugin::PluginTypes> t;
if (t.isEmpty()) { if (t.isEmpty()) {

View File

@ -45,7 +45,7 @@ public:
static PluginTypes typeFromString(const QString &t); static PluginTypes typeFromString(const QString &t);
static QString typeToString(const PluginTypes t); static QString typeToString(const PluginTypes t);
static const QList<PluginTypes> &types(); static QList<PluginTypes> types();
SnorePlugin(const QString &name); SnorePlugin(const QString &name);
virtual ~SnorePlugin(); virtual ~SnorePlugin();

View File

@ -146,8 +146,8 @@ void SnoreCorePrivate::init()
void SnoreCorePrivate::syncSettings() void SnoreCorePrivate::syncSettings()
{ {
Q_Q(SnoreCore); Q_Q(SnoreCore);
QString newBackend = q->value("PrimaryBackend", LOCAL_SETTING); QString newBackend = q->value("PrimaryBackend", LOCAL_SETTING).toString();
if (newBackend) { if (!newBackend.isEmpty()) {
QString oldBackend; QString oldBackend;
if (m_notificationBackend) { if (m_notificationBackend) {
oldBackend = m_notificationBackend->name(); oldBackend = m_notificationBackend->name();
@ -159,25 +159,19 @@ void SnoreCorePrivate::syncSettings()
setBackendIfAvailible(oldBackend); setBackendIfAvailible(oldBackend);
} }
} }
//TODO: cleanup
auto syncPluginStatus = [&](const QString & pluginName) {
SnorePlugin *plugin = m_plugins.value(pluginName);
bool enable = m_plugins[pluginName]->value("Enabled", LOCAL_SETTING).toBool();
if (!plugin->isInitialized() && enable) {
plugin->initialize();
} else if (plugin->isInitialized() && !enable) {
plugin->deinitialize();
}
};
for (auto pluginName : m_pluginNames[SnorePlugin::SECONDARY_BACKEND]) { auto types = SnorePlugin::types();
syncPluginStatus(pluginName); types.removeOne(SnorePlugin::BACKEND);
} for(auto type : types) {
for (auto pluginName : m_pluginNames[SnorePlugin::FRONTEND]) { for (auto &pluginName : m_pluginNames[type]) {
syncPluginStatus(pluginName); SnorePlugin *plugin = m_plugins.value(pluginName);
} bool enable = m_plugins[pluginName]->value("Enabled", LOCAL_SETTING).toBool();
for (auto pluginName : m_pluginNames[SnorePlugin::PLUGIN]) { if (!plugin->isInitialized() && enable) {
syncPluginStatus(pluginName); plugin->initialize();
} else if (plugin->isInitialized() && !enable) {
plugin->deinitialize();
}
}
} }
} }