CompilerExplorer: Add Icon

Also adds function to FileIconProvider to register a full icon instead
of an overlay.

Change-Id: I2d9415a3b57fa50ae313ad4e52fc929b418f9708
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
Marcus Tillmanns
2023-09-27 13:33:50 +02:00
parent e5aaf90467
commit 4803c63423
7 changed files with 31 additions and 3 deletions

View File

@@ -93,6 +93,13 @@ public:
}); });
} }
void registerIconForMimeType(const QIcon &icon, const QString &mimeName)
{
// avoid accessing the MIME database right away
m_mimeUpdater.append(
[this, icon, mimeName] { addIconForMimeType(icon, Utils::mimeTypeForName(mimeName)); });
}
void registerIconOverlayForMimeType(const QString &iconFilePath, const QString &mimeName) void registerIconOverlayForMimeType(const QString &iconFilePath, const QString &mimeName)
{ {
// avoid accessing the MIME database right away // avoid accessing the MIME database right away
@@ -123,6 +130,13 @@ private:
registerIconOverlayForSuffix(iconFilePath, suffix); registerIconOverlayForSuffix(iconFilePath, suffix);
} }
void addIconForMimeType(const QIcon &icon, const Utils::MimeType &mimeType)
{
const QStringList suffixes = mimeType.suffixes();
for (const QString &suffix : suffixes)
m_suffixCache.insert(suffix, icon);
}
void ensureMimeOverlays() const void ensureMimeOverlays() const
{ {
for (const std::function<void()> &f : m_mimeUpdater) for (const std::function<void()> &f : m_mimeUpdater)
@@ -306,6 +320,11 @@ void registerIconOverlayForMimeType(const QIcon &icon, const QString &mimeType)
instance()->registerIconOverlayForMimeType(icon, mimeType); instance()->registerIconOverlayForMimeType(icon, mimeType);
} }
void registerIconForMimeType(const QIcon &icon, const QString &mimeType)
{
instance()->registerIconForMimeType(icon, mimeType);
}
/*! /*!
\internal \internal
\overload \overload

View File

@@ -37,6 +37,8 @@ QTCREATOR_UTILS_EXPORT void registerIconOverlayForMimeType(const QIcon &icon,
QTCREATOR_UTILS_EXPORT QIcon directoryIcon(const QString &overlay); QTCREATOR_UTILS_EXPORT QIcon directoryIcon(const QString &overlay);
QTCREATOR_UTILS_EXPORT void registerIconForMimeType(const QIcon &icon, const QString &mimeType);
} // namespace FileIconProvider } // namespace FileIconProvider
} // namespace Utils } // namespace Utils

View File

@@ -18,6 +18,8 @@
#include <projectexplorer/jsonwizard/jsonwizardfactory.h> #include <projectexplorer/jsonwizard/jsonwizardfactory.h>
#include <utils/fsengine/fileiconprovider.h>
#include <QMenu> #include <QMenu>
using namespace Core; using namespace Core;
@@ -42,6 +44,9 @@ public:
settings().defaultDocument().toUtf8()); settings().defaultDocument().toUtf8());
}); });
Utils::FileIconProvider::registerIconForMimeType(QIcon(":/compilerexplorer/logos/ce.ico"),
"application/compiler-explorer");
ProjectExplorer::JsonWizardFactory::addWizardPath(":/compilerexplorer/wizard/"); ProjectExplorer::JsonWizardFactory::addWizardPath(":/compilerexplorer/wizard/");
ActionContainer *mtools = ActionManager::actionContainer(Core::Constants::M_TOOLS); ActionContainer *mtools = ActionManager::actionContainer(Core::Constants::M_TOOLS);

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

View File

@@ -1,3 +1,5 @@
<RCC> <RCC>
<qresource prefix="/compilerexplorer/logos/"></qresource> <qresource prefix="/compilerexplorer/logos/">
<file>ce.ico</file>
</qresource>
</RCC> </RCC>

View File

@@ -6,7 +6,7 @@
"trDescription": "Creates an example CompilerExplorer setup for C++.", "trDescription": "Creates an example CompilerExplorer setup for C++.",
"trDisplayName": "Compiler Explorer C++ Source", "trDisplayName": "Compiler Explorer C++ Source",
"trDisplayCategory": "Compiler Explorer", "trDisplayCategory": "Compiler Explorer",
"icon": "", "icon": ":/compilerexplorer/logos/ce.ico",
"iconKind": "Plain", "iconKind": "Plain",
"options": { "options": {
"key": "DefaultSuffix", "key": "DefaultSuffix",

View File

@@ -6,7 +6,7 @@
"trDescription": "Creates an example CompilerExplorer setup for Python.", "trDescription": "Creates an example CompilerExplorer setup for Python.",
"trDisplayName": "Compiler Explorer Python Source", "trDisplayName": "Compiler Explorer Python Source",
"trDisplayCategory": "Compiler Explorer", "trDisplayCategory": "Compiler Explorer",
"icon": "", "icon": ":/compilerexplorer/logos/ce.ico",
"iconKind": "Plain", "iconKind": "Plain",
"options": { "options": {
"key": "DefaultSuffix", "key": "DefaultSuffix",