Move the music editing state to the toolbar.
This should be signifigantly clearer than prior, at the cost of it's
"universality" implying that renaming should be available when it
actually won't be.
Make the header information reflect changes in playlist composition as
the playlist is edited.
This should improve the editing experience to some extent.
Reduce the accepted datatype of extractors down to a list of songs,
moving the other datatypes to the UI layer.
This massively reduces the amount of components that must be managed,
and enables functionality related to playlist editing.
Fix two issues with the ways items are laid out:
1. Remove the automatic span size lookup. Now that ConcatAdpater is
used, this basically becomes impossible to really leverage.
2. Use a divider item instead of a divider item decoration. The
latter is too buggy in many contexts, like the search view.
Resolves#426Resolves#444
Extend the music equals/hashCode implementations to take into account
the raw music.
This way, items that change in non-UID metadata are actually considered
different at runtime while UIDs can still persist the data in a stable
manner.
Simplify picker closing navigation by avoiding weird communication via
state change and instead simply navigate twice from NewPlaylistDialog.
This is probably really stupid. But so is the other way.
Differentiate parents based on their song composition.
This way, it's less likely for an artist/genre/playlist image to get
"stuck" after a library change.
* Translated using Weblate (Ukrainian)
Currently translated at 100.0% (261 of 261 strings)
Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/uk/
* Translated using Weblate (Punjabi)
Currently translated at 100.0% (30 of 30 strings)
Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/pa/
* Translated using Weblate (Hindi)
Currently translated at 16.4% (43 of 261 strings)
Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/hi/
* Translated using Weblate (Ukrainian)
Currently translated at 100.0% (261 of 261 strings)
Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/uk/
* Translated using Weblate (Malayalam)
Currently translated at 100.0% (30 of 30 strings)
Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/ml/
* Translated using Weblate (Hindi)
Currently translated at 100.0% (30 of 30 strings)
Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/hi/
* Translated using Weblate (French)
Currently translated at 83.9% (219 of 261 strings)
Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/fr/
* Added translation using Weblate (Persian)
* Translated using Weblate (Romanian)
Currently translated at 55.5% (145 of 261 strings)
Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/ro/
* Translated using Weblate (Ukrainian)
Currently translated at 100.0% (261 of 261 strings)
Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/uk/
* Translated using Weblate (Croatian)
Currently translated at 100.0% (30 of 30 strings)
Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/hr/
* Translated using Weblate (Turkish)
Currently translated at 100.0% (261 of 261 strings)
Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/tr/
* Translated using Weblate (Persian)
Currently translated at 9.9% (26 of 261 strings)
Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/fa/
* Translated using Weblate (Italian)
Currently translated at 99.6% (260 of 261 strings)
Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/it/
* Translated using Weblate (Hindi)
Currently translated at 17.6% (46 of 261 strings)
Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/hi/
* Translated using Weblate (Czech)
Currently translated at 100.0% (261 of 261 strings)
Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/cs/
* Translated using Weblate (Malayalam)
Currently translated at 32.9% (86 of 261 strings)
Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/ml/
* Translated using Weblate (Ukrainian)
Currently translated at 100.0% (261 of 261 strings)
Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/uk/
* Translated using Weblate (Czech)
Currently translated at 100.0% (261 of 261 strings)
Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/cs/
* Translated using Weblate (Russian)
Currently translated at 100.0% (263 of 263 strings)
Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/ru/
* Translated using Weblate (Ukrainian)
Currently translated at 100.0% (263 of 263 strings)
Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/uk/
* Translated using Weblate (Belarusian)
Currently translated at 100.0% (263 of 263 strings)
Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/be/
* Translated using Weblate (Ukrainian)
Currently translated at 100.0% (263 of 263 strings)
Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/uk/
---------
Co-authored-by: BMN <weblate@yopmail.com>
Co-authored-by: ShareASmile <aapshergill@gmail.com>
Co-authored-by: Martin Derleth <contactmder@pm.me>
Co-authored-by: alex <hdhdhfhfbbffhhfhfjfjf@gmail.com>
Co-authored-by: Milo Ivir <mail@milotype.de>
Co-authored-by: Eren İnce <erenince@proton.me>
Co-authored-by: Alireza Najdshad <alirezanajdshad28@gmail.com>
Co-authored-by: atilluF <110931720+atilluF@users.noreply.github.com>
Co-authored-by: Projjal Moitra <moitraprojjal@disroot.org>
Co-authored-by: Fjuro <ifjuro@proton.me>
Co-authored-by: Raman <xysed@tutanota.com>
Co-authored-by: Макар Разин <makarrazin14@gmail.com>
Add a real playlist naming dialog and UX flow.
This is a bit rough at the moment since theres a good amount of nuance
here. Should improve as the playlist implementation continues to grow
more fleshed out.
Unwind the picker abstraction into smaller dialog packages.
While this increases repetition, it will make the playlist dialog
implementations much less shoddy.
Re-add the tryAsync wrapper function to the loading process to properly
handle music loading errors.
Turns out there is basically no other way to properly do this except for
the insane exception -> Result -> exception hack.
Refactor the music name implementation to do the following:
1. Unify normal and sort names under a single datatype
2. Handle arbitrary-length digit strings
3. Ignore puncutation regardless of the intelligent sort
configuration, as it is trivially localizable.
Resolves#423.
Co-authored by: ChatGPT-3.5
Forgot to do this in the prior commit. Again, nearly every use of
ExoPlayer by Auxio is considered "unsafe" and would fail the build
unless I slather it all in OptIn annotations or have a global lint.xml
file just sitting in the root directory.
Move everything over to the media3 library instead of ExoPlayer.
Media3 is worse in every way. It labels half of ExoPlayer as "unsafe"
because it thinks that it's garbage uwu "helpful" abstractions are
perfectly servicable when in reality they are a pile of garbage filled
with insane performance issues, race conditions, and a seeming lack
of awareness to the sheer absurdity of android's media APIs. It is
absolutely horrible, but ExoPlayer will stop being maintained soon
and I will have to move over for further maintenance.