From 5696f6ecdaae262853e075c981c5ad8f5bea6349 Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Fri, 13 Sep 2024 19:13:15 +0200 Subject: [PATCH] ExtensionManager: Add Settings button to ExtensionsBrowser The settings button opens the page where users can allow usage of the remote repository. A change of that setting triggers a refresh of extensions. Change-Id: Ic7269f890b6e5ac3ffdc294203e7ffcaaaace966 Reviewed-by: hjk --- .../extensionmanagerconstants.h | 1 + .../extensionmanagersettings.cpp | 4 +++- .../extensionmanager/extensionsbrowser.cpp | 17 ++++++++++++++++- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/plugins/extensionmanager/extensionmanagerconstants.h b/src/plugins/extensionmanager/extensionmanagerconstants.h index 8605cae6c1e..6b79e9b5bbf 100644 --- a/src/plugins/extensionmanager/extensionmanagerconstants.h +++ b/src/plugins/extensionmanager/extensionmanagerconstants.h @@ -7,5 +7,6 @@ namespace ExtensionManager::Constants { const char MODE_EXTENSIONMANAGER[] = "ExtensionManager"; const char C_EXTENSIONMANAGER[] = "ExtensionManager"; +const char EXTENSIONMANAGER_SETTINGSPAGE_ID[] = "ExtensionManager.ExtensionManagerSettings"; } // ExtensionManager::Constant diff --git a/src/plugins/extensionmanager/extensionmanagersettings.cpp b/src/plugins/extensionmanager/extensionmanagersettings.cpp index 711f955cd31..2dcb305b108 100644 --- a/src/plugins/extensionmanager/extensionmanagersettings.cpp +++ b/src/plugins/extensionmanager/extensionmanagersettings.cpp @@ -2,6 +2,8 @@ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #include "extensionmanagersettings.h" + +#include "extensionmanagerconstants.h" #include "extensionmanagertr.h" #include @@ -53,7 +55,7 @@ class ExtensionManagerSettingsPage : public Core::IOptionsPage public: ExtensionManagerSettingsPage() { - setId("ExtensionManager"); + setId(Constants::EXTENSIONMANAGER_SETTINGSPAGE_ID); setDisplayName(Tr::tr("Extensions")); setCategory(Core::Constants::SETTINGS_CATEGORY_CORE); setSettingsProvider([] { return &settings(); }); diff --git a/src/plugins/extensionmanager/extensionsbrowser.cpp b/src/plugins/extensionmanager/extensionsbrowser.cpp index 3db42bfc5c9..5b7ad188cbc 100644 --- a/src/plugins/extensionmanager/extensionsbrowser.cpp +++ b/src/plugins/extensionmanager/extensionsbrowser.cpp @@ -3,9 +3,10 @@ #include "extensionsbrowser.h" +#include "extensionmanagerconstants.h" +#include "extensionmanagersettings.h" #include "extensionmanagertr.h" #include "extensionsmodel.h" -#include "extensionmanagersettings.h" #ifdef WITH_TESTS #include "extensionmanager_test.h" @@ -35,6 +36,7 @@ #include #include #include +#include #include #include @@ -43,6 +45,7 @@ #include #include #include +#include #include using namespace Core; @@ -521,6 +524,10 @@ ExtensionsBrowser::ExtensionsBrowser(ExtensionsModel *model, QWidget *parent) d->sortChooser->addItems(Utils::transform(SortFilterProxyModel::sortOptions(), &SortFilterProxyModel::SortOption::displayName)); + auto settingsToolButton = new QPushButton; + settingsToolButton->setIcon(Icons::SETTINGS.icon()); + settingsToolButton->setFlat(true); + d->extensionsView = new QListView; d->extensionsView->setFrameStyle(QFrame::NoFrame); d->extensionsView->setItemDelegate(new ExtensionItemDelegate(this)); @@ -547,6 +554,7 @@ ExtensionsBrowser::ExtensionsBrowser(ExtensionsModel *model, QWidget *parent) Space(HGapS), d->sortChooser, st, + settingsToolButton, customMargins(0, 0, extraListViewWidth() + gapSize, 0), }, d->extensionsView, @@ -580,6 +588,13 @@ ExtensionsBrowser::ExtensionsBrowser(ExtensionsModel *model, QWidget *parent) d->sortFilterProxyModel, &SortFilterProxyModel::setSortOption); connect(d->filterChooser, &OptionChooser::currentIndexChanged, d->sortFilterProxyModel, &SortFilterProxyModel::setFilterOption); + connect(settingsToolButton, &QAbstractButton::pressed, this, []() { + ICore::showOptionsDialog(Constants::EXTENSIONMANAGER_SETTINGSPAGE_ID); + }); + connect(&settings(), &AspectContainer::changed, this, [this]() { + d->dataFetched = false; + fetchExtensions(); + }); } ExtensionsBrowser::~ExtensionsBrowser()