From 4a90ec303c7293d58981e8ee3b24c5c1bcb459f0 Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Tue, 15 Mar 2016 11:22:42 -0700 Subject: [PATCH] Fix drag&drop --- interface/resources/qml/AssetServer.qml | 40 ++++++++++--------- interface/src/Application.cpp | 3 +- interface/src/Application.h | 2 + .../AssetMappingsScriptingInterface.h | 1 + 4 files changed, 26 insertions(+), 20 deletions(-) diff --git a/interface/resources/qml/AssetServer.qml b/interface/resources/qml/AssetServer.qml index d1b38eccc6..3e8942c206 100644 --- a/interface/resources/qml/AssetServer.qml +++ b/interface/resources/qml/AssetServer.qml @@ -45,6 +45,7 @@ Window { } Component.onCompleted: { + ApplicationInterface.uploadRequest.connect(uploadClicked); assetMappingsModel.errorGettingMappings.connect(handleGetMappingsError); reload(); } @@ -245,24 +246,14 @@ Window { Timer { id: timer } - function uploadClicked() { + function uploadClicked(fileUrl) { if (uploadOpen) { return; } uploadOpen = true; - var fileUrl = ""; - - var browser = desktop.fileDialog({ - selectDirectory: false, - dir: currentDirectory - }); - browser.canceled.connect(function() { - uploadOpen = false; - }); - browser.selectedFile.connect(function(url){ + function doUpload(url) { var fileUrl = fileDialogHelper.urlToPath(url); - currentDirectory = browser.dir; var path = assetProxyModel.data(treeView.selection.currentIndex, 0x100); var directory = path ? path.slice(0, path.lastIndexOf('/') + 1) : "/"; @@ -299,8 +290,24 @@ Window { uploadButton.enabled = true; uploadOpen = false; } - }) - }); + }); + } + + if (fileUrl) { + doUpload(fileUrl); + } else { + var browser = desktop.fileDialog({ + selectDirectory: false, + dir: currentDirectory + }); + browser.canceled.connect(function() { + uploadOpen = false; + }); + browser.selectedFile.connect(function(url) { + currentDirectory = browser.dir; + doUpload(url); + }); + } } function errorMessageBox(message) { @@ -312,10 +319,6 @@ Window { }); } - function itemSelected() { - return treeView.selection.hasSelection() - } - Item { width: pane.contentWidth height: pane.height @@ -457,7 +460,6 @@ Window { height: 30 width: 155 - enabled: fileUrlTextField.text != "" onClicked: uploadClickedTimer.running = true // For some reason trigginer an API that enters diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index d7cae2483b..2e459362ab 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -4457,9 +4457,10 @@ void Application::toggleRunningScriptsWidget() { void Application::toggleAssetServerWidget(QString filePath) { static const QUrl url("AssetServer.qml"); auto urlSetter = [=](QQmlContext* context, QObject* newObject){ - newObject->setProperty("currentFileUrl", filePath); + emit uploadRequest(filePath); }; DependencyManager::get()->show(url, "AssetServer", urlSetter); + emit uploadRequest(filePath); } void Application::packageModel() { diff --git a/interface/src/Application.h b/interface/src/Application.h index c70d3412b7..029590966c 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -231,6 +231,8 @@ signals: void beforeAboutToQuit(); void activeDisplayPluginChanged(); + void uploadRequest(QString path); + public slots: QVector pasteEntities(float x, float y, float z); bool exportEntities(const QString& filename, const QVector& entityIDs); diff --git a/interface/src/scripting/AssetMappingsScriptingInterface.h b/interface/src/scripting/AssetMappingsScriptingInterface.h index 8e5d09cbd1..5b5170f7bb 100644 --- a/interface/src/scripting/AssetMappingsScriptingInterface.h +++ b/interface/src/scripting/AssetMappingsScriptingInterface.h @@ -30,6 +30,7 @@ public: bool isKnownMapping(QString path) const { return _pathToItemMap.contains(path); } bool isKnownFolder(QString path) const; +signals: void errorGettingMappings(QString errorString); private: