aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/coreplugin/plugindialog.cpp
diff options
context:
space:
mode:
authorLasse Holmstedt <lasse.holmstedt@nokia.com>2010-03-12 16:02:23 +0100
committerLasse Holmstedt <lasse.holmstedt@nokia.com>2010-03-12 16:02:42 +0100
commit68c49a65e903c0b0cdda3322c843338cdf6f9900 (patch)
tree5a02ee898c8f6004ee6f05de22c8e77b3c62c011 /src/plugins/coreplugin/plugindialog.cpp
parentf4487c4c6728ec315f133479c07ab04332bdeffc (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.cpp31
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);