forked from qt-creator/qt-creator
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:
@@ -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;
|
||||||
|
@@ -280,7 +280,7 @@ void ExtensionManagerWidget::updateView(const QModelIndex ¤t)
|
|||||||
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 ></a>")
|
return QString::fromLatin1("<a href=\"%1\">%2 ></a>")
|
||||||
.arg(link.second).arg(anchor);
|
.arg(link.second).arg(anchor);
|
||||||
@@ -293,7 +293,7 @@ void ExtensionManagerWidget::updateView(const QModelIndex ¤t)
|
|||||||
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 ¤t)
|
|||||||
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 ¤t)
|
|||||||
|
|
||||||
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);
|
||||||
|
@@ -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);
|
||||||
|
@@ -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
|
||||||
|
Reference in New Issue
Block a user