Skip to content

Impl/multi selection lists#979

Merged
theovilardo merged 3 commits intomasterfrom
impl/multi-selection-lists
Feb 4, 2026
Merged

Impl/multi selection lists#979
theovilardo merged 3 commits intomasterfrom
impl/multi-selection-lists

Conversation

@theovilardo
Copy link
Copy Markdown
Owner

Added multi-selection features for LibraryScreen

…music library.

- **Multi-Selection Core**:
    - Introduces `MultiSelectionStateHolder` to manage selection state, preserving order and tracking selected song IDs.
    - Implements `SelectionActionRow` and `SelectionCountPill` components to provide UI controls and feedback during selection mode.
    - Adds `MultiSelectionBottomSheet` featuring batch actions: Play All, Add to Queue, Play Next, Toggle Like, Share as ZIP, and Delete All.
- **UI & Components**:
    - Enhances `EnhancedSongListItem` with selection states, including animated borders, scale effects, and checkmark overlays.
    - Updates `LibraryScreen` and `LibrarySongsTab` to support selection mode toggling via long-press and click-to-select.
    - Implements `StackedAlbumArts` and `StackedCoverArts` for visual representation of selected items in headers and bottom sheets.
- **Player & Functionality**:
    - Updates `PlayerViewModel` with batch processing logic for playback, queue management, and library modification of selected songs.
    - Introduces `ZipShareHelper` to facilitate compressing multiple audio files into a ZIP archive for sharing.
    - Implements a batch deletion flow with a single confirmation dialog for multiple files.
- **Refactoring**:
    - Moves `EnhancedSongListItem` to a shared component directory to allow reuse across `DailyMixScreen`, `ArtistDetailScreen`, and `SearchScreen`.
    - Refines library navigation logic to clear selection when switching tabs.
…ists

- **Playlist Management**:
    - Updates `PlaylistBottomSheet` to support adding multiple songs simultaneously to one or more playlists.
    - Adds `addSongsToPlaylists` to `PlaylistViewModel` for batch processing song additions via `userPreferencesRepository`.
    - Enhances playlist creation logic to allow adding a selection of songs immediately upon creating a new playlist.
    - Refines UI feedback with dynamic titles and toast notifications for batch operations.
- **UI & Multi-Selection**:
    - Updates `EnhancedSongListItem` to display selection indices (1, 2, 3...) during multi-selection mode instead of a generic check icon.
    - Integrates multi-selection support into `LibraryScreen` (Tracks and Liked Songs tabs), enabling long-press to enter selection mode and batch actions.
    - Updates song list components to handle selection toggles and provide visual feedback for selected states.
- **Component Refactoring**:
    - Refactors `PlaylistBottomSheet` to accept a `List<Song>` instead of a single `Song` entity.
    - Updates `ArtistDetail`, `AlbumDetail`, `Search`, `GenreDetail`, and `DailyMix` screens to compatible with the updated `PlaylistBottomSheet` signature.
    - Implements safer fallback mechanisms in components when handling empty song lists or null states.
- **Multi-Selection & Actions**:
    - Updates `SelectionActionRow` in `LibraryScreen` to contextually resolve the "Select All" target based on the active tab (Liked, Folders, or Songs).
    - Updates `MultiSelectionBottomSheet` to use a more emphasized typography style for the "Play All" action.
    - Replaces the `FolderZip` icon with a `Share` icon for the bulk sharing action.
- **UI & Layout**:
    - Removes zero-height and small spacers from the top of the `Artists` and `Songs` lists to streamline vertical spacing.
    - Removes the top gradient fade effect overlay in `LibrarySongsTab`.
    - Optimizes button layouts in `SongInfoBottomSheet` and `MultiSelectionBottomSheet` by removing horizontal content padding for a more compact appearance.
@theovilardo theovilardo merged commit 880e181 into master Feb 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant