You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

34 lines
1.2 KiB

import AppKit
import UniformTypeIdentifiers
enum FileImport {
/// Dateiauswahl für Videos, startet im Quellordner. Leer = abgebrochen.
@MainActor
static func chooseVideos(startingAt sourceFolder: URL?) -> [URL] {
let panel = NSOpenPanel()
panel.allowsMultipleSelection = true
panel.canChooseDirectories = false
panel.canChooseFiles = true
panel.allowedContentTypes = [.movie, .quickTimeMovie, .mpeg4Movie]
if let sourceFolder { panel.directoryURL = sourceFolder }
guard panel.runModal() == .OK else { return [] }
return panel.urls
}
/// Liest die Datei-URLs aus einem Drop und liefert sie gesammelt auf dem Main-Thread.
static func loadURLs(from providers: [NSItemProvider], completion: @escaping ([URL]) -> Void) {
let group = DispatchGroup()
var urls: [URL] = []
for provider in providers {
group.enter()
_ = provider.loadObject(ofClass: URL.self) { url, _ in
if let url {
DispatchQueue.main.async { urls.append(url) }
}
group.leave()
}
}
group.notify(queue: .main) { completion(urls) }
}
}

Powered by TurnKey Linux.