Files
John Smith 52c630e3f3 feat(ui/playlists): drag-and-drop + hover-swap-icon (Tier B2) — Zune 4.8 fan-loved playlist flow
Each playlist card in the left rail is now a drag-drop target. Dragging a
track from the right rail (PointerPressed starts DragDrop.DoDragDropAsync
with a TrackListPayload) over a playlist card highlights it with the
accent color (MultiBinding + PlaylistDropHighlightConverter comparing
each Playlist's Id to the VM's HoveredPlaylist).

After a 300ms dwell (Zune's signature hover pause), the hover-swap popup
appears next to the hovered playlist listing the OTHER playlists; hovering
each one swaps the drop target via SwapHoverTargetCommand (the user's
'hover-swap-icon' affordance from the r/Zune quote). Releasing the drag
on the current hover target fires AddTracksToPlaylistCommand which
calls the existing IMediaLibraryService.AddTrackToPlaylistAsync per
track, sets a status message, and reloads the current tracklist.

Nine new VM-level tests cover: EnterPlaylistDropZone / Leave / Refresh,
ClearPlaylistHover, HoverSwapAlternatives filtering, SwapHoverTargetCommand,
AddTracksToPlaylistCommand payload + status message, and HoverSwapPlaylistName
mirroring.
2026-09-10 12:25:23 -04:00
..