Files
MobileMusicAssistant/Mobile Music Assistant/ViewsComponentsPlayerPickerView.swift
T
2026-03-27 09:21:41 +01:00

86 lines
2.6 KiB
Swift

//
// 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 }
)
}