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.
Do not extract ReplayGain adjustments on the fly, instead doing them as
we go along.
This prevents an issue where the ReplayGain information would only be
applied a short period after playback start, which is heavily jarring.
Drop support for Lollipop and Marshmallow.
I legit cannot build for them anymore. There's some insane dependency
tangle between Kapt and Room that makes it impossible to use anything
BUT Java 17 (maybe Java 11). If I use Java 17 or Java 11, suddenly the
whole app crashes since Lollipop and Marshmallow only support some weird
Java 8/11 chimera abomination. This issue has persisted probably since
the move to Java 11, making it basically unusable anyway, so at this point
just cut the charade and officially drop support.
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#426Resolves#444
Re-add the tryAsync wrapper function to the loading process to properly
handle music loading errors.
Turns out there is basically no other way to properly do this except for
the insane exception -> Result -> exception hack.
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.
FINALLY update to MDC 1.7.0. After over half a year.
I have been continually blocked by doing this due to this absurd ripple
bug that was so continually frustrating. Today, I finally figred out
how to hack a fix in by using R E F L E C T I O N and manually
disabling the bugged code path since google apparently can't be bothered
to fix it.
Now, you might wonder why I didn't update to 1.8.0. That is because
there is ANOTHER RIPPLE BUG. THIS TIME WITH THE TAB LAYOUT. AND ONLY IF
IT'S IN A COLLAPSING TOOLBAR LAYOUT. Can't wait to finally use the new
1.8.0 features in December!
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.
Leverage the new UpdateInstructions system to allow the home view to
diff the lists on music updates, and then replace the lists on
resorting events.
This just improves quality-of-life overall.
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.
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.
Make all list listeners operate on generic values.
Wanted to do this for awhile, but couldn't figure out how to get the
listener to work with sub-typed listeners until I learned what the in
keyword actually does. This removes a ton of type-checking boilerplate
that it's not even funny.
Redocument the detail, home, image, and list modules.
Much of this project's documentation has drifted from actual
functionality, and newer code is pretty sparely documented.
This commit seeks to rectify that by redocumenting every source
file in this project.
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.
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.
Phase out the dumb hack TaskGuard class in favor of yield.
For some reason, I was under the impression that yield was horribly
slow. It's not, I was just using it wrong. So now TaskGuard is no
longer needed.
Refactor all Backend instances into a new package called extractor and
a new structure called "Layer".
Layers are no longer generalized into an interface. Instead, they build
on eachother in order to produce a correct output of raw songs.
One of these layers is a stub class to eventually implement caching.
This changeset also phases out the "Ignore MediaStore tags" setting, as
it is no longer needed.
Add separator parsing back, albeit in a much different manner.
Now Auxio will try to parse by , ; / + and &. This will be disabled by
default in the future and available as a setting. When parsing by
separator, whitespace is also trimmed. This occurs nowhere else though,
as there is no demand.