16- (instancetype)initWithQIOSFileDialog:(QIOSFileDialog *)fileDialog
18 NSMutableArray <UTType *> *docTypes = [[[NSMutableArray alloc] init] autorelease];
20 QStringList nameFilters = fileDialog->options()->nameFilters();
21 if (!nameFilters.isEmpty() && (fileDialog->options()->fileMode() != QFileDialogOptions::Directory
22 || fileDialog->options()->fileMode() != QFileDialogOptions::DirectoryOnly))
25 for (
const QString &filter : nameFilters)
26 results.append(QPlatformFileDialogHelper::cleanFilterList(filter));
28 docTypes = [self computeAllowedFileTypes:results];
31 if (!docTypes.count) {
32 switch (fileDialog->options()->fileMode()) {
33 case QFileDialogOptions::AnyFile:
34 case QFileDialogOptions::ExistingFile:
35 case QFileDialogOptions::ExistingFiles:
36 [docTypes addObject:UTTypeContent];
37 [docTypes addObject:UTTypeItem];
38 [docTypes addObject:UTTypeData];
41 case QFileDialogOptions::Directory:
42 case QFileDialogOptions::DirectoryOnly:
43 [docTypes addObject:UTTypeFolder];
48 if (self = [super initForOpeningContentTypes:docTypes]) {
49 m_fileDialog = fileDialog;
50 self.modalPresentationStyle = UIModalPresentationFormSheet;
52 self.presentationController.delegate = self;
54 if (m_fileDialog->options()->fileMode() == QFileDialogOptions::ExistingFiles)
55 self.allowsMultipleSelection = YES;
57 self.directoryURL = m_fileDialog->options()->initialDirectory().toNSURL();