/* * Copyright (C) 2011 ~ 2018 Deepin Technology Co., Ltd. * * Author: sbw * * Maintainer: sbw * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "pluginloader.h" #include #include #include #include #include DCORE_USE_NAMESPACE PluginLoader::PluginLoader(const QString &pluginDirPath, QObject *parent) : QThread(parent) , m_pluginDirPath(pluginDirPath) { } void PluginLoader::run() { QDir pluginsDir(m_pluginDirPath); const QStringList files = pluginsDir.entryList(QDir::Files); auto getDisablePluginList = [ = ] { if (QGSettings::isSchemaInstalled("com.deepin.dde.dock.disableplugins")) { QGSettings gsetting("com.deepin.dde.dock.disableplugins", "/com/deepin/dde/dock/disableplugins/"); return gsetting.get("disable-plugins-list").toStringList(); } return QStringList(); }; const QStringList disable_plugins_list = getDisablePluginList(); QStringList plugins; // 查找可用插件 for (QString file : files) { if (!QLibrary::isLibrary(file)) continue; // 社区版需要加载键盘布局,其他不需要 if (file.contains("libkeyboard-layout") && !DSysInfo::isCommunityEdition()) continue; // TODO: old dock plugins is uncompatible if (file.startsWith("libdde-dock-")) continue; if (disable_plugins_list.contains(file)) { qDebug() << "disable loading plugin:" << file; continue; } plugins << file; } for (auto plugin : plugins) { emit pluginFounded(pluginsDir.absoluteFilePath(plugin)); } emit finished(); }