forked from qt-creator/qt-creator
QmlDesigner: Move QDS mime types to constants
Also: - Rename libraryresource to asset to match the assets view name. - Replace the outdated "bauhaus" name with "qtdesignstudio". Change-Id: I4cacfdc33c029431b1a7b906439dabc3d9a7ee26 Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
@@ -87,7 +87,7 @@ bool AssetsLibraryWidget::eventFilter(QObject *obj, QEvent *event)
|
||||
auto drag = new QDrag(this);
|
||||
drag->setPixmap(m_assetsIconProvider->requestPixmap(m_assetsToDrag[0], nullptr, {128, 128}));
|
||||
QMimeData *mimeData = new QMimeData;
|
||||
mimeData->setData("application/vnd.bauhaus.libraryresource", m_assetsToDrag.join(',').toUtf8());
|
||||
mimeData->setData(Constants::MIME_TYPE_ASSETS, m_assetsToDrag.join(',').toUtf8());
|
||||
drag->setMimeData(mimeData);
|
||||
drag->exec();
|
||||
drag->deleteLater();
|
||||
@@ -307,25 +307,25 @@ QPair<QString, QByteArray> AssetsLibraryWidget::getAssetTypeAndData(const QStrin
|
||||
if (!suffix.isEmpty()) {
|
||||
if (AssetsLibraryModel::supportedImageSuffixes().contains(suffix)) {
|
||||
// Data: Image format (suffix)
|
||||
return {"application/vnd.bauhaus.libraryresource.image", suffix.toUtf8()};
|
||||
return {Constants::MIME_TYPE_ASSET_IMAGE, suffix.toUtf8()};
|
||||
} else if (AssetsLibraryModel::supportedFontSuffixes().contains(suffix)) {
|
||||
// Data: Font family name
|
||||
QRawFont font(assetPath, 10);
|
||||
QString fontFamily = font.isValid() ? font.familyName() : "";
|
||||
return {"application/vnd.bauhaus.libraryresource.font", fontFamily.toUtf8()};
|
||||
return {Constants::MIME_TYPE_ASSET_FONT, fontFamily.toUtf8()};
|
||||
} else if (AssetsLibraryModel::supportedShaderSuffixes().contains(suffix)) {
|
||||
// Data: shader type, frament (f) or vertex (v)
|
||||
return {"application/vnd.bauhaus.libraryresource.shader",
|
||||
return {Constants::MIME_TYPE_ASSET_SHADER,
|
||||
AssetsLibraryModel::supportedFragmentShaderSuffixes().contains(suffix) ? "f" : "v"};
|
||||
} else if (AssetsLibraryModel::supportedAudioSuffixes().contains(suffix)) {
|
||||
// No extra data for sounds
|
||||
return {"application/vnd.bauhaus.libraryresource.sound", {}};
|
||||
return {Constants::MIME_TYPE_ASSET_SOUND, {}};
|
||||
} else if (AssetsLibraryModel::supportedVideoSuffixes().contains(suffix)) {
|
||||
// No extra data for videos
|
||||
return {"application/vnd.bauhaus.libraryresource.video", {}};
|
||||
return {Constants::MIME_TYPE_ASSET_VIDEO, {}};
|
||||
} else if (AssetsLibraryModel::supportedTexture3DSuffixes().contains(suffix)) {
|
||||
// Data: Image format (suffix)
|
||||
return {"application/vnd.bauhaus.libraryresource.texture3d", suffix.toUtf8()};
|
||||
return {Constants::MIME_TYPE_ASSET_TEXTURE3D, suffix.toUtf8()};
|
||||
}
|
||||
}
|
||||
return {};
|
||||
|
@@ -169,7 +169,7 @@ void Edit3DCanvas::dragEnterEvent(QDragEnterEvent *e)
|
||||
// Allow drop when there is no valid active scene, as the drop goes under the root node of
|
||||
// the document in that case.
|
||||
if (!node.isValid() || !ModelNode::isThisOrAncestorLocked(node)) {
|
||||
QByteArray data = e->mimeData()->data(QStringLiteral("application/vnd.bauhaus.itemlibraryinfo"));
|
||||
QByteArray data = e->mimeData()->data(Constants::MIME_TYPE_ITEM_LIBRARY_INFO);
|
||||
if (!data.isEmpty()) {
|
||||
QDataStream stream(data);
|
||||
stream >> m_itemLibraryEntry;
|
||||
|
@@ -24,12 +24,12 @@
|
||||
****************************************************************************/
|
||||
|
||||
#include "abstractformeditortool.h"
|
||||
#include "assetslibrarywidget.h"
|
||||
#include "formeditorscene.h"
|
||||
#include "formeditorview.h"
|
||||
#include "formeditorwidget.h"
|
||||
#include "formeditorscene.h"
|
||||
#include "assetslibrarywidget.h"
|
||||
|
||||
#include <modelnodecontextmenu.h>
|
||||
#include "modelnodecontextmenu.h"
|
||||
#include "qmldesignerconstants.h"
|
||||
|
||||
#include <QDebug>
|
||||
#include <QGraphicsSceneDragDropEvent>
|
||||
@@ -236,20 +236,20 @@ void AbstractFormEditorTool::dropEvent(const QList<QGraphicsItem*> &/*itemList*/
|
||||
void AbstractFormEditorTool::dragEnterEvent(const QList<QGraphicsItem*> &itemList, QGraphicsSceneDragDropEvent *event)
|
||||
{
|
||||
bool hasValidAssets = false;
|
||||
if (event->mimeData()->hasFormat("application/vnd.bauhaus.libraryresource")) {
|
||||
if (event->mimeData()->hasFormat(Constants::MIME_TYPE_ASSETS)) {
|
||||
const QStringList assetPaths = QString::fromUtf8(event->mimeData()
|
||||
->data("application/vnd.bauhaus.libraryresource")).split(",");
|
||||
->data(Constants::MIME_TYPE_ASSETS)).split(',');
|
||||
for (const QString &assetPath : assetPaths) {
|
||||
QString assetType = AssetsLibraryWidget::getAssetTypeAndData(assetPath).first;
|
||||
if (assetType == "application/vnd.bauhaus.libraryresource.image"
|
||||
|| assetType == "application/vnd.bauhaus.libraryresource.font") {
|
||||
if (assetType == Constants::MIME_TYPE_ASSET_IMAGE
|
||||
|| assetType == Constants::MIME_TYPE_ASSET_FONT) {
|
||||
hasValidAssets = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (event->mimeData()->hasFormat(QLatin1String("application/vnd.bauhaus.itemlibraryinfo")) || hasValidAssets) {
|
||||
if (event->mimeData()->hasFormat(Constants::MIME_TYPE_ITEM_LIBRARY_INFO) || hasValidAssets) {
|
||||
event->accept();
|
||||
view()->changeToDragTool();
|
||||
view()->currentTool()->dragEnterEvent(itemList, event);
|
||||
|
@@ -31,6 +31,7 @@
|
||||
#include <metainfo.h>
|
||||
#include <nodehints.h>
|
||||
#include <rewritingexception.h>
|
||||
#include "qmldesignerconstants.h"
|
||||
|
||||
#include <QDebug>
|
||||
#include <QGraphicsSceneMouseEvent>
|
||||
@@ -219,9 +220,7 @@ void DragTool::abort()
|
||||
|
||||
static ItemLibraryEntry itemLibraryEntryFromMimeData(const QMimeData *mimeData)
|
||||
{
|
||||
QByteArray data = mimeData->data(QStringLiteral("application/vnd.bauhaus.itemlibraryinfo"));
|
||||
|
||||
QDataStream stream(data);
|
||||
QDataStream stream(mimeData->data(Constants::MIME_TYPE_ITEM_LIBRARY_INFO));
|
||||
|
||||
ItemLibraryEntry itemLibraryEntry;
|
||||
stream >> itemLibraryEntry;
|
||||
@@ -236,7 +235,7 @@ static bool canBeDropped(const QMimeData *mimeData)
|
||||
|
||||
static bool hasItemLibraryInfo(const QMimeData *mimeData)
|
||||
{
|
||||
return mimeData->hasFormat(QStringLiteral("application/vnd.bauhaus.itemlibraryinfo"));
|
||||
return mimeData->hasFormat(Constants::MIME_TYPE_ITEM_LIBRARY_INFO);
|
||||
}
|
||||
|
||||
void DragTool::dropEvent(const QList<QGraphicsItem *> &/*itemList*/, QGraphicsSceneDragDropEvent *event)
|
||||
@@ -326,12 +325,12 @@ void DragTool::createDragNodes(const QMimeData *mimeData, const QPointF &scenePo
|
||||
scenePosition);
|
||||
} else {
|
||||
const QStringList assetPaths = QString::fromUtf8(mimeData
|
||||
->data("application/vnd.bauhaus.libraryresource")).split(",");
|
||||
->data(Constants::MIME_TYPE_ASSETS)).split(',');
|
||||
for (const QString &assetPath : assetPaths) {
|
||||
QString assetType = AssetsLibraryWidget::getAssetTypeAndData(assetPath).first;
|
||||
if (assetType == "application/vnd.bauhaus.libraryresource.image")
|
||||
if (assetType == Constants::MIME_TYPE_ASSET_IMAGE)
|
||||
createQmlItemNodeFromImage(assetPath, targetContainerQmlItemNode, scenePosition);
|
||||
else if (assetType == "application/vnd.bauhaus.libraryresource.font")
|
||||
else if (assetType == Constants::MIME_TYPE_ASSET_FONT)
|
||||
createQmlItemNodeFromFont(assetPath, targetContainerQmlItemNode, scenePosition);
|
||||
}
|
||||
|
||||
|
@@ -36,6 +36,7 @@
|
||||
#include <nodemetainfo.h>
|
||||
#include <projectexplorer/project.h>
|
||||
#include <projectexplorer/session.h>
|
||||
#include "qmldesignerconstants.h"
|
||||
#include "qmldesignerplugin.h"
|
||||
#include <utils/algorithm.h>
|
||||
#include <utils/qtcassert.h>
|
||||
@@ -512,9 +513,9 @@ QMimeData *ItemLibraryModel::getMimeData(const ItemLibraryEntry &itemLibraryEntr
|
||||
QByteArray data;
|
||||
QDataStream stream(&data, QIODevice::WriteOnly);
|
||||
stream << itemLibraryEntry;
|
||||
mimeData->setData(QStringLiteral("application/vnd.bauhaus.itemlibraryinfo"), data);
|
||||
mimeData->setData(Constants::MIME_TYPE_ITEM_LIBRARY_INFO, data);
|
||||
|
||||
mimeData->removeFormat(QStringLiteral("text/plain"));
|
||||
mimeData->removeFormat("text/plain");
|
||||
|
||||
return mimeData;
|
||||
}
|
||||
|
@@ -71,7 +71,7 @@ namespace QmlDesigner {
|
||||
|
||||
static QList<ModelNode> modelNodesFromMimeData(const QMimeData *mineData, AbstractView *view)
|
||||
{
|
||||
QByteArray encodedModelNodeData = mineData->data(QLatin1String("application/vnd.modelnode.list"));
|
||||
QByteArray encodedModelNodeData = mineData->data(Constants::MIME_TYPE_MODELNODE_LIST);
|
||||
QDataStream modelNodeStream(&encodedModelNodeData, QIODevice::ReadOnly);
|
||||
|
||||
QList<ModelNode> modelNodeList;
|
||||
@@ -465,9 +465,9 @@ void NavigatorTreeModel::setView(NavigatorView *view)
|
||||
|
||||
QStringList NavigatorTreeModel::mimeTypes() const
|
||||
{
|
||||
const static QStringList types({"application/vnd.modelnode.list",
|
||||
"application/vnd.bauhaus.itemlibraryinfo",
|
||||
"application/vnd.bauhaus.libraryresource"});
|
||||
const static QStringList types({Constants::MIME_TYPE_MODELNODE_LIST,
|
||||
Constants::MIME_TYPE_ITEM_LIBRARY_INFO,
|
||||
Constants::MIME_TYPE_ASSETS});
|
||||
|
||||
return types;
|
||||
}
|
||||
@@ -490,7 +490,7 @@ QMimeData *NavigatorTreeModel::mimeData(const QModelIndexList &modelIndexList) c
|
||||
}
|
||||
}
|
||||
|
||||
mimeData->setData("application/vnd.modelnode.list", encodedModelNodeData);
|
||||
mimeData->setData(Constants::MIME_TYPE_MODELNODE_LIST, encodedModelNodeData);
|
||||
|
||||
return mimeData;
|
||||
}
|
||||
@@ -560,10 +560,10 @@ bool NavigatorTreeModel::dropMimeData(const QMimeData *mimeData,
|
||||
widget->setDragType("");
|
||||
|
||||
if (dropModelIndex.model() == this) {
|
||||
if (mimeData->hasFormat("application/vnd.bauhaus.itemlibraryinfo")) {
|
||||
if (mimeData->hasFormat(Constants::MIME_TYPE_ITEM_LIBRARY_INFO)) {
|
||||
handleItemLibraryItemDrop(mimeData, rowNumber, dropModelIndex);
|
||||
} else if (mimeData->hasFormat("application/vnd.bauhaus.libraryresource")) {
|
||||
const QStringList assetsPaths = QString::fromUtf8(mimeData->data("application/vnd.bauhaus.libraryresource")).split(",");
|
||||
} else if (mimeData->hasFormat(Constants::MIME_TYPE_ASSETS)) {
|
||||
const QStringList assetsPaths = QString::fromUtf8(mimeData->data(Constants::MIME_TYPE_ASSETS)).split(',');
|
||||
NodeAbstractProperty targetProperty;
|
||||
|
||||
const QModelIndex rowModelIndex = dropModelIndex.sibling(dropModelIndex.row(), 0);
|
||||
@@ -579,9 +579,9 @@ bool NavigatorTreeModel::dropMimeData(const QMimeData *mimeData,
|
||||
QSet<QString> neededImports;
|
||||
for (const QString &assetPath : assetsPaths) {
|
||||
QString assetType = AssetsLibraryWidget::getAssetTypeAndData(assetPath).first;
|
||||
if (assetType == "application/vnd.bauhaus.libraryresource.shader")
|
||||
if (assetType == Constants::MIME_TYPE_ASSET_SHADER)
|
||||
neededImports.insert("QtQuick3D");
|
||||
else if (assetType == "application/vnd.bauhaus.libraryresource.sound")
|
||||
else if (assetType == Constants::MIME_TYPE_ASSET_SOUND)
|
||||
neededImports.insert("QtMultimedia");
|
||||
|
||||
if (neededImports.size() == 2)
|
||||
@@ -598,20 +598,20 @@ bool NavigatorTreeModel::dropMimeData(const QMimeData *mimeData,
|
||||
auto assetTypeAndData = AssetsLibraryWidget::getAssetTypeAndData(assetPath);
|
||||
QString assetType = assetTypeAndData.first;
|
||||
QString assetData = QString::fromUtf8(assetTypeAndData.second);
|
||||
if (assetType == "application/vnd.bauhaus.libraryresource.image") {
|
||||
if (assetType == Constants::MIME_TYPE_ASSET_IMAGE) {
|
||||
currNode = handleItemLibraryImageDrop(assetPath, targetProperty,
|
||||
rowModelIndex, moveNodesAfter);
|
||||
} else if (assetType == "application/vnd.bauhaus.libraryresource.font") {
|
||||
} else if (assetType == Constants::MIME_TYPE_ASSET_FONT) {
|
||||
currNode = handleItemLibraryFontDrop(assetData, // assetData is fontFamily
|
||||
targetProperty, rowModelIndex);
|
||||
} else if (assetType == "application/vnd.bauhaus.libraryresource.shader") {
|
||||
} else if (assetType == Constants::MIME_TYPE_ASSET_SHADER) {
|
||||
currNode = handleItemLibraryShaderDrop(assetPath, assetData == "f",
|
||||
targetProperty, rowModelIndex,
|
||||
moveNodesAfter);
|
||||
} else if (assetType == "application/vnd.bauhaus.libraryresource.sound") {
|
||||
} else if (assetType == Constants::MIME_TYPE_ASSET_SOUND) {
|
||||
currNode = handleItemLibrarySoundDrop(assetPath, targetProperty,
|
||||
rowModelIndex);
|
||||
} else if (assetType == "application/vnd.bauhaus.libraryresource.texture3d") {
|
||||
} else if (assetType == Constants::MIME_TYPE_ASSET_TEXTURE3D) {
|
||||
currNode = handleItemLibraryTexture3dDrop(assetPath, targetProperty,
|
||||
rowModelIndex, moveNodesAfter);
|
||||
}
|
||||
@@ -627,7 +627,7 @@ bool NavigatorTreeModel::dropMimeData(const QMimeData *mimeData,
|
||||
m_view->setSelectedModelNodes(addedNodes);
|
||||
}
|
||||
}
|
||||
} else if (mimeData->hasFormat("application/vnd.modelnode.list")) {
|
||||
} else if (mimeData->hasFormat(Constants::MIME_TYPE_MODELNODE_LIST)) {
|
||||
handleInternalDrop(mimeData, rowNumber, dropModelIndex);
|
||||
}
|
||||
}
|
||||
@@ -673,7 +673,7 @@ void NavigatorTreeModel::handleItemLibraryItemDrop(const QMimeData *mimeData, in
|
||||
NodeAbstractProperty targetProperty;
|
||||
|
||||
const ItemLibraryEntry itemLibraryEntry =
|
||||
createItemLibraryEntryFromMimeData(mimeData->data("application/vnd.bauhaus.itemlibraryinfo"));
|
||||
createItemLibraryEntryFromMimeData(mimeData->data(Constants::MIME_TYPE_ITEM_LIBRARY_INFO));
|
||||
|
||||
const NodeHints hints = NodeHints::fromItemLibraryEntry(itemLibraryEntry);
|
||||
|
||||
|
@@ -268,8 +268,8 @@ void NavigatorView::bindingPropertiesChanged(const QList<BindingProperty> & prop
|
||||
|
||||
void NavigatorView::dragStarted(QMimeData *mimeData)
|
||||
{
|
||||
if (mimeData->hasFormat("application/vnd.bauhaus.itemlibraryinfo")) {
|
||||
QByteArray data = mimeData->data("application/vnd.bauhaus.itemlibraryinfo");
|
||||
if (mimeData->hasFormat(Constants::MIME_TYPE_ITEM_LIBRARY_INFO)) {
|
||||
QByteArray data = mimeData->data(Constants::MIME_TYPE_ITEM_LIBRARY_INFO);
|
||||
QDataStream stream(data);
|
||||
ItemLibraryEntry itemLibraryEntry;
|
||||
stream >> itemLibraryEntry;
|
||||
|
@@ -85,6 +85,16 @@ const char QUICK_3D_ASSET_IMPORT_DATA_OPTIONS_KEY[] = "import_options";
|
||||
const char QUICK_3D_ASSET_IMPORT_DATA_SOURCE_KEY[] = "source_scene";
|
||||
const char DEFAULT_ASSET_IMPORT_FOLDER[] = "/asset_imports";
|
||||
|
||||
const char MIME_TYPE_ITEM_LIBRARY_INFO[] = "application/vnd.qtdesignstudio.itemlibraryinfo";
|
||||
const char MIME_TYPE_ASSETS[] = "application/vnd.qtdesignstudio.assets";
|
||||
const char MIME_TYPE_ASSET_IMAGE[] = "application/vnd.qtdesignstudio.asset.image";
|
||||
const char MIME_TYPE_ASSET_FONT[] = "application/vnd.qtdesignstudio.asset.font";
|
||||
const char MIME_TYPE_ASSET_SHADER[] = "application/vnd.qtdesignstudio.asset.shader";
|
||||
const char MIME_TYPE_ASSET_SOUND[] = "application/vnd.qtdesignstudio.asset.sound";
|
||||
const char MIME_TYPE_ASSET_VIDEO[] = "application/vnd.qtdesignstudio.asset.video";
|
||||
const char MIME_TYPE_ASSET_TEXTURE3D[] = "application/vnd.qtdesignstudio.asset.texture3d";
|
||||
const char MIME_TYPE_MODELNODE_LIST[] = "application/vnd.qtdesignstudio.modelnode.list";
|
||||
|
||||
// Menus
|
||||
const char M_VIEW_WORKSPACES[] = "QmlDesigner.Menu.View.Workspaces";
|
||||
|
||||
|
Reference in New Issue
Block a user