Документация
ОС Аврора 5.1.4
Обработчики запросов
/*
* SPDX-FileCopyrightText: Copyright 2024 Open Mobile Platform LLC <community@omp.ru>
* SPDX-License-Identifier: Proprietary
*/
/**
* @file
* @brief Содержит примеры использования обработчиков
*/
// Чтобы использовать WebViewItem и обработчики, необходимо импортировать WebView
import ru.auroraos.WebView 1.0
// Чтобы использовать глобальные перечисления, необходимо импортировать WebView.Global
import ru.auroraos.WebView.Global 1.0
// DownloadHandler
// Необходимо создать функции-обработчики где-нибудь в QML.
// Например, в области видимости страницы с id `page`.
function downloadRequestedHandler(item, suggestedName) {
console.log("запрашиваемая загрузка\nsuggestedName: " + suggestedName);
// Чтобы начать загрузку, необходимо вызвать команду accept с указанием абсолютного пути к файлу
item.accept("/home/defaultuser/Downloads/" + suggestedName);
}
function downloadUpdatedHandler(item) {
console.log("ID элемента: " + item.id);
console.log("Завершено: " + item.percentComplete + "%");
}
function downloadCompleteHandler(item) {
console.log("Загрузка ID: " + item.id + " завершена!");
console.log(item.fullPath);
}
function downloadInterruptedHandler(item) {
console.log("Загрузка ID: " + item.id + " прервана!\nПричина: " + item.interruptCode);
}
...
// Затем нужно подключить сигналы DownloadHandler к созданным обработчикам
// в WebViewItem
WebViewItem {
...
Component.onCompleted: {
DownloadHandler.downloadRequestsAllowed = true // Загрузки включены по умолчанию
// Эта строка здесь только для демонстрации существования
// этой настройки
DownloadHandler.onDownloadRequested.connect(page.downloadRequestedHandler);
DownloadHandler.onDownloadUpdated.connect(page.downloadUpdatedHandler);
DownloadHandler.onDownloadCompleted.connect(page.downloadCompleteHandler);
DownloadHandler.onDownloadInterrupted.connect(page.downloadInterruptedHandler);
}
}
// PermissionHandler
// Пример использования PermissionHandler в QML:
// Необходимо создать функции-обработчики где-нибудь в QML.
// Например, в области видимости страницы с id `page`.
function handlePermissionRequest(permissionRequest) {
// Здесь можно создать диалог или сделать другие действия.
permissionRequest.accept(); // принять запрос
permissionRequest.deny(); // запретить запрос
permissionRequest.dismiss(); // отклонить запрос
}
function handleMediaAccessRequest(mediaAccessRequest) {
// Здесь можно создать диалог или сделать другие действия.
mediaAccessRequest.accept(); // принять запрос
mediaAccessRequest.deny(); // запретить запрос
}
function handlePermissionRequestDismiss(promptId, requestResult) {
// Ваш код
}
...
// Затем необходимо подключить сигналы к созданным обработчикам
// в WebViewItem
WebViewItem {
...
Component.onCompleted: {
PermissionHandler.onPermissionsRequested.connect(page.handlePermissionRequest);
PermissionHandler.onMediaAccessRequested.connect(page.handleMediaAccessRequest);
PermissionHandler.onPermissionRequestDismissed.connect(page.handlePermissionRequestDismiss);
}
}
// DialogHandler
// Пример использования DialogHandler в QML:
// Необходимо создать функции-обработчики где-нибудь в QML.
// Например, в области видимости страницы с id `page`.
import ru.auroraos.WebView.Global 1.0
...
function handleFileDialogRequest(dialogRequest) {
// Здесь можно создать диалог или сделать другие действия.
// Пример:
var fileToUpload = ["/absolute/path/to/file.txt"];
dialogRequest.pickFiles(fileToUpload); // выбрать файл
// Отмена
dialogRequest.cancel(); // отменить запрос
}
function handleMultiFileDialogRequest(dialogRequest) {
// Здесь можно создать диалог или сделать другие действия.
// Пример:
var filesToUpload = ["/absolute/path/to/file1.txt", "/absolute/path/to/file2.txt"];
dialogRequest.pickFiles(filesToUpload);
// Отмена
dialogRequest.cancel(); // отменить запрос
}
function handleFolderDialogRequest(dialogRequest) {
// Здесь можно создать диалог или сделать другие действия.
// Пример:
var folderToUpload = ["/absolute/path/to/folder/"];
dialogRequest.pickFiles(folderToUpload); // выбрать файл
// Отмена
dialogRequest.cancel(); // отменить запрос
}
...
// Затем необходимо подключить сигналы к созданным обработчикам
// в WebViewItem
WebViewItem {
...
Component.onCompleted: {
DialogHandler.onFileDialogRequested.connect(page.handleFileDialogRequest);
DialogHandler.onMultiFileDialogRequested.connect(page.handleMultiFileDialogRequest);
DialogHandler.onFolderDialogRequested.connect(page.handleFolderDialogRequest);
}
}