* Add 'genres' page/function to Android Auto
* Add 'genres' string to multilingual files that use aa_tab_titles and aa_tab_values
* Updated USAGE.md
* Add preference to shuffle songs on the 'genre' page
* Updated USAGE.md
* wip: working on new logo
* feat: removing old webp and using new vector icon. testing adaptive monochrome
* fix: adjusted launcher and splash scale size
* fix: got both variants matching up size wise
* fix: added android tranparent
* fixed red icon scaling
* fix: updated with a less crappy monochrome thanks to mr seattle guy!
* feat: updated degoogled color, added the proper background launcher, added png icons and banner
* chore: updated readme with new logo credit
* feat: enhance navigation
* fix: leaving settings always unlocks drawer
* feat: set app settings inside a frame layout
In order to add a toolbar with a back button in settings I needed to extend from a fragment
so I converted SettingsFragment into a fragment and created SettingsContainerFragment,
the latter is injected as a child of SettingsFragment inside a FrameLayout.
Since SettingsContainerFragment extends from PreferenceFragmentCompat, this allows
to swap it for other and, in the bigger picture, allow an arbitrary organization.
* fix: onStop declaration on wrong class
* fix: equalizer not respecting navigation ui directives
* Revert "fix: equalizer not respecting navigation ui directives"
This reverts commit eeb125542d.
* fix: navbar + bottom sheet behavior on equalizer fragment
* refactor: delegate navigation to controller and helper
* Revert "fix: onStop declaration on wrong class"
This reverts commit 34d354d803.
* Revert "feat: set app settings inside a frame layout"
This reverts commit 52cfd36b09.
* chore: set experimental label to settings title
Hide bottom navigation bar on portrait and unlock drawer on portrait
* refactor: move controller to dedicated pakckage
* fix: remove old navigation controller delegate
* feat: stabilize public methods and their implementations
* feat: migrate to new navigation controller
* feat: remove unnecessary global variables
* refactor: set controller pattern to bottom sheet
* feat: set app settings inside a frame layout
In order to add a toolbar with a back button in settings I needed to extend from a fragment
so I converted SettingsFragment into a fragment and created SettingsContainerFragment,
the latter is injected as a child of SettingsFragment inside a FrameLayout.
Since SettingsContainerFragment extends from PreferenceFragmentCompat, this allows
to swap it for other and, in the bigger picture, allow an arbitrary organization.
* fix: onStop declaration on wrong class
* feat: add back button to settings view
---------
Co-authored-by: eddyizm <eddyizm@gmail.com>
PR #466 required a dynamic theming macro to set the color, however
if the device does not support that feature the app crashes after logging in
The dynamic theming macro has been replaced with a standard material component
Co-authored-by: eddyizm <eddyizm@gmail.com>
* feat: touch player chip to toggle bitrate visibility
* feat: player bitrate visibility is remembered
* fix: player landscape layout not grouping chip with textview
* feat: touch bitrate to toggle its visibility
This catches the edge case where the the chip is not reachable due to insuficient horizontal space
---------
Co-authored-by: eddyizm <eddyizm@gmail.com>
* feat: collect and save client certificate
* feat: use client certificate for Retrofit, Glide and ExoPlayer
---------
Co-authored-by: eddyizm <eddyizm@gmail.com>
* Add Android Auto icons and improve media service browsing
* chore: changelog and build updated for release
* add grid/list setting for playlist, podcast and radio
---------
Co-authored-by: eddyizm <eddyizm@gmail.com>
* feat: enhance navigation
* fix: leaving settings always unlocks drawer
* feat: set app settings inside a frame layout
In order to add a toolbar with a back button in settings I needed to extend from a fragment
so I converted SettingsFragment into a fragment and created SettingsContainerFragment,
the latter is injected as a child of SettingsFragment inside a FrameLayout.
Since SettingsContainerFragment extends from PreferenceFragmentCompat, this allows
to swap it for other and, in the bigger picture, allow an arbitrary organization.
* fix: onStop declaration on wrong class
* fix: equalizer not respecting navigation ui directives
* Revert "fix: equalizer not respecting navigation ui directives"
This reverts commit eeb125542d.
* fix: navbar + bottom sheet behavior on equalizer fragment
* Revert "fix: onStop declaration on wrong class"
This reverts commit 34d354d803.
* Revert "feat: set app settings inside a frame layout"
This reverts commit 52cfd36b09.
* chore: set experimental label to settings title
Hide bottom navigation bar on portrait and unlock drawer on portrait
* feat: implement track removal from playlists with real-time UI updates
- Added 'Remove from playlist' option to song bottom sheet (appears only when inside a playlist)
- Implemented immediate UI refresh for track count and duration in playlist header
- Fixed a bug where shuffling for covers scrambled the actual playlist song order
- Improved PlaylistPageViewModel to clear stale data and handle isolated updates correctly
- Added dedicated success/failure messages for track removal in English and Italian
- Unified heart icon size to 14dp across all track list items
* fix: missing code from port process
The cherry-pick was missing the database getter
and the function to remove a song from a playlist
---------
Co-authored-by: beeetfarmer <176325048+beeetfarmer@users.noreply.github.com>
* feat: radio logos support for AndroidAuto
* resolve a merge conflict.
* fix auto lint
* fix auto lint
* fix auto break line
* fix auto break line
* fix auto break line
* fix: add alternate serialized name for InternetRadioStation homePageUrl to support both `homePageUrl` and `homepageUrl` JSON keys.
* improve internet radio station cover art handling by prioritizing home page URLs
* fix: remove unnecessary blank line and adjust formatting in MusicUtil
* refactor: improve formatting and clean up whitespace in MappingUtil and MusicUtil
* fix: lock buttons at dialog bottom
The previous implementation appended the buttons to the RecyclerView programmatically
this disabled the scroll and pushed the buttons outside the visible dialog area
if too there were too many playlists.
To fix this now the XML defines a fixed location for the buttons, enabling
the scroll of the RecyclerView and preventing the buttons to become unreachable
* feat: improve playlist chooser dialog UI
Implement it in the XML layout and not programmatically.
* fix: detached listeners from XML layout
* fix: missing dialog title
* feat: support dynamic metadata for internet radio stations
- Implemented `onMetadata` in `BaseMediaService` to extract "Artist - Title" info from ICY, ID3, and Vorbis streams.
- Added a fallback mechanism to periodically check HTTP headers (e.g., `icy-name`, `StreamTitle`) for radio metadata.
- Updated `PlayerControllerFragment` and `TrackInfoDialog` to display the station name alongside dynamic track information.
- Enhanced `TrackInfoDialog` layout to include a dedicated "Station" field for radio tracks.
- Modified `MappingUtil` to preserve station names in media metadata extras.
* fix crashing issue
* radio bob metadata works now. fix crashing issue
* Fixing unchecked operation warnings in SongHorizontalAdapter.java.
* optimizing a bit and better format for notification
* removed xml files affecting build and enviroment
* removed xml files affecting build and enviroment
* fix ui internet radio bottomview
* Revert "fix ui internet radio bottomview"
This reverts commit c237ed451f.
* rebased to upstream/development and fixed metadata to show up for radio after the rebase
* misc.xml restored
* Apply suggestion from @eddyizm
---------
Co-authored-by: eddyizm <wtfisup@hotmail.com>
Co-authored-by: eddyizm <eddyizm@gmail.com>