Commit graph

257 commits

Author SHA1 Message Date
Alexander Capehart
e68cc4d620
build: update deps
Update a huge amount of dependencies. Forgot specifically what I
did.
2023-05-11 15:42: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
c1e4d0f10e
all: switch to media3
Move everything over to the media3 library instead of ExoPlayer.

Media3 is worse in every way. It labels half of ExoPlayer as "unsafe"
because it thinks that it's garbage uwu "helpful" abstractions are
perfectly servicable when in reality they are a pile of garbage filled
with insane performance issues, race conditions, and a seeming lack
of awareness to the sheer absurdity of android's media APIs. It is
absolutely horrible, but ExoPlayer will stop being maintained soon
and I will have to move over for further maintenance.
2023-05-10 17:47:31 -06:00
Alexander Capehart
c6c3816bfc
Merge branch 'master' into dev 2023-05-10 17:09:06 -06:00
Alexander Capehart
d0f8291085
music: fix incorrect sort punct removal
Fix incorrect punctuation removal resulting in weird sorting behavior.
2023-04-16 18:01:32 -06:00
Alexander Capehart
e6b00b1025
build: bump to 3.0.5
Bump the version to 3.0.5.
2023-04-16 17:30:51 -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
67e67ca1d0
playback: generalize make playback panel opening
If the user clicks on the playback bar in any context, including the
queue view, open the playback panel.

This adds another means to closing the queue that does not involve
swiping.

Resolves #402.
2023-03-25 15:32:37 -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
70e824c4e7
Merge branch 'master' into dev 2023-03-25 09:49:28 -06:00
Alexander Capehart
41653a6d8a
build: bump to 3.0.4
Bump to version 3.0.4.
2023-03-24 08:30:13 -06:00
Alexander Capehart
6fc8a64677
music: move sort name number handling to setting
Make the numeric sort name handling added prior dependent on a new
"Intelligent Sorting" setting that also controls the article checks.

This kind of behavior might not be desirable in all cases, and it makes
the setting more consistent anyway.
2023-03-24 08:26:33 -06:00
Alexander Capehart
7c0b73b699
music: move sort name number handling to setting
Make the numeric sort name handling added prior dependent on a new
"Intelligent Sorting" setting that also controls the article checks.

This kind of behavior might not be desirable in all cases, and it makes
the setting more consistent anyway.
2023-03-23 17:40:44 -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
c6898aa3cc
build: fix failure
Due to a sudden pivot to starting from repository backwards with
playlists, there were some half-baked changesets lying around that
I forgot to revert. Do that.
2023-03-19 20:04:18 -06:00
Alexander Capehart
eddba44819
ui: fix failing tests
Forgot to correct the overrides.
2023-03-19 16:06:16 -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
245896e4a7
music: check compilation flag value
Only map compilation flags if the value is "1".
2023-03-19 13:20:07 -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
969ceb4ea7
playback: broadcast audiofx session on play/pause
Broadcast the audiofx session when playing/pausing rather than starting
and stopping.

This is apparently the more correct way to do this.

Resolves #391.
2023-03-16 20:22:29 -06:00
Alexander Capehart
59818471d6
queue: add fine-grained updates
Add fine-grained updates to the queue view.

Should do the following:
1. Make queue updates faster (no diff calculation)
2. Resolve some bugs regarding duplicate queue items.
3. Finally complete the new list framework.

Resolves #350
Resolves #335
Resolves #380
2023-03-16 20:10:24 -06: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
e4aa409cbc
playback: add fragmented mp4 extractor
Not adding this broke MP4-AAC files for some insane reason. Google devs
try not to maintain two near-identical products with only slightly
infuriating differences challenge (IMPOSSIBLE)

Resolves #388.
2023-03-03 18:58:43 -07:00
Alexander Capehart
d6e7b99e1f
playback: accept non-r128 tags on opus files
Apparently certain taggers just write replaygain information to opus
files regardless of the standard. Have to accomodate it.

Resolves #372.
2023-02-24 21:55:00 -07:00
Alexander Capehart
811447126c
deps: pull exoplayer 2023-02-24 17:14:31 -07:00
Alexander Capehart
3b43c3ea5c
release: bump to 3.0.3
Bump to version 3.0.3 (27).
2023-02-20 18:47:32 -07:00
Alexander Capehart
45fe36bd09
music: add option to disable article sort names
Add a setting to remove hard-coded sort names based on articles.

This feature is nice, but does not work with some non-english music.
Those individuals should have the ability to disable it.

The implementation honestly is not the greatest, primarily because it
does a 100% reload when it could just regenerate the library. Auxio's
current music model isn't really designed for that, so it will do this
until a need to that kind of "soft reload" really arises.

Resolves #359.
2023-02-20 18:34:01 -07:00
Alexander Capehart
975f239b8b
detail: add metadata to song detail view
Add metadata items to the song detail view. Should provide a useful
view into how Auxio is interpreting song metadata.

Resolves #330.
2023-02-19 21:59:58 -07:00
Alexander Capehart
213409924b
playback: switch to ffmpeg extension
Switch to the FFMpeg ExoPlayer extension, which should enable support
for ALAC while also retaining support for FLAC below Android 8.
2023-02-13 09:06:45 -07:00
Alexander Capehart
c9ddda2ebd
home: fix visual clipping on shuffle fab shadow
Fix visual clipping on the shuffle FAB's shadow.

Turns out padding, while slower, is actually the better inset handling
method, as it allows me to avoid visual clipping in some cases.
2023-02-12 21:53:34 -07:00
Alexander Capehart
3c211a1d17
list: make sorting direction explicit
Make sorting direction (ascending/descending) explicit in the UI and in
the code.

Instead of a boolean flag, two distinct "ascending" and "descending"
options are used instead. This should be much clearer.
2023-02-02 21:44:15 -07:00
Alexander Capehart
138a2c3c1c
all: remove dependence on androidviewmodel
Entirely remove dependence on AndroidViewModel, replacing it with
dependency injection.
2023-01-29 20:38:01 -07:00
Alexander Capehart
c655f7d39e
playback: fix non-functioning repeat all mode
Fix an issue where the "repeat all" mode would not actually start
playing when the queue looped.
2023-01-23 21:27:49 -07:00
Alexander Capehart
26f0fb7aba
detail: add support for disc subtittles
Add support for disc subtitle information

This allows disc groups to become named, which is useful for certain
multi-part albums.

Resolves #331.
2023-01-21 17:23:09 -07:00
Alexander Capehart
82a64b5e17
music: accept zero positions with non-zero totals
Accept positions that are zeroed, but only if there are non-zero total
values as well.

Sometimes zeroed positions are deliberate, but other times they are
placeholders meant to indicate a lack of a position. To resolve this,
Auxio now considers zeroed track/disc numbers in the presence of
non-zero track/disc numbers to be valid.
2023-01-21 16:49:17 -07:00
Alexander Capehart
691eed344e
release: bump to 3.0.2
Bump the app version to 3.0.2 (26).
2023-01-21 16:03:30 -07:00
Alexander Capehart
f2d44b40bf
info: note playback state wipe in 3.0.2
Indicate that the playback state will be wiped in 3.0.2 due to the new
queue system.
2023-01-20 15:37:48 -07:00
Alexander Capehart
900bcd142e
list: disable complex diffing for now
Disable the new instructions-based system for now.

The way I was doing reflection was likely far too unsafe and prone to
bugs. I'll want to do it some other way.
2023-01-20 15:16:04 -07:00
Alexander Capehart
b7726607ff
music: re-add song de-duplication
Re-add song deduplication, which apparently was lost at some point in
3.0.0's development cycle.
2023-01-19 07:39:32 -07:00
Alexander Capehart
0c69a35e80
detail: diff instead of replace when resorting
Completely rework the detail list implementations so that resorting the
song list causes a replace operation instead of a diff operation.

This finally makes the list experience consistent across the app.
2023-01-18 16:47:50 -07:00
Alexander Capehart
2c2b560195
settings: redocument 2023-01-17 15:06:16 -07:00
Alexander Capehart
d38da9b892
list: make list instructions generic
Make list instructions generic in preparation for the detail list
update.

Detail views need their own instructions datatype, so this is meant to
allow that to be implemented without issue.
2023-01-16 17:45:03 -07:00
Alexander Capehart
4a7bc4e511
settings: split up ui
Split up the settings ui into four categories.

This should reduce the visual load on the user as Auxio continues to
accrue possible configuration options.

Resolves #323.
2023-01-16 16:14:51 -07:00
Alexander Capehart
6e02929982
music: reorganize music folders dialog
Reorganize the music folders dialog to be more visually straightforward
than prior, primarily by grouping the folder elements into the same
visual region.

Resolves #318.
2023-01-16 10:18:55 -07:00
Alexander Capehart
df98bb535f
list: rework diffing abstraction
Make all adapters relying on diffing unified into a DiffAdapter
superclass that can then accurately respond to the new
UpdateInstructions data.

UpdateInstructions is still not fully used everywhere, but will be
soon.
2023-01-15 20:31:50 -07:00
Alexander Capehart
176f0cc465
list: add update instructions framework
Add the basic framework that should allow for different types of list
updates in different situations.
2023-01-14 19:55:09 -07:00
Alexander Capehart
dc73f96ba8
list: clear selection before navigating back
When the back button is pressed, clear the current selection before
navigating back.

This is something I was planning to do but then completely forgot about
when implementing multi-select.

Resolves #316.
2023-01-07 08:19:12 -07:00
Alexander Capehart
6fa53ab873
playback: mostly hide playback mode details
Mostly hide the code that handles starting playback based on a given
mode into their respective ViewModels.

Again, makes testing easier.
2023-01-06 20:00:18 -07:00
Alexander Capehart
ac9f50c0a0
settings: do not use sharedpreference listener
Switch back to using settings-specific listeners rather than the
SharedPreference listener.

Again, this is due to the need to decouple android code from settings.
It also allows us to fully obscure the details of what settings we are
actually working with.
2023-01-06 19:20:56 -07:00
Alexander Capehart
a5e78e614f
music: complete non-android date tests
Complete the date tests that don't require a context.
2023-01-05 12:55:15 -07:00