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
|
extensionmanagerconstants.h
|
||||||
extensionmanagerplugin.cpp
|
extensionmanagerplugin.cpp
|
||||||
extensionmanagertr.h
|
extensionmanagertr.h
|
||||||
|
extensionmanagersettings.cpp
|
||||||
|
extensionmanagersettings.h
|
||||||
extensionmanagerwidget.cpp
|
extensionmanagerwidget.cpp
|
||||||
extensionmanagerwidget.h
|
extensionmanagerwidget.h
|
||||||
extensionsbrowser.cpp
|
extensionsbrowser.cpp
|
||||||
|
@@ -13,6 +13,8 @@ QtcPlugin {
|
|||||||
"extensionmanagerconstants.h",
|
"extensionmanagerconstants.h",
|
||||||
"extensionmanagerplugin.cpp",
|
"extensionmanagerplugin.cpp",
|
||||||
"extensionmanagertr.h",
|
"extensionmanagertr.h",
|
||||||
|
"extensionmanagersettings.cpp",
|
||||||
|
"extensionmanagersettings.h",
|
||||||
"extensionmanagerwidget.cpp",
|
"extensionmanagerwidget.cpp",
|
||||||
"extensionmanagerwidget.h",
|
"extensionmanagerwidget.h",
|
||||||
"extensionsbrowser.cpp",
|
"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 "extensionmanagertr.h"
|
||||||
#include "extensionsmodel.h"
|
#include "extensionsmodel.h"
|
||||||
#include "utils/hostosinfo.h"
|
#include "extensionmanagersettings.h"
|
||||||
|
|
||||||
#ifdef WITH_TESTS
|
#ifdef WITH_TESTS
|
||||||
#include "extensionmanager_test.h"
|
#include "extensionmanager_test.h"
|
||||||
@@ -29,6 +29,7 @@
|
|||||||
|
|
||||||
#include <utils/elidinglabel.h>
|
#include <utils/elidinglabel.h>
|
||||||
#include <utils/fancylineedit.h>
|
#include <utils/fancylineedit.h>
|
||||||
|
#include <utils/hostosinfo.h>
|
||||||
#include <utils/icon.h>
|
#include <utils/icon.h>
|
||||||
#include <utils/layoutbuilder.h>
|
#include <utils/layoutbuilder.h>
|
||||||
#include <utils/networkaccessmanager.h>
|
#include <utils/networkaccessmanager.h>
|
||||||
@@ -399,14 +400,18 @@ void ExtensionsBrowser::fetchExtensions()
|
|||||||
// d->model->setExtensionsJson(testData("defaultpacks")); return;
|
// d->model->setExtensionsJson(testData("defaultpacks")); return;
|
||||||
#endif // WITH_TESTS
|
#endif // WITH_TESTS
|
||||||
|
|
||||||
|
if (!settings().useExternalRepo()) {
|
||||||
|
d->model->setExtensionsJson({});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
using namespace Tasking;
|
using namespace Tasking;
|
||||||
|
|
||||||
const auto onQuerySetup = [this](NetworkQuery &query) {
|
const auto onQuerySetup = [this](NetworkQuery &query) {
|
||||||
const QString host = "https://qc-extensions.qt.io";
|
|
||||||
const QString url = "%1/api/v1/search?request=";
|
const QString url = "%1/api/v1/search?request=";
|
||||||
const QString requestTemplate
|
const QString requestTemplate
|
||||||
= R"({"version":"%1","host_os":"%2","host_os_version":"%3","host_architecture":"%4","page_size":200})";
|
= 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(QCoreApplication::applicationVersion())
|
||||||
.arg(osTypeToString(HostOsInfo::hostOs()))
|
.arg(osTypeToString(HostOsInfo::hostOs()))
|
||||||
.arg(QSysInfo::productVersion())
|
.arg(QSysInfo::productVersion())
|
||||||
|
Reference in New Issue
Block a user