QmlDesigner: Add support for video assets

* Add *.mp3 as sound asset
* Add *.mp4 as video asset

Change-Id: If96bab257abf9d0264e374b5f1f92b807b5349a2
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Henning Gruendl
2021-12-02 13:18:02 +01:00
committed by Tim Jenssen
parent 16c8f1a9b6
commit 73fb01f4b2
11 changed files with 27 additions and 2 deletions

View File

@@ -221,6 +221,7 @@ const int priorityLast = 60;
const char addImagesDisplayString[] = QT_TRANSLATE_NOOP("QmlDesignerAddResources", "Image Files"); const char addImagesDisplayString[] = QT_TRANSLATE_NOOP("QmlDesignerAddResources", "Image Files");
const char addFontsDisplayString[] = QT_TRANSLATE_NOOP("QmlDesignerAddResources", "Font Files"); const char addFontsDisplayString[] = QT_TRANSLATE_NOOP("QmlDesignerAddResources", "Font Files");
const char addSoundsDisplayString[] = QT_TRANSLATE_NOOP("QmlDesignerAddResources", "Sound Files"); const char addSoundsDisplayString[] = QT_TRANSLATE_NOOP("QmlDesignerAddResources", "Sound Files");
const char addVideosDisplayString[] = QT_TRANSLATE_NOOP("QmlDesignerAddResources", "Video Files");
const char addShadersDisplayString[] = QT_TRANSLATE_NOOP("QmlDesignerAddResources", "Shader Files"); const char addShadersDisplayString[] = QT_TRANSLATE_NOOP("QmlDesignerAddResources", "Shader Files");
const char add3DAssetsDisplayString[] = QT_TRANSLATE_NOOP("QmlDesignerAddResources", "3D Assets"); const char add3DAssetsDisplayString[] = QT_TRANSLATE_NOOP("QmlDesignerAddResources", "3D Assets");
const char addQt3DSPresentationsDisplayString[] = QT_TRANSLATE_NOOP("QmlDesignerAddResources", const char addQt3DSPresentationsDisplayString[] = QT_TRANSLATE_NOOP("QmlDesignerAddResources",

View File

@@ -1557,12 +1557,15 @@ void DesignerActionManager::createDefaultAddResourceHandler()
registerHandlers({"*.otf", "*.ttf"}, registerHandlers({"*.otf", "*.ttf"},
ModelNodeOperations::addFontToProject, ModelNodeOperations::addFontToProject,
ComponentCoreConstants::addFontsDisplayString); ComponentCoreConstants::addFontsDisplayString);
registerHandlers({"*.wav"}, registerHandlers({"*.wav", "*.mp3"},
ModelNodeOperations::addSoundToProject, ModelNodeOperations::addSoundToProject,
ComponentCoreConstants::addSoundsDisplayString); ComponentCoreConstants::addSoundsDisplayString);
registerHandlers({"*.glsl", "*.glslv", "*.glslf", "*.vsh", "*.fsh", "*.vert", "*.frag"}, registerHandlers({"*.glsl", "*.glslv", "*.glslf", "*.vsh", "*.fsh", "*.vert", "*.frag"},
ModelNodeOperations::addShaderToProject, ModelNodeOperations::addShaderToProject,
ComponentCoreConstants::addShadersDisplayString); ComponentCoreConstants::addShadersDisplayString);
registerHandlers({"*.mp4"},
ModelNodeOperations::addVideoToProject,
ComponentCoreConstants::addVideosDisplayString);
} }
void DesignerActionManager::createDefaultModelNodePreviewImageHandlers() void DesignerActionManager::createDefaultModelNodePreviewImageHandlers()

View File

@@ -1077,6 +1077,11 @@ AddFilesResult addImageToProject(const QStringList &fileNames, const QString &de
return addFilesToProject(fileNames, getAssetDefaultDirectory("images", defaultDirectory)); return addFilesToProject(fileNames, getAssetDefaultDirectory("images", defaultDirectory));
} }
AddFilesResult addVideoToProject(const QStringList &fileNames, const QString &defaultDirectory)
{
return addFilesToProject(fileNames, getAssetDefaultDirectory("videos", defaultDirectory));
}
void createFlowActionArea(const SelectionContext &selectionContext) void createFlowActionArea(const SelectionContext &selectionContext)
{ {
AbstractView *view = selectionContext.view(); AbstractView *view = selectionContext.view();

View File

@@ -80,6 +80,7 @@ AddFilesResult addImageToProject(const QStringList &fileNames, const QString &di
AddFilesResult addFontToProject(const QStringList &fileNames, const QString &directory); AddFilesResult addFontToProject(const QStringList &fileNames, const QString &directory);
AddFilesResult addSoundToProject(const QStringList &fileNames, const QString &directory); AddFilesResult addSoundToProject(const QStringList &fileNames, const QString &directory);
AddFilesResult addShaderToProject(const QStringList &fileNames, const QString &directory); AddFilesResult addShaderToProject(const QStringList &fileNames, const QString &directory);
AddFilesResult addVideoToProject(const QStringList &fileNames, const QString &directory);
void createFlowActionArea(const SelectionContext &selectionContext); void createFlowActionArea(const SelectionContext &selectionContext);
void addTransition(const SelectionContext &selectionState); void addTransition(const SelectionContext &selectionState);
void addFlowEffect(const SelectionContext &selectionState, const TypeName &typeName); void addFlowEffect(const SelectionContext &selectionState, const TypeName &typeName);

Binary file not shown.

After

Width:  |  Height:  |  Size: 286 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 399 B

View File

@@ -33,5 +33,7 @@
<file>images/x@2x.png</file> <file>images/x@2x.png</file>
<file>images/browse.png</file> <file>images/browse.png</file>
<file>images/browse@2x.png</file> <file>images/browse@2x.png</file>
<file>images/item-video-icon.png</file>
<file>images/item-video-icon@2x.png</file>
</qresource> </qresource>
</RCC> </RCC>

View File

@@ -54,6 +54,8 @@ QPixmap ItemLibraryAssetsIconProvider::requestPixmap(const QString &id, QSize *s
pixmap = Utils::StyleHelper::dpiSpecificImageFile(":/ItemLibrary/images/asset_shader_48.png"); pixmap = Utils::StyleHelper::dpiSpecificImageFile(":/ItemLibrary/images/asset_shader_48.png");
else if (ItemLibraryAssetsModel::supportedAudioSuffixes().contains(suffix)) else if (ItemLibraryAssetsModel::supportedAudioSuffixes().contains(suffix))
pixmap = Utils::StyleHelper::dpiSpecificImageFile(":/ItemLibrary/images/asset_sound_48.png"); pixmap = Utils::StyleHelper::dpiSpecificImageFile(":/ItemLibrary/images/asset_sound_48.png");
else if (ItemLibraryAssetsModel::supportedVideoSuffixes().contains(suffix))
pixmap = Utils::StyleHelper::dpiSpecificImageFile(":/ItemLibrary/images/item-video-icon.png");
if (size) { if (size) {
size->setWidth(pixmap.width()); size->setWidth(pixmap.width());

View File

@@ -167,7 +167,13 @@ const QStringList &ItemLibraryAssetsModel::supportedFontSuffixes()
const QStringList &ItemLibraryAssetsModel::supportedAudioSuffixes() const QStringList &ItemLibraryAssetsModel::supportedAudioSuffixes()
{ {
static const QStringList retList {"*.wav"}; static const QStringList retList {"*.wav", "*.mp3"};
return retList;
}
const QStringList &ItemLibraryAssetsModel::supportedVideoSuffixes()
{
static const QStringList retList {"*.mp4"};
return retList; return retList;
} }
@@ -300,6 +306,7 @@ const QSet<QString> &ItemLibraryAssetsModel::supportedSuffixes() const
insertSuffixes(supportedShaderSuffixes()); insertSuffixes(supportedShaderSuffixes());
insertSuffixes(supportedFontSuffixes()); insertSuffixes(supportedFontSuffixes());
insertSuffixes(supportedAudioSuffixes()); insertSuffixes(supportedAudioSuffixes());
insertSuffixes(supportedVideoSuffixes());
insertSuffixes(supportedTexture3DSuffixes()); insertSuffixes(supportedTexture3DSuffixes());
} }
return allSuffixes; return allSuffixes;

View File

@@ -66,6 +66,7 @@ public:
static const QStringList &supportedShaderSuffixes(); static const QStringList &supportedShaderSuffixes();
static const QStringList &supportedFontSuffixes(); static const QStringList &supportedFontSuffixes();
static const QStringList &supportedAudioSuffixes(); static const QStringList &supportedAudioSuffixes();
static const QStringList &supportedVideoSuffixes();
static const QStringList &supportedTexture3DSuffixes(); static const QStringList &supportedTexture3DSuffixes();
const QSet<QString> &previewableSuffixes() const; const QSet<QString> &previewableSuffixes() const;

View File

@@ -552,6 +552,9 @@ QPair<QString, QByteArray> ItemLibraryWidget::getAssetTypeAndData(const QString
} else if (ItemLibraryAssetsModel::supportedAudioSuffixes().contains(suffix)) { } else if (ItemLibraryAssetsModel::supportedAudioSuffixes().contains(suffix)) {
// No extra data for sounds // No extra data for sounds
return {"application/vnd.bauhaus.libraryresource.sound", {}}; return {"application/vnd.bauhaus.libraryresource.sound", {}};
} else if (ItemLibraryAssetsModel::supportedVideoSuffixes().contains(suffix)) {
// No extra data for videos
return {"application/vnd.bauhaus.libraryresource.video", {}};
} else if (ItemLibraryAssetsModel::supportedTexture3DSuffixes().contains(suffix)) { } else if (ItemLibraryAssetsModel::supportedTexture3DSuffixes().contains(suffix)) {
// Data: Image format (suffix) // Data: Image format (suffix)
return {"application/vnd.bauhaus.libraryresource.texture3d", suffix.toUtf8()}; return {"application/vnd.bauhaus.libraryresource.texture3d", suffix.toUtf8()};