31 QVBoxLayout* layout =
new QVBoxLayout(
this);
32 layout->setContentsMargins(0, 0, 0, 0);
36 QWebEngineProfile *profile =
new QWebEngineProfile(
"HA_Profile",
this);
37 profile->setPersistentStoragePath(qApp->applicationDirPath() +
"/web_data");
38 profile->setPersistentCookiesPolicy(QWebEngineProfile::ForcePersistentCookies);
46 m_view =
new QWebEngineView(
this);
47 m_view->setPage(page);
50 QWebEngineSettings *s = m_view->settings();
51 s->setAttribute(QWebEngineSettings::LocalContentCanAccessRemoteUrls,
true);
52 s->setAttribute(QWebEngineSettings::LocalContentCanAccessFileUrls,
true);
53 s->setAttribute(QWebEngineSettings::AllowRunningInsecureContent,
true);
54 s->setAttribute(QWebEngineSettings::PlaybackRequiresUserGesture,
false);
55 s->setAttribute(QWebEngineSettings::LocalStorageEnabled,
true);
56 s->setAttribute(QWebEngineSettings::Accelerated2dCanvasEnabled,
true);
57 s->setAttribute(QWebEngineSettings::WebGLEnabled,
true);
58 s->setAttribute(QWebEngineSettings::ScrollAnimatorEnabled,
true);
61 m_view->setUrl(QUrl(
"http://192.168.1.158:8123"));
65 connect(m_view, &QWebEngineView::loadFinished, [
this]() {
66 m_view->page()->runJavaScript(
67 "window._ha_last_input = null;"
68 "window.addEventListener('focusin', (e) => {"
69 " let active = e.composedPath()[0];"
70 " if (active && (active.tagName === 'INPUT' || active.tagName === 'TEXTAREA')) {"
71 " window._ha_last_input = active;"
72 " console.log('SHOW_KEYBOARD');"
78 layout->addWidget(m_view);
Surcharge de la page web pour intercepter les événements de la console. Cette classe permet d'écouter...
HAPage(QWebEngineProfile *profile, QObject *parent=nullptr)
Constructeur de la page web personnalisée.
void javaScriptConsoleMessage(JavaScriptConsoleMessageLevel level, const QString &message, int lineNumber, const QString &sourceID) override
Intercepte les messages de la console JavaScript. Si le message correspond à un mot-clé précis (ex: "...
void showKeyboardRequested()
Émis lorsque le code JavaScript détecte un focus sur un champ de saisie.