Fix PluginView to handle dependencies when disabling plugins

Reviewed-by: con
This commit is contained in:
Lasse Holmstedt
2010-05-19 16:29:47 +02:00
parent 7948147410
commit 5570764103
7 changed files with 67 additions and 31 deletions

View File

@@ -500,6 +500,11 @@ void PluginSpec::setEnabled(bool value)
d->enabled = value;
}
void PluginSpec::setDisabledIndirectly(bool value)
{
d->disabledIndirectly = value;
}
/*!
\fn bool PluginSpecPrivate::reportError(const QString &err)
\internal
@@ -799,11 +804,7 @@ bool PluginSpecPrivate::resolveDependencies(const QList<PluginSpec *> &specs)
foreach (PluginSpec *spec, specs) {
if (spec->provides(dependency.name, dependency.version)) {
found = spec;
if (!spec->isEnabled() || spec->isDisabledIndirectly())
disabledIndirectly = true;
spec->d->addProvidesForPlugin(q);
break;
}
}
@@ -822,12 +823,26 @@ bool PluginSpecPrivate::resolveDependencies(const QList<PluginSpec *> &specs)
dependencySpecs = resolvedDependencies;
if (enabled && !disabledIndirectly)
state = PluginSpec::Resolved;
state = PluginSpec::Resolved;
return true;
}
void PluginSpecPrivate::disableIndirectlyIfDependencyDisabled()
{
disabledIndirectly = false;
if (!enabled)
return;
foreach (PluginSpec *dependencySpec, dependencySpecs) {
if (dependencySpec->isDisabledIndirectly() || !dependencySpec->isEnabled()) {
disabledIndirectly = true;
break;
}
}
}
/*!
\fn bool PluginSpecPrivate::loadLibrary()
\internal