forked from qt-creator/qt-creator
ProjectExplorer: Make Json Wizard icons themable
Wizard json files can now define via "iconKind" : "Themed" that the provided icon is a themable mask rather than a plain image. Change-Id: I668b7fe368b6989f3609143b22270cb8cec21b12 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
@@ -34,6 +34,7 @@
|
|||||||
#include <extensionsystem/pluginmanager.h>
|
#include <extensionsystem/pluginmanager.h>
|
||||||
|
|
||||||
#include <utils/fileutils.h>
|
#include <utils/fileutils.h>
|
||||||
|
#include <utils/icon.h>
|
||||||
#include <utils/qtcassert.h>
|
#include <utils/qtcassert.h>
|
||||||
#include <utils/wizard.h>
|
#include <utils/wizard.h>
|
||||||
|
|
||||||
@@ -369,6 +370,11 @@ void IWizardFactory::requestNewItemDialog(const QString &title,
|
|||||||
s_reopenData.setData(title, factories, defaultLocation, extraVariables);
|
s_reopenData.setData(title, factories, defaultLocation, extraVariables);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QIcon IWizardFactory::themedIcon(const Utils::FilePath &iconMaskPath)
|
||||||
|
{
|
||||||
|
return Utils::Icon({{iconMaskPath, Theme::PanelTextColorDark}}, Icon::Tint).icon();
|
||||||
|
}
|
||||||
|
|
||||||
void IWizardFactory::destroyFeatureProvider()
|
void IWizardFactory::destroyFeatureProvider()
|
||||||
{
|
{
|
||||||
qDeleteAll(s_providerList);
|
qDeleteAll(s_providerList);
|
||||||
@@ -445,6 +451,7 @@ static QIcon iconWithText(const QIcon &icon, const QString &text)
|
|||||||
font.setPixelSize(fontSize);
|
font.setPixelSize(fontSize);
|
||||||
font.setStretch(85);
|
font.setStretch(85);
|
||||||
QPainter p(&pixmap);
|
QPainter p(&pixmap);
|
||||||
|
p.setPen(Utils::creatorTheme()->color(Theme::PanelTextColorDark));
|
||||||
p.setFont(font);
|
p.setFont(font);
|
||||||
QTextOption textOption(Qt::AlignHCenter | Qt::AlignBottom);
|
QTextOption textOption(Qt::AlignHCenter | Qt::AlignBottom);
|
||||||
textOption.setWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere);
|
textOption.setWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere);
|
||||||
|
@@ -115,6 +115,8 @@ public:
|
|||||||
const Utils::FilePath &defaultLocation,
|
const Utils::FilePath &defaultLocation,
|
||||||
const QVariantMap &extraVariables);
|
const QVariantMap &extraVariables);
|
||||||
|
|
||||||
|
static QIcon themedIcon(const Utils::FilePath &iconMaskPath);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
static QSet<Utils::Id> pluginFeatures();
|
static QSet<Utils::Id> pluginFeatures();
|
||||||
static QSet<Utils::Id> availableFeatures(Utils::Id platformId);
|
static QSet<Utils::Id> availableFeatures(Utils::Id platformId);
|
||||||
|
@@ -73,6 +73,7 @@ const char DISPLAY_NAME_KEY[] = "trDisplayName";
|
|||||||
const char ICON_KEY[] = "icon";
|
const char ICON_KEY[] = "icon";
|
||||||
const char ICON_TEXT_KEY[] = "iconText";
|
const char ICON_TEXT_KEY[] = "iconText";
|
||||||
const char IMAGE_KEY[] = "image";
|
const char IMAGE_KEY[] = "image";
|
||||||
|
const char ICON_KIND_KEY[] = "iconKind";
|
||||||
const char DESCRIPTION_KEY[] = "trDescription";
|
const char DESCRIPTION_KEY[] = "trDescription";
|
||||||
const char REQUIRED_FEATURES_KEY[] = "featuresRequired";
|
const char REQUIRED_FEATURES_KEY[] = "featuresRequired";
|
||||||
const char SUGGESTED_FEATURES_KEY[] = "featuresSuggested";
|
const char SUGGESTED_FEATURES_KEY[] = "featuresSuggested";
|
||||||
@@ -586,7 +587,12 @@ bool JsonWizardFactory::initialize(const QVariantMap &data, const FilePath &base
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
const QString iconText = data.value(QLatin1String(ICON_TEXT_KEY)).toString();
|
const QString iconText = data.value(QLatin1String(ICON_TEXT_KEY)).toString();
|
||||||
setIcon(strVal.isEmpty() ? QIcon() : QIcon(iconPath.toString()), iconText);
|
const bool iconIsThemed = data.value(QLatin1String(ICON_KIND_KEY)).toString()
|
||||||
|
.compare("Themed", Qt::CaseInsensitive) == 0;
|
||||||
|
setIcon(iconIsThemed ? themedIcon(iconPath)
|
||||||
|
: strVal.isEmpty() ? QIcon()
|
||||||
|
: QIcon(iconPath.toString()),
|
||||||
|
iconText);
|
||||||
|
|
||||||
strVal = data.value(QLatin1String(IMAGE_KEY)).toString();
|
strVal = data.value(QLatin1String(IMAGE_KEY)).toString();
|
||||||
if (!strVal.isEmpty()) {
|
if (!strVal.isEmpty()) {
|
||||||
|
Reference in New Issue
Block a user