ExtensionManager: Set icon background green or grey depending of state

This change sets green vs. grey background for extension icons depending
of enabled state.

Change-Id: Id99419544a00acca897aa0ad6c98d2598e4b2210
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Alessandro Portale
2024-06-26 12:25:40 +02:00
parent 3a007ee499
commit a6b7473834
4 changed files with 13 additions and 10 deletions

View File

@@ -223,7 +223,7 @@ public:
const ItemType itemType = current.data(RoleItemType).value<ItemType>();
const bool isPack = itemType == ItemTypePack;
const bool isRemotePlugin = !(isPack || ExtensionsModel::pluginSpecForName(name));
const bool isRemotePlugin = !(isPack || pluginSpecForName(name));
installButton->setVisible(isRemotePlugin && !pluginData.empty());
if (installButton->isVisible())
installButton->setToolTip(pluginData.constFirst().second);
@@ -292,7 +292,7 @@ public:
}.attachTo(this);
connect(m_checkBox, &QCheckBox::clicked, this, [this](bool checked) {
ExtensionSystem::PluginSpec *spec = ExtensionsModel::pluginSpecForName(m_pluginName);
ExtensionSystem::PluginSpec *spec = pluginSpecForName(m_pluginName);
if (spec == nullptr)
return;
const bool doIt = m_pluginView.data().setPluginsEnabled({spec}, checked);
@@ -319,7 +319,7 @@ public:
private:
void update()
{
const ExtensionSystem::PluginSpec *spec = ExtensionsModel::pluginSpecForName(m_pluginName);
const ExtensionSystem::PluginSpec *spec = pluginSpecForName(m_pluginName);
setVisible(spec != nullptr);
if (spec == nullptr)
return;

View File

@@ -422,10 +422,12 @@ QLabel *tfLabel(const TextFormat &tf, bool singleLine)
QGradientStops iconGradientStops(const QModelIndex &index)
{
const bool isVendorExtension = index.data(RoleVendor).toString() == "The Qt Company Ltd";
const QColor startColor = creatorColor(isVendorExtension ? Theme::Token_Gradient01_Start
const PluginSpec *ps = pluginSpecForName(index.data(RoleName).toString());
const bool greenGradient = ps != nullptr && ps->isEffectivelyEnabled();
const QColor startColor = creatorColor(greenGradient ? Theme::Token_Gradient01_Start
: Theme::Token_Gradient02_Start);
const QColor endColor = creatorColor(isVendorExtension ? Theme::Token_Gradient01_End
const QColor endColor = creatorColor(greenGradient ? Theme::Token_Gradient01_End
: Theme::Token_Gradient02_End);
const QGradientStops gradient = {
{0, startColor},

View File

@@ -390,7 +390,7 @@ void ExtensionsModel::setExtensionsJson(const QByteArray &json)
endResetModel();
}
PluginSpec *ExtensionsModel::pluginSpecForName(const QString &pluginName)
PluginSpec *pluginSpecForName(const QString &pluginName)
{
return findOrDefault(PluginManager::plugins(), equal(&PluginSpec::name, pluginName));
}

View File

@@ -54,12 +54,13 @@ public:
QVariant data(const QModelIndex &index, int role) const;
void setExtensionsJson(const QByteArray &json);
static ExtensionSystem::PluginSpec *pluginSpecForName(const QString &pluginName);
private:
class ExtensionsModelPrivate *d = nullptr;
};
ExtensionSystem::PluginSpec *pluginSpecForName(const QString &pluginName);
#ifdef WITH_TESTS
QObject *createExtensionsModelTest();
#endif