PluginItem::PluginItem(const QString& pluginVersion, int id, const QString& pluginTitle,const QString& pluginDescription,const QString& status, const QString& file_name, const QString& file_hash, const QString& error_string, const QIcon& icon) :QWidget(NULL) { setupUi(this) ; _id = id ; _statusLabel->setText(status) ; _statusLabel->setToolTip(error_string); _hashLabel->setText(file_hash) ; _name_LE->setText(file_name) ; _pluginIcon->setIcon(icon) ; _pluginIcon->setText(QString()) ; msgLabel->setText(pluginDescription) ; subjectLabel->setText(pluginTitle + " "+ pluginVersion) ; infoLabel->setText(pluginTitle + " " + tr("will be enabled after your restart RetroShare.")) ; infoLabel->hide(); QObject::connect(_configure_PB,SIGNAL(clicked()),this,SLOT(configurePlugin())) ; QObject::connect(_about_PB,SIGNAL(clicked()),this,SLOT(aboutPlugin())) ; QObject::connect(enableButton,SIGNAL(clicked()),this,SLOT(enablePlugin())) ; QObject::connect(disableButton,SIGNAL(clicked()),this,SLOT(disablePlugin())) ; expandFrame->hide(); }
void PluginManager::disablePlugins() { // We disable plugins in an explicit step so allow plugins // being disabled to obtain other plugins and operate on them. for( size_t i = 0; i < plugins.size(); i++ ) { Plugin* plugin = plugins[i]; disablePlugin(plugin); } }
/** Unload a plugin by its name. */ bool PluginManager::unloadPlugin(const QString &absFilePath) { BasicPlugin *basic = _loadedPlugins.value(absFilePath); for (QObject *dependency : _dependencies.values(basic->name())) { if (QAction *action = qobject_cast<QAction*>(dependency)) { QMenu *menu = qobject_cast<QMenu*>(action->parent()); menu->removeAction(action); } else if (QMenu *menu = qobject_cast<QMenu*>(dependency)) { delete menu; } } _loadedPlugins.remove(absFilePath); _dependencies.remove(basic->name()); basic->cleanUpBeforeDestroy(); delete basic; basic = nullptr; auto settings = SettingsPrivate::instance(); settings->disablePlugin(absFilePath); return true; }
void PluginManager::disablePlugins() { std::vector<Plugin *> plugins = getPlugins(); for(int i = plugins.size() - 1; i >= 0; i--) disablePlugin(plugins[i]); }