summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/wasm/wasm_shell.html
blob: 702ea1f59d24f4ac8a2bb42ac686ea13b5eef0a2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<!doctype html>
<html lang="en-us">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

    <!--Set visual viewport size for mobile devices to the device size,
        witch results in a scale of 1 and a 1:1 mapping between CSS pixels
        and Qt device independent pixels. -->
    <meta name="viewport" content="width=device-width, height=device-height, user-scalable=0"/>

    <title>@APPNAME@</title>
    <style>
      /* Make the html body cover the entire (visual) viewport with no scroll bars. */
      html, body { padding: 0; margin: 0; overflow: hidden; height: 100% }
      #screen { width: 100%; height: 100%; }
    </style>
  </head>
  <body onload="init()">
    <figure style="overflow:visible;" id="qtspinner">
      <center style="margin-top:1.5em; line-height:150%">
        <img src="qtlogo.svg" width="320" height="200" style="display:block"></img>
        <strong>Qt for WebAssembly: @APPNAME@</strong>
        <div id="qtstatus"></div>
        <noscript>JavaScript is disabled. Please enable JavaScript to use this application.</noscript>
      </center>
    </figure>
    <div id="screen"></div>

    <script type="text/javascript">
        async function init()
        {
            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';
            }

            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 ${exitData.code}` : '';
                            status.innerHTML +=
                                exitData.text !== undefined ? ` (${exitData.text})` : '';
                            showUi(spinner);
                        },
                        entryFunction: window.@APPEXPORTNAME@,
                        containerElements: [screen],
                        @PRELOAD@
                    }
                });
            } catch (e) {
                console.error(e);
                console.error(e.stack);
            }
        }
    </script>
    <script src="@APPNAME@.js"></script>
    <script type="text/javascript" src="qtloader.js"></script>
  </body>
</html>