wasm: Add qtloader compatibility API

Implement the main features of the pre Qt 6.6 loader
as adaption layer on top of the new loader.

Task-id: QTBUG-115049
Change-Id: Iabe860d3fb0488fd003876508787da3688e0c87b
Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
(cherry picked from commit 20d17b1a3b0e3a17a0ed1214cc21d84d79d3c829)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Morten Sørvig 2023-07-05 14:38:18 +02:00 committed by Qt Cherry-pick Bot
parent 5bc7d8b2e8
commit 2b62922e2e

View File

@ -219,3 +219,57 @@ async function qtLoad(config)
return instance;
}
// Compatibility API. This API is deprecated,
// and will be removed in a future version of Qt.
function QtLoader(qtConfig) {
const warning = 'Warning: The QtLoader API is deprecated and will be removed in ' +
'a future version of Qt. Please port to the new qtLoad() API.';
console.warn(warning);
let emscriptenConfig = qtConfig.moduleConfig || {}
qtConfig.moduleConfig = undefined;
const showLoader = qtConfig.showLoader;
qtConfig.showLoader = undefined;
const showError = qtConfig.showError;
qtConfig.showError = undefined;
const showExit = qtConfig.showExit;
qtConfig.showExit = undefined;
const showCanvas = qtConfig.showCanvas;
qtConfig.showCanvas = undefined;
if (qtConfig.canvasElements) {
qtConfig.containerElements = qtConfig.canvasElements
qtConfig.canvasElements = undefined;
} else {
qtConfig.containerElements = qtConfig.containerElements;
qtConfig.containerElements = undefined;
}
emscriptenConfig.qt = qtConfig;
let qtloader = {
exitCode: undefined,
exitText: "",
loadEmscriptenModule: _name => {
try {
qtLoad(emscriptenConfig);
} catch (e) {
showError?.(e.message);
}
}
}
qtConfig.onLoaded = () => {
showCanvas?.();
}
qtConfig.onExit = exit => {
qtloader.exitCode = exit.code
qtloader.exitText = exit.text;
showExit?.();
}
showLoader?.("Loading");
return qtloader;
};