diff --git a/Music/ContentView.swift b/Music/ContentView.swift index 2299888..1e58865 100644 --- a/Music/ContentView.swift +++ b/Music/ContentView.swift @@ -26,6 +26,35 @@ struct ContentView: View { var body: some View { VStack(spacing: 0) { + if let status = networkStatus { + switch status.mode { + case .remote(let hostName): + HStack(spacing: 8) { + Image(systemName: "antenna.radiowaves.left.and.right") + .font(.system(size: 10)).foregroundStyle(.blue) + Text("Connected to \(hostName)") + .font(.system(size: 11, weight: .medium)).foregroundStyle(.blue) + Spacer() + Button("Refresh") { status.onRefreshLibrary?() } + .font(.system(size: 11)).buttonStyle(.plain).foregroundStyle(.secondary) + Button("Disconnect") { status.onDisconnect?() } + .font(.system(size: 11)).buttonStyle(.plain).foregroundStyle(.red) + } + .padding(.horizontal, 12).padding(.vertical, 4) + .background(Color.blue.opacity(0.08)) + case .hosting(let remoteName): + HStack(spacing: 8) { + Image(systemName: "antenna.radiowaves.left.and.right") + .font(.system(size: 10)).foregroundStyle(.green) + Text(remoteName != nil ? "Hosting ยท \(remoteName!) connected" : "Hosting") + .font(.system(size: 11, weight: .medium)).foregroundStyle(.green) + Spacer() + } + .padding(.horizontal, 12).padding(.vertical, 4) + .background(Color.green.opacity(0.08)) + } + } + SearchBarView( searchText: $searchText, trackCount: playlist.selectedItem != nil ? playlist.playlistTracks.count : library.trackCount, @@ -152,6 +181,7 @@ struct ContentView: View { playlists: playlist.allPlaylists, selectedItem: showHome ? nil : playlist.selectedItem, isHomeSelected: showHome, + isRemoteMode: networkStatus?.isRemoteMode ?? false, onHomeSelect: { if showHome { showHome = false diff --git a/Music/Views/PlaylistBarView.swift b/Music/Views/PlaylistBarView.swift index 91e7476..e87ddb2 100644 --- a/Music/Views/PlaylistBarView.swift +++ b/Music/Views/PlaylistBarView.swift @@ -4,6 +4,7 @@ struct PlaylistBarView: View { var playlists: [any PlaylistRepresentable] var selectedItem: (any PlaylistRepresentable)? var isHomeSelected: Bool + var isRemoteMode: Bool = false var onHomeSelect: () -> Void var onSelect: (any PlaylistRepresentable) -> Void var onDeselect: () -> Void @@ -35,11 +36,13 @@ struct PlaylistBarView: View { } ) .contextMenu { - Button("Rename...") { onRename(item) } - if let smart = item as? SmartPlaylist { - Button("Edit Search Query...") { onEditQuery(smart) } + if !isRemoteMode { + Button("Rename...") { onRename(item) } + if let smart = item as? SmartPlaylist { + Button("Edit Search Query...") { onEditQuery(smart) } + } + Button("Delete") { onDelete(item) } } - Button("Delete") { onDelete(item) } } } }