Commit graph

471 commits

Author SHA1 Message Date
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
d6801354ce
music: only include explicit albums in count
Only include an artists explicit albums (ones directly linked w/album
artist) in their count.

This is arguably more appropriate than the prior behavior, given
Auxio's collaborator/artist distinction.

Resolves #581.
2023-11-12 11:26:27 -07:00
Alexander Capehart
bf3c30e8af
music: add demo release type
This is part of the MusicBrainz spec, but I didn't think of implementing
it. Turns out it's stupidly common among music releases, so may as well.

Resolves #590.
2023-11-12 11:12:59 -07:00
Alexander Capehart
52697ef891
detail: allow adding to playlist in playlist
The playback view can still add to a playlist from a playlist, so I
have to implement this navigation route no matter what.
2023-11-11 23:01:51 -07:00
Alexander Capehart
d297c10b0a
detail: fix crash on multi-artist navigation
Caused by an unimplemented navigation branch in ArtistDetailFragment.
2023-08-17 20:25:39 -06:00
Alexander Capehart
c42a3ca97c
ui: refine navigation listeners
Make sure that we don't drop selections or playlist edits when we
navigate to dialogs, this time achieved through a more general
navigation listener implementation than prior.
2023-08-03 13:14:12 -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
6d342325ea
list: open menu dialogs from toolbars
Make it so that toolbars now open menu dialogs as items do.

This excludes the selection menu currently since there's no dialog for
such.
2023-07-28 08:44:31 -06:00
Alexander Capehart
507bc516ce
ui: fix edit layout crashes
Fix crashes that prevented android studio from showing layout previews
of certain views.
2023-07-27 15:42:19 -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
6ef2f74694
detail: add playlist resorting
Add the ability to resort a playlist when in edit mode.

Resolves #446.
2023-07-25 19:58:03 -06:00
Alexander Capehart
ed08559b94
all: fix merge junk 2023-07-25 19:58:03 -06:00
Weblate (bot)
816ab04252
Translations update from Hosted Weblate (#524)
* weather: introduce display precipitation

Introduce a new datatype called DisplayPrecipitation that optimizes the
precipitation level for UI display.

This is primarily meant to fix improper precipitation displays when
values lower than 0.1 in are shown, albiet that may need to change
eventually.

* Translated using Weblate (Hindi)

Currently translated at 100.0% (283 of 283 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/hi/

* Translated using Weblate (Lithuanian)

Currently translated at 100.0% (283 of 283 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/lt/

* Translated using Weblate (Punjabi)

Currently translated at 100.0% (283 of 283 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/pa/

* Translated using Weblate (Punjabi)

Currently translated at 100.0% (36 of 36 strings)

Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/pa/

* Translated using Weblate (Hindi)

Currently translated at 100.0% (36 of 36 strings)

Translation: Auxio/Metadata
Translate-URL: https://hosted.weblate.org/projects/auxio/metadata/hi/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (283 of 283 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/es/

* Translated using Weblate (Polish)

Currently translated at 100.0% (283 of 283 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/pl/

* Translated using Weblate (Finnish)

Currently translated at 93.2% (264 of 283 strings)

Translation: Auxio/Strings
Translate-URL: https://hosted.weblate.org/projects/auxio/strings/fi/

---------

Co-authored-by: Alexander Capehart <alex@oxycblt.org>
Co-authored-by: ShareASmile <aapshergill@gmail.com>
Co-authored-by: Vaclovas Intas <vaclovas1999@gmail.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: Eryk Michalak <gnu.ewm@protonmail.com>
Co-authored-by: Jiri Grönroos <jiri.gronroos@iki.fi>
2023-07-25 19:58:03 -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
3340914c51
detail: switch to sort dialogs
Use the new sort dialogs on in detail views.
2023-07-25 16:47:25 -06:00
Alexander Capehart
ec7f2d979a
list: add sort menu scaffold
Add the base dialog that will replace the prior sort menus in-app.
2023-07-25 16:04:02 -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
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
a6a3eceb7b
music: re-add add -> new playlist route
Re-add the add to playlist -> new playlist route that was accidentally
removed at some point.
2023-07-04 13:27:23 -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
c1158b1a07
list: add menu dialog framework
Add a dialog that shows menu information as a bottom sheet instead of as
a PopupMenu.

This did not take as much finessing of BottomSheetBehavior as the main
playback UI framework did, just some style redefinitions.
2023-07-03 14:28:32 -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
31d647123f
music: use set for child information
Use sets for all child music information.

Unlike parent information, which usually has an ordering derived from
file information, child music information more or less doesn't, and
will be consistently re-interpreted by the app to apply user-configured
sorts.
2023-06-13 10:44:53 -06:00
Alexander Capehart
55597e4976
ui: fix incorrectly aligned disc headers
Fix an issue where disc headers would be at the top when no subtitle as
available.

I really thought that TextView.text would be null if I set it to null.
Instead it becomes an empty string, breaking the visbility change. Fix
it by just using the disc value.

Resolves #472.
2023-06-07 09:23:16 -06:00
Alexander Capehart
b7c15e0cc5
image: refactor views
Refactor StyledImageView and ImageGroup into a new class called
CoverView.

This new view is more sensibly designed and should be capable of
handling non-square album covers when implemented.
2023-05-28 15:29:38 -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
b037cfb166
music: improve sorting
Update sorting usage in-app so that it's only done when absolutely
necessary.
2023-05-25 13:47:11 -06:00
Alexander Capehart
c2def19aee
ui: handle playing indicator edge cases
Handle two edge cases identified with the playing indicator behavior:
1. When enqueing songs from another parent, the prior parent is still
indicates as "playing" when it kind-of isn't.
2. When playback is stopped, the parent is not reset, and thus will
still be indicated as "playing" after the song has disappeared. This
is rarer and should be resolved in other ways, but the solution to
1 also fixes this.

Resolves #380.
2023-05-25 13:16:58 -06:00
Alexander Capehart
ba94d4fa21
detail: group implicit albums in "appears on"
Group albums implicitly linked to an artist via the "artist" tag into
their own section called "Appears on".

This makes Auxio's artist model a bit more apparent to users.

Resolves #411.
2023-05-25 12:54:23 -06:00
Alexander Capehart
8939d341e6
detail: default to "no disc" instead of "disc 1"
Default tracks without a disc to a group called "No disc" instead of
disc 1.

This should reduce confusion on the user end, as it will make improper
taggings more apparent instead of simply degrading to a werid sort
ordering.

Resolves #405.
2023-05-25 12:03:37 -06:00
Alexander Capehart
4210a8d247
ui: disable some options w/empty parents
Disable most playback and playlisting operations when an artist or
playlist is empty.
2023-05-25 11:55:49 -06:00
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