QmlDesigner: Add icons for lights and cameras when added to content lib

Also small relevant tweaks.

Fixes: QDS-12903
Change-Id: If9d4c9c34005ca0853ec8bda52ebb0234a2223e8
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Shrief Gabr <shrief.gabr@qt.io>
Reviewed-by: Ali Kianian <ali.kianian@qt.io>
This commit is contained in:
Mahmoud Badri
2024-07-30 14:18:40 +03:00
parent d079385d81
commit 9a85110f91
7 changed files with 32 additions and 16 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -7,21 +7,18 @@
namespace QmlDesigner { namespace QmlDesigner {
namespace Internal {
ContentLibraryIconProvider::ContentLibraryIconProvider() ContentLibraryIconProvider::ContentLibraryIconProvider()
: QQuickImageProvider(Pixmap) : QQuickImageProvider(Pixmap)
{ {
} }
QPixmap ContentLibraryIconProvider::requestPixmap(const QString &id, QPixmap ContentLibraryIconProvider::requestPixmap(const QString &id,
QSize *size, QSize *size,
[[maybe_unused]] const QSize &requestedSize) [[maybe_unused]] const QSize &requestedSize)
{ {
QString realPath = Core::ICore::resourcePath("qmldesigner/contentLibraryImages/" + id).toString(); QString imagePath = Core::ICore::resourcePath("qmldesigner/contentLibraryImages/" + id).toFSPathString();
QPixmap pixmap{realPath}; QPixmap pixmap{imagePath};
if (size) { if (size) {
size->setWidth(pixmap.width()); size->setWidth(pixmap.width());
@@ -37,6 +34,4 @@ QPixmap ContentLibraryIconProvider::requestPixmap(const QString &id,
return pixmap; return pixmap;
} }
} // namespace Internal
} // namespace QmlDesigner } // namespace QmlDesigner

View File

@@ -5,7 +5,7 @@
#include <QQuickImageProvider> #include <QQuickImageProvider>
namespace QmlDesigner::Internal { namespace QmlDesigner {
class ContentLibraryIconProvider : public QQuickImageProvider class ContentLibraryIconProvider : public QQuickImageProvider
{ {
@@ -14,4 +14,4 @@ public:
QPixmap requestPixmap(const QString &id, QSize *size, const QSize &requestedSize) override; QPixmap requestPixmap(const QString &id, QSize *size, const QSize &requestedSize) override;
}; };
} // namespace QmlDesigner::Internal } // namespace QmlDesigner

View File

@@ -4,6 +4,7 @@
#include "contentlibraryview.h" #include "contentlibraryview.h"
#include "contentlibrarybundleimporter.h" #include "contentlibrarybundleimporter.h"
#include "contentlibraryiconprovider.h"
#include "contentlibraryitem.h" #include "contentlibraryitem.h"
#include "contentlibraryeffectsmodel.h" #include "contentlibraryeffectsmodel.h"
#include "contentlibrarymaterial.h" #include "contentlibrarymaterial.h"
@@ -890,10 +891,18 @@ void ContentLibraryView::addLibItem(const ModelNode &node, const QPixmap &iconPi
m_widget->userModel()->addItem(m_bundleId, name, qml, m_iconSavePath.toUrl(), depAssetsRelativePaths); m_widget->userModel()->addItem(m_bundleId, name, qml, m_iconSavePath.toUrl(), depAssetsRelativePaths);
// generate and save icon // generate and save icon
if (iconPixmap.isNull()) QPixmap iconPixmapToSave;
if (node.metaInfo().isQtQuick3DCamera())
iconPixmapToSave = m_widget->iconProvider()->requestPixmap("camera.png", nullptr, {});
else if (node.metaInfo().isQtQuick3DLight())
iconPixmapToSave = m_widget->iconProvider()->requestPixmap("light.png", nullptr, {});
else
iconPixmapToSave = iconPixmap;
if (iconPixmapToSave.isNull())
model()->nodeInstanceView()->previewImageDataForGenericNode(node, {}, {}, ADD_ITEM_REQ_ID); model()->nodeInstanceView()->previewImageDataForGenericNode(node, {}, {}, ADD_ITEM_REQ_ID);
else else
saveIconToBundle(iconPixmap); saveIconToBundle(iconPixmapToSave);
} }
QString ContentLibraryView::getExportPath(const ModelNode &node) const QString ContentLibraryView::getExportPath(const ModelNode &node) const

View File

@@ -5,12 +5,12 @@
#include "contentlibrarybundleimporter.h" #include "contentlibrarybundleimporter.h"
#include "contentlibraryeffectsmodel.h" #include "contentlibraryeffectsmodel.h"
#include "contentlibraryiconprovider.h"
#include "contentlibraryitem.h" #include "contentlibraryitem.h"
#include "contentlibrarymaterial.h" #include "contentlibrarymaterial.h"
#include "contentlibrarymaterialsmodel.h" #include "contentlibrarymaterialsmodel.h"
#include "contentlibrarytexture.h" #include "contentlibrarytexture.h"
#include "contentlibrarytexturesmodel.h" #include "contentlibrarytexturesmodel.h"
#include "contentlibraryiconprovider.h"
#include "contentlibraryusermodel.h" #include "contentlibraryusermodel.h"
#include "utils/filedownloader.h" #include "utils/filedownloader.h"
@@ -123,7 +123,8 @@ bool ContentLibraryWidget::eventFilter(QObject *obj, QEvent *event)
} }
ContentLibraryWidget::ContentLibraryWidget() ContentLibraryWidget::ContentLibraryWidget()
: m_quickWidget(Utils::makeUniqueObjectPtr<StudioQuickWidget>(this)) : m_iconProvider(Utils::makeUniqueObjectPtr<ContentLibraryIconProvider>())
, m_quickWidget(Utils::makeUniqueObjectPtr<StudioQuickWidget>(this))
, m_materialsModel(new ContentLibraryMaterialsModel(this)) , m_materialsModel(new ContentLibraryMaterialsModel(this))
, m_texturesModel(new ContentLibraryTexturesModel("Textures", this)) , m_texturesModel(new ContentLibraryTexturesModel("Textures", this))
, m_environmentsModel(new ContentLibraryTexturesModel("Environments", this)) , m_environmentsModel(new ContentLibraryTexturesModel("Environments", this))
@@ -138,8 +139,7 @@ ContentLibraryWidget::ContentLibraryWidget()
m_quickWidget->quickWidget()->setObjectName(Constants::OBJECT_NAME_CONTENT_LIBRARY); m_quickWidget->quickWidget()->setObjectName(Constants::OBJECT_NAME_CONTENT_LIBRARY);
m_quickWidget->setResizeMode(QQuickWidget::SizeRootObjectToView); m_quickWidget->setResizeMode(QQuickWidget::SizeRootObjectToView);
m_quickWidget->engine()->addImageProvider(QStringLiteral("contentlibrary"), m_quickWidget->engine()->addImageProvider("contentlibrary", m_iconProvider.get());
new Internal::ContentLibraryIconProvider);
m_quickWidget->engine()->addImportPath(propertyEditorResourcesPath() + "/imports"); m_quickWidget->engine()->addImportPath(propertyEditorResourcesPath() + "/imports");
m_quickWidget->setClearColor(Theme::getColor(Theme::Color::DSpanelBackground)); m_quickWidget->setClearColor(Theme::getColor(Theme::Color::DSpanelBackground));
@@ -181,6 +181,10 @@ ContentLibraryWidget::ContentLibraryWidget()
createImporter(); createImporter();
} }
ContentLibraryWidget::~ContentLibraryWidget()
{
}
void ContentLibraryWidget::createImporter() void ContentLibraryWidget::createImporter()
{ {
m_importer = new ContentLibraryBundleImporter(); m_importer = new ContentLibraryBundleImporter();
@@ -212,6 +216,11 @@ void ContentLibraryWidget::createImporter()
}); });
} }
ContentLibraryIconProvider *ContentLibraryWidget::iconProvider() const
{
return m_iconProvider.get();
}
void ContentLibraryWidget::updateImportedState(const QString &bundleId) void ContentLibraryWidget::updateImportedState(const QString &bundleId)
{ {
if (!m_importer) if (!m_importer)

View File

@@ -24,13 +24,13 @@ namespace QmlDesigner {
class ContentLibraryBundleImporter; class ContentLibraryBundleImporter;
class ContentLibraryEffectsModel; class ContentLibraryEffectsModel;
class ContentLibraryIconProvider;
class ContentLibraryItem; class ContentLibraryItem;
class ContentLibraryMaterial; class ContentLibraryMaterial;
class ContentLibraryMaterialsModel; class ContentLibraryMaterialsModel;
class ContentLibraryTexture; class ContentLibraryTexture;
class ContentLibraryTexturesModel; class ContentLibraryTexturesModel;
class ContentLibraryUserModel; class ContentLibraryUserModel;
class NodeMetaInfo;
class ContentLibraryWidget : public QFrame class ContentLibraryWidget : public QFrame
{ {
@@ -48,6 +48,7 @@ class ContentLibraryWidget : public QFrame
public: public:
ContentLibraryWidget(); ContentLibraryWidget();
~ContentLibraryWidget();
QList<QToolButton *> createToolBarWidgets(); QList<QToolButton *> createToolBarWidgets();
@@ -94,6 +95,7 @@ public:
QSize sizeHint() const override; QSize sizeHint() const override;
ContentLibraryBundleImporter *importer() const; ContentLibraryBundleImporter *importer() const;
ContentLibraryIconProvider *iconProvider() const;
signals: signals:
void bundleItemDragStarted(QmlDesigner::ContentLibraryItem *item); void bundleItemDragStarted(QmlDesigner::ContentLibraryItem *item);
@@ -129,6 +131,7 @@ private:
void populateTextureBundleModels(); void populateTextureBundleModels();
void createImporter(); void createImporter();
Utils::UniqueObjectPtr<ContentLibraryIconProvider> m_iconProvider;
Utils::UniqueObjectPtr<StudioQuickWidget> m_quickWidget; Utils::UniqueObjectPtr<StudioQuickWidget> m_quickWidget;
QPointer<ContentLibraryMaterialsModel> m_materialsModel; QPointer<ContentLibraryMaterialsModel> m_materialsModel;
QPointer<ContentLibraryTexturesModel> m_texturesModel; QPointer<ContentLibraryTexturesModel> m_texturesModel;