Commit graph

221 commits

Author SHA1 Message Date
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
Alexander Capehart
743220d0aa
replaygain: revert back to copy no-op
Turns out using isActive to indicate that the AudioProcessor is a no-op
is too unreliable due to how they are managed internally.

Instead, I really do just have to use a copy. Once again ExoPlayer
picks the most absurd possible design choices for no good reason.

Resolves #293.
2023-01-05 11:15:06 -07:00
Alexander Capehart
3f0a532a2d
music: allow editing past queue items
Allow past and currently playing queue items to be edited, instead of
just future queue items.

This was a somewhat requested feature that was impossible with the
prior queue system. With some fixes, the new queue system can now be
used to do this.

This even works with edge cases like removing the currently playing
song. Albeit, it's likely that more bug fixes and testing will be
needed.

Resolves #223.
2023-01-05 09:31:48 -07:00
Alexander Capehart
d5941aa705
music: fix crash when adding music dirs
Fix a crash that would occur when trying to add music dirs without a
file manager to handle it.

Some users apparently disable the built-in file manager under the
assumption that the same intents will work with other file managers.
They do not, and so we need to handle that case and let the user know.
2023-01-04 08:17:34 -07:00
Alexander Capehart
360dab928c
all: misc cleanup
Miscellanious cleanup in preparation for 3.0.1.
2023-01-03 18:56:06 -07:00
Alexander Capehart
b3b7ed524c
release: bump to 3.0.1
Bump the version to 3.0.1 (25).
2023-01-02 19:05:57 -07:00
Alexander Capehart
80e85bfffa
replaygain: add reset button to pre-amp dialog
Add a button to reset the pre-amp to it's default setting.

This way, you don't have to specifically seek to the 0 dB value in the
dialog in order to reset it.
2023-01-01 12:29:28 -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
dc46c49f07
list: add editable list listener
Add a listener for the editable lists in the queue and tab config
views.

This simply reduces the amount of duplicated code within both of those
views.
2022-12-31 13:47:13 -07:00
Alexander Capehart
493b0a9f32
all: rework context-dependent object use
Rework some of the taped together ways context-dependent objects were
replied on in-app, such as removing redundant constructs and extremely
hacky lifecycle mechanisms.
2022-12-31 11:12:50 -07:00
Alexander Capehart
4ed8a7e967
queue: scroll to top of list on song changes
Always scroll to the top of the queue list when the current song
changes.

This way, the user can see future items rather than past items.

In an ideal world, I would try to go to the center of the queue, but
it seems like the "average" scroll tends to settle at the top no
matter what I do, so whatever. There's also a slight in-accuracy
in what the app considers the "Top" of the queue, but that's considered
minimally detrimental given how much a QoL improvement this is.

Resolves #210.
2022-12-30 17:28:46 -07:00
Alexander Capehart
f416bb0d00
music: localize list values
When resolving the names of several artists or genres, use a localized
separator instead of a comma.

This makes list values more correct in other languages, if properly
translated.
2022-12-30 16:34:28 -07:00
Alexander Capehart
cf6e7a5f0d
music: add support for album date ranges
Add support for albums to have a range of dates.

Often compilation albums will have Songs released in different months
or years, so it makes some sense to show a date range rather than just
the ealiest date.

The only point at which the earliest date is still shown is in the home
view's popup, as maxiumum dates in a date range are not sorted by, and
so showing it doesn't make sense.
2022-12-30 16:09:41 -07:00
Alexander Capehart
affe5c482b
all: reformat code 2022-12-30 11:39:28 -07:00
Alexander Capehart
f6b7a8f448
music: formalize whitespace handling
Formalize how whitespace tags are handled.

The checks for blank tags and removal of trailing whitespace from tags
are now the same function, carefully used to prevent blank tags from
setting through.

More testing will need to be done in order to fully ensure this system
will work as intended.
2022-12-30 08:42:35 -07:00
Alexander Capehart
05cf0f7261
music: fix music loading crash with weird genres
Fix an issue where genres consisting only of whitespace crash the genre
parser, and thus the music loader.

Band-aid this by moving the trimming code out of splitEscaped and into
maybeParseSeparators. In a future version I'll need to figure out how I
want to handle these weird edge cases.
2022-12-29 21:09:35 -07:00
Alexander Capehart
6db50a0e45
music: fix incorrect cache fields
Fix incorrectly populated cache fields.
2022-12-29 20:07:25 -07:00
Alexander Capehart
56f134aba5
release: bump to 3.0.0
Bump the version to 3.0.0.
2022-12-29 14:49:07 -07:00
Alexander Capehart
32db8a591a
all: tie up loose ends
Tie up some loose ends before 3.0.0's release.
2022-12-28 15:44:44 -07:00
Alexander Capehart
cce7b766d7
all: reformat code
Reformat all project code
2022-12-26 19:59:27 -07:00
Alexander Capehart
900a64bc02
playback: add support for mp4 replaygain
Add support for MP4 ReplayGain tags. These are usually under a `----`
atom with an iTunes domain and ReplayGain description. These are
mapped to an ID3v2 internal frame within ExoPlayer, which is why
Auxio did not support them, as it only expected Vorbis comments and
ID3v2 TXXX frames.

Resolves #292.
2022-12-15 21:01:41 -07:00
Alexander Capehart
966789238e
ui: make lists more compact
Reduce top list spacing to 12dp, making lists more compact.

This is more in-line with material design, and improves user experience
on small screens.
2022-12-06 19:22:12 -07:00
Alexander Capehart
0598409ca5
detail: add loading indicator to song detail
Add a loading indicator to the song detail view.

This should make the loading process clearer for some songs that take
longer to load.
2022-11-22 11:15:02 -07:00
Alexander Capehart
a3772b65c0
ui: re-add more button
Re-enable the more button in preparation for multi-select.
2022-11-22 10:58:41 -07:00
Alexander Capehart
8df89db77b
music: backport full dates to older versions
Backport the code for full "Month + Year" dates to older versions with
the legacy Date API.

For the same of not missing bugs on newer devices, this is now what
will be used in Auxio.
2022-11-19 16:34:00 -07:00
Alexander Capehart
a7bd48b64a
Merge branch 'master' into dev 2022-11-16 08:46:23 -07:00
Alexander Capehart
6b1f3e4567
Version 2.6.4
Ready for version 2.6.4 of Auxio.
2022-11-16 08:20:37 -07:00
Alexander Capehart
2b35fd07b6
playback: disable bluetooth autoplay
Temporarily disable and clean up the bluetooth autoplay system for now
until I can get it working sensibly.
2022-11-14 20:46:12 -07:00
Alexander Capehart
aa805e351c
music: try to deduplicate multi-artist code
Try to move multi-artist playback/navigation into a single function.
This function is really bad and is tacked onto the most convienent
location without much thought. I really wish to move this into the
ViewModel flow eventually, but I have no idea how to architecture
that. Oh well.
2022-11-13 19:13:29 -07:00
Alexander Capehart
3a236bdaf4
detail: show list of artists in genre UI
Show a list of artists that contain songs from a particular genre in
the genre UI.

This used to be in really early Auxio versions, but was intertwined
with some really stupid genre functionality that would include songs
from an entire artist for some reason. Since now albums can be shown
in several artist entires, it makes no sense now what artists can't
be given the same treatment.
2022-11-13 18:43:42 -07:00
Alexander Capehart
1cf1451aef
music: add setting to hide collaborators
Add a setting to hide "collaborators", that is artists that do not show
up on any album artist tags.

This is mostly for my own use since I don't get use from useless
collaborator entries.
2022-10-20 18:36:51 -06:00
Alexander Capehart
daf1cf8590
music: show months in UI
If a song/album date has a month value, show it in the UI.

This hopefully improves the date experience for more well-tagged
libraries. Due to date limitations however, it is limited to
Android O onwards for now.
2022-10-20 18:07:36 -06:00
Alexander Capehart
f4d25f81cc
ui: fix black theme visual bug
Fix a visual bug with transitions in the black theme.
2022-10-18 19:50:02 -06:00
Alexander Capehart
186d5a9186
ui: use marquee in all playback info
Use marquee in all playback information.

It's the playback view, and thus "activated", so why not.
2022-09-26 14:10:33 -06:00
Alexander Capehart
5e0f778daf
image: unify cover settings
Unify the "Show Covers" and "Ignore MediaStore Covers" settings under an
new "Album covers" setting.

This will make it easier to extend to new forms of album cover
collection.
2022-09-26 13:47:43 -06: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
3e73cd8080
music: add caching
Add caching of already-parsed tag data.

This greatly reduces loading times when the music library has not
changed. This completes the music loader in it's entirety now.

Resolves #207.
2022-09-25 20:02:44 -06:00