Core: Move settings category icon creation closer to its first use

No real difference in performance, just stuff closer to its use.

Change-Id: Ib41209fc90872743a3baa692c9bc32c87e951ad5
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
hjk
2023-07-25 14:26:24 +02:00
parent 4c5e3aa6ba
commit 424898873d
7 changed files with 26 additions and 31 deletions

View File

@@ -17,6 +17,7 @@
#include "clangtoolsunittests.h" #include "clangtoolsunittests.h"
#endif #endif
#include <utils/icon.h>
#include <utils/mimeutils.h> #include <utils/mimeutils.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/stylehelper.h> #include <utils/stylehelper.h>

View File

@@ -7,14 +7,12 @@
#include "ioptionspage.h" #include "ioptionspage.h"
#include <utils/algorithm.h> #include <utils/algorithm.h>
#include <utils/aspects.h>
#include <utils/layoutbuilder.h> #include <utils/layoutbuilder.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/stringutils.h> #include <utils/stringutils.h>
#include <QCheckBox> #include <QCheckBox>
#include <QGroupBox> #include <QGroupBox>
#include <QIcon>
#include <QLabel> #include <QLabel>
#include <QPushButton> #include <QPushButton>
#include <QRegularExpression> #include <QRegularExpression>
@@ -74,12 +72,12 @@ namespace Core {
*/ */
/*! /*!
Returns the category icon of the options page. This icon is displayed in the list on the left Returns the path to the category icon of the options page. This icon will be read from this
side of the \uicontrol Options dialog. path and displayed in the list on the left side of the \uicontrol Options dialog.
*/ */
QIcon IOptionsPage::categoryIcon() const FilePath IOptionsPage::categoryIconPath() const
{ {
return m_categoryIcon.icon(); return m_categoryIconPath;
} }
/*! /*!
@@ -206,7 +204,7 @@ void IOptionsPage::finish()
*/ */
void IOptionsPage::setCategoryIconPath(const FilePath &categoryIconPath) void IOptionsPage::setCategoryIconPath(const FilePath &categoryIconPath)
{ {
m_categoryIcon = Icon({{categoryIconPath, Theme::PanelTextColorDark}}, Icon::Tint); m_categoryIconPath = categoryIconPath;
} }
void IOptionsPage::setSettings(AspectContainer *settings) void IOptionsPage::setSettings(AspectContainer *settings)
@@ -316,11 +314,6 @@ const QList<IOptionsPageProvider *> IOptionsPageProvider::allOptionsPagesProvide
return g_optionsPagesProviders; return g_optionsPagesProviders;
} }
QIcon IOptionsPageProvider::categoryIcon() const
{
return m_categoryIcon.icon();
}
// PagedSettings // PagedSettings
PagedSettings::PagedSettings() PagedSettings::PagedSettings()

View File

@@ -6,20 +6,14 @@
#include <coreplugin/core_global.h> #include <coreplugin/core_global.h>
#include <utils/aspects.h> #include <utils/aspects.h>
#include <utils/icon.h>
#include <utils/id.h> #include <utils/id.h>
#include <QObject>
#include <QPointer> #include <QPointer>
#include <QStringList> #include <QStringList>
#include <QWidget> #include <QWidget>
#include <functional> #include <functional>
namespace Layouting { class LayoutItem; }
namespace Utils { class AspectContainer; }
namespace Core { namespace Core {
class CORE_EXPORT IOptionsPageWidget : public QWidget class CORE_EXPORT IOptionsPageWidget : public QWidget
@@ -54,7 +48,7 @@ public:
QString displayName() const { return m_displayName; } QString displayName() const { return m_displayName; }
Utils::Id category() const { return m_category; } Utils::Id category() const { return m_category; }
QString displayCategory() const { return m_displayCategory; } QString displayCategory() const { return m_displayCategory; }
QIcon categoryIcon() const; Utils::FilePath categoryIconPath() const;
using WidgetCreator = std::function<IOptionsPageWidget *()>; using WidgetCreator = std::function<IOptionsPageWidget *()>;
void setWidgetCreator(const WidgetCreator &widgetCreator); void setWidgetCreator(const WidgetCreator &widgetCreator);
@@ -72,7 +66,6 @@ protected:
void setDisplayName(const QString &displayName) { m_displayName = displayName; } void setDisplayName(const QString &displayName) { m_displayName = displayName; }
void setCategory(Utils::Id category) { m_category = category; } void setCategory(Utils::Id category) { m_category = category; }
void setDisplayCategory(const QString &displayCategory) { m_displayCategory = displayCategory; } void setDisplayCategory(const QString &displayCategory) { m_displayCategory = displayCategory; }
void setCategoryIcon(const Utils::Icon &categoryIcon) { m_categoryIcon = categoryIcon; }
void setCategoryIconPath(const Utils::FilePath &categoryIconPath); void setCategoryIconPath(const Utils::FilePath &categoryIconPath);
void setSettings(Utils::AspectContainer *settings); // FIXME: Remove. void setSettings(Utils::AspectContainer *settings); // FIXME: Remove.
void setSettingsProvider(const std::function<Utils::AspectContainer *()> &provider); void setSettingsProvider(const std::function<Utils::AspectContainer *()> &provider);
@@ -82,7 +75,7 @@ private:
Utils::Id m_category; Utils::Id m_category;
QString m_displayName; QString m_displayName;
QString m_displayCategory; QString m_displayCategory;
Utils::Icon m_categoryIcon; Utils::FilePath m_categoryIconPath;
WidgetCreator m_widgetCreator; WidgetCreator m_widgetCreator;
QPointer<QWidget> m_widget; // Used in conjunction with m_widgetCreator QPointer<QWidget> m_widget; // Used in conjunction with m_widgetCreator
@@ -102,7 +95,7 @@ private:
class CORE_EXPORT IOptionsPageProvider class CORE_EXPORT IOptionsPageProvider
{ {
Q_DISABLE_COPY_MOVE(IOptionsPageProvider); Q_DISABLE_COPY_MOVE(IOptionsPageProvider)
public: public:
IOptionsPageProvider(); IOptionsPageProvider();
@@ -112,7 +105,7 @@ public:
Utils::Id category() const { return m_category; } Utils::Id category() const { return m_category; }
QString displayCategory() const { return m_displayCategory; } QString displayCategory() const { return m_displayCategory; }
QIcon categoryIcon() const; Utils::FilePath categoryIconPath() const { return m_categoryIconPath; }
virtual QList<IOptionsPage *> pages() const = 0; virtual QList<IOptionsPage *> pages() const = 0;
virtual bool matches(const QRegularExpression &regexp) const = 0; virtual bool matches(const QRegularExpression &regexp) const = 0;
@@ -120,11 +113,11 @@ public:
protected: protected:
void setCategory(Utils::Id category) { m_category = category; } void setCategory(Utils::Id category) { m_category = category; }
void setDisplayCategory(const QString &displayCategory) { m_displayCategory = displayCategory; } void setDisplayCategory(const QString &displayCategory) { m_displayCategory = displayCategory; }
void setCategoryIcon(const Utils::Icon &categoryIcon) { m_categoryIcon = categoryIcon; } void setCategoryIconPath(const Utils::FilePath &iconPath) { m_categoryIconPath = iconPath; }
Utils::Id m_category; Utils::Id m_category;
QString m_displayCategory; QString m_displayCategory;
Utils::Icon m_categoryIcon; Utils::FilePath m_categoryIconPath;
}; };
class CORE_EXPORT PagedSettings : public Utils::AspectContainer, public IOptionsPage class CORE_EXPORT PagedSettings : public Utils::AspectContainer, public IOptionsPage

View File

@@ -10,6 +10,7 @@
#include <utils/algorithm.h> #include <utils/algorithm.h>
#include <utils/hostosinfo.h> #include <utils/hostosinfo.h>
#include <utils/icon.h>
#include <utils/fancylineedit.h> #include <utils/fancylineedit.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
@@ -166,8 +167,10 @@ void CategoryModel::setPages(const QList<IOptionsPage*> &pages,
} }
if (category->displayName.isEmpty()) if (category->displayName.isEmpty())
category->displayName = page->displayCategory(); category->displayName = page->displayCategory();
if (category->icon.isNull()) if (category->icon.isNull()) {
category->icon = page->categoryIcon(); Icon icon({{page->categoryIconPath(), Theme::PanelTextColorDark}}, Icon::Tint);
category->icon = icon.icon();
}
category->pages.append(page); category->pages.append(page);
} }
@@ -183,8 +186,10 @@ void CategoryModel::setPages(const QList<IOptionsPage*> &pages,
} }
if (category->displayName.isEmpty()) if (category->displayName.isEmpty())
category->displayName = provider->displayCategory(); category->displayName = provider->displayCategory();
if (category->icon.isNull()) if (category->icon.isNull()) {
category->icon = provider->categoryIcon(); Icon icon({{provider->categoryIconPath(), Theme::PanelTextColorDark}}, Icon::Tint);
category->icon = icon.icon();
}
category->providers.append(provider); category->providers.append(provider);
} }

View File

@@ -25,8 +25,10 @@
#include <coreplugin/minisplitter.h> #include <coreplugin/minisplitter.h>
#include <coreplugin/modemanager.h> #include <coreplugin/modemanager.h>
#include <coreplugin/outputpane.h> #include <coreplugin/outputpane.h>
#include <utils/infobar.h> #include <utils/infobar.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/theme/theme.h>
#include <QDesignerFormEditorPluginInterface> #include <QDesignerFormEditorPluginInterface>
#include <QDesignerFormEditorInterface> #include <QDesignerFormEditorInterface>

View File

@@ -47,8 +47,7 @@ SettingsPageProvider::SettingsPageProvider()
{ {
setCategory(Designer::Constants::SETTINGS_CATEGORY); setCategory(Designer::Constants::SETTINGS_CATEGORY);
setDisplayCategory(Tr::tr(Designer::Constants::SETTINGS_TR_CATEGORY)); setDisplayCategory(Tr::tr(Designer::Constants::SETTINGS_TR_CATEGORY));
setCategoryIcon(Utils::Icon({{":/core/images/settingscategory_design.png", setCategoryIconPath(":/core/images/settingscategory_design.png");
Utils::Theme::PanelTextColorDark}}, Utils::Icon::Tint));
} }
QList<Core::IOptionsPage *> SettingsPageProvider::pages() const QList<Core::IOptionsPage *> SettingsPageProvider::pages() const

View File

@@ -28,6 +28,8 @@
#include <texteditor/snippets/snippetprovider.h> #include <texteditor/snippets/snippetprovider.h>
#include <utils/fsengine/fileiconprovider.h> #include <utils/fsengine/fileiconprovider.h>
#include <utils/icon.h>
#include <utils/theme/theme.h>
using namespace Utils; using namespace Utils;
using namespace ProjectExplorer; using namespace ProjectExplorer;