Commit graph

110 commits

Author SHA1 Message Date
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
f5c7f25cdf
home: add music loading error dialog
Add a dialog that shows the stack trace of a music loading error.

This is an MVP that is only available to music loading to resolve some
immediate issues.

Resolves #527.
2023-08-14 17:46:01 -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
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
4b49174ced
ui: return to old nested nav
It just...started working again. Beats me why.

Start using it again, but with most of the changes in-tact. I like the
way it looks.
2023-07-22 12:10:54 -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
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
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
db2e9e12f0
list: add type-specific menu impls
Add menus for each fundamental music datatype. Each will display
information about the data contained.
2023-07-03 15:18:04 -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
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
3a5e1a5111
music: add playlist renaming
Add the flow for renaming a playlist.
2023-05-18 17:09:59 -06: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
7435165929
music: add playlist addition
Implement playlist addition and it's UI flow.
2023-05-13 19:06:51 -06:00
Alexander Capehart
4fe91c25e3
music: streamline new playlist implementation
Make the implementation of the playlist creation dialog signifigantly
simpler by removing some aspects that don't really need implementation
yet.
2023-05-13 11:40:35 -06:00
Alexander Capehart
e2104c58b8
music: clean up playlist name dialog
Cleanup the playlist naming dialog to have nicer UX/implementation.
2023-05-12 15:42:30 -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
e01ea25d0b
music: add playlist naming flow
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.
2023-05-12 10:39:56 -06:00
Alexander Capehart
eb4adcc109
all: unwind picker abstraction
Unwind the picker abstraction into smaller dialog packages.

While this increases repetition, it will make the playlist dialog
implementations much less shoddy.
2023-05-11 16:21:04 -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
8536c3da31
all: start injecting shared objects
Start injecting shared object instances.

This is not a 100% conversion, as certain portions of the code are not
really ready for 100% DI constructors just yet.
2023-02-02 20:55:36 -07:00
Alexander Capehart
90843918d6
settings: use manual nav graph
Manually use our own navigation graph in the new settings view.

This avoids a crash that occurs with the default preferences navigation
(on some devices) where the differing app IDs between debug and release
makes it so that the fragments cannot be found. Because you know.
Android.
2023-01-20 18:38:10 -07:00
Alexander Capehart
1b44eeae15
music: rename filesystem back into storage
Rename the filesystem module into storage.

Forgot about the MediaStore utils I had in there. The original name was
more correct.
2023-01-04 09:46:02 -07:00
Alexander Capehart
1f5594fb33
music: refactor metadata extractor
Refactor the internal tag management portion of MetadataExtractor into a
new "Tags" object that can now be re-used in the ReplayGain system.

This also does a minor rework to the ReplayGain object to make it
totally self-sufficient.
2023-01-01 10:38:50 -07:00
Alexander Capehart
7721e64096
music: split off extractor parsing
Split off parsing-related components from extractor into a new parsing
module.

A lot of these methods are used in non-extractor code, so it makes more
sense for them to not be part of the extractors.

The code that is really extractor-specific can remain within the
extractor files.
2022-12-31 19:50:54 -07:00
Alexander Capehart
195ea074ca
playback: re-add play from genre
Re-add the "Play from genre" setting.

It's much easier to implement this now than prior with the picker
framework, so may as well retain consistency.
2022-12-27 16:24:52 -07:00
Alexander Capehart
9d283fc6e4
accent: move back to ui
Move the accent module back into the ui module, where it's more consistent.
2022-12-25 19:32:34 -07:00
Alexander Capehart
32d01f2027
all: refactor list management
Refactor list management (largely callbacks) into a declarative system.

This should make it easier to re-use selection components across the
app.
2022-12-18 10:58:45 -07:00
Alexander Capehart
873f15ff40
all: remove immature comments
Remove childish wording/diatribes from the codebase that were added
when I was younger.

I'm an adult now. I have to make this repository at least somewhat
professional.
2022-12-15 14:21:21 -07:00
Alexander Capehart
c13a57f694
music: rework picker system
Rework the music picker system to be a reactive, viewmodel-based system
instead of a janky UI system.

This should make it much easier to maintain and extend in the future.
2022-11-19 16:13:20 -07:00
Alexander Capehart
7a055680bd
all: fix misc issues
Fix miscellanious issues that I've encountered.
2022-09-26 12:07:12 -06:00
Alexander Capehart
f3c14b81cb
all: tweak package structure
Try to tweak the package structure to be more coherent.
2022-09-25 20:24:19 -06:00
Alexander Capehart
62ee46cfe6
music: add multi-artist support
Add semi-complete support for multiple artists.

This changeset completely reworks the music linker to add the following
new behaviors:
1. Artists are now derived from both artist and album artist tags,
with them being linked to songs and albums respectively
2. Albums and songs can now have multiple artists that can be distinct
from eachother
3. Previous Genre picking infrastructure has been removed and replaced
with artist picking infrastructure. "Play from genre" has been retired
entirely.

This is a clean break to the previous artist model and may not work
with all libraries. Steps to migrate the music library will be added
to the changelog.

Resolves #195.
2022-09-23 10:15:28 -06:00
Alexander Capehart
765f2f9a18
music: keep changes when unshuffling/reshuffling
Keep changes when unshuffling and reshuffling the queue.

This quirk was a hold-over from the old queue system, and now it's
removed.

Note that sorting is still based on parent, and so sort orders might
remain somewhat wonky. I only see myself really tackling that come
gapless playback, as I have to remove that last vestige to get that
system working.
2022-09-16 20:13:30 -06:00
Alexander Capehart
717f49fc20
music: add picker dialog
Add a dialog for picking a genre from several choices.

This basically completes multi-genre support in Auxio, save more
internal reworks.

Note that it is extremely likely that the "Play from genre" setting
will be removed soon. This feature has made me realize that such does
not many any real sense, as genres are more semantically similar to
playlists than artists or albums. This implementation only exists to
make multi-artist support an easy plug-and-play operation.

Resolves #201
2022-09-14 19:59:12 -06:00
Alexander Capehart
2aa540c29a
ui: make setting dialogs
Make the setting dialogs navigation destinations.

This reduces the boilerplate required for dialogs.
2022-09-14 18:54:07 -06:00
Alexander Capehart
48ad45e4c3
music: rework id system
Completely rework the ID system to pave the way to MusicBrainz ID
support and greatly increase ID integrity in general.

This changeset removes the old ID field, an emulation of a polynomial
hash that was used in all items, and replaces it with a new type called
UID that is specific to Music. Other types just use plain equals now,
and most instances of "id" to check for equality in the app have either
been inlined into an equals override or removed outright.

The new UID format is as follows:
datatype/format:uuid

Datatype is a tag that is just the lowercase tag name. For example,
"song". Format is the program that created the UID. auxio will be an
md5 hash, and musicbrainz will the a musicbrainz ID extracted from a
file. UUID is the uuid itself.

This is much more reliable and extendable than the old ID format. This
will also be the last time I break compat with old ID formats. From now
on, a legacy UID field will not be included to enable backwards compat,
when the time comes for a breaking change.
2022-09-06 22:21:41 -06:00
OxygenCobalt
fe16ffb5bf
queue: temporarily remove navigation
Temporarily remove queue navigation, as it can no longer really fit
with the new transitions.

This will eventually be replaced with a queue bottom sheet, implying
that I can abuse one into working.
2022-07-27 08:48:13 -06:00