Пример #1
0
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();
}
Пример #2
0
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);
	}
}
Пример #3
0
/** 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;
}
Пример #4
0
void PluginManager::disablePlugins()
{
	std::vector<Plugin *> plugins = getPlugins();
	for(int i = plugins.size() - 1; i >= 0; i--)
		disablePlugin(plugins[i]);
}