Commit graph

1136 commits

Author SHA1 Message Date
OxygenCobalt
a9515e19c0
all: cleanup
Clean up the slightly rushed changes I made as I worked on the split
UI.
2022-08-03 19:54:14 -06:00
OxygenCobalt
7543f1defc
playback: add split ui in landscape
Add a split playback UI in landscape mode.

Apparently the mere act of doing this also fixes the infurating
window inset issue I previously did either. Odd.
2022-08-03 16:00:18 -06:00
OxygenCobalt
772fe7df3b
ui: make bottom sheets request insets on layout
Make bottom sheets request window insets when they are laid out.

For some insane reason, bottom sheets are just not given window insets
when the device is rotated in the detail view. Appaently requesting them
fixes it all of a sudden.
2022-08-03 15:42:37 -06:00
OxygenCobalt
79637f7603
playback: check for init before applying state
Check if the playback state still has not been initialized once we
restore.

This prevents one from playing a song while the restore task is
on-going and then having it overwritten by the restored state.
2022-08-03 14:02:45 -06:00
OxygenCobalt
304fccf0f9
home: disable collapse when one tab
Disable the collapsing toolbar when there is only one tab.

The TabLayout is hidden when there is one tab, so collapsing it does
not make much sense.
2022-08-03 10:30:19 -06:00
OxygenCobalt
4f3cb80a77
ui: rework transitions
Use MaterialFadeThrough in the search transition and a Z-axis
transition in the detail views.

This is more semantically correct than the previous transitions.
2022-08-02 15:05:08 -06:00
OxygenCobalt
de3cc7958f
ui: rework bottom sheet state management
Try to make the bottom sheet states more coherent, especially regarding
when playback ends.
2022-08-02 11:13:12 -06:00
OxygenCobalt
35cfea78df
recycler: remove useless header ids
Remove useless id fields from Headers, replacing them with vlaues
related to their string resource.

String resources and disc numbers are more or less garunteed to be
unique in Auxio's context.
2022-08-01 10:38:24 -06:00
OxygenCobalt
257516643f
queue: indicate playing item in list
Indicate the currently playing item in the queue list.

The item is still disabled, however it's also simultaniously activated
now, which allows it to indicate that it is playing.
2022-07-31 17:21:10 -06:00
OxygenCobalt
f5542c65ba
queue: rework previous items
Rework previous items to be based off of adapter state.

This improves the transitions between active and previous items and
their overall efficiency.
2022-07-31 16:50:47 -06:00
OxygenCobalt
b42dfd0b53
all: misc changes
Miscellanious changes that accumulated over time.
2022-07-31 15:51:12 -06:00
OxygenCobalt
170cdf80ef
widgets: fix insanity
Fix two issues where Auxio's widget could not be resized to a single
cell, and another where covers would not load into the widget.

The first is caused by a random, subtle change that completely changed
up the minHeight size calculation regarding widgets. Thus, we need to
lower it for android to recognize it still as 1 cell. I cannot believe
we can't just specify the specific minimum grid size that our widget
takes up, like you know, iOS did, nearly a decade after widgets were
first added in Android.

The second is an absurd race condition stemming from me hitting the
RemoteViews memory limit. Turns out my cover bitmaps were simply too
big. Getting them below the limit requires me to resize them to a puny
~500 pixels. Why can't we just render our own views into our widget?
You know, like iOS did, nearly a decade after widgets were first added
to Android.

Nah, screw modernizing the broken widget API. Let's just vaguely copy
iOS widgets because we have to while not fixing a single issue plaguing
widget development on this OS. That way some google engineer can get
promoted faster.
2022-07-30 20:41:24 -06:00
OxygenCobalt
c3d8509069
ui: optimize bottom sheets
Desperately try to minimize the amount of layouts my bottom sheet code
is producing.

It still relayouts twice in one pass. I hate android.
2022-07-30 16:06:17 -06:00
OxygenCobalt
54be8dc2dc
queue: add ability to see previous items
Add the ability to see (but not edit) previous items.

This completes the new playback UI I've been working on for about 2
weeks now. I pray that there is no insane unfixable bug with this,
please please please please please
2022-07-30 10:06:58 -06:00
OxygenCobalt
7467d89a45
ui: misc bottom sheet changes
Tweak parts of the bottom sheet system for UI consistency.
2022-07-30 09:15:38 -06:00
OxygenCobalt
ed2f836280
ui: fix more bottom sheet issues
Fix more bottom sheet issues regarding the queue sheet.

Guess I brought it upon myself for nesting bottom sheets like this in a
way that I doubt the behavior expects.
2022-07-29 15:39:38 -06:00
OxygenCobalt
5536dd48df
ui: fix bottom sheet initialization
Fix an issue on some devices where bottom sheet transitions would not
initialize correctly.

Turns out I can't try to do transitions using the callback and simply
initalizing them on startup. Apparently on some devices,
CoordinatorLayout will simply not lay out until some arbitrary point
past onResume. This breaks our transitions.

Fix it by using a pre-draw listener instead. I cannot believe I have to
do this.
2022-07-29 15:00:06 -06:00
OxygenCobalt
a4fa8a84fa
queue: reimplement with bottom sheet
Re-implement the queue, now leveraging a bottom sheet too.

This makes the queue much easier to open, and actually plays along with
the new transition system. I really hope this doesn't have a stupid
gotcha that ruins the UX. Please. Please. Please.
2022-07-29 14:40:58 -06:00
OxygenCobalt
cc3cb343b0
playback: use bottomsheetbehavior
Use BottomSheetBehavior with the playback sheet.

This is the result of two weeks of painful hacking to get a working
implementation that did not immediately have a brain aneursym. It
also requires me to still vendor BottomSheetBehavior for the time
being. However, this greatly reduces technical issues on my end and
allows the addition of new playback UI concepts, while still
retaining the UI fluidity of prior.
2022-07-29 12:21:06 -06:00
OxygenCobalt
62ae5e5cb2
build: update build scripts
Update/Modernize build scripts.
2022-07-29 11:03:22 -06:00
OxygenCobalt
f93d5f1a69
music: make string hashing more resillient
Make string hashing a custom-made function that actually outputs to a
long.

This prevents overflows from causing a collision.
2022-07-27 09:34:23 -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
OxygenCobalt
6a4803e3d7
ui: add shared axis transition to search
Add a shared axis transition to the search view.

Now theres just the queue view to deal with.
2022-07-27 08:28:14 -06:00
OxygenCobalt
00dec358ab
ui: add fade through transitions to main ui
Add fade through transitions to the main navigation.

This just looks nicer. This currently excludes the search menu,
however.
2022-07-26 21:26:23 -06:00
OxygenCobalt
114d355011
detail: make transitions shared axis
Make detail transitions operate on a shared axis.

This just looks nicer.
2022-07-26 21:18:33 -06:00
OxygenCobalt
ebdbd682b0
ui: rework state layers
Unify the background state layers of the entire app by overriding
colorControlHighlight.

Lots of components still use it, so it's beneficial to make it
consistent with the rest of the app theming.
2022-07-26 17:24:13 -06:00
OxygenCobalt
6c59a03042
queue: rework internal queue system
Rework the queue internally to decouple the queue from playback and
better respond to reshuffling.

This is being implemented under the assumption that I will be
implementing the sliding queue eventually.
2022-07-26 10:57:24 -06:00
OxygenCobalt
496b72ca78
playback: expose goto to mediasession
Expose the ability to skip to an arbitrary item in the queue to the
MediaSession.
2022-07-25 13:45:23 -06:00
OxygenCobalt
affa8c1c11
queue: add ability to play songs [#92]
Add the ability to jump to arbitrary points in the queue.

This comes at the cost of the long-press option to move items, since
they simply cannot co-exist without visual issues.
2022-07-25 12:20:46 -06:00
OxygenCobalt
eca385aea5
playback: hack around paused seeking issue
Hack around an issue where the notification position will not update if
one seeked while the player was paused.

This is the best implementation I can do that will not result in the
notification getting excessively rate-limited.
2022-07-25 10:41:21 -06:00
OxygenCobalt
0b1f0c3cda
playback: expose queue in mediasession
Expose the queue in the MediaSession, at least I hope.

The queue is still not mutable. Don't feel comfortable implementing that
until I rework the in-app queue UI.
2022-07-25 10:39:50 -06:00
OxygenCobalt
6381815fd9
settings: add option to clear state
Add an option to clear the currently saved playback state.

This does not clear playback entirely, but rather remove the saved
state so that it's not restored on the next startup. This is generally
the cleanest solution compared to allowing state restore to be toggled,
which opens up a bunch of race conditions.

Resolves #107.
2022-07-25 09:54:39 -06:00
Weblate (bot)
86a1815b1f
Translations update from Hosted Weblate (#186)
* Translated using Weblate (Czech)

Currently translated at 100.0% (199 of 199 strings)

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

* Translated using Weblate (Italian)

Currently translated at 100.0% (199 of 199 strings)

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

* Added translation using Weblate (Lithuanian)

* Translated using Weblate (Russian)

Currently translated at 67.3% (134 of 199 strings)

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

* Translated using Weblate (Lithuanian)

Currently translated at 19.5% (39 of 199 strings)

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

* Translated using Weblate (Turkish)

Currently translated at 95.4% (190 of 199 strings)

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

* Translated using Weblate (Lithuanian)

Currently translated at 21.1% (42 of 199 strings)

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

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

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

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (203 of 203 strings)

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

* Translated using Weblate (Russian)

Currently translated at 80.7% (164 of 203 strings)

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

* Translated using Weblate (Lithuanian)

Currently translated at 29.0% (59 of 203 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (207 of 207 strings)

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

* Translated using Weblate (German)

Currently translated at 100.0% (207 of 207 strings)

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

* Translated using Weblate (Lithuanian)

Currently translated at 35.2% (73 of 207 strings)

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

* Translated using Weblate (Lithuanian)

Currently translated at 95.0% (19 of 20 strings)

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

* Translated using Weblate (Italian)

Currently translated at 100.0% (217 of 217 strings)

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

* Translated using Weblate (Czech)

Currently translated at 100.0% (217 of 217 strings)

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

* Translated using Weblate (German)

Currently translated at 100.0% (217 of 217 strings)

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

* Translated using Weblate (Italian)

Currently translated at 99.5% (216 of 217 strings)

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

* Translated using Weblate (Lithuanian)

Currently translated at 46.5% (101 of 217 strings)

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

* Added translation using Weblate (Croatian)

* Translated using Weblate (Lithuanian)

Currently translated at 61.2% (133 of 217 strings)

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

* Translated using Weblate (Croatian)

Currently translated at 100.0% (20 of 20 strings)

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

* Translated using Weblate (Croatian)

Currently translated at 100.0% (217 of 217 strings)

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

Co-authored-by: Fjuro <fjuro@seznam.cz>
Co-authored-by: Enrico D'Ortenzio <enrico2588@gmail.com>
Co-authored-by: Vaclovas lntas <vaclovas1999@gmail.com>
Co-authored-by: Егор Ермаков <eg.ermakov2016@yandex.ru>
Co-authored-by: metezd <itoldyouthat@protonmail.com>
Co-authored-by: qwerty287 <ndev@web.de>
Co-authored-by: Elizabeth Wega <elibeti.eb@gmail.com>
2022-07-23 15:17:42 +00:00
OxygenCobalt
f206f08e79
music: handle multiple vorbis tags [#197]
Modify ExoPlayerBackend to handle the presence of multiple vorbis tags
for a particular key.

This is allowed by the spec and heavily leveraged by programs like
Picard. It also opens the door for better artist functionality, but
that is incredibly complicated and something I don't want to implement
right now.
2022-07-23 09:16:50 -06:00
OxygenCobalt
0212887610
info: update docs
Update information here and there.
2022-07-20 17:38:20 -06:00
OxygenCobalt
b8ac1e6560
settings: use plain switch <api 23
Use a plain switch before API 23 to prevent tinting issues.

Boy do I love having to accomodate Lollipop's insanity for the
1289289124th time.
2022-07-20 11:11:45 -06:00
OxygenCobalt
f75f75308e
music: add wakelock to indexerservice
Add a wake lock to IndexerService.

This ensures that the CPU is active throughout the whole music loading
process.
2022-07-20 11:08:02 -06:00
OxygenCobalt
19a0728e5b
music: rework release types [#158]
Rework album types into release types, with additional support for live
albums, remixes, and mixtapes.

This is not a complete implementation, nor is it meant to be. I don't
want to add technical complexity handling Remix Compilations or
DJ-Mixes unless there is demand.
2022-07-20 10:53:30 -06:00
OxygenCobalt
36bb729e67
music: add additional album types
Add compilation and soundtrack album type support.

I find use in these, so implement them.
2022-07-19 10:50:27 -06:00
OxygenCobalt
24062aa623
music: update album type display
Only display album types within the artist and album detail menus.

Displaying it elsewhere cluttered the UI somewhat.
2022-07-19 10:28:19 -06:00
OxygenCobalt
30920b399a
info: update faq
Update FAQ.md to reflect the changes to the media indexer in the next
release.
2022-07-18 11:40:57 -06:00
OxygenCobalt
4781d250bf
music: implement album types in UI
Implement album type displays in the album detail, artist detail, and
album item views.

Resolves #158.
2022-07-18 11:16:39 -06:00
OxygenCobalt
5df8edf912
music: add basic release type support [#158]
Add release type support to the media indexer.

This allows EPs, Singles, and Albums to be distinguished from
eachother. Auxio's implementation will use the MusicBrainz tag for
ID3v2 (Falling back to GRP1, as that is used sometimes), and will use
RELEASETYPE for vorbis comments.
2022-07-18 10:54:08 -06:00
OxygenCobalt
f838fc8b0e
widget: update preview
Update the widget preview to reflect the new filled buttons.
2022-07-18 10:16:39 -06:00
OxygenCobalt
276f067152
ui: update material components
Update MDC to the alpha version in order to use some extra features.

I was planning to switch to the new MaterialSwitch, but alpha03 has
this insane crippling issue with ripples that blocks such. Use alpha02
and prep the app for the addition of the switch.
2022-07-18 10:06:26 -06:00
OxygenCobalt
10362b9efc
music: lowercase names when hashing
Lowercase music names when hashing them to prevent drift stemming from
grouping.

The addition of the song may change the case of an artist if such
mitigations are in effect. To prevent such from invalidating music
hashes, we take the lowercase of every name hashed.
2022-07-17 16:11:16 -06:00
OxygenCobalt
51b9b0e734
widgets: dont use system padding in size compat
Don't take the app widget host padding into account when trying to
calculate the widget sizing.

Doing such produces bad results, at least on my devices. At least, it
does now for some reason.
2022-07-17 16:05:53 -06:00
OxygenCobalt
7f07764b68
playback: fix delayed actions not working
Fix an issue on some devices where the delayed actions system would
not work on startup.

Apparently onStart can be called several times with the same intent.
No, I am not joking. What the actual hell. This would cause any
delayed action other than Restore to be overwritten. The only hard
rule about android is that there are no rules. I hate this platform
so much.
2022-07-17 16:00:17 -06:00
OxygenCobalt
9ca4f70315
music: add id3v2.3 full date support [#159]
Add support for the ID3v2.3 TDAT and TIME frames to the ExoPlayer
parser.
2022-07-17 14:18:18 -06:00
OxygenCobalt
ad45b3edb3
search: dont compare genre sort names
Don't compare genre sort names when searching.

Genre names are identical to genre sort names, remove the useless
comparisons.
2022-07-17 10:44:21 -06:00