Files
lightshowmanager-ios/LightshowManager/ViewController.swift
Quentin Millardet a1c3891847 Initial commit
2024-05-09 00:18:57 +02:00

99 lines
3.2 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// ViewController.swift
// LightshowManager
//
// Created by Quentin Millardet on 20/04/2024.
//
import UIKit
import os
class ViewController: UIViewController, UIDocumentPickerDelegate {
var startingDirectory : URL?
var model : LightshowModel?
override func viewDidLoad() {
super.viewDidLoad()
model = (UIApplication.shared.delegate as! AppDelegate).model
// Do any additional setup after loading the view.
}
@IBAction func selectFolder(_ sender: Any) {
// Create a document picker for directories.
let documentPicker =
UIDocumentPickerViewController(forOpeningContentTypes: [.folder])
documentPicker.delegate = self
// Set the initial directory.
documentPicker.directoryURL = startingDirectory
// Present the document picker.
present(documentPicker, animated: true, completion: nil)
}
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt url: URL) {
// Start accessing a security-scoped resource.
guard url.startAccessingSecurityScopedResource() else {
// Handle the failure here.
return
}
// Make sure you release the security-scoped resource when you finish.
defer { url.stopAccessingSecurityScopedResource() }
// Use file coordination for reading and writing any of the URLs content.
var error: NSError? = nil
NSFileCoordinator().coordinate(readingItemAt: url, error: &error) { (url) in
let keys : [URLResourceKey] = [.nameKey, .isDirectoryKey]
// Get an enumerator for the directory's content.
guard let fileList =
FileManager.default.enumerator(at: url, includingPropertiesForKeys: keys) else {
Swift.debugPrint("*** Unable to access the contents of \(url.path) ***\n")
return
}
model?.resetStundent()
for case let file as URL in fileList {
let logger = Logger(subsystem: Bundle.main.bundleIdentifier!, category: "network")
logger.debug("chosen file: \(file.relativeString)")
let filename = file.lastPathComponent;
if (filename.contains(".mp3") || filename.contains(".fseq") ){
model?.setStudentAtIndex(model?.getStudentCount() ?? 0, withdraw: filename )
}
// Start accessing the content's security-scoped URL.
guard file.startAccessingSecurityScopedResource() else {
logger.error("Not accessing Security Scoped Ressource")
// Handle the failure here.
continue
}
// Do something with the file here.
// Swift.debugPrint("chosen file: \(file.lastPathComponent)")
// Make sure you release the security-scoped resource when you finish.
file.stopAccessingSecurityScopedResource()
}
}
}
}