From f8d8353c7aaeb4981a017ec371ff36b591b59974 Mon Sep 17 00:00:00 2001
From: Burak Hancerli <burak.hancerli@qt.io>
Date: Thu, 7 Dec 2023 10:40:19 +0100
Subject: [PATCH] fix: trying to migrate qt6.6

---
 README.md                  |  58 ++++---------------------
 qtquickdesigner-components |   2 +-
 resources/dvicon-new.png   | Bin 0 -> 39926 bytes
 src/designviewer.cpp       |  86 +++++++++++++++++--------------------
 www/index.html             |   6 ++-
 www/scripts/script.js      |  83 ++++++++++++++++++++---------------
 6 files changed, 101 insertions(+), 134 deletions(-)
 create mode 100644 resources/dvicon-new.png

diff --git a/README.md b/README.md
index 249afcf..ccd5ccb 100644
--- a/README.md
+++ b/README.md
@@ -8,62 +8,19 @@ Qt Design Viewer works in a variety of web browsers which support WebAssembly, o
 ## Prerequisites
 
 * CMake 3.16 or newer
-* Android
-    * Qt6.5.0 or newer
-    * OpenSSL (<https://github.com/KDAB/android_openssl>)
-    * Android SDK and NDK (<https://developer.android.com/studio>)
 * WebAssembly
     * Qt6.4.3 or newer
     * EMSDK (<https://emscripten.org/docs/getting_started/downloads.html>)
 
 ## Building
 
-Build instructions are provided for Linux, macOS hosts and for Android and WebAssembly targets. Windows should work as well but is not tested.
-> Note:
+> Note 1:
+> Build instructions are provided for Linux, macOS hosts and for WebAssembly target. Windows should work as well but is not tested.
+>
+> Note 2:
 > If you're building in a Docker container and you've mounted the source directory into the container, you may need to change the build path pointing out somewhere out of the source directory. Otherwise you may get errors like the following;
 > `CMake Error at /opt/qt-v.6.5.0/android-arm64-v8a/lib/cmake/Qt6/QtSyncQtHelpers.cmake:235 (message): syncqt.cpp failed for module QtQuickStudioApplication: Unable to remove file ...`
 
-### Android
-
-> Note:
-> Android build instructions can also be used on desktop (or host) for testing purposes. Just replace the `CMAKE_TOOLCHAIN_FILE` path with the path to your Qt host installation.
-
-First build and install QtQuickDesigner Components for Android:
-
-```bash
-cd qtquickdesigner-components
-cmake \
-    -S . \
-    -B build \
-    -G Ninja \
-    -DCMAKE_TOOLCHAIN_FILE=<qt-android-path>/lib/cmake/Qt6/qt.toolchain.cmake \
-    -DCMAKE_INSTALL_PREFIX=<qt-android-path> \
-    -DANDROID_SDK_ROOT=<android-sdk-path> \
-    -DANDROID_NDK_ROOT=<android-sdk-path>/ndk/<ndk-version> \
-    -DANDROID_OPENSSL_PATH=<openssl-path>
-
-cmake --build build
-cmake --install build
-cd ..
-```
-
-Then build the Qt Design Viewer:
-
-```bash
-cmake \
-    -S . \
-    -B build \
-    -G Ninja \
-    -DCMAKE_TOOLCHAIN_FILE=<qt-android-path>/lib/cmake/Qt6/qt.toolchain.cmake \
-    -DANDROID_SDK_ROOT=<android-sdk-path> \
-    -DANDROID_NDK_ROOT=<android-sdk-path>/ndk/<ndk-version> \
-    -DANDROID_OPENSSL_PATH=<openssl-path>
-
-cmake --build build
-```
-
-### WebAssembly
-
 First activate the correct EMSDK version:
 
 ```bash
@@ -82,8 +39,9 @@ cmake \
     -S . \
     -B build \
     -G Ninja \
-    -DCMAKE_TOOLCHAIN_FILE=<qt-wasm-path>/wasm/lib/cmake/Qt6/qt.toolchain.cmake \
-    -DCMAKE_INSTALL_PREFIX=<qt-wasm-path>
+    -DCMAKE_PREFIX_PATH=<qt-wasm-path> \
+    -DCMAKE_INSTALL_PREFIX=<qt-wasm-path> \
+    -DCMAKE_TOOLCHAIN_FILE=<qt-wasm-path>/wasm/lib/cmake/Qt6/qt.toolchain.cmake
 
 cmake --build build
 cmake --install build
@@ -97,6 +55,8 @@ cmake \
     -S . \
     -B build \
     -G Ninja \
+    -DCMAKE_PREFIX_PATH=<qt-wasm-path> \
+    -DCMAKE_INSTALL_PREFIX=<qt-wasm-path> \
     -DCMAKE_TOOLCHAIN_FILE=<qt-wasm-path>/wasm/lib/cmake/Qt6/qt.toolchain.cmake
 
 cmake --build build
diff --git a/qtquickdesigner-components b/qtquickdesigner-components
index 0e45747..55dfd50 160000
--- a/qtquickdesigner-components
+++ b/qtquickdesigner-components
@@ -1 +1 @@
-Subproject commit 0e457477d54b068abc89cf124daedefe0436dd89
+Subproject commit 55dfd50975935efbe67ea8cdb77ac01e4640db88
diff --git a/resources/dvicon-new.png b/resources/dvicon-new.png
new file mode 100644
index 0000000000000000000000000000000000000000..554b5eee2046e491e36ea9c489a20fa602b72bd7
GIT binary patch
literal 39926
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
VF`Fx|MuIWWQInHL$__h5{0r8`Yt;Y%

literal 0
HcmV?d00001

diff --git a/src/designviewer.cpp b/src/designviewer.cpp
index 941ae49..f073872 100644
--- a/src/designviewer.cpp
+++ b/src/designviewer.cpp
@@ -24,9 +24,9 @@
 ****************************************************************************/
 
 #include "designviewer.h"
-#if defined(Q_OS_WASM)
 
 #include <emscripten.h>
+#include <emscripten/val.h>
 #include <functional>
 
 #include <QBuffer>
@@ -38,6 +38,7 @@
 #include <QResource>
 #include <QTemporaryDir>
 #include <QTemporaryFile>
+#include <QTimer>
 #include <QtCore/private/qzipreader_p.h>
 
 #define printErr(x) printError(x, __FILE_NAME__, __LINE__)
@@ -56,55 +57,29 @@ extern "C" EMSCRIPTEN_KEEPALIVE void qt_callSetFileData(char *content,
 
 DesignViewer::DesignViewer()
 {
+    printLog("DesignViewer constructor");
     QString projectFileName;
     QByteArray projectData;
+    printLog("Fetching project");
     fetchProject(&projectData, &projectFileName);
-    if (!runProject(projectData, projectFileName))
-        printError("Failed to run project", projectFileName, 0);
+    printLog("Running project");
+    if (!runProject(projectData, projectFileName)) {
+        printErr("Failed to run project");
+    }
+    printLog("DesignViewer constructor done");
 }
 
 void DesignViewer::fetchProject(QByteArray *data, QString *fileName)
 {
-    // Call qt_callSetFileData to make sure the emscripten linker does not
-    // optimize it away, which may happen if the function is called from JavaScript
-    // only. Set g_setFileDataCallback to null to make it a no-op.
-    ::g_setFileDataCallback = nullptr;
-    ::qt_callSetFileData(nullptr, 0, nullptr);
-
-    auto setFileDataCallback =
-        [data, fileName](char *content, size_t contentSize, char *projectFilename)
-    {
-        data->setRawData(content, contentSize);
-        *fileName = QString::fromUtf8(projectFilename);
-    };
-    g_setFileDataCallback = setFileDataCallback;
-
-    EM_ASM_({
-        // Copy the file file content to the C++ heap.
-        // Note: this could be simplified by passing the content as an
-        // "array" type to ccall and then let it copy to C++ memory.
-        // However, this built-in solution does not handle files larger
-        // than ~15M (Chrome). Instead, allocate memory manually and
-        // pass a pointer to the C++ side (which will free() it when done).
-
-        // TODO: consider slice()ing the file to read it picewise and
-        // then assembling it in a QByteArray on the C++ side.
-
-        const contentSize = contentArray.byteLength;
-        const heapPointer = _malloc(contentSize);
-        const heapBytes = new Uint8Array(Module.HEAPU8.buffer, heapPointer, contentSize);
-        heapBytes.set(contentArray);
-
-        // Null out the first data copy to enable GC
-        reader = null;
-        contentArray = null;
-
-        // Call the C++ file data ready callback
-        ccall("qt_callSetFileData",
-              null,
-              [ "number", "number", "string" ],
-              [ heapPointer, contentSize, projectfileName ]);
-    });
+    printLog("Init project data");
+    // Access global variables set by index.html
+    emscripten::val jsData = emscripten::val::global("contentArray");
+    emscripten::val jsFileName = emscripten::val::global("projectfileName");
+
+    printLog("Copying project data");
+    // Copy project data to the C++ heap and convert string
+    *data = QByteArray::fromEcmaUint8Array(jsData);
+    *fileName = QString::fromStdString(jsFileName.as<std::string>());
 }
 
 QString DesignViewer::unpackProject(const QByteArray &project, bool extractZip)
@@ -385,10 +360,27 @@ void DesignViewer::showAppWindow()
 {
     printLog("Resizing the QML app window");
     const QSize size;
-    const QString command = QString::fromLatin1("setScreenSize(%1, %2);").arg(size.width()).arg(size.height());
-    emscripten_run_script(command.toUtf8());
+
+    emscripten::val qtContainer = emscripten::val::global("container"); // global from index.html
+    emscripten::val qtContainerStyle = qtContainer["style"];
+
+    if (size.isEmpty()) {
+        qtContainerStyle.set("width", std::string("100%"));
+        qtContainerStyle.set("height",
+                             std::string(
+                                 "100%")); // ### FIXME: 100% height gives 0px height for some reason
+    } else {
+        qtContainerStyle.set("width", QString("%1px").arg(size.width()).toStdString());
+        qtContainerStyle.set("height", QString("%1px").arg(size.height()).toStdString());
+    }
+
+    // Make Qt pick up the new container size by calling the resizeCanvasElement()
+    // qtloader API. This needs to be done on delay after initial setup to make
+    // sure qtloader is initialized.
+    QTimer::singleShot(0, [qtContainer]() {
+        emscripten::val qtLoader = emscripten::val::global("qtLoader");
+        qtLoader.call<void>("resizeCanvasElement", qtContainer);
+    });
     printLog("Showing the QML app window");
     m_quickWindow->show();
 }
-
-#endif // Q_OS_WASM
diff --git a/www/index.html b/www/index.html
index f632168..9f4209c 100644
--- a/www/index.html
+++ b/www/index.html
@@ -55,6 +55,7 @@
         <div id="title">Qt Design Viewer</div>
         <div id="subtitle" class="subtitleclass">Powered by WebAssembly</div>
         <div id="qtstatus"></div>
+        <div id="screen"></div>
         <noscript
           >JavaScript is disabled. Please enable JavaScript to use this
           application.</noscript
@@ -119,10 +120,11 @@
     </div>
 
     <canvas
-      id="qtcanvas"
+      id="qtcontainer"
       oncontextmenu="event.preventDefault()"
       contenteditable="true"
     ></canvas>
+    <!-- <div id="qtcontainer"></div> -->
     <div id="footer">
       <div id="alertBox" class="alert">
         <span
@@ -148,7 +150,7 @@
       </p>
       <p id="versioninfo_main">Version: 1.0.0</p>
     </div>
-
+    <script src="qtdesignviewer.js"></script>
     <script src="scripts/script.js" type="text/javascript"></script>
     <script src="qtloader.js" type="text/javascript"></script>
   </body>
diff --git a/www/scripts/script.js b/www/scripts/script.js
index f6ae3ba..ad59ac2 100644
--- a/www/scripts/script.js
+++ b/www/scripts/script.js
@@ -1,8 +1,8 @@
 var contentArray;
 var projectfileName;
 var reader;
-var spinner = document.querySelector("#qtspinner");
-var canvas = document.querySelector("#qtcanvas");
+
+var canvas = document.querySelector("#qtcontainer");
 var uploadform = document.querySelector("#uploadform");
 var fileinput = document.querySelector("#fileinput");
 var dropzone = document.querySelector("#dropzone");
@@ -210,46 +210,57 @@ function restart() {
     qtLoader.loadEmscriptenModule("qtdesignviewer");
 }
 
-function loadProjector() {
-    qtLoader = QtLoader({
-        canvasElements: [canvas],
-        showLoader: function (loaderStatus) {
-            spinner.style.display = "block";
-            canvas.style.display = "none";
-            if (loaderStatus === "Downloading/Compiling")
-                loaderStatus = "Starting";
-            launchstatustext.innerHTML = loaderStatus;
-        },
-        showError: function (errorText) {
-            launchstatustext.innerHTML = errorText;
-            spinner.style.display = "block";
-            canvas.style.display = "none";
-        },
-        showExit: function () {
-            launchstatustext.innerHTML = "Application exit";
-            if (qtLoader.exitCode !== undefined)
-                launchstatustext.innerHTML += " with code " + qtLoader.exitCode;
-            if (qtLoader.exitText !== undefined)
-                launchstatustext.innerHTML += " (" + qtLoader.exitText + ")";
-            spinner.style.display = "block";
-            canvas.style.display = "none";
-        },
-        showCanvas: function () {
-            spinner.style.display = "none";
-            canvas.style.display = "block";
-            launchstatus.style.display = "none";
-            appheader.style.display = "block";
-        },
-    });
-
+async function loadProjector() {
     // workaround for making sure that self.module is set up before
     // running setScreenSize
+    self.moduleConfig = {};
     self.moduleConfig.preRun = [];
     self.moduleConfig.preRun.push(function (module) {
         self.module = module;
     });
 
-    qtLoader.loadEmscriptenModule("qtdesignviewer");
+    const spinner = document.querySelector("#qtspinner");
+    const screen = document.querySelector('#screen');
+    const status = document.querySelector('#qtstatus');
+
+    const showUi = (ui) => {
+        [spinner, screen].forEach(element => element.style.display = 'none');
+        if (screen === ui)
+            screen.style.position = 'default';
+        ui.style.display = 'block';
+        console.log("showUi", ui);
+    }
+
+    try {
+        showUi(spinner);
+        status.innerHTML = 'Loading...';
+
+        const instance = await qtLoad({
+            qt: {
+                onLoaded: () => showUi(screen),
+                onExit: exitData => {
+                    status.innerHTML = 'Application exit';
+                    status.innerHTML +=
+                        exitData.code !== undefined ? ` with code ` : '';
+                    status.innerHTML +=
+                        exitData.text !== undefined ? ` ()` : '';
+                    showUi(spinner);
+                },
+                entryFunction: window.createQtAppInstance,
+                containerElements: [screen]
+            }
+        }).then((result) => {
+            qtLoader = result;
+            console.log("qtLoader", qtLoader);
+            setScreenSize(window.innerWidth, window.innerHeight);
+        }).catch((err) => {
+            console.error(err);
+            console.error(err.stack);
+        });
+    } catch (e) {
+        console.error(e);
+        console.error(e.stack);
+    }
 }
 
 function setScreenSize(width, height) {
@@ -264,5 +275,7 @@ function setScreenSize(width, height) {
         document.documentElement.style.overflow =
             document.body.style.overflow = "hidden";
     }
+    console.log("setScreenSize", width, height);
+    console.log("current qtloader object:", qtLoader);
     qtLoader.resizeCanvasElement(canvas);
 }
-- 
GitLab