diff --git a/cmake/externals/quazip/CMakeLists.txt b/cmake/externals/quazip/CMakeLists.txt index 413a07efec..bf51a52fc5 100644 --- a/cmake/externals/quazip/CMakeLists.txt +++ b/cmake/externals/quazip/CMakeLists.txt @@ -14,8 +14,8 @@ endif () ExternalProject_Add( ${EXTERNAL_NAME} - URL http://s3-us-west-1.amazonaws.com/hifi-production/dependencies/quazip-0.6.2.zip - URL_MD5 514851970f1a14d815bdc3ad6267af4d + URL https://s3-us-west-1.amazonaws.com/hifi-production/dependencies/quazip-0.7.2.zip + URL_MD5 2955176048a31262c09259ca8d309d19 BINARY_DIR ${EXTERNAL_PROJECT_PREFIX}/build CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH= -DCMAKE_PREFIX_PATH=${QT_CMAKE_PREFIX_PATH} -DCMAKE_INSTALL_NAME_DIR:PATH=/lib -DZLIB_ROOT=${ZLIB_ROOT} LOG_DOWNLOAD 1 @@ -37,11 +37,11 @@ set(${EXTERNAL_NAME_UPPER}_INCLUDE_DIRS ${${EXTERNAL_NAME_UPPER}_INCLUDE_DIR} CA set(${EXTERNAL_NAME_UPPER}_DLL_PATH ${INSTALL_DIR}/lib CACHE FILEPATH "Location of QuaZip DLL") if (APPLE) - set(${EXTERNAL_NAME_UPPER}_LIBRARY_RELEASE ${INSTALL_DIR}/lib/libquazip.1.0.0.dylib CACHE FILEPATH "Location of QuaZip release library") + set(${EXTERNAL_NAME_UPPER}_LIBRARY_RELEASE ${INSTALL_DIR}/lib/libquazip5d.1.0.0.dylib CACHE FILEPATH "Location of QuaZip release library") elseif (WIN32) - set(${EXTERNAL_NAME_UPPER}_LIBRARY_RELEASE ${INSTALL_DIR}/lib/quazip.lib CACHE FILEPATH "Location of QuaZip release library") + set(${EXTERNAL_NAME_UPPER}_LIBRARY_RELEASE ${INSTALL_DIR}/lib/quazip5d.lib CACHE FILEPATH "Location of QuaZip release library") else () - set(${EXTERNAL_NAME_UPPER}_LIBRARY_RELEASE ${INSTALL_DIR}/lib/libquazip.so CACHE FILEPATH "Location of QuaZip release library") + set(${EXTERNAL_NAME_UPPER}_LIBRARY_RELEASE ${INSTALL_DIR}/lib/libquazip5d.so CACHE FILEPATH "Location of QuaZip release library") endif () include(SelectLibraryConfigurations) diff --git a/libraries/script-engine/CMakeLists.txt b/libraries/script-engine/CMakeLists.txt index b484937ea5..c3a9a9f38a 100644 --- a/libraries/script-engine/CMakeLists.txt +++ b/libraries/script-engine/CMakeLists.txt @@ -8,4 +8,8 @@ find_package(QuaZip REQUIRED) target_include_directories(${TARGET_NAME} SYSTEM PUBLIC ${QUAZIP_INCLUDE_DIRS}) target_link_libraries(${TARGET_NAME} ${QUAZIP_LIBRARIES}) +if (WIN32) + add_paths_to_fixup_libs(${QUAZIP_DLL_PATH}) +endif () + link_hifi_libraries(shared networking octree gpu ui procedural model model-networking recording avatars fbx entities controllers animation audio physics) diff --git a/libraries/script-engine/src/FileScriptingInterface.cpp b/libraries/script-engine/src/FileScriptingInterface.cpp index 017c3f83e1..814a054e5e 100644 --- a/libraries/script-engine/src/FileScriptingInterface.cpp +++ b/libraries/script-engine/src/FileScriptingInterface.cpp @@ -1,6 +1,6 @@ // // FileScriptingInterface.cpp -// interface/src/scripting +// libraries/script-engine/src // // Created by Elisa Lupin-Jimenez on 6/28/16. // Copyright 2016 High Fidelity, Inc. @@ -10,15 +10,18 @@ // #include +#include #include #include #include +#include +#include #include #include #include #include -#include -#include +#include +#include #include "ResourceManager.h" #include "FileScriptingInterface.h" @@ -28,27 +31,43 @@ FileScriptingInterface::FileScriptingInterface(QObject* parent) : QObject(parent // nothing for now } -void FileScriptingInterface::downloadZip() { - QUrl url(*parent); +void FileScriptingInterface::runUnzip(QString path, QString importURL) { + downloadZip(path, importURL); + +} + +QString FileScriptingInterface::getTempDir() { + QTemporaryDir dir; + dir.setAutoRemove(false); + return dir.path(); + // remember I must do something to delete this temp dir later +} + +void FileScriptingInterface::downloadZip(QString path, const QString link) { + QUrl url = QUrl(link); auto request = ResourceManager::createResourceRequest(nullptr, url); - connect(request, &ResourceRequest::finished, this, &FileScriptingInterface::unzipFile); + connect(request, &ResourceRequest::finished, this, [this, path]{ + unzipFile(path); + }); request->send(); } // clement's help :D -void FileScriptingInterface::unzipFile() { +void FileScriptingInterface::unzipFile(QString path) { ResourceRequest* request = qobject_cast(sender()); QUrl url = request->getUrl(); if (request->getResult() == ResourceRequest::Success) { qDebug() << "Zip file was downloaded"; - QTemporaryDir dir; + QDir dir(path); QByteArray compressedFileContent = request->getData(); // <-- Downloaded file is in here QBuffer buffer(&compressedFileContent); buffer.open(QIODevice::ReadOnly); + //QString zipFileName = QFile::decodeName(compressedFileContent); QString dirName = dir.path(); - JlCompress::extractDir(buffer, dirName); + qDebug() << "Zip directory is stored at: " + dirName; + JlCompress::extractDir(&buffer, dirName); QFileInfoList files = dir.entryInfoList(); foreach (QFileInfo file, files) { @@ -67,7 +86,7 @@ void FileScriptingInterface::unzipFile() { }*/ - //QString zipFileName = QFile::decodeName(&compressedFileContent); + //QFile file = //need to convert this byte array to a file @@ -100,10 +119,10 @@ void FileScriptingInterface::recursiveFileScan(QFileInfo file, QString* dirName) QFileInfoList files; if (file.fileName().contains(".zip")) { - JlCompress::extractDir(file); + JlCompress::extractDir(file.fileName()); qDebug() << "Extracting archive: " + file.fileName(); } - files = file.entryInfoList(); + files = file.dir().entryInfoList(); /*if (files.empty()) { files = JlCompress::getFileList(file.fileName()); @@ -111,7 +130,7 @@ void FileScriptingInterface::recursiveFileScan(QFileInfo file, QString* dirName) foreach (QFileInfo file, files) { qDebug() << "Looking into file: " + file.fileName(); - recursiveFileScan(file, &dirName); + recursiveFileScan(file, dirName); } return; } diff --git a/libraries/script-engine/src/FileScriptingInterface.h b/libraries/script-engine/src/FileScriptingInterface.h index cf965afa34..a9ccd3442f 100644 --- a/libraries/script-engine/src/FileScriptingInterface.h +++ b/libraries/script-engine/src/FileScriptingInterface.h @@ -1,6 +1,6 @@ // // FileScriptingInterface.h -// interface/src/scripting +// libraries/script-engine/src // // Created by Elisa Lupin-Jimenez on 6/28/16. // Copyright 2016 High Fidelity, Inc. @@ -14,23 +14,26 @@ #include #include +#include class FileScriptingInterface : public QObject { Q_OBJECT public: FileScriptingInterface(QObject* parent); + void runUnzip(QString path, QString importURL); + QString getTempDir(); public slots: - void unzipFile(); + void unzipFile(QString path); signals: - void downloadZip(); private: //void downloadZip(); //void unzipFile(); void recursiveFileScan(QFileInfo file, QString* dirName); + void downloadZip(QString path, const QString link); }; diff --git a/scripts/system/edit.js b/scripts/system/edit.js index 18a76eb45f..f096deb0a7 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -1208,10 +1208,13 @@ Window.svoImportRequested.connect(importSVO); // attempt to start ZIP download project function importZIP(importURL) { print("Import ZIP requested: " + importURL); - if (!Entities.canAdjustLocks()) { + /*if (!Entities.canAdjustLocks()) { Window.alert(INSUFFICIENT_PERMISSIONS_IMPORT_ERROR_MSG); return; - } + }*/ + var path = File.getTempDir(); + print("Temporary path to zip: " + path); + File.runUnzip(path, importURL); }