Fix: the wizards must use font icon constant names rather than codes

At every change made to the .ttf file, the unicode codes for the font
icons will change. Therefore, we can't use hardcoded unicode values for
the icons in QDS. We need to use constant names and translate those
names to unicode codes later, when passing to QML.

Change-Id: If032ae3defabc65319b4ebf5c1ed43c376eaea0a
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Samuel Ghinet
2021-11-11 12:04:54 +02:00
parent 4a510f7f6f
commit 5d3b0f78e7
5 changed files with 14 additions and 7 deletions

View File

@@ -64,7 +64,7 @@ public:
Utils::Id id() const { return m_id; } Utils::Id id() const { return m_id; }
WizardKind kind() const { return m_supportedProjectTypes.isEmpty() ? FileWizard : ProjectWizard; } WizardKind kind() const { return m_supportedProjectTypes.isEmpty() ? FileWizard : ProjectWizard; }
QIcon icon() const { return m_icon; } QIcon icon() const { return m_icon; }
QString fontIcondCode() const { return m_fontIconCode; } QString fontIconName() const { return m_fontIconName; }
QString description() const { return m_description; } QString description() const { return m_description; }
QString displayName() const { return m_displayName; } QString displayName() const { return m_displayName; }
QString category() const { return m_category; } QString category() const { return m_category; }
@@ -79,7 +79,7 @@ public:
void setId(const Utils::Id id) { m_id = id; } void setId(const Utils::Id id) { m_id = id; }
void setSupportedProjectTypes(const QSet<Utils::Id> &projectTypes) { m_supportedProjectTypes = projectTypes; } void setSupportedProjectTypes(const QSet<Utils::Id> &projectTypes) { m_supportedProjectTypes = projectTypes; }
void setIcon(const QIcon &icon, const QString &iconText = {}); void setIcon(const QIcon &icon, const QString &iconText = {});
void setFontIconCode(const QString &code) { m_fontIconCode = code; } void setFontIconName(const QString &code) { m_fontIconName = code; }
void setDescription(const QString &description) { m_description = description; } void setDescription(const QString &description) { m_description = description; }
void setDisplayName(const QString &displayName) { m_displayName = displayName; } void setDisplayName(const QString &displayName) { m_displayName = displayName; }
void setCategory(const QString &category) { m_category = category; } void setCategory(const QString &category) { m_category = category; }
@@ -137,7 +137,7 @@ private:
QAction *m_action = nullptr; QAction *m_action = nullptr;
QIcon m_icon; QIcon m_icon;
QString m_fontIconCode; QString m_fontIconName;
QString m_description; QString m_description;
QString m_displayName; QString m_displayName;
QString m_category; QString m_category;

View File

@@ -72,7 +72,7 @@ const char CATEGORY_NAME_KEY[] = "trDisplayCategory";
const char DISPLAY_NAME_KEY[] = "trDisplayName"; 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 FONT_ICON_CODE_KEY[] = "fontIconCode"; const char FONT_ICON_NAME_KEY[] = "fontIconName";
const char IMAGE_KEY[] = "image"; const char IMAGE_KEY[] = "image";
const char ICON_KIND_KEY[] = "iconKind"; const char ICON_KIND_KEY[] = "iconKind";
const char DESCRIPTION_KEY[] = "trDescription"; const char DESCRIPTION_KEY[] = "trDescription";
@@ -743,8 +743,8 @@ bool JsonWizardFactory::initialize(const QVariantMap &data, const FilePath &base
: QIcon(iconPath.toString()), : QIcon(iconPath.toString()),
iconText); iconText);
const QString fontIconCode = data.value(QLatin1String(FONT_ICON_CODE_KEY)).toString(); const QString fontIconName = data.value(QLatin1String(FONT_ICON_NAME_KEY)).toString();
setFontIconCode(fontIconCode); setFontIconName(fontIconName);
strVal = data.value(QLatin1String(IMAGE_KEY)).toString(); strVal = data.value(QLatin1String(IMAGE_KEY)).toString();
if (!strVal.isEmpty()) { if (!strVal.isEmpty()) {

View File

@@ -186,6 +186,11 @@ QString Theme::getIconUnicode(Theme::Icon i)
return instance()->m_constants->property(e.valueToKey(i)).toString(); return instance()->m_constants->property(e.valueToKey(i)).toString();
} }
QString Theme::getIconUnicode(const QString &name)
{
return instance()->m_constants->property(name.toStdString().data()).toString();
}
QColor Theme::qmlDesignerBackgroundColorDarker() const QColor Theme::qmlDesignerBackgroundColorDarker() const
{ {
return getColor(QmlDesigner_BackgroundColorDarker); return getColor(QmlDesigner_BackgroundColorDarker);

View File

@@ -198,6 +198,7 @@ public:
static QColor getColor(Color role); static QColor getColor(Color role);
static QPixmap getPixmap(const QString &id); static QPixmap getPixmap(const QString &id);
static QString getIconUnicode(Theme::Icon i); static QString getIconUnicode(Theme::Icon i);
static QString getIconUnicode(const QString &name);
Q_INVOKABLE QColor qmlDesignerBackgroundColorDarker() const; Q_INVOKABLE QColor qmlDesignerBackgroundColorDarker() const;
Q_INVOKABLE QColor qmlDesignerBackgroundColorDarkAlternate() const; Q_INVOKABLE QColor qmlDesignerBackgroundColorDarkAlternate() const;

View File

@@ -28,6 +28,7 @@
#include <utils/algorithm.h> #include <utils/algorithm.h>
#include "wizardfactories.h" #include "wizardfactories.h"
#include <qmldesigner/components/componentcore/theme.h>
namespace { namespace {
// TODO: should be extern, check coreplugin/dialogs/newdialogwidget.cpp // TODO: should be extern, check coreplugin/dialogs/newdialogwidget.cpp
@@ -83,7 +84,7 @@ ProjectItem WizardFactories::makeProjectItem(Core::IWizardFactory *f, QWidget *p
/*.categoryId =*/f->category(), /*.categoryId =*/f->category(),
/*. description =*/f->description(), /*. description =*/f->description(),
/*.qmlPath =*/f->detailsPageQmlPath(), /*.qmlPath =*/f->detailsPageQmlPath(),
/*.fontIconCode =*/f->fontIcondCode(), /*.fontIconCode =*/QmlDesigner::Theme::getIconUnicode(f->fontIconName()),
/*.create =*/ std::bind(&Core::IWizardFactory::runWizard, f, _1, parent, platform, /*.create =*/ std::bind(&Core::IWizardFactory::runWizard, f, _1, parent, platform,
QVariantMap(), false), QVariantMap(), false),
}; };