From a94a3047007e54a1ee5f24cf01e851d6a952efdb Mon Sep 17 00:00:00 2001 From: elisa-lj11 Date: Mon, 25 Jul 2016 16:15:43 -0700 Subject: [PATCH] Downloads from Clara.io and uploads to asset server --- interface/resources/qml/AssetServer.qml | 1 + interface/src/Application.cpp | 6 +- .../src/FileScriptingInterface.cpp | 82 ++++++------------- .../src/FileScriptingInterface.h | 3 +- 4 files changed, 31 insertions(+), 61 deletions(-) diff --git a/interface/resources/qml/AssetServer.qml b/interface/resources/qml/AssetServer.qml index 8d971e48d3..eca3d11721 100644 --- a/interface/resources/qml/AssetServer.qml +++ b/interface/resources/qml/AssetServer.qml @@ -320,6 +320,7 @@ ScrollingWindow { id: timer } function uploadClicked(fileUrl) { + console.log("Upload clicked url: " + fileUrl); if (uploadOpen) { return; } diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index ccffceede0..7cf6410fd8 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1543,7 +1543,10 @@ void Application::initializeUi() { rootContext->setContextProperty("Audio", &AudioScriptingInterface::getInstance()); rootContext->setContextProperty("Controller", DependencyManager::get().data()); rootContext->setContextProperty("Entities", DependencyManager::get().data()); - rootContext->setContextProperty("File", new FileScriptingInterface(engine)); + //rootContext->setContextProperty("File", new FileScriptingInterface(engine)); + FileScriptingInterface* fileDownload = new FileScriptingInterface(engine); + rootContext->setContextProperty("File", fileDownload); + connect(fileDownload, &FileScriptingInterface::unzipSuccess, this, &Application::toggleAssetServerWidget); rootContext->setContextProperty("MyAvatar", getMyAvatar()); rootContext->setContextProperty("Messages", DependencyManager::get().data()); rootContext->setContextProperty("Recording", DependencyManager::get().data()); @@ -5035,6 +5038,7 @@ void Application::toggleAssetServerWidget(QString filePath) { auto startUpload = [=](QQmlContext* context, QObject* newObject){ if (!filePath.isEmpty()) { + qDebug() << "file in toggle: " + filePath; emit uploadRequest(filePath); } }; diff --git a/libraries/script-engine/src/FileScriptingInterface.cpp b/libraries/script-engine/src/FileScriptingInterface.cpp index 3a9cca64c4..ac72b99c9f 100644 --- a/libraries/script-engine/src/FileScriptingInterface.cpp +++ b/libraries/script-engine/src/FileScriptingInterface.cpp @@ -34,7 +34,16 @@ FileScriptingInterface::FileScriptingInterface(QObject* parent) : QObject(parent void FileScriptingInterface::runUnzip(QString path, QUrl url) { qDebug() << "Url that was downloaded: " + url.toString(); qDebug() << "Path where download is saved: " + path; - unzipFile(path); + QString file = unzipFile(path); + if (file != "") { + qDebug() << "file to upload: " + file; + QUrl url = QUrl::fromLocalFile(file); + qDebug() << "url from local file: " + url.toString(); + emit unzipSuccess(url.toString()); + //Application::toggleAssetServerWidget(file); + } else { + qDebug() << "unzip failed"; + } } bool FileScriptingInterface::testUrl(QUrl url) { @@ -68,67 +77,22 @@ void FileScriptingInterface::downloadZip(QString path, const QString link) { } // clement's help :D -void FileScriptingInterface::unzipFile(QString path) { - //ResourceRequest* request = qobject_cast(sender()); - //QUrl url = request->getUrl(); +QString FileScriptingInterface::unzipFile(QString path) { - //if (request->getResult() == ResourceRequest::Success) { - qDebug() << "Zip file was downloaded"; - QDir dir(path); - //QByteArray compressedFileContent = request->getData(); // <-- Downloaded file is in here - //QBuffer buffer(&compressedFileContent); - //buffer.open(QIODevice::ReadOnly); + qDebug() << "Zip file was downloaded"; + QDir dir(path); + QString dirName = dir.path(); + qDebug() << "Zip directory is stored at: " + dirName; + QStringList list = JlCompress::extractDir(dirName, "C:/Users/elisa/Downloads/test"); - //QString zipFileName = QFile::decodeName(compressedFileContent); - QString dirName = dir.path(); - //QDir testPath("C:/Users/elisa/Downloads/banana.zip"); - qDebug() << "Zip directory is stored at: " + dirName; - QStringList list = JlCompress::extractDir(dirName, "C:/Users/elisa/Downloads/test"); + qDebug() << list; - qDebug() << list; - - //QFileInfoList files = dir.entryInfoList(); - QFileInfoList files = dir.entryInfoList(); - foreach(QFileInfo file, files) { - qDebug() << "My file: " + file.fileName(); - recursiveFileScan(file, &dirName); - - } - - - /*foreach (QFileInfo file, files) { - if (file.isDir()) { - if (file.fileName().contains(".zip")) { - qDebug() << "Zip file expanded: " + file.fileName(); - } - - qDebug() << "Regular file logged: " + file.fileName(); - } - }*/ - - - - - //QFile file = - //need to convert this byte array to a file - /*QuaZip zip(zipFileName); - - if (zip.open(QuaZip::mdUnzip)) { - qDebug() << "Opened"; - - for (bool more = zip.goToFirstFile(); more; more = zip.goToNextFile()) { - // do something - qDebug() << zip.getCurrentFileName(); - } - if (zip.getZipError() == UNZ_OK) { - // ok, there was no error - }*/ - - - //buffer.close(); - //} else { - // qDebug() << "Could not download the zip file"; - //} + if (!list.isEmpty()) { + return list.front(); + } else { + qDebug() << "Extraction failed"; + return ""; + } } diff --git a/libraries/script-engine/src/FileScriptingInterface.h b/libraries/script-engine/src/FileScriptingInterface.h index 6ba6044060..d90bf1ed2b 100644 --- a/libraries/script-engine/src/FileScriptingInterface.h +++ b/libraries/script-engine/src/FileScriptingInterface.h @@ -33,10 +33,11 @@ public slots: void runUnzip(QString path, QUrl url); signals: + void unzipSuccess(QString url); private: //void downloadZip(); - void unzipFile(QString path); + QString unzipFile(QString path); void recursiveFileScan(QFileInfo file, QString* dirName); void downloadZip(QString path, const QString link);