ability to disable specific plugins

svn path=/trunk/kdesupport/qca/; revision=657399
This commit is contained in:
Justin Karneges 2007-04-23 22:58:40 +00:00
parent b218ee2e86
commit 88734f5593
2 changed files with 38 additions and 2 deletions

View File

@ -38,6 +38,7 @@ private:
mutable QMutex m;
bool _use_system;
QString _roots_file;
QStringList _skip_plugins;
public:
DefaultShared() : _use_system(true)
@ -56,11 +57,18 @@ public:
return _roots_file;
}
void set(bool use_system, const QString &roots_file)
QStringList skip_plugins() const
{
QMutexLocker locker(&m);
return _skip_plugins;
}
void set(bool use_system, const QString &roots_file, const QStringList &skip_plugins)
{
QMutexLocker locker(&m);
_use_system = use_system;
_roots_file = roots_file;
_skip_plugins = skip_plugins;
}
};
@ -751,6 +759,8 @@ static QString escape_string(const QString &in)
out += "\\\\";
else if(in[n] == ':')
out += "\\c";
else if(in[n] == ',')
out += "\\o";
else
out += in[n];
}
@ -770,6 +780,8 @@ static QString unescape_string(const QString &in)
out += '\\';
else if(in[n + 1] == 'c')
out += ':';
else if(in[n + 1] == 'o')
out += ',';
++n;
}
}
@ -1116,6 +1128,7 @@ public:
config["formtype"] = "http://affinix.com/qca/forms/default#1.0";
config["use_system"] = true;
config["roots_file"] = QString();
config["skip_plugins"] = QString();
return config;
}
@ -1123,7 +1136,14 @@ public:
{
bool use_system = config["use_system"].toBool();
QString roots_file = config["roots_file"].toString();
shared.set(use_system, roots_file);
QString skip_plugins_str = config["skip_plugins"].toString();
QStringList skip_plugins = skip_plugins_str.split(",");
for(int n = 0; n < skip_plugins.count(); ++n)
{
QString &s = skip_plugins[n];
s = unescape_string(s).trimmed();
}
shared.set(use_system, roots_file, skip_plugins);
}
};
@ -1132,6 +1152,12 @@ Provider *create_default_provider()
return new DefaultProvider;
}
QStringList skip_plugins(Provider *defaultProvider)
{
DefaultProvider *that = (DefaultProvider *)defaultProvider;
return that->shared.skip_plugins();
}
#include "qca_default.moc"
}

View File

@ -41,6 +41,9 @@ namespace QCA {
// from qca_core.cpp
QVariantMap getProviderConfig_internal(Provider *p);
// from qca_default.cpp
QStringList skip_plugins(Provider *defaultProvider);
static ProviderManager *g_pluginman = 0;
static void logDebug(const QString &str)
@ -363,6 +366,13 @@ void ProviderManager::scan()
continue;
}
if(skip_plugins(def).contains(i->p->name()))
{
logDebug("skipping, explicitly disabled");
delete i;
continue;
}
addItem(i, -1);
}
}