diff options
Diffstat (limited to 'src/browser.cpp')
-rw-r--r-- | src/browser.cpp | 38 |
1 files changed, 17 insertions, 21 deletions
diff --git a/src/browser.cpp b/src/browser.cpp index 86d8f13..20367aa 100644 --- a/src/browser.cpp +++ b/src/browser.cpp @@ -125,10 +125,10 @@ void Browser::loadProfiles(const QStringList &profilePaths) } } -QPluginLoader *Browser::addPlugin(const QString &path) +void Browser::loadPlugins(const QStringList &paths, const std::function<void(const QPluginLoader *)> &callback) { - if(path.isEmpty()) - return nullptr; + if(paths.isEmpty()) + return; Configuration conf; const PluginLoader::SignatureState state( @@ -136,33 +136,29 @@ QPluginLoader *Browser::addPlugin(const QString &path) conf.value<bool>("plugins.signature.checked").value(), conf.value<bool>("plugins.signature.enforced").value()); - auto *loader = new PluginLoader(path, state, this); - const bool loaded = loader->load(); - spdlog::info("Loading plugin [{}]: {}", qUtf8Printable(path), loaded ? "passed" : "failed"); + for(const auto &path : paths) { + auto *loader = new PluginLoader(path, state, this); + const bool loaded = loader->load(); - if(!loaded) { - delete loader; - return nullptr; - } + callback(loader); - auto *info = new PluginInfo(loader); - m_plugins.append(info); + if(!loaded) { + delete loader; + } else { + auto *info = new PluginInfo(loader); + m_plugins.append(info); - for(MainWindow *window : qAsConst(m_windows)) { - addPluginTo(info, window); + for(MainWindow *window : qAsConst(m_windows)) { + addPluginTo(info, window); + } + } } - - return loader; } -void Browser::setup(QVector<QPluginLoader *> plugins) +void Browser::setup() { Configuration conf; - for(QPluginLoader *loader : plugins) { - m_plugins.append(new PluginInfo(loader)); - } - if(auto stylesheet = conf.value<QString>("browser.stylesheet")) { QFile f(stylesheet.value()); if(f.open(QIODevice::ReadOnly)) { |