aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/extensionmanager/extensionmanagerwidget.cpp
diff options
context:
space:
mode:
authorAlessandro Portale <[email protected]>2024-06-25 16:43:07 +0200
committerAlessandro Portale <[email protected]>2024-06-25 15:09:32 +0000
commit5be68d7256dbf9de22c10589e061c17d98361199 (patch)
tree1ab1759f112c2e56b009d4f0fa81de0ab785460e /src/plugins/extensionmanager/extensionmanagerwidget.cpp
parentbb32b446718c8e784fb899534070e3f268fd32a0 (diff)
ExtensionManager: Enable/disable dependencies, inform users accordingly
This instantiates PluginView in order to use setPluginsEnabled. It enables dependencies of a plugin that is being enabled. Likewise, it disables dependent plugins when users disable a plugin. In both cases, the user sees the familiar info dialog. On confirmation, a "Restart now" button is shown. Change-Id: Ie74ed377bfdd1ce3cb06289c2aae78377475bc53 Reviewed-by: Alessandro Portale <[email protected]> Reviewed-by: hjk <[email protected]>
Diffstat (limited to 'src/plugins/extensionmanager/extensionmanagerwidget.cpp')
-rw-r--r--src/plugins/extensionmanager/extensionmanagerwidget.cpp19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/plugins/extensionmanager/extensionmanagerwidget.cpp b/src/plugins/extensionmanager/extensionmanagerwidget.cpp
index 6606b2d0bbc..3b16f0d9c84 100644
--- a/src/plugins/extensionmanager/extensionmanagerwidget.cpp
+++ b/src/plugins/extensionmanager/extensionmanagerwidget.cpp
@@ -16,6 +16,7 @@
#include <extensionsystem/pluginmanager.h>
#include <extensionsystem/pluginspec.h>
+#include <extensionsystem/pluginview.h>
#include <solutions/tasking/networkquery.h>
#include <solutions/tasking/tasktree.h>
@@ -279,21 +280,33 @@ public:
{
m_label = new InfoLabel;
m_checkBox = new QCheckBox(Tr::tr("Load on Start"));
+ m_restartButton = new Button("Restart now", Button::MediumPrimary);
+ m_restartButton->setVisible(false);
+ m_pluginView.hide();
using namespace Layouting;
Column {
m_label,
m_checkBox,
+ m_restartButton,
}.attachTo(this);
connect(m_checkBox, &QCheckBox::clicked, this, [this](bool checked) {
ExtensionSystem::PluginSpec *spec = ExtensionsModel::pluginSpecForName(m_pluginName);
if (spec == nullptr)
return;
- spec->setEnabledBySettings(checked);
- ExtensionSystem::PluginManager::writeSettings();
+ const bool doIt = m_pluginView.data().setPluginsEnabled({spec}, checked);
+ if (doIt) {
+ m_restartButton->show();
+ ExtensionSystem::PluginManager::writeSettings();
+ } else {
+ m_checkBox->setChecked(!checked);
+ }
});
+ connect(m_restartButton, &QAbstractButton::clicked,
+ ICore::instance(), &ICore::restart, Qt::QueuedConnection);
+
update();
}
@@ -328,7 +341,9 @@ private:
InfoLabel *m_label;
QCheckBox *m_checkBox;
+ QAbstractButton *m_restartButton;
QString m_pluginName;
+ ExtensionSystem::PluginView m_pluginView{this};
};
class TagList : public QWidget