Initial commit

This commit is contained in:
Quentin Millardet
2024-05-09 00:18:57 +02:00
parent 6596a46054
commit a1c3891847
20 changed files with 882 additions and 0 deletions

View File

@@ -0,0 +1,98 @@
//
// 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()
}
}
}
}