مربع حوار المستند

يوفر AppStudioAppFramework DocumentDialog مكونًا لاختيار الملفات من التخزين المحلي لجهازك. يتطابق هذا المكون في وظائفه مع مكون Qt Quick FileDialog , الذي يحتوي على نفس الخصائص والطرق، ولكنه يستخدم مربع حوار اختيار الملف الأصلي لجميع الأنظمة الأساسية بدلاً من مربع حوار ملف مخصص في أنظمة التشغيل iOS و Android، مما يسمح بتفاعل أفضل مع نظام التشغيل.

استعراض الملفات باستخدام مربع حوار المستند

لاستخدام المكون DocumentDialog، الشرط الوحيد هو طريقة open. مطلوب أيضًا تمكين أذونات التخزين الخارجية لأجهزة Android. يوضح نموذج التعليمات البرمجية التالي استخدامًا أساسيًا لـ DocumentDialog، بما في ذلك خيار لتمكين إذن التخزين إذا لم يكن ممكّنًا بالفعل وتسجيل الأخطاء المحتملة في سجل وحدة التحكم.

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
                        }
                }
        }
}

خصائص إضافية

يوفر المكون DocumentDialog أيضًا عددًا من الخصائص التي يمكن استخدامها لتغيير مظهر وسلوك مربع الحوار الناتج. يمكن العثور على قائمة كاملة بهذه الخصائص في مرجع API، ولكن نموذج التعليمات البرمجية التالي يضيف خصائص مفيدة يمكن استخدامها لتحديد ملف أكثر تحديدًا. على وجه التحديد، يتم استخدام الخاصية titleلمنح مربع الحوار عنوانًا، وتتيح لك الخاصية selectMultiple توفير ملفات متعددة، وتوفر الخاصية nameFilters خياري تصفية، مما يسمح لك إما بالاختيار من كل الملفات أو من ملفات .jpgأو .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
                }
        }
}

يمكن استخدام الخاصيتين selectExisting و selectFolder لتغيير كيفية تفاعلك مع الملفات. إذا تم ضبط selectExisting على "خطأ"، يمكنك استخدام مربع الحوار لإنشاء ملف بدلاً من تحديد ملف موجود، وإذا تم تعيين الخاصية selectFolder على "صواب"، يمكنك تحديد مجلدات كاملة بدلاً من ملف فقط.