void PluginStateService::setPluginStates(QMap<QString, PluginState> pluginStates) noexcept { auto setToNew = QSet<QString>{}; for (auto &plugin : m_pluginStates.keys()) if (!pluginStates.contains(plugin)) setToNew.insert(plugin); for (auto &plugin : setToNew) setPluginState(plugin, PluginState::New); for (auto &plugin : pluginStates.keys()) setPluginState(plugin, pluginStates.value(plugin)); }
void PluginManager::loadPlugins() { Q_FOREACH (PluginSpec *spec, m_pluginSpecs) setPluginState(spec, State::Resolved); QList<PluginSpec *> queue = loadQueue(); Q_FOREACH (PluginSpec *spec, queue) setPluginState(spec, State::Loaded); Q_FOREACH (PluginSpec *spec, queue) setPluginState(spec, State::Initialized); QListIterator<PluginSpec *> it(queue); it.toBack(); while (it.hasPrevious()) setPluginState(it.previous(), State::Running); Q_EMIT pluginsChanged(); }