Документация
ОС Аврора 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);
    }
}

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.