4#ifndef QWASMACCESIBILITY_H
5#define QWASMACCESIBILITY_H
7#if QT_CONFIG(accessibility)
9#include <QtCore/qhash.h>
10#include <private/qstdweb_p.h>
11#include <qpa/qplatformaccessibility.h>
13#include <emscripten/val.h>
14#include <QLoggingCategory>
17#include <emscripten/bind.h>
21class QWasmAccessibility :
public QPlatformAccessibility
25 ~QWasmAccessibility();
27 static QWasmAccessibility*
get();
35 void enableAccessibility();
38 static emscripten::val getContainer(QAccessibleInterface *iface);
39 static emscripten::val getDocument(
const emscripten::val &container);
40 static emscripten::val getDocument(QAccessibleInterface *iface);
41 static QWindow *getWindow(QAccessibleInterface *iface);
43 emscripten::val createHtmlElement(QAccessibleInterface *iface);
44 void destroyHtmlElement(QAccessibleInterface *iface);
45 emscripten::val ensureHtmlElement(QAccessibleInterface *iface);
46 void setHtmlElementVisibility(QAccessibleInterface *iface,
bool visible);
47 void setHtmlElementGeometry(QAccessibleInterface *iface);
48 void setHtmlElementGeometry(emscripten::val element,
QRect geometry);
49 void setHtmlElementTextName(QAccessibleInterface *iface);
50 void setHtmlElementTextNameLE(QAccessibleInterface *iface);
52 void handleStaticTextUpdate(QAccessibleEvent *
event);
53 void handleButtonUpdate(QAccessibleEvent *
event);
54 void handleCheckBoxUpdate(QAccessibleEvent *
event);
55 void handleDialogUpdate(QAccessibleEvent *
event);
56 void handleMenuUpdate(QAccessibleEvent *
event);
57 void handleToolUpdate(QAccessibleEvent *
event);
58 void handleLineEditUpdate(QAccessibleEvent *
event);
59 void handleRadioButtonUpdate(QAccessibleEvent *
event);
60 void handleSpinBoxUpdate(QAccessibleEvent *
event);
61 void handlePageTabUpdate(QAccessibleEvent *
event);
62 void handleSliderUpdate(QAccessibleEvent *
event);
63 void handleScrollBarUpdate(QAccessibleEvent *
event);
64 void handlePageTabListUpdate(QAccessibleEvent *
event);
66 void handleEventFromHtmlElement(
const emscripten::val
event);
68 void populateAccessibilityTree(QAccessibleInterface *iface);
69 void notifyAccessibilityUpdate(QAccessibleEvent *
event)
override;
70 void setRootObject(
QObject *
o)
override;
72 void cleanup()
override;
75 static void onHtmlEventReceived(emscripten::val
event);
78 static QWasmAccessibility *s_instance;
79 QObject *m_rootObject =
nullptr;
80 bool m_accessibilityEnabled =
false;
81 std::map<QWindow *, std::tuple<emscripten::val, std::shared_ptr<qstdweb::EventCallback>>> m_enableButtons;
\inmodule QtCore\reentrant
static QDBusError::ErrorType get(const char *name)
#define Q_DECLARE_LOGGING_CATEGORY(name)