Support an "experimental" attribute in plugin specs.

A flag that marks a plugin to be experimental, that should not be loaded
by default.
This commit is contained in:
con
2010-03-30 16:54:29 +02:00
parent 3319797d20
commit 89416bed3d
8 changed files with 58 additions and 16 deletions

View File

@@ -48,6 +48,7 @@
#endif
static const char * const C_IGNORED_PLUGINS = "Plugins/Ignored";
static const char * const C_FORCEENABLED_PLUGINS = "Plugins/ForceEnabled";
typedef QList<ExtensionSystem::PluginSpec *> PluginSpecSet;
@@ -624,12 +625,16 @@ void PluginManagerPrivate::writeSettings()
QLatin1String("Nokia"), QLatin1String("QtCreator"));
QStringList tempDisabledPlugins;
QStringList tempForceEnabledPlugins;
foreach(PluginSpec *spec, pluginSpecs) {
if (!spec->isEnabled())
if (!spec->isExperimental() && !spec->isEnabled())
tempDisabledPlugins.append(spec->name());
if (spec->isExperimental() && spec->isEnabled())
tempForceEnabledPlugins.append(spec->name());
}
settings.setValue(QLatin1String(C_IGNORED_PLUGINS), tempDisabledPlugins);
settings.setValue(QLatin1String(C_FORCEENABLED_PLUGINS), tempForceEnabledPlugins);
}
void PluginManagerPrivate::loadSettings()
@@ -638,6 +643,7 @@ void PluginManagerPrivate::loadSettings()
QLatin1String("Nokia"), QLatin1String("QtCreator"));
disabledPlugins = settings.value(QLatin1String(C_IGNORED_PLUGINS)).toStringList();
forceEnabledPlugins = settings.value(QLatin1String(C_FORCEENABLED_PLUGINS)).toStringList();
}
void PluginManagerPrivate::stopAll()
@@ -883,7 +889,9 @@ void PluginManagerPrivate::readPluginPaths()
collection = new PluginCollection(spec->category());
pluginCategories.insert(spec->category(), collection);
}
if (disabledPlugins.contains(spec->name()))
if (spec->isExperimental() && forceEnabledPlugins.contains(spec->name()))
spec->setEnabled(true);
if (!spec->isExperimental() && disabledPlugins.contains(spec->name()))
spec->setEnabled(false);
collection->addPlugin(spec);