1
mirror of https://invent.kde.org/network/falkon.git synced 2024-12-20 10:46:35 +01:00

Plugins: Save only filename of loaded plugins

Instead of saving full plugin library path in non-portable mode.
This commit is contained in:
David Rosca 2018-02-23 19:36:08 +01:00
parent 86d3ebebc7
commit f27bc89019
No known key found for this signature in database
GPG Key ID: EBC3FC294452C6D8
2 changed files with 19 additions and 18 deletions

View File

@ -88,13 +88,6 @@ void Plugins::loadSettings()
settings.beginGroup("Plugin-Settings"); settings.beginGroup("Plugin-Settings");
m_allowedPlugins = settings.value("AllowedPlugins", QStringList()).toStringList(); m_allowedPlugins = settings.value("AllowedPlugins", QStringList()).toStringList();
settings.endGroup(); settings.endGroup();
// Plugins are saved with relative path in portable mode
if (mApp->isPortable()) {
QDir dir(DataPaths::path(DataPaths::Plugins));
for (int i = 0; i < m_allowedPlugins.count(); ++i)
m_allowedPlugins[i] = dir.absoluteFilePath(QFileInfo(m_allowedPlugins[i]).fileName());
}
} }
void Plugins::shutdown() void Plugins::shutdown()
@ -111,7 +104,24 @@ void Plugins::loadPlugins()
settingsDir.mkdir(settingsDir.absolutePath()); settingsDir.mkdir(settingsDir.absolutePath());
} }
foreach (const QString &fullPath, m_allowedPlugins) { foreach (const QString &pluginFile, m_allowedPlugins) {
QString fullPath;
if (QFileInfo(pluginFile).isAbsolute()) {
fullPath = pluginFile;
} else {
const QStringList dirs = DataPaths::allPaths(DataPaths::Plugins);
for (const QString &dir : dirs) {
fullPath = dir + QL1C('/') + pluginFile;
if (QFileInfo::exists(fullPath)) {
break;
}
}
if (!QFileInfo::exists(fullPath)) {
qWarning() << "Plugin" << pluginFile << "not found";
continue;
}
}
QPluginLoader* loader = new QPluginLoader(fullPath); QPluginLoader* loader = new QPluginLoader(fullPath);
PluginInterface* iPlugin = qobject_cast<PluginInterface*>(loader->instance()); PluginInterface* iPlugin = qobject_cast<PluginInterface*>(loader->instance());

View File

@ -74,16 +74,7 @@ void PluginsManager::save()
if (item->checkState() == Qt::Checked) { if (item->checkState() == Qt::Checked) {
const Plugins::Plugin plugin = item->data(Qt::UserRole + 10).value<Plugins::Plugin>(); const Plugins::Plugin plugin = item->data(Qt::UserRole + 10).value<Plugins::Plugin>();
allowedPlugins.append(plugin.fileName);
// Save plugins with relative path in portable mode
#ifdef NO_SYSTEM_DATAPATH
if (true)
#else
if (mApp->isPortable())
#endif
allowedPlugins.append(plugin.fileName);
else
allowedPlugins.append(plugin.fullPath);
} }
} }