|
|
@@ -35,10 +35,10 @@ enum DocumentPickerService {
|
|
|
panel.directoryURL = FileManager.default.urls(for: .picturesDirectory, in: .userDomainMask).first
|
|
|
case .files:
|
|
|
panel.title = "Open File Manager"
|
|
|
- panel.message = "Select photos or files from your file manager."
|
|
|
- panel.prompt = "Select"
|
|
|
+ panel.message = "Select photos from your file manager."
|
|
|
+ panel.prompt = "Select Photos"
|
|
|
panel.allowsMultipleSelection = true
|
|
|
- panel.allowedContentTypes = fileManagerContentTypes
|
|
|
+ panel.allowedContentTypes = photoContentTypes
|
|
|
panel.directoryURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first
|
|
|
case .importFile:
|
|
|
panel.title = "Import Files"
|
|
|
@@ -76,10 +76,6 @@ enum DocumentPickerService {
|
|
|
documentExtensions.compactMap { UTType(filenameExtension: $0) }
|
|
|
}
|
|
|
|
|
|
- private static var fileManagerContentTypes: [UTType] {
|
|
|
- photoContentTypes + documentContentTypes
|
|
|
- }
|
|
|
-
|
|
|
fileprivate static func isPhoto(_ url: URL) -> Bool {
|
|
|
photoExtensions.contains(url.pathExtension.lowercased())
|
|
|
}
|
|
|
@@ -91,10 +87,6 @@ enum DocumentPickerService {
|
|
|
return true
|
|
|
}
|
|
|
|
|
|
- fileprivate static func isSelectableInFileManager(_ url: URL) -> Bool {
|
|
|
- isPhoto(url) || isDocument(url)
|
|
|
- }
|
|
|
-
|
|
|
fileprivate static func contentType(for url: URL) -> UTType? {
|
|
|
if let values = try? url.resourceValues(forKeys: [.contentTypeKey]),
|
|
|
let type = values.contentType {
|
|
|
@@ -111,7 +103,7 @@ enum DocumentPickerService {
|
|
|
case .photos:
|
|
|
matched = urls.filter { isPhoto($0) }
|
|
|
case .files:
|
|
|
- matched = urls.filter { isSelectableInFileManager($0) }
|
|
|
+ matched = urls.filter { isPhoto($0) }
|
|
|
case .importFile:
|
|
|
matched = urls.filter { isDocument($0) }
|
|
|
}
|
|
|
@@ -125,14 +117,7 @@ enum DocumentPickerService {
|
|
|
case .photos:
|
|
|
PhotoPreviewService.present(urls: matched, from: window)
|
|
|
case .files:
|
|
|
- let photos = matched.filter { isPhoto($0) }
|
|
|
- let documents = matched.filter { isDocument($0) }
|
|
|
- if !photos.isEmpty {
|
|
|
- PhotoPreviewService.present(urls: photos, from: window)
|
|
|
- }
|
|
|
- if !documents.isEmpty {
|
|
|
- PrintService.print(urls: documents, from: window)
|
|
|
- }
|
|
|
+ PhotoPreviewService.present(urls: matched, from: window)
|
|
|
case .importFile:
|
|
|
_ = ImportedFilesStore.add(urls: matched)
|
|
|
FilePreviewService.present(urls: matched, from: window)
|
|
|
@@ -146,8 +131,8 @@ enum DocumentPickerService {
|
|
|
alert.messageText = "No Photos Selected"
|
|
|
alert.informativeText = "Please select picture files such as JPEG, PNG, or HEIC."
|
|
|
case .files:
|
|
|
- alert.messageText = "No Photos or Files Selected"
|
|
|
- alert.informativeText = "Please select pictures or document files such as JPEG, PNG, PDF, or DOC."
|
|
|
+ alert.messageText = "No Photos Selected"
|
|
|
+ alert.informativeText = "Please select picture files such as JPEG, PNG, or HEIC."
|
|
|
case .importFile:
|
|
|
alert.messageText = "No Files to Add"
|
|
|
alert.informativeText = "Please select files such as PDF, TXT, or DOC to import."
|
|
|
@@ -178,7 +163,7 @@ private final class DocumentPickerPanelDelegate: NSObject, NSOpenSavePanelDelega
|
|
|
case .photos:
|
|
|
return DocumentPickerService.isPhoto(url)
|
|
|
case .files:
|
|
|
- return DocumentPickerService.isSelectableInFileManager(url)
|
|
|
+ return DocumentPickerService.isPhoto(url)
|
|
|
case .importFile:
|
|
|
return DocumentPickerService.isDocument(url)
|
|
|
}
|