ExtensionManager: Some cleanups

Stuff you notice 10 Minutes after pushing the code you worked on for
days.

Change-Id: I24614b8129f80c8986ec11d5146c5631dae5d515
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
This commit is contained in:
Alessandro Portale
2024-05-30 19:20:48 +02:00
parent 0fffe1058d
commit 0ccfccd5c5
4 changed files with 20 additions and 35 deletions

View File

@@ -26,7 +26,6 @@
#include <QAction> #include <QAction>
#include <QMainWindow> #include <QMainWindow>
using namespace ExtensionSystem;
using namespace Core; using namespace Core;
using namespace Utils; using namespace Utils;
@@ -45,7 +44,7 @@ public:
Theme::IconsBaseColor}}); Theme::IconsBaseColor}});
const Icon FLAT_ACTIVE({{":/extensionmanager/images/mode_extensionmanager_mask.png", const Icon FLAT_ACTIVE({{":/extensionmanager/images/mode_extensionmanager_mask.png",
Theme::IconsModeWelcomeActiveColor}}); Theme::IconsModeWelcomeActiveColor}});
setIcon(Utils::Icon::modeIcon(FLAT, FLAT, FLAT_ACTIVE)); setIcon(Icon::modeIcon(FLAT, FLAT, FLAT_ACTIVE));
setPriority(72); setPriority(72);
using namespace Layouting; using namespace Layouting;

View File

@@ -280,7 +280,7 @@ void ExtensionManagerWidget::updateView(const QModelIndex &current)
const LinksData linksData = current.data(RoleDescriptionLinks).value<LinksData>(); const LinksData linksData = current.data(RoleDescriptionLinks).value<LinksData>();
if (!linksData.isEmpty()) { if (!linksData.isEmpty()) {
QString linksHtml; QString linksHtml;
const QStringList links = Utils::transform(linksData, [](const LinksData::Type &link) { const QStringList links = transform(linksData, [](const LinksData::Type &link) {
const QString anchor = link.first.isEmpty() ? link.second : link.first; const QString anchor = link.first.isEmpty() ? link.second : link.first;
return QString::fromLatin1("<a href=\"%1\">%2 &gt;</a>") return QString::fromLatin1("<a href=\"%1\">%2 &gt;</a>")
.arg(link.second).arg(anchor); .arg(link.second).arg(anchor);
@@ -293,7 +293,7 @@ void ExtensionManagerWidget::updateView(const QModelIndex &current)
if (!imagesData.isEmpty()) { if (!imagesData.isEmpty()) {
const QString examplesBoxCss = const QString examplesBoxCss =
QString::fromLatin1("height: 168px; background-color: %1; ") QString::fromLatin1("height: 168px; background-color: %1; ")
.arg(creatorTheme()->color(Theme::Token_Background_Default).name()); .arg(creatorColor(Theme::Token_Background_Default).name());
description.append(QString(R"( description.append(QString(R"(
<br/> <br/>
<div style="%1">%2</div> <div style="%1">%2</div>
@@ -362,8 +362,8 @@ void ExtensionManagerWidget::updateView(const QModelIndex &current)
if (!tags.isEmpty()) { if (!tags.isEmpty()) {
const QString tagTemplate = QString(R"( const QString tagTemplate = QString(R"(
<td style="border: 1px solid %1; padding: 3px; ">%2</td> <td style="border: 1px solid %1; padding: 3px; ">%2</td>
)").arg(creatorTheme()->color(Theme::Token_Stroke_Subtle).name()); )").arg(creatorColor(Theme::Token_Stroke_Subtle).name());
const QStringList tagsFmt = Utils::transform(tags, [&tagTemplate](const QString &tag) { const QStringList tagsFmt = transform(tags, [&tagTemplate](const QString &tag) {
return tagTemplate.arg(tag); return tagTemplate.arg(tag);
}); });
description.append(QString(R"( description.append(QString(R"(
@@ -397,8 +397,7 @@ void ExtensionManagerWidget::updateView(const QModelIndex &current)
if (isPack) { if (isPack) {
const PluginsData plugins = current.data(RolePlugins).value<PluginsData>(); const PluginsData plugins = current.data(RolePlugins).value<PluginsData>();
const QStringList extensions = Utils::transform(plugins, const QStringList extensions = transform(plugins, &QPair<QString, QString>::first);
&QPair<QString, QString>::first);
const QString extensionsFmt = extensions.join("<br/>"); const QString extensionsFmt = extensions.join("<br/>");
description.append(QString(R"( description.append(QString(R"(
<div style="%1">%2</div> <div style="%1">%2</div>
@@ -422,7 +421,7 @@ void ExtensionManagerWidget::fetchAndInstallPlugin(const QUrl &url)
StorageStruct() { StorageStruct() {
progressDialog.reset(new QProgressDialog(Tr::tr("Downloading Plugin..."), progressDialog.reset(new QProgressDialog(Tr::tr("Downloading Plugin..."),
Tr::tr("Cancel"), 0, 0, Tr::tr("Cancel"), 0, 0,
Core::ICore::dialogParent())); ICore::dialogParent()));
progressDialog->setWindowModality(Qt::ApplicationModal); progressDialog->setWindowModality(Qt::ApplicationModal);
progressDialog->setFixedSize(progressDialog->sizeHint()); progressDialog->setFixedSize(progressDialog->sizeHint());
progressDialog->setAutoClose(false); progressDialog->setAutoClose(false);

View File

@@ -198,7 +198,7 @@ ExtensionsBrowser::ExtensionsBrowser(QWidget *parent)
auto manageLabel = new QLabel(Tr::tr("Manage Extensions")); auto manageLabel = new QLabel(Tr::tr("Manage Extensions"));
manageLabel->setFont(StyleHelper::uiFont(StyleHelper::UiElementH1)); manageLabel->setFont(StyleHelper::uiFont(StyleHelper::UiElementH1));
d->searchBox = new Core::SearchBox; d->searchBox = new SearchBox;
d->searchBox->setFixedWidth(itemSize.width()); d->searchBox->setFixedWidth(itemSize.width());
d->updateButton = new Button(Tr::tr("Install..."), Button::MediumPrimary); d->updateButton = new Button(Tr::tr("Install..."), Button::MediumPrimary);
@@ -252,10 +252,8 @@ ExtensionsBrowser::ExtensionsBrowser(QWidget *parent)
connect(d->updateButton, &QAbstractButton::pressed, this, []() { connect(d->updateButton, &QAbstractButton::pressed, this, []() {
executePluginInstallWizard(); executePluginInstallWizard();
}); });
connect(ExtensionSystem::PluginManager::instance(), connect(PluginManager::instance(), &PluginManager::pluginsChanged, this, updateModel);
&ExtensionSystem::PluginManager::pluginsChanged, this, updateModel); connect(PluginManager::instance(), &PluginManager::initializationDone,
connect(ExtensionSystem::PluginManager::instance(),
&ExtensionSystem::PluginManager::initializationDone,
this, &ExtensionsBrowser::fetchExtensions); this, &ExtensionsBrowser::fetchExtensions);
connect(d->searchBox, &QLineEdit::textChanged, connect(d->searchBox, &QLineEdit::textChanged,
d->filterProxyModel, &QSortFilterProxyModel::setFilterWildcard); d->filterProxyModel, &QSortFilterProxyModel::setFilterWildcard);

View File

@@ -3,9 +3,6 @@
#include "extensionsmodel.h" #include "extensionsmodel.h"
#include "extensionsbrowser.h"
#include "extensionmanagertr.h"
#include "utils/algorithm.h" #include "utils/algorithm.h"
#include <coreplugin/coreconstants.h> #include <coreplugin/coreconstants.h>
@@ -30,16 +27,16 @@ namespace ExtensionManager::Internal {
Q_LOGGING_CATEGORY(modelLog, "qtc.extensionmanager.model", QtWarningMsg) Q_LOGGING_CATEGORY(modelLog, "qtc.extensionmanager.model", QtWarningMsg)
struct PluginDependency struct Dependency
{ {
QString name; QString name;
QString version; QString version;
}; };
using PluginDependencies = QList<PluginDependency>; using Dependencies = QList<Dependency>;
struct Plugin struct Plugin
{ {
PluginDependencies dependencies; Dependencies dependencies;
QString copyright; QString copyright;
QString name; QString name;
QString packageUrl; QString packageUrl;
@@ -74,10 +71,10 @@ static Plugin pluginFromJson(const QJsonObject &obj)
const QJsonObject metaDataObj = obj.value("meta_data").toObject(); const QJsonObject metaDataObj = obj.value("meta_data").toObject();
const QJsonArray dependenciesArray = metaDataObj.value("Dependencies").toArray(); const QJsonArray dependenciesArray = metaDataObj.value("Dependencies").toArray();
PluginDependencies dependencies; Dependencies dependencies;
for (const QJsonValueConstRef &dependencyVal : dependenciesArray) { for (const QJsonValueConstRef &dependencyVal : dependenciesArray) {
const QJsonObject dependencyObj = dependencyVal.toObject(); const QJsonObject dependencyObj = dependencyVal.toObject();
dependencies.append(PluginDependency{ dependencies.append(Dependency{
.name = dependencyObj.value("Name").toString(), .name = dependencyObj.value("Name").toString(),
.version = dependencyObj.value("Version").toString(), .version = dependencyObj.value("Version").toString(),
}); });
@@ -189,19 +186,12 @@ static Extensions parseExtensionsRepoReply(const QByteArray &jsonData)
return parsedExtensions; return parsedExtensions;
} }
class ExtensionsModelPrivate : public QObject class ExtensionsModelPrivate
{ {
public: public:
ExtensionsModelPrivate(ExtensionsModel *parent)
: q(parent)
{
}
void setExtensions(const Extensions &extensions); void setExtensions(const Extensions &extensions);
void removeLocalExtensions(); void removeLocalExtensions();
ExtensionsModel *q;
Extensions allExtensions; // Original, complete extensions entries Extensions allExtensions; // Original, complete extensions entries
Extensions absentExtensions; // All packs + plugin extensions that are not (yet) installed Extensions absentExtensions; // All packs + plugin extensions that are not (yet) installed
}; };
@@ -224,7 +214,7 @@ void ExtensionsModelPrivate::removeLocalExtensions()
ExtensionsModel::ExtensionsModel(QObject *parent) ExtensionsModel::ExtensionsModel(QObject *parent)
: QAbstractListModel(parent) : QAbstractListModel(parent)
, d(new ExtensionsModelPrivate(this)) , d(new ExtensionsModelPrivate)
{ {
} }
@@ -250,7 +240,7 @@ static QVariant dataFromPluginSpec(const PluginSpec *pluginSpec, int role)
return pluginSpec->copyright(); return pluginSpec->copyright();
case RoleDependencies: { case RoleDependencies: {
QStringList dependencies = transform(pluginSpec->dependencies(), QStringList dependencies = transform(pluginSpec->dependencies(),
&ExtensionSystem::PluginDependency::toString); &PluginDependency::toString);
dependencies.sort(); dependencies.sort();
return dependencies; return dependencies;
} }
@@ -301,7 +291,7 @@ static QStringList dependenciesFromExtension(const Extension &extension)
{ {
QStringList dependencies; QStringList dependencies;
for (const Plugin &plugin : extension.plugins) { for (const Plugin &plugin : extension.plugins) {
for (const PluginDependency &dependency : plugin.dependencies) { for (const Dependency &dependency : plugin.dependencies) {
const QString withVersion = QString::fromLatin1("%1 (%2)").arg(dependency.name) const QString withVersion = QString::fromLatin1("%1 (%2)").arg(dependency.name)
.arg(dependency.version); .arg(dependency.version);
dependencies.append(withVersion); dependencies.append(withVersion);
@@ -404,8 +394,7 @@ void ExtensionsModel::setExtensionsJson(const QByteArray &json)
PluginSpec *ExtensionsModel::pluginSpecForName(const QString &pluginName) PluginSpec *ExtensionsModel::pluginSpecForName(const QString &pluginName)
{ {
return Utils::findOrDefault(PluginManager::plugins(), return findOrDefault(PluginManager::plugins(), equal(&PluginSpec::name, pluginName));
Utils::equal(&PluginSpec::name, pluginName));
} }
} // ExtensionManager::Internal } // ExtensionManager::Internal