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 Internal {
ContentLibraryIconProvider::ContentLibraryIconProvider()
: QQuickImageProvider(Pixmap)
{
}
QPixmap ContentLibraryIconProvider::requestPixmap(const QString &id,
QSize *size,
[[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) {
size->setWidth(pixmap.width());
@@ -37,6 +34,4 @@ QPixmap ContentLibraryIconProvider::requestPixmap(const QString &id,
return pixmap;
}
} // namespace Internal
} // namespace QmlDesigner

View File

@@ -5,7 +5,7 @@
#include <QQuickImageProvider>
namespace QmlDesigner::Internal {
namespace QmlDesigner {
class ContentLibraryIconProvider : public QQuickImageProvider
{
@@ -14,4 +14,4 @@ public:
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 "contentlibrarybundleimporter.h"
#include "contentlibraryiconprovider.h"
#include "contentlibraryitem.h"
#include "contentlibraryeffectsmodel.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);
// 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);
else
saveIconToBundle(iconPixmap);
saveIconToBundle(iconPixmapToSave);
}
QString ContentLibraryView::getExportPath(const ModelNode &node) const

View File

@@ -5,12 +5,12 @@
#include "contentlibrarybundleimporter.h"
#include "contentlibraryeffectsmodel.h"
#include "contentlibraryiconprovider.h"
#include "contentlibraryitem.h"
#include "contentlibrarymaterial.h"
#include "contentlibrarymaterialsmodel.h"
#include "contentlibrarytexture.h"
#include "contentlibrarytexturesmodel.h"
#include "contentlibraryiconprovider.h"
#include "contentlibraryusermodel.h"
#include "utils/filedownloader.h"
@@ -123,7 +123,8 @@ bool ContentLibraryWidget::eventFilter(QObject *obj, QEvent *event)
}
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_texturesModel(new ContentLibraryTexturesModel("Textures", this))
, m_environmentsModel(new ContentLibraryTexturesModel("Environments", this))
@@ -138,8 +139,7 @@ ContentLibraryWidget::ContentLibraryWidget()
m_quickWidget->quickWidget()->setObjectName(Constants::OBJECT_NAME_CONTENT_LIBRARY);
m_quickWidget->setResizeMode(QQuickWidget::SizeRootObjectToView);
m_quickWidget->engine()->addImageProvider(QStringLiteral("contentlibrary"),
new Internal::ContentLibraryIconProvider);
m_quickWidget->engine()->addImageProvider("contentlibrary", m_iconProvider.get());
m_quickWidget->engine()->addImportPath(propertyEditorResourcesPath() + "/imports");
m_quickWidget->setClearColor(Theme::getColor(Theme::Color::DSpanelBackground));
@@ -181,6 +181,10 @@ ContentLibraryWidget::ContentLibraryWidget()
createImporter();
}
ContentLibraryWidget::~ContentLibraryWidget()
{
}
void ContentLibraryWidget::createImporter()
{
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)
{
if (!m_importer)

View File

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