Commit graph

209 commits

Author SHA1 Message Date
Alexander Capehart
0675ce8a03
music: rename playlist when reimporting
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.
2024-01-01 20:21:39 -07:00
Alexander Capehart
c5a3f72b99
music: add more playlist messages
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.
2023-12-23 22:02:55 -07:00
Alexander Capehart
21970349cc
music: add ability to import into playlists
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.
2023-12-23 20:50:40 -07:00
Alexander Capehart
3f1f2f5c2d
music: implement exporting frontend
Implement the exporting dialog and flow in all places in the app.
2023-12-23 12:16:02 -07:00
Alexander Capehart
364675b252
music: revamp paths
Revamp paths with an entirely new abstraction that should improve
testability and integration with M3U playlists.
2023-12-19 22:14:59 -07:00
Alexander Capehart
9a67a0d539
util: use timber for logging
This will make testing app components a lot easier since it removes the
logging dependency used in most shared objects.
2023-08-18 15:55:20 -06:00
Alexander Capehart
151b69bedb
list: add selection menu
Add a menu dialog for selections. This more or less completes the
bottom sheet menu functionality.

Resolves #454.
2023-08-03 11:52:43 -06:00
Alexander Capehart
6ac757b952
list: move sort settings to module
Move sort settings from music -> list, since they're probably better
there anyway.
2023-07-25 21:01:54 -06:00
Alexander Capehart
d6d1071535
all: cleanup
Routine code inspection and cleanup, this time with the new lints from
android studio giraffe.
2023-07-25 20:45:30 -06:00
Alexander Capehart
a1947c4102
home: switch to sort dialogs
Switch the home view to sort dialogs, and simplify away any listeners
that expected popup menus.
2023-07-25 19:57:59 -06:00
Alexander Capehart
68a9ce7b09
build: update deps
I didn't fully keep track of what I did this time, mostly since I was
busy wrangling some of the insane build issues from this gradle update.
2023-07-25 14:35:26 -06:00
Alexander Capehart
32a0d97e5d
list: add ability to play/shuffle songs in menu
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.
2023-07-11 15:09:30 -06:00
Alexander Capehart
4275fdbcf0
music: rename mode -> type
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.
2023-07-11 12:08:51 -06:00
Alexander Capehart
3908400418
playback: use playsong settings
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.
2023-07-11 11:58:05 -06:00
Alexander Capehart
7495a59ab1
playback: add scaffold for new playback mode
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.
2023-07-06 20:07:16 -06:00
Alexander Capehart
0cd59ce4e0
all: redocument navigation system
Add documentation for the new navigation system, which largely
completes this change.
2023-07-04 21:44:34 -06:00
Alexander Capehart
7239256e27
list: unify viewmodels
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.
2023-07-04 20:37:55 -06:00
Alexander Capehart
9e5b737d1a
playback: refactor navigation commands
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.
2023-07-04 14:24:46 -06:00
Alexander Capehart
14107c9444
all: standardize nav consume usage
Standardize navigation command consumption to only occur when a
navigation route has *definitively* ended. If more commands could
come, observe them. Otherwise, consume immediately.
2023-07-04 13:20:13 -06:00
Alexander Capehart
ab2b853737
list: expand item menus
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
2023-07-04 11:15:19 -06:00
Alexander Capehart
d6a20fedb3
all: use menu everywhere
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.
2023-07-03 16:52:42 -06:00
Alexander Capehart
a1efb0c34a
ui: rename menu resources
Switch from redundant menu_* prefixes to more use-specific prefixes
used elsewhere.
2023-06-30 20:31:15 -06:00
Alexander Capehart
fcbce0fb98
ui: fix issues from new nav
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.
2023-06-27 20:05:04 -06:00
Alexander Capehart
9b0e39919b
music: simplify playlist decision events
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.
2023-06-27 19:43:15 -06:00
Alexander Capehart
07e9ca8ef6
ui: flatten nav graph
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.
2023-06-27 17:30:11 -06:00
Alexander Capehart
07eefda67a
music: parallelize library creation
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.
2023-06-07 19:32:22 -06:00
Alexander Capehart
10d05b1f26
all: fix log statements
Fix messy and useless log statements throughout the app.
2023-05-28 10:10:03 -06:00
Alexander Capehart
699227c1a8
all: relog project
Fill in a lot of code paths in the project with log statements in order
to improve the debugging experience.
2023-05-26 16:36:06 -06: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
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
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
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
Alexander Capehart
b2e899a211
search: add playlist results
Add playlist results to the search view.
2023-05-17 17:12:29 -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
7435165929
music: add playlist addition
Implement playlist addition and it's UI flow.
2023-05-13 19:06:51 -06:00
Alexander Capehart
a5176d6209
all: do not do work on static initialization
Try to lazily initialize certain static variables that do work (like
Regex) to speed up initialization time.
2023-05-11 13:10:47 -06:00
Alexander Capehart
b72f33a989
search: match file names case-insensitively
Not doing this lead to some inconsistent search results at points.

Resolves #437.
2023-05-11 12:21:58 -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
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
8ea637ff05
search: ignore punctuation
Ignore punctuation when searching.

Makes the search experience a bit nicer.

Resolves #378.
2023-03-19 13:24:21 -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
VishnuSanal
f5df22e45d
fix: text not getting trimmed whilst searching
Signed-off-by: VishnuSanal <t.v.s10123@gmail.com>
2023-03-07 21:08:46 +05:30
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