diff options
author | Lasse Holmstedt <lasse.holmstedt@nokia.com> | 2010-03-12 16:02:23 +0100 |
---|---|---|
committer | Lasse Holmstedt <lasse.holmstedt@nokia.com> | 2010-03-12 16:02:42 +0100 |
commit | 68c49a65e903c0b0cdda3322c843338cdf6f9900 (patch) | |
tree | 5a02ee898c8f6004ee6f05de22c8e77b3c62c011 /src/plugins/coreplugin/plugindialog.cpp | |
parent | f4487c4c6728ec315f133479c07ab04332bdeffc (diff) |
Plugin manager for enabling/disabling plugins
Go to About Plugins and enable/disable plugins from there.
Reviewed-by: mae
Diffstat (limited to 'src/plugins/coreplugin/plugindialog.cpp')
-rw-r--r-- | src/plugins/coreplugin/plugindialog.cpp | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/src/plugins/coreplugin/plugindialog.cpp b/src/plugins/coreplugin/plugindialog.cpp index 8549d356c6..7d9387f4bd 100644 --- a/src/plugins/coreplugin/plugindialog.cpp +++ b/src/plugins/coreplugin/plugindialog.cpp @@ -40,10 +40,13 @@ #include <QtGui/QDialog> #include <QtGui/QDialogButtonBox> #include <QtGui/QPushButton> +#include <QtGui/QLabel> #include <QtDebug> using namespace Core::Internal; +bool PluginDialog::m_isRestartRequired = false; + PluginDialog::PluginDialog(QWidget *parent) : QDialog(parent), m_view(new ExtensionSystem::PluginView(ExtensionSystem::PluginManager::instance(), this)) @@ -59,14 +62,21 @@ PluginDialog::PluginDialog(QWidget *parent) m_closeButton->setEnabled(true); m_closeButton->setDefault(true); + m_restartRequired = new QLabel(tr("Restart required."), this); + if (!m_isRestartRequired) + m_restartRequired->setVisible(false); + QHBoxLayout *hl = new QHBoxLayout; hl->addWidget(m_detailsButton); hl->addWidget(m_errorDetailsButton); + hl->addSpacing(10); + hl->addWidget(m_restartRequired); hl->addStretch(5); hl->addWidget(m_closeButton); vl->addLayout(hl); + resize(650, 400); setWindowTitle(tr("Installed Plugins")); @@ -74,18 +84,35 @@ PluginDialog::PluginDialog(QWidget *parent) this, SLOT(updateButtons())); connect(m_view, SIGNAL(pluginActivated(ExtensionSystem::PluginSpec*)), this, SLOT(openDetails(ExtensionSystem::PluginSpec*))); + connect(m_view, SIGNAL(pluginSettingsChanged(ExtensionSystem::PluginSpec*)), + this, SLOT(updateRestartRequired())); connect(m_detailsButton, SIGNAL(clicked()), this, SLOT(openDetails())); connect(m_errorDetailsButton, SIGNAL(clicked()), this, SLOT(openErrorDetails())); - connect(m_closeButton, SIGNAL(clicked()), this, SLOT(accept())); + connect(m_closeButton, SIGNAL(clicked()), this, SLOT(closeDialog())); updateButtons(); } +void PluginDialog::closeDialog() +{ + ExtensionSystem::PluginManager::instance()->writeSettings(); + accept(); +} + +void PluginDialog::updateRestartRequired() +{ + // just display the notice all the time after once changing something + m_isRestartRequired = true; + m_restartRequired->setVisible(true); +} + void PluginDialog::updateButtons() { ExtensionSystem::PluginSpec *selectedSpec = m_view->currentPlugin(); if (selectedSpec) { m_detailsButton->setEnabled(true); - m_errorDetailsButton->setEnabled(selectedSpec->hasError()); + m_errorDetailsButton->setEnabled(selectedSpec->hasError() + || selectedSpec->ignoreOnStartup() + || !selectedSpec->loadOnStartup()); } else { m_detailsButton->setEnabled(false); m_errorDetailsButton->setEnabled(false); |