Commit graph

426 commits

Author SHA1 Message Date
Koitharu
d3c8304a0d
Add missing imports 2023-05-25 19:31:36 +03:00
Alexander Capehart
a5e01be34b
Merge branch 'dev' into feature/share 2023-05-24 15:49:53 +00:00
Alexander Capehart
af563c83ac
build: reduce execution times
Reduce build execution times through the use of non-transitive/final R
classes and removing unnecessary wildcard imports.
2023-05-22 21:41:13 -06:00
Alexander Capehart
a5ce8bf5ee
build: fix changelog 2023-05-22 16:31:04 -06:00
Alexander Capehart
8a8586968f
all: cleanup
Final pre-release cleanup.
2023-05-21 20:04:18 -06:00
Alexander Capehart
7e739061d8
Merge branch 'dev' into feature/share 2023-05-21 19:14:55 +00:00
Alexander Capehart
89eeaa33cc
list: avoid crashing on span size lookups
Apparently sometimes the span size lookup will try to find an item that
does not exist. Fix that.
2023-05-21 12:01:41 -06:00
Alexander Capehart
c86970470f
music: back playlists with database
Finally persist playlists with a backing database.
2023-05-20 19:57:57 -06:00
Alexander Capehart
0597fa876c
detail: drop playlist resorting for now
Don't really have the UI for it currently. It would require some kind
of dialog instead of a popup menu, which is planned eventually.
2023-05-20 11:28:57 -06:00
Alexander Capehart
572b0e52f8
music: clean up playlist experience
Add a variety of mild fixes and qol improvements regarding playlists.
2023-05-20 11:24:45 -06:00
Alexander Capehart
1fd6795b0d
detail: move editing state to toolbar
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.
2023-05-19 19:57:41 -06:00
Alexander Capehart
cee92c8087
detail: update playlist header to reflect edits
Make the header information reflect changes in playlist composition as
the playlist is edited.

This should improve the editing experience to some extent.
2023-05-19 14:37:01 -06:00
Alexander Capehart
5fff1bd0b3
image: simplify implementation
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.
2023-05-19 14:12:22 -06:00
Alexander Capehart
996c86b361
detail: add playlist editing
Add the ability to edit a playlist in it's detail view.

This replaces the prior sorting functionality entirely. That will be
re-added later.
2023-05-19 11:15:33 -06:00
Alexander Capehart
33381f463a
playback: move drag helper to list
Move most of QueueDragCallback to the list module.

This is planned to be re-used with the playlist view, so it should be
shared.
2023-05-18 20:16:53 -06:00
Alexander Capehart
41cab82523
Merge branch 'dev' into feature/share 2023-05-18 23:20:53 +00:00
Alexander Capehart
3a5e1a5111
music: add playlist renaming
Add the flow for renaming a playlist.
2023-05-18 17:09:59 -06:00
Alexander Capehart
08d36df905
list: rework item arragement
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 #426
Resolves #444
2023-05-18 14:54:13 -06:00
Koitharu
e48916fb27
Fix style issues 2023-05-18 19:27:50 +03:00
Koitharu
7f11e886f7
Sharing albums, artists, genres and playlists 2023-05-18 12:19:17 +03:00
Alexander Capehart
97e144058a
music: add playlist deletion dialog
Add a dialog that allows the user to confirm playlist deletion, instead
of it happening immediately.
2023-05-17 18:56:09 -06:00
Alexander Capehart
d1f9200bf9
list: unwind choiceviewholder
Unwind ChoiceViewHolder into specific impls.

Was not re-usable enough w/playlists in order to be reasonable.
2023-05-17 17:39:52 -06:00
Alexander Capehart
06885ba264
music: extend equality impls
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.
2023-05-17 16:11:26 -06:00
Alexander Capehart
d0a68353a7
music: simplify picker closing
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.
2023-05-17 12:09:51 -06:00
Alexander Capehart
6cfb50a10f
detail: drop equality checks
Most of the list creation operations are O(1), and the stateflow
equality makes it not matter anyway.
2023-05-17 11:56:50 -06:00
Alexander Capehart
dcc82608bd
music: add playlist deletion
Add basic playlist deletion flow.

No confirmation dialog yet, that will need to be implemented later.
2023-05-17 11:07:16 -06:00
Alexander Capehart
d0444bb41d
detail: add duration indicator to playlist
Add a duration indicator alongside the song count in the playlist
detail header.
2023-05-13 20:05:04 -06:00
Alexander Capehart
949a9c879c
detail: improve playlist presentation
Improve playlist presentation in the detail views, especially when
it is empty.
2023-05-13 19:32:03 -06:00
Alexander Capehart
7435165929
music: add playlist addition
Implement playlist addition and it's UI flow.
2023-05-13 19:06:51 -06:00
Alexander Capehart
763061c352
music: automatically number new playlists
Automatically number new playlists, from Playlist 1, Playlist 2, etc.

This comes with the additional requirement that all playlists have
unique names.
2023-05-12 13:43:18 -06:00
Alexander Capehart
c7b875376c
music: refactor name implementation
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
2023-05-11 12:19:39 -06:00
Alexander Capehart
f2a90bf0af
picker: refactor into module-specific impls
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.
2023-03-25 21:13:42 -06:00
Alexander Capehart
9988a1b76b
music: add framework for playlist mutation
Add the boilerplate for basic playlist creation/addition.

No integration in UI yet.
2023-03-25 14:36:22 -06:00
Alexander Capehart
f388e492aa
playback: add playlist support
Add playlist support to the playback code.
2023-03-23 16:07:56 -06:00
Alexander Capehart
4068c3e009
detail: add playlist view
Add a detail view for playlists.

This is most equivelent to the genre detail view right now, but will be
differentiated eventually.
2023-03-22 19:58:58 -06:00
Alexander Capehart
f846a08b01
music: refactor library usage
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.
2023-03-22 17:16:41 -06:00
Alexander Capehart
686290a6c1
playlist: add basic ui support
Add extremely basic UI support for playlists.
2023-03-20 19:47:56 -06:00
Alexander Capehart
9a282e2be9
music: unify indexer and repository
Unify Indexer and MusicRepository into a single class.

This is meant to create a single dependency on PlaylistDatabase and
reduce the amount of orchestration.
2023-03-20 15:57:27 -06:00
Alexander Capehart
4033a791a7
playlist: consider playlists music
Consider playlists music rather than an extension of music.

This also sets up the basics of a playlist datbaase.
2023-03-20 15:57:27 -06:00
Alexander Capehart
eddba44819
ui: fix failing tests
Forgot to correct the overrides.
2023-03-19 16:06:16 -06:00
Alexander Capehart
a485ebf1fe
music: handle numbers when sorting
Now sort by logical numeric order with music names.

This is a nice QoL improvement.

Resolves #394.
2023-03-19 14:08:37 -06:00
Alexander Capehart
e50bc80a0b
music: handle compilation flag tags
Handle COMPILATION and ITUNESCOMPILATION flags, if present.

Just map these to Various Artists and a compilation release type.

Resolves #373.
2023-03-19 13:14:53 -06:00
Alexander Capehart
9cc75a0e11
detail: separate header from list data
Separate the header information into it's own adapter, and concatenate
it with the prior adapter.

This way, it can be updated separately without a jarring list update.
2023-03-19 12:03:58 -06:00
Alexander Capehart
5e0059fdba
ui: avoid crashes with simultanious navigation
If navigation occurs with more than one destination at once, just drop
the slower one rather than crashing.

Resolves #374.
2023-03-17 15:47:18 -06:00
Alexander Capehart
1df15a32cd
ui: use event everywhere
Replace all prior uses of the StateFlow + finish method pattern with
the new event class.
2023-03-17 15:29:36 -06:00
Alexander Capehart
f0d62e8176
deps: update deps
Lifecycle -> 2.6.0
Spotless -> 6.17.0 (Allows file name field to be used)
2023-03-17 15:13:11 -06:00
Alexander Capehart
86ca6d577e
list: re-add fine-grained updates
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.
2023-03-04 23:08:03 -07:00
Alexander Capehart
4f64c463c4
detail: fix format not appearing in song detail
Forgot to add the data to the list.
2023-03-03 19:35:47 -07:00
Alexander Capehart
83c5b85424
deps: update
Spotless -> 6.15.0
Core -> 1.9.0
2023-02-24 21:57:01 -07:00
Alexander Capehart
2d9a5ad5cd
music: add more tests
Add tests for MusicViewModel, MusicMode, and MusicRepository.

Going further requires me to really learn instrumentation tests.
2023-02-20 16:01:58 -07:00