When reimporting an M3U file into a playlist, if the name differs, then
initiate a rename dialog so the user has a choice on whether they want
to use the new name or not.
This does kinda desecrate the "Rename" decision a bit, but it's still
to the user the same.
Add more types of playlist messages corresponding to other actions, so
they can be indicated in the UI only when the process is complete.
This is somewhat incomplete. It does not include indicating errors for
other playlist operations (Which I want to do), and neither does it
handle situations in which some playlist operations and up reducing
to others (i.e import -> create). I need to do that later.
Add a menu option that allows you to import a playlist file into an
existing playlist.
This is useful for keeping Auxio playlists up to date with a remote
source.
Add play and shuffle options for all song menus.
These will override the shuffle state, unlike other song play
interactions.
This required a good bit of refactoring to menu, some of which
might be ported to other commands in future changes.
Rename MusicMode to MusicType.
The original naming was always a bit clunky given that it referred to
both settings and data configuration. I feel that "Type" is probably
better overall.
Use PlaySong modeling within settings too. This largely completes the
PlaySong refactor and fully adds the ability to play songs by
themselves as an option.
Resolves#424.
Add the scaffold for PlaySong, a new version of playback modes that
- Supports playback of a song by itself, requested by #424.
- Will make direct playback from the song menu feasible (given
additional reworks)
- Prevents the invalid state of playing a song by it's playlist,
as the sealed interface implementation of PlaySong requires a Playlist
to be provided to it's respective variant.
Unify the disjoint selection and menu viewmodels into a single
ListViewModel.
This is technically not fully done, as MenuViewModel remains as a
backing element of the menu dialogs, but otherwise that's it.
Unify the artist and genre picker commands into a single event
(like others), and also make the playback panel correctly respond to
album/artist navigation events.
Standardize navigation command consumption to only occur when a
navigation route has *definitively* ended. If more commands could
come, observe them. Otherwise, consume immediately.
Bit of a megapatch that:
- Adds dedicated play, shuffle, and view items to all item menus
(songs haven't been fully implemented yet)
- Adds icons to all item menus
- Re-adds enabled/disabled items to menus
- Makes menu action naming conventions more consistent with the rest
of the app
Use the new menu system in all applicable places.
More consideration is needed right now on whether the toolbars should
also have menu items, so they remain unchanged right now.
Fix miscellanious issues from the flattened nav graph system.
Nowhere near enough, largely counting on the planned bottom sheet menus
to eventually be able to ignore most of these issues.
Simplify the 4 stateflows controlling when playlist decision dialogs
must be opened to just one enum.
This is like the detail view, and makes the amount of observers I have
to spin up much smaller.
Eventually, most of even these observer calls will be collapsed into
the menu itself.
Flatten the navigation graph into a single "main" graph that links
home to both explore and preference fragments.
***This massively breaks the app in it's current state***. Further
changes and refactors are needed to get this back to working.
Make it so that the DeviceLibrary constructor streams all song
information instead of building the library on completion.
This has no measurable effect on loading times, but does appear visibly
faster to the user since the loading process is no longer stuck on the
"Loading your music library" step.
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.
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
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
Refactor the weird picker god module into specific sub-impls in
playback and a new navigation package.
I cannot keep this unified. The needs are too different among each
picker. Better to keep it separate, especially in preparation for
the playlist dialogs.
Refactor the disjoint Library and Playlist setup into two new
DeviceLibrary and UserLibrary implementations.
This makes the API surface a bit less disjoint than prior.
Unify Indexer and MusicRepository into a single class.
This is meant to create a single dependency on PlaylistDatabase and
reduce the amount of orchestration.
Re-add the fine-grained updates that were removed prior due to state
concerns.
This time they should be safe enough to use, as the differ has been
fully vendored. The change is not complete enough however, as the queue
view has not been properly ported to use these updates just yet.