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)
{
// avoid accessing the MIME database right away
@@ -123,6 +130,13 @@ private:
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
{
for (const std::function<void()> &f : m_mimeUpdater)
@@ -306,6 +320,11 @@ void registerIconOverlayForMimeType(const QIcon &icon, const QString &mimeType)
instance()->registerIconOverlayForMimeType(icon, mimeType);
}
void registerIconForMimeType(const QIcon &icon, const QString &mimeType)
{
instance()->registerIconForMimeType(icon, mimeType);
}
/*!
\internal
\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 void registerIconForMimeType(const QIcon &icon, const QString &mimeType);
} // namespace FileIconProvider
} // namespace Utils

View File

@@ -18,6 +18,8 @@
#include <projectexplorer/jsonwizard/jsonwizardfactory.h>
#include <utils/fsengine/fileiconprovider.h>
#include <QMenu>
using namespace Core;
@@ -42,6 +44,9 @@ public:
settings().defaultDocument().toUtf8());
});
Utils::FileIconProvider::registerIconForMimeType(QIcon(":/compilerexplorer/logos/ce.ico"),
"application/compiler-explorer");
ProjectExplorer::JsonWizardFactory::addWizardPath(":/compilerexplorer/wizard/");
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>
<qresource prefix="/compilerexplorer/logos/"></qresource>
<qresource prefix="/compilerexplorer/logos/">
<file>ce.ico</file>
</qresource>
</RCC>

View File

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

View File

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