17- (instancetype)initWithQIOSFileDialog:(QIOSFileDialog *)fileDialog
19 NSMutableArray <UTType *> *docTypes = [[[NSMutableArray alloc] init] autorelease];
21 const auto options = fileDialog->options();
23 const QStringList nameFilters = options->nameFilters();
24 if (!nameFilters.isEmpty() && (options->fileMode() != QFileDialogOptions::Directory
25 || options->fileMode() != QFileDialogOptions::DirectoryOnly))
28 for (
const QString &filter : nameFilters)
29 results.append(QPlatformFileDialogHelper::cleanFilterList(filter));
31 docTypes = [self computeAllowedFileTypes:results];
34 if (!docTypes.count) {
35 switch (options->fileMode()) {
36 case QFileDialogOptions::AnyFile:
37 case QFileDialogOptions::ExistingFile:
38 case QFileDialogOptions::ExistingFiles:
39 [docTypes addObject:UTTypeContent];
40 [docTypes addObject:UTTypeItem];
41 [docTypes addObject:UTTypeData];
44 case QFileDialogOptions::Directory:
45 case QFileDialogOptions::DirectoryOnly:
46 [docTypes addObject:UTTypeFolder];
51 if (options->acceptMode() == QFileDialogOptions::AcceptSave) {
52 auto selectedUrls = options->initiallySelectedFiles();
53 auto suggestedFileName = !selectedUrls.isEmpty() ? selectedUrls.first().fileName() :
"Untitled";
58 NSURL *dummyExportFile = [NSFileManager.defaultManager.temporaryDirectory
59 URLByAppendingPathComponent:suggestedFileName.toNSString()];
60 [NSFileManager.defaultManager createFileAtPath:dummyExportFile.path contents:nil attributes:nil];
62 if (!(self = [super initForExportingURLs:@[dummyExportFile]]))
69 if (!(self = [super initForOpeningContentTypes:docTypes asCopy:NO]))
72 if (options->fileMode() == QFileDialogOptions::ExistingFiles)
73 self.allowsMultipleSelection = YES;
76 self.directoryURL = options->initialDirectory().toNSURL();
79 m_fileDialog = fileDialog;
80 self.modalPresentationStyle = UIModalPresentationFormSheet;
82 self.presentationController.delegate = self;