namespace Harmonia.Core.Library; public interface IAudioLibrary { void AddLocation(string path); void RemoveLocation(string path); void RemoveLocations(string[] paths); void Scan(string path); void Scan(string[] paths); event EventHandler? LocationAdded; event EventHandler? LocationRemoved; event EventHandler? ScanStarted; event EventHandler? ScanFinished; } public class AudioLibrary : IAudioLibrary { private readonly List _locations = []; public event EventHandler? LocationAdded; public event EventHandler? LocationRemoved; public event EventHandler? ScanStarted; public event EventHandler? ScanFinished; public void AddLocation(string path) { if (_locations.Contains(path)) return; // TODO: CHeck for subpaths _locations.Add(path); LocationAdded?.Invoke(this, new EventArgs()); } public void RemoveLocation(string path) { RemoveLocations([path]); } public void RemoveLocations(string[] paths) { foreach (string path in paths) { if (_locations.Contains(path) == false) continue; } LocationRemoved?.Invoke(this, new EventArgs()); } public void Scan(string path) { Scan([path]); } public void Scan(string[] paths) { ScanStarted?.Invoke(this, new EventArgs()); ScanFinished?.Invoke(this, new EventArgs()); } }