import SwiftUI struct FileListView: View { @EnvironmentObject private var coordinator: ConversionCoordinator var body: some View { List(coordinator.items) { item in HStack { VStack(alignment: .leading, spacing: 2) { Text(item.fileName) .lineLimit(1) .truncationMode(.middle) statusText(for: item.status) .font(.caption) .foregroundStyle(item.status.needsAttention ? Color.orange : .secondary) } Spacer() statusIndicator(for: item.status) } .padding(.vertical, 2) } } @ViewBuilder private func statusText(for status: DropItem.Status) -> some View { switch status { case .waiting: Text("Wartet …") case .running(let progress): Text("\(Int(progress * 100)) %") case .skipped(let reason): Text(reason.errorDescription ?? "Übersprungen") case .rejected(let reason): Text(reason.errorDescription ?? "Abgelehnt") case .succeeded(let destination): Text("Fertig — \(destination.lastPathComponent)") case .failed(let message): Text(message) case .skippedByUser(let reason): Text(reason) } } @ViewBuilder private func statusIndicator(for status: DropItem.Status) -> some View { switch status { case .waiting: Image(systemName: "clock") .foregroundStyle(.secondary) case .running(let progress): ProgressView(value: progress) .frame(width: 60) case .skipped, .skippedByUser: Image(systemName: "arrow.uturn.forward.circle") .foregroundStyle(.secondary) case .rejected, .failed: Image(systemName: "exclamationmark.triangle.fill") .foregroundStyle(.orange) case .succeeded: Image(systemName: "checkmark.circle.fill") .foregroundStyle(.green) } } }