diff --git a/share/qtcreator/qmldesigner/itemLibraryQmlSources/Assets.qml b/share/qtcreator/qmldesigner/itemLibraryQmlSources/Assets.qml index 57c0fe25213..8173457f73b 100644 --- a/share/qtcreator/qmldesigner/itemLibraryQmlSources/Assets.qml +++ b/share/qtcreator/qmldesigner/itemLibraryQmlSources/Assets.qml @@ -469,50 +469,62 @@ Item { visible: assetsModel.isEmpty && searchBox.isEmpty() clip: true - Column { - id: colNoAssets + DropArea { // handles external drop (goes into default folder based on suffix) + anchors.fill: parent - spacing: 20 - x: 20 - width: root.width - 2 * x - anchors.verticalCenter: parent.verticalCenter - - Text { - text: qsTr("Looks like you don't have any assets yet.") - color: StudioTheme.Values.themeTextColor - font.pixelSize: 18 - width: colNoAssets.width - horizontalAlignment: Text.AlignHCenter - wrapMode: Text.WordWrap + onEntered: (drag)=> { + root.updateDropExtFiles(drag) } - Image { - source: "image://qmldesigner_assets/browse" - anchors.horizontalCenter: parent.horizontalCenter - scale: maBrowse.containsMouse ? 1.2 : 1 - Behavior on scale { - NumberAnimation { - duration: 300 - easing.type: Easing.OutQuad + onDropped: { + rootView.handleExtFilesDrop(root.dropSimpleExtFiles, root.dropComplexExtFiles) + } + + Column { + id: colNoAssets + + spacing: 20 + x: 20 + width: root.width - 2 * x + anchors.verticalCenter: parent.verticalCenter + + Text { + text: qsTr("Looks like you don't have any assets yet.") + color: StudioTheme.Values.themeTextColor + font.pixelSize: 18 + width: colNoAssets.width + horizontalAlignment: Text.AlignHCenter + wrapMode: Text.WordWrap + } + + Image { + source: "image://qmldesigner_assets/browse" + anchors.horizontalCenter: parent.horizontalCenter + scale: maBrowse.containsMouse ? 1.2 : 1 + Behavior on scale { + NumberAnimation { + duration: 300 + easing.type: Easing.OutQuad + } + } + + MouseArea { + id: maBrowse + anchors.fill: parent + hoverEnabled: true + onClicked: rootView.handleAddAsset(); } } - MouseArea { - id: maBrowse - anchors.fill: parent - hoverEnabled: true - onClicked: rootView.handleAddAsset(); + Text { + text: qsTr("Drag-and-drop your assets here or click the '+' button to browse assets from the file system.") + color: StudioTheme.Values.themeTextColor + font.pixelSize: 18 + width: colNoAssets.width + horizontalAlignment: Text.AlignHCenter + wrapMode: Text.WordWrap } } - - Text { - text: qsTr("Drag-and-drop your assets here or click the '+' button to browse assets from the file system.") - color: StudioTheme.Values.themeTextColor - font.pixelSize: 18 - width: colNoAssets.width - horizontalAlignment: Text.AlignHCenter - wrapMode: Text.WordWrap - } } } diff --git a/src/plugins/qmldesigner/components/assetslibrary/assetslibrarywidget.cpp b/src/plugins/qmldesigner/components/assetslibrary/assetslibrarywidget.cpp index bed85b99e84..34be8ab46d9 100644 --- a/src/plugins/qmldesigner/components/assetslibrary/assetslibrarywidget.cpp +++ b/src/plugins/qmldesigner/components/assetslibrary/assetslibrarywidget.cpp @@ -218,11 +218,16 @@ void AssetsLibraryWidget::handleExtFilesDrop(const QStringList &simpleFilesPaths const QString &targetDirPath) { if (!simpleFilesPaths.isEmpty()) { - AddFilesResult result = ModelNodeOperations::addFilesToProject(simpleFilesPaths, targetDirPath); - if (result == AddFilesResult::Failed) { - Core::AsynchronousMessageBox::warning(tr("Failed to Add Files"), - tr("Could not add %1 to project.") - .arg(simpleFilesPaths.join(' '))); + if (targetDirPath.isEmpty()) { + addResources(simpleFilesPaths); + } else { + AddFilesResult result = ModelNodeOperations::addFilesToProject(simpleFilesPaths, + targetDirPath); + if (result == AddFilesResult::Failed) { + Core::AsynchronousMessageBox::warning(tr("Failed to Add Files"), + tr("Could not add %1 to project.") + .arg(simpleFilesPaths.join(' '))); + } } } diff --git a/src/plugins/qmldesigner/components/assetslibrary/assetslibrarywidget.h b/src/plugins/qmldesigner/components/assetslibrary/assetslibrarywidget.h index 47a9ce681d6..abf91c3a8ce 100644 --- a/src/plugins/qmldesigner/components/assetslibrary/assetslibrarywidget.h +++ b/src/plugins/qmldesigner/components/assetslibrary/assetslibrarywidget.h @@ -82,7 +82,7 @@ public: Q_INVOKABLE void handleSearchfilterChanged(const QString &filterText); Q_INVOKABLE void handleExtFilesDrop(const QStringList &simpleFilesPaths, const QStringList &complexFilesPaths, - const QString &targetDirPath); + const QString &targetDirPath = {}); Q_INVOKABLE QSet supportedAssetSuffixes(bool complex); signals: