// // PlayerPickerView.swift // Mobile Music Assistant // // Created by Sven Hanold on 26.03.26. // import SwiftUI struct PlayerPickerView: View { @Environment(\.dismiss) private var dismiss let players: [MAPlayer] let onSelect: (MAPlayer) -> Void var body: some View { NavigationStack { List { ForEach(players) { player in Button { onSelect(player) dismiss() } label: { HStack { VStack(alignment: .leading, spacing: 4) { Text(player.name) .font(.headline) .foregroundStyle(.primary) HStack(spacing: 6) { Image(systemName: stateIcon(for: player.state)) .foregroundStyle(stateColor(for: player.state)) .font(.caption) Text(player.state.rawValue.capitalized) .font(.caption) .foregroundStyle(.secondary) } } Spacer() Image(systemName: "chevron.right") .foregroundStyle(.secondary) .font(.caption) } } .disabled(!player.available) } } .navigationTitle("Play on...") .navigationBarTitleDisplayMode(.inline) .toolbar { ToolbarItem(placement: .cancellationAction) { Button("Cancel") { dismiss() } } } } } private func stateIcon(for state: PlayerState) -> String { switch state { case .playing: return "play.circle.fill" case .paused: return "pause.circle.fill" case .idle: return "stop.circle" case .off: return "power.circle" } } private func stateColor(for state: PlayerState) -> Color { switch state { case .playing: return .green case .paused: return .orange case .idle: return .gray case .off: return .red } } } #Preview { PlayerPickerView( players: [], onSelect: { _ in } ) }