Diálogo de documento

O AppStudioAppFramework fornece um componente DocumentDialog para selecionar arquivos do armazenamento local do seu dispositivo. Este componente é idêntico em funcionalidade ao componente Qt QuickFileDialog , contendo as mesmas propriedades e métodos, mas usa a caixa de diálogo de seleção de arquivo nativo para todas as plataformas em vez de uma caixa de diálogo de arquivo personalizada no iOS e Android, permitindo uma melhor interação com o sistema operacional.

Procure arquivos com a caixa de diálogo do documento

Para usar o componente DocumentDialog, o único requisito é o método open. Ativar permissões de armazenamento externo também é necessário para dispositivos Android. O exemplo de código a seguir demonstra um uso básico de DocumentDialog, incluindo uma opção para habilitar a permissão de armazenamento se ainda não estiver habilitada e registrar possíveis erros no log do console.

Item {
    property bool storagePermissionGranted
    Component.onCompleted: {
        // Check if storage permission is granted (only required for Android)
        storagePermissionGranted = Permission.checkPermission(Permission.PermissionTypeStorage) === Permission.PermissionResultGranted
    }
    PermissionDialog {
        id: permissionDialog
        openSettingsWhenDenied: true
        permission: PermissionDialog.PermissionDialogTypeStorage
        onAccepted: {
            documentDialog.open()
            console.log("Permission accepted")
        }
        onRejected: {
            console.log("Permission rejected")
        }
    }
    Button {
        text: "Select document"
        onClicked: {
            if (documentDialog.supported) {
                if (storagePermissionGranted === false){
                    permissionDialog.open()
                }
                else (storagePermissionGranted === true){
                    documentDialog.open()
                }
            }
            else {
                console.log("Not Supported")
            }
        }
    }
        DocumentDialog {
                id: documentDialog
                onAccepted: {
                        console.log("selected file URL " , fileUrl)
                }
                onRejected: {
                        if (status == DocumentDialog.DocumentDialogCancelledByUser) {
                                // Cancelled By User
                        }
                        if (status == DocumentDialog.DocumentDialogPermissionDenied) {
                                // Permission Denied
                        }
                        if (status == DocumentDialog.DocumentDialogNotSupported) {
                                // Not Supported
                        }
                        if (status == DocumentDialog.DocumentDialogFileReadError) {
                                // File Read Error
                        }
                }
        }
}

Propriedades adicionais

O componente DocumentDialog também fornece várias propriedades que podem ser usadas para alterar a aparência e o comportamento da caixa de diálogo resultante. Uma lista completa dessas propriedades pode ser encontrada na referência da API, mas o exemplo de código a seguir adiciona propriedades úteis que podem ser usadas para uma seleção de arquivo mais específica. Especificamente, a propriedade title é usado para dar um título à caixa de diálogo, a propriedade selectMultiple permite que você forneça vários arquivos, e a propriedade nameFilters fornece duas opções de filtro, permitindo a você selecionar qualquer um a partir de todos os arquivos ou somente .jpg ou arquivos .png.

DocumentDialog {
        id: doc
        title: "Select an image"
        selectMultiple: true
        nameFilters: [ "Image files (*.jpg *.png)", "All files (*)" ]
        onAccepted: {
                console.log("selected file path " , filePath)
        }
        onRejected: {
                if (status == DocumentDialog.DocumentDialogCancelledByUser) {
                        // Cancelled By User
                }
                if (status == DocumentDialog.DocumentDialogPermissionDenied) {
                        // Permission Denied
                }
                if (status == DocumentDialog.DocumentDialogNotSupported) {
                        // Not Supported
                }
                if (status == DocumentDialog.DocumentDialogFileReadError) {
                        // File Read Error
                }
        }
}

As propriedades selectExisting e selectFolder podem ser usadas para alterar a forma como você interage com os arquivos. Se selectExisting for definido como falso, você pode usar a caixa de diálogo para criar um arquivo em vez de selecionar um existente, e se a propriedade selectFolder for definida como verdadeira, você pode selecionar pastas inteiras em vez de apenas um arquivo.