Files
Android-247-Radio/chat-summaries/2026-03-09_ui-polish-and-pause.md

39 lines
2.3 KiB
Markdown
Raw Normal View History

# UI polish: navigation, pause, artwork, scrollability
**Date:** 2026-03-09
## Task description
Five UI/UX improvements after manual testing.
## Changes made
### 1. Auto-navigate to Now Playing on station tap (StationListScreen.kt)
- `onPlay` callback now calls `onNavigateToNowPlaying()` immediately after `viewModel.playStation()`.
### 2. Auto-navigate back to station list on stop (NowPlayingScreen.kt)
- `LaunchedEffect(playbackState)` watches for `PlaybackState.Idle` and calls `onBack()`.
- Removed the "Nothing playing" dead-end screen.
### 3. Pause/resume support
- **PlaybackState.kt**: Added `Paused(station, metadata, sessionStartedAt)` state.
- **RadioController.kt**: Added `pause()` method sending `ACTION_PAUSE`.
- **RadioPlaybackService.kt**: `handlePause()` sets `pauseRequested = true` and stops engine. In `handlePlay`'s finally block, if paused: updates state to `Paused`, keeps listening session alive, doesn't cleanup service. On resume (ACTION_PLAY with same station while paused), reuses the session.
- **NowPlayingViewModel.kt**: Added `pause()` and `resume()`. Session timer keeps ticking during pause.
- **NowPlayingScreen.kt**: Transport controls adapt to state — paused shows large play/resume button + stop; playing shows skip-ahead + pause + stop.
### 4. Artwork in mini player and station list
- **MiniPlayer.kt**: Shows 40dp rounded artwork thumbnail from ICY StreamUrl or station's `defaultArtworkUrl`. Shows "Paused"/"Reconnecting..." subtitle as appropriate.
- **StationListScreen.kt**: Station rows show a 36dp circular artwork thumbnail from `defaultArtworkUrl` (EXTIMG) when available.
### 5. Scrollability / drag-n-drop readiness
- LazyColumn was already scrollable. Added `padding(vertical = 4.dp)` to station rows for better touch targets. All items have stable keys (`station.id`, `"playlist_header_${playlist.id}"`) ready for reorderable integration.
## Files changed
- `app/src/main/java/.../service/PlaybackState.kt`
- `app/src/main/java/.../service/RadioController.kt`
- `app/src/main/java/.../service/RadioPlaybackService.kt`
- `app/src/main/java/.../ui/screens/nowplaying/NowPlayingScreen.kt`
- `app/src/main/java/.../ui/screens/nowplaying/NowPlayingViewModel.kt`
- `app/src/main/java/.../ui/screens/stationlist/StationListScreen.kt`
- `app/src/main/java/.../ui/components/MiniPlayer.kt`