forked from qt-creator/qt-creator
QmlDesigner: Show preview for more image and picture types
BorderImage, SafeRendererImage, and SafeRendererPicture items now show their images in navigator preview image tooltip. Change-Id: I52c2f2ab87b3489fdfbbabe52737c5b97b0cf3fe Fixes: QDS-2921 Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io> Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
This commit is contained in:
@@ -199,24 +199,17 @@ void DesignerActionManager::registerAddResourceHandler(const AddResourceHandler
|
|||||||
m_addResourceHandler.append(handler);
|
m_addResourceHandler.append(handler);
|
||||||
}
|
}
|
||||||
|
|
||||||
QMultiHash<TypeName, ModelNodePreviewImageHandler> DesignerActionManager::modelNodePreviewHandlers() const
|
|
||||||
{
|
|
||||||
return m_modelNodePreviewImageHandlers;
|
|
||||||
}
|
|
||||||
|
|
||||||
void DesignerActionManager::registerModelNodePreviewHandler(const ModelNodePreviewImageHandler &handler)
|
void DesignerActionManager::registerModelNodePreviewHandler(const ModelNodePreviewImageHandler &handler)
|
||||||
{
|
{
|
||||||
m_modelNodePreviewImageHandlers.insert(handler.type, handler);
|
m_modelNodePreviewImageHandlers.append(handler);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DesignerActionManager::hasModelNodePreviewHandler(const ModelNode &node) const
|
bool DesignerActionManager::hasModelNodePreviewHandler(const ModelNode &node) const
|
||||||
{
|
{
|
||||||
const bool isComponent = node.isComponent();
|
const bool isComponent = node.isComponent();
|
||||||
for (const auto &handler : qAsConst(m_modelNodePreviewImageHandlers)) {
|
for (const auto &handler : qAsConst(m_modelNodePreviewImageHandlers)) {
|
||||||
if ((isComponent || !handler.componentOnly) && node.isSubclassOf(handler.type)) {
|
if ((isComponent || !handler.componentOnly) && node.isSubclassOf(handler.type))
|
||||||
ModelNodePreviewImageHandler subClassHandler = handler;
|
|
||||||
return true;
|
return true;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1413,6 +1406,15 @@ void DesignerActionManager::createDefaultModelNodePreviewImageHandlers()
|
|||||||
registerModelNodePreviewHandler(
|
registerModelNodePreviewHandler(
|
||||||
ModelNodePreviewImageHandler("QtQuick.Image",
|
ModelNodePreviewImageHandler("QtQuick.Image",
|
||||||
ModelNodeOperations::previewImageDataForImageNode));
|
ModelNodeOperations::previewImageDataForImageNode));
|
||||||
|
registerModelNodePreviewHandler(
|
||||||
|
ModelNodePreviewImageHandler("QtQuick.BorderImage",
|
||||||
|
ModelNodeOperations::previewImageDataForImageNode));
|
||||||
|
registerModelNodePreviewHandler(
|
||||||
|
ModelNodePreviewImageHandler("Qt.SafeRenderer.SafeRendererImage",
|
||||||
|
ModelNodeOperations::previewImageDataForImageNode));
|
||||||
|
registerModelNodePreviewHandler(
|
||||||
|
ModelNodePreviewImageHandler("Qt.SafeRenderer.SafeRendererPicture",
|
||||||
|
ModelNodeOperations::previewImageDataForImageNode));
|
||||||
registerModelNodePreviewHandler(
|
registerModelNodePreviewHandler(
|
||||||
ModelNodePreviewImageHandler("QtQuick3D.Texture",
|
ModelNodePreviewImageHandler("QtQuick3D.Texture",
|
||||||
ModelNodeOperations::previewImageDataForImageNode));
|
ModelNodeOperations::previewImageDataForImageNode));
|
||||||
|
|||||||
@@ -127,7 +127,6 @@ public:
|
|||||||
QList<AddResourceHandler> addResourceHandler() const;
|
QList<AddResourceHandler> addResourceHandler() const;
|
||||||
void registerAddResourceHandler(const AddResourceHandler &handler);
|
void registerAddResourceHandler(const AddResourceHandler &handler);
|
||||||
|
|
||||||
QMultiHash<TypeName, ModelNodePreviewImageHandler> modelNodePreviewHandlers() const;
|
|
||||||
void registerModelNodePreviewHandler(const ModelNodePreviewImageHandler &handler);
|
void registerModelNodePreviewHandler(const ModelNodePreviewImageHandler &handler);
|
||||||
bool hasModelNodePreviewHandler(const ModelNode &node) const;
|
bool hasModelNodePreviewHandler(const ModelNode &node) const;
|
||||||
ModelNodePreviewImageOperation modelNodePreviewOperation(const ModelNode &node) const;
|
ModelNodePreviewImageOperation modelNodePreviewOperation(const ModelNode &node) const;
|
||||||
@@ -139,7 +138,7 @@ private:
|
|||||||
QList<QSharedPointer<ActionInterface> > m_designerActions;
|
QList<QSharedPointer<ActionInterface> > m_designerActions;
|
||||||
DesignerActionManagerView *m_designerActionManagerView;
|
DesignerActionManagerView *m_designerActionManagerView;
|
||||||
QList<AddResourceHandler> m_addResourceHandler;
|
QList<AddResourceHandler> m_addResourceHandler;
|
||||||
QMultiHash<TypeName, ModelNodePreviewImageHandler> m_modelNodePreviewImageHandlers;
|
QList<ModelNodePreviewImageHandler> m_modelNodePreviewImageHandlers;
|
||||||
};
|
};
|
||||||
|
|
||||||
} //QmlDesigner
|
} //QmlDesigner
|
||||||
|
|||||||
@@ -98,6 +98,8 @@
|
|||||||
#include <QUrl>
|
#include <QUrl>
|
||||||
#include <QMultiHash>
|
#include <QMultiHash>
|
||||||
#include <QTimerEvent>
|
#include <QTimerEvent>
|
||||||
|
#include <QPicture>
|
||||||
|
#include <QPainter>
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
debug = false
|
debug = false
|
||||||
@@ -1636,7 +1638,20 @@ QVariant NodeInstanceView::previewImageDataForImageNode(const ModelNode &modelNo
|
|||||||
|
|
||||||
if (reload) {
|
if (reload) {
|
||||||
QPixmap originalPixmap;
|
QPixmap originalPixmap;
|
||||||
originalPixmap.load(imageSource);
|
if (modelNode.isSubclassOf("Qt.SafeRenderer.SafeRendererPicture")) {
|
||||||
|
QPicture picture;
|
||||||
|
picture.load(imageSource);
|
||||||
|
if (!picture.isNull()) {
|
||||||
|
QImage paintImage(picture.width(), picture.height(), QImage::Format_ARGB32);
|
||||||
|
paintImage.fill(Qt::transparent);
|
||||||
|
QPainter painter(&paintImage);
|
||||||
|
painter.drawPicture(0, 0, picture);
|
||||||
|
painter.end();
|
||||||
|
originalPixmap = QPixmap::fromImage(paintImage);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
originalPixmap.load(imageSource);
|
||||||
|
}
|
||||||
if (!originalPixmap.isNull()) {
|
if (!originalPixmap.isNull()) {
|
||||||
const int dim = Constants::MODELNODE_PREVIEW_IMAGE_DIMENSIONS * ratio;
|
const int dim = Constants::MODELNODE_PREVIEW_IMAGE_DIMENSIONS * ratio;
|
||||||
imageData.pixmap = originalPixmap.scaled(dim, dim, Qt::KeepAspectRatio);
|
imageData.pixmap = originalPixmap.scaled(dim, dim, Qt::KeepAspectRatio);
|
||||||
|
|||||||
Reference in New Issue
Block a user