import Foundation import AVFoundation // 媒体类型 enum MediaType: String, Codable { case video, audio, stream } // 循环模式 enum RepeatMode: String, CaseIterable { case none // 不循环 case single // 单曲循环 case all // 列表循环 var icon: String { switch self { case .none: return "repeat" case .single: return "repeat.1" case .all: return "repeat" } } var next: RepeatMode { switch self { case .none: return .single case .single: return .all case .all: return .none } } } // 媒体项 struct MediaItem: Identifiable, Equatable { let id = UUID() let url: URL let name: String let type: MediaType static func == (lhs: MediaItem, rhs: MediaItem) -> Bool { lhs.id == rhs.id } }