forked from qt-creator/qt-creator
ExtensionManager: Make remote repo access optional
Off by default. Change-Id: Ib27fa134f095be7c923cc4ce41ef4e2f6ec01ff0 Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -5,6 +5,8 @@ add_qtc_plugin(ExtensionManager
|
||||
extensionmanagerconstants.h
|
||||
extensionmanagerplugin.cpp
|
||||
extensionmanagertr.h
|
||||
extensionmanagersettings.cpp
|
||||
extensionmanagersettings.h
|
||||
extensionmanagerwidget.cpp
|
||||
extensionmanagerwidget.h
|
||||
extensionsbrowser.cpp
|
||||
|
@@ -13,6 +13,8 @@ QtcPlugin {
|
||||
"extensionmanagerconstants.h",
|
||||
"extensionmanagerplugin.cpp",
|
||||
"extensionmanagertr.h",
|
||||
"extensionmanagersettings.cpp",
|
||||
"extensionmanagersettings.h",
|
||||
"extensionmanagerwidget.cpp",
|
||||
"extensionmanagerwidget.h",
|
||||
"extensionsbrowser.cpp",
|
||||
|
59
src/plugins/extensionmanager/extensionmanagersettings.cpp
Normal file
59
src/plugins/extensionmanager/extensionmanagersettings.cpp
Normal file
@@ -0,0 +1,59 @@
|
||||
// Copyright (C) 2024 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include "extensionmanagersettings.h"
|
||||
#include "extensionmanagertr.h"
|
||||
|
||||
#include <coreplugin/coreconstants.h>
|
||||
#include <coreplugin/dialogs/ioptionspage.h>
|
||||
|
||||
#include <utils/layoutbuilder.h>
|
||||
|
||||
namespace ExtensionManager::Internal {
|
||||
|
||||
ExtensionManagerSettings &settings()
|
||||
{
|
||||
static ExtensionManagerSettings theExtensionManagerSettings;
|
||||
return theExtensionManagerSettings;
|
||||
}
|
||||
|
||||
ExtensionManagerSettings::ExtensionManagerSettings()
|
||||
{
|
||||
setAutoApply(false);
|
||||
setSettingsGroup("ExtensionManager");
|
||||
|
||||
externalRepoUrl.setDefaultValue("https://qc-extensions.qt.io");
|
||||
externalRepoUrl.setReadOnly(true);
|
||||
|
||||
useExternalRepo.setSettingsKey("UseExternalRepo");
|
||||
useExternalRepo.setLabelText(Tr::tr("Use external repository"));
|
||||
useExternalRepo.setToolTip(Tr::tr("Repository: %1").arg(externalRepoUrl()));
|
||||
useExternalRepo.setDefaultValue(false);
|
||||
|
||||
setLayouter([this] {
|
||||
using namespace Layouting;
|
||||
|
||||
return Column {
|
||||
useExternalRepo,
|
||||
st
|
||||
};
|
||||
});
|
||||
|
||||
readSettings();
|
||||
}
|
||||
|
||||
class ExtensionManagerSettingsPage : public Core::IOptionsPage
|
||||
{
|
||||
public:
|
||||
ExtensionManagerSettingsPage()
|
||||
{
|
||||
setId("ExtensionManager");
|
||||
setDisplayName(Tr::tr("Extensions"));
|
||||
setCategory(Core::Constants::SETTINGS_CATEGORY_CORE);
|
||||
setSettingsProvider([] { return &settings(); });
|
||||
}
|
||||
};
|
||||
|
||||
const ExtensionManagerSettingsPage settingsPage;
|
||||
|
||||
} // ExtensionManager::Internal
|
21
src/plugins/extensionmanager/extensionmanagersettings.h
Normal file
21
src/plugins/extensionmanager/extensionmanagersettings.h
Normal file
@@ -0,0 +1,21 @@
|
||||
// Copyright (C) 2024 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <utils/aspects.h>
|
||||
|
||||
namespace ExtensionManager::Internal {
|
||||
|
||||
class ExtensionManagerSettings final : public Utils::AspectContainer
|
||||
{
|
||||
public:
|
||||
ExtensionManagerSettings();
|
||||
|
||||
Utils::StringAspect externalRepoUrl{this};
|
||||
Utils::BoolAspect useExternalRepo{this};
|
||||
};
|
||||
|
||||
ExtensionManagerSettings &settings();
|
||||
|
||||
} // ExtensionManager::Internal
|
@@ -5,7 +5,7 @@
|
||||
|
||||
#include "extensionmanagertr.h"
|
||||
#include "extensionsmodel.h"
|
||||
#include "utils/hostosinfo.h"
|
||||
#include "extensionmanagersettings.h"
|
||||
|
||||
#ifdef WITH_TESTS
|
||||
#include "extensionmanager_test.h"
|
||||
@@ -29,6 +29,7 @@
|
||||
|
||||
#include <utils/elidinglabel.h>
|
||||
#include <utils/fancylineedit.h>
|
||||
#include <utils/hostosinfo.h>
|
||||
#include <utils/icon.h>
|
||||
#include <utils/layoutbuilder.h>
|
||||
#include <utils/networkaccessmanager.h>
|
||||
@@ -399,14 +400,18 @@ void ExtensionsBrowser::fetchExtensions()
|
||||
// d->model->setExtensionsJson(testData("defaultpacks")); return;
|
||||
#endif // WITH_TESTS
|
||||
|
||||
if (!settings().useExternalRepo()) {
|
||||
d->model->setExtensionsJson({});
|
||||
return;
|
||||
}
|
||||
|
||||
using namespace Tasking;
|
||||
|
||||
const auto onQuerySetup = [this](NetworkQuery &query) {
|
||||
const QString host = "https://qc-extensions.qt.io";
|
||||
const QString url = "%1/api/v1/search?request=";
|
||||
const QString requestTemplate
|
||||
= R"({"version":"%1","host_os":"%2","host_os_version":"%3","host_architecture":"%4","page_size":200})";
|
||||
const QString request = url.arg(host) + requestTemplate
|
||||
const QString request = url.arg(settings().externalRepoUrl()) + requestTemplate
|
||||
.arg(QCoreApplication::applicationVersion())
|
||||
.arg(osTypeToString(HostOsInfo::hostOs()))
|
||||
.arg(QSysInfo::productVersion())
|
||||
|
Reference in New Issue
Block a user