Changeset View
Changeset View
Standalone View
Standalone View
kerfuffle/pluginmanager.cpp
Show All 20 Lines | |||||
21 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 21 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||
22 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION ) HOWEVER CAUSED AND ON ANY | 22 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION ) HOWEVER CAUSED AND ON ANY | ||
23 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 23 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * ( INCLUDING NEGLIGENCE OR OTHERWISE ) ARISING IN ANY WAY OUT OF THE USE OF | 24 | * ( INCLUDING NEGLIGENCE OR OTHERWISE ) ARISING IN ANY WAY OUT OF THE USE OF | ||
25 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 25 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | 26 | */ | ||
27 | 27 | | |||
28 | #include "pluginmanager.h" | 28 | #include "pluginmanager.h" | ||
29 | #include "ark_debug.h" | ||||
30 | #include "settings.h" | ||||
29 | 31 | | |||
30 | #include <KConfigGroup> | 32 | #include <KConfigGroup> | ||
31 | #include <KPluginLoader> | 33 | #include <KPluginLoader> | ||
32 | #include <KSharedConfig> | 34 | #include <KSharedConfig> | ||
33 | 35 | | |||
34 | #include <QMimeDatabase> | 36 | #include <QMimeDatabase> | ||
35 | #include <QSet> | 37 | #include <QSet> | ||
36 | 38 | | |||
▲ Show 20 Lines • Show All 153 Lines • ▼ Show 20 Line(s) | 178 | { | |||
190 | } | 192 | } | ||
191 | 193 | | |||
192 | return filteredPlugins; | 194 | return filteredPlugins; | ||
193 | } | 195 | } | ||
194 | 196 | | |||
195 | void PluginManager::loadPlugins() | 197 | void PluginManager::loadPlugins() | ||
196 | { | 198 | { | ||
197 | const QVector<KPluginMetaData> plugins = KPluginLoader::findPlugins(QStringLiteral("kerfuffle")); | 199 | const QVector<KPluginMetaData> plugins = KPluginLoader::findPlugins(QStringLiteral("kerfuffle")); | ||
198 | // This class might be used from executables other than ark (e.g. the tests), | | |||
199 | // so we need to specify the name of the config file. | | |||
200 | // TODO: once we have a GUI in the settings dialog, | | |||
201 | // use this group to write whether a plugin gets disabled. | | |||
202 | const KConfigGroup conf(KSharedConfig::openConfig(QStringLiteral("arkrc")), "EnabledPlugins"); | | |||
203 | | ||||
204 | QSet<QString> addedPlugins; | 200 | QSet<QString> addedPlugins; | ||
205 | foreach (const KPluginMetaData &metaData, plugins) { | 201 | foreach (const KPluginMetaData &metaData, plugins) { | ||
206 | const auto pluginId = metaData.pluginId(); | 202 | const auto pluginId = metaData.pluginId(); | ||
207 | // Filter out duplicate plugins. | 203 | // Filter out duplicate plugins. | ||
208 | if (addedPlugins.contains(pluginId)) { | 204 | if (addedPlugins.contains(pluginId)) { | ||
209 | continue; | 205 | continue; | ||
210 | } | 206 | } | ||
211 | 207 | | |||
212 | Plugin *plugin = new Plugin(this, metaData); | 208 | Plugin *plugin = new Plugin(this, metaData); | ||
213 | plugin->setEnabled(conf.readEntry(pluginId, true)); | 209 | plugin->setEnabled(!ArkSettings::disabledPlugins().contains(pluginId)); | ||
214 | addedPlugins << pluginId; | 210 | addedPlugins << pluginId; | ||
215 | m_plugins << plugin; | 211 | m_plugins << plugin; | ||
216 | } | 212 | } | ||
217 | } | 213 | } | ||
218 | 214 | | |||
219 | QVector<Plugin*> PluginManager::preferredPluginsFor(const QMimeType &mimeType, bool readWrite) const | 215 | QVector<Plugin*> PluginManager::preferredPluginsFor(const QMimeType &mimeType, bool readWrite) const | ||
220 | { | 216 | { | ||
221 | QVector<Plugin*> preferredPlugins = filterBy((readWrite ? availableWritePlugins() : availablePlugins()), mimeType); | 217 | QVector<Plugin*> preferredPlugins = filterBy((readWrite ? availableWritePlugins() : availablePlugins()), mimeType); | ||
Show All 28 Lines |