Commit graph

132 commits

Author SHA1 Message Date
OxygenCobalt
2c7dd1241b
style: remove android string references
Remove references to android system strings, in favor of in-house
translations.

Previously Auxio would use the `android.R.string.ok` and
`android.R.string.cancel` strings to represent Ok and Cancel
respectively, but these system strings are actually untranslated on
some devices, so it is better for i18n if we use our own strings
for such.
2022-05-22 09:56:25 -06:00
OxygenCobalt
180faa6f50
music: rework callback configuration
Rework the asynchronous aspects of MusicStore to rely on a more
conventional callback system.

In preparation for automatic rescanning, it would be more elegant
for music consumers to use a callback, so that updates can be
registered easier than if a co-routine continued to be used.
Convert MusicStore to this new model and rework the accesses of
MusicStore in-app to line up with this new system.
2022-04-07 20:18:25 -06:00
OxygenCobalt
ab194c14c2
ui: create viewmodel for navigation
Create a ViewModel for the more complicated navigation pathways.

Normally, navigation was fragmented along a complicated stretch of
fragment hacks and DetailViewModel's navToItem attitbute, both of which
were not really that ideal. Dumpster them for a single, unified
viewmodel for the more complicated navigation situations. This removes
much of the duplicate navigation logic and is likely much more
maintainable for future situations.
2022-04-02 20:21:06 -06:00
OxygenCobalt
95057ec357
all: move all fragments to ViewBindingFragment
Move all fragment instances to the new ViewBindingFragment paradigm,
which should help immensely with reducing memory leaks from list
bindings and to really alleviate the overloaded onCreate functions.
2022-03-23 09:18:08 -06:00
OxygenCobalt
e4d4266e35
playback: rework playback slide up implementation
Rework the playback slide up implementation to be more straightfoward.

This is really composed of stylistic improvements, very little in
actual behavior changes. This does re-introduce a regression when
nothing is playing where the scroll position will become off when
rotating, but that desynchronization happens often so unless I were
to completely migrate both the panel and the bar to a view, I don't
really see it as an issue.
2022-03-20 12:33:49 -06:00
OxygenCobalt
2ff7d93263
all: view cleanup
Do even more cleanup regarding views.
2022-03-13 18:56:24 -06:00
OxygenCobalt
33da09a08a
all: switch to spotless
Switch to the spotless linter with ktfmt used as a backend instead of
ktlint.

This switch was done for two reasons:
1. ktfmt is more thorough than ktlint
2. License headers can be added more effectively with spotless than
the default Android Studio behavior.

Dump all of the changes now so I don't have to deal with it over a long
period of time. I don't care.
2022-03-13 17:38:19 -06:00
OxygenCobalt
9171f9a3b4
coil: make mosaics use squareframetransform
Change createMosaic to use SquareFrameTransform.

This should help fix a theoretical bug where non-1:1 album covers will
be oddly stretched in a generated mosaic, as all album covers will be
forcefully cropped to a 1:1 ratio.
2022-02-24 14:58:59 -07:00
OxygenCobalt
61dbfe3185
coil: make rounded images more nuanced
Create a custom view for rounded images, making them more nuanced in
the process.

The previous method for applying rounded images in-app was generally
clunky and fragile. Introduce a new custom view that actually takes a
cornerRadius attribute from the ImageView itself that then applies it
whenever the user enables the setting. This also allows rounded images
to be more nuanced, as typical 8dp elevation can be used for small
views and a more fitting 16dp radius can be used for large views.
2022-02-23 17:42:34 -07:00
OxygenCobalt
3aaa2ab0e0
all: rework logging
Rework logging to be clearer and more standardized.

Rework all usages of lossing to follow a single unified style,
introducing a new "warn" option alongside this.
2022-02-22 17:24:51 -07:00
OxygenCobalt
bd099aee7b
deps: upgrade
Like a while loop with no escape
Navigation -> 2.5.0-alpha01 [workaround for AGP 7.1]
Preference -> 1.2.0
Fragment -> 1.4.1
2022-02-06 09:08:10 -07:00
OxygenCobalt
25dd276bd8
playback: use single-queue system
Switch auxio to a single-queue system. "Play next" adds songs to the top
of the queue, similar to before, and then "Add to queue" adds songs to
the bottom of the queue. This enables many more enhancements to be made
to the playback experience, at the cost of a feature I preferred.

Resolves #44.
2021-12-22 16:37:07 -07:00
OxygenCobalt
b92b08f8ab
home: make fab adaptive
Use a large FAB on tablet layouts, as in general it's okay to make
those elements bigger on large touchscreens.
2021-12-18 11:15:28 -07:00
OxygenCobalt
2d3fc47d7c
main: band-aid split screen mode layouts
Split screen layouts in android are completely borked. You can
resize Auxio down to the point where the UI is completely
unusable, and there is NO WAY TO SET A MINIMUM HEIGHT. This is
also not to mention that smallestScreenWidthDp is completely
busted too and still uses the size of the whole screen! Just
band-aid the first issue so that when the layout becomes so
small as to result in a messed up UI, just show a splash that
says that the app can't work at the specific window size.
2021-12-17 17:00:19 -07:00
OxygenCobalt
949d71dbd1
playback: actually fix controls not working
Turns out playback controls wouldn't actually work because the view
would detach but not the actual fragment, resulting in onCreateView
never being called and the entire system falling apart. This fixes
it by just giving PlaybackLayout the viewmodel instance it needs.
I'll need to release a hotfix for this issue since this is really
easy the trigger and really hard to fix unless you know why it
occurs. Android lifecycles suck so much.
2021-11-26 10:17:46 -07:00
OxygenCobalt
ec8f538cf0
docs: update metadata
Update metadata in preperation for 2.0.0.
2021-11-26 08:56:09 -07:00
OxygenCobalt
61624352e4
all: apply finishing touches
Apply the finishing touches for 2.0.0, mostly documentation but also
some odds and ends.
2021-11-25 12:02:10 -07:00
OxygenCobalt
2ae22500d3
main: add proper backwards navigation
Move the backwards navigation hook from DetailFragment to MainFragment
and modify it so that it collapses the playback panel when one navs
back.
2021-11-25 09:48:06 -07:00
OxygenCobalt
4ccaa7c4bb
all: cleanup code
Clean up code and fits a bunch of miscellaneous issues.
2021-11-24 20:22:30 -07:00
OxygenCobalt
cfc7352571
playback: add slide up behavior
Completely refactor PlaybackBarLayout into PlaybackLayout, which now
not only handles the bar behavior but also allows for one to slide
up the bar layout into the full playback layout. This was largely
adapted from umano's AndroidSlidingUpPanel, albeit heavily minified
and mixed with the previous window inset tricks of the previous layout.
There are still some tweaks to be made, but this implementation seems
to be really good.
2021-11-24 15:13:34 -07:00
OxygenCobalt
4475d4a5cc
playback: update tablet layouts
Use proper exact-size layouts for the tablet views. This also adds a
new compact view that shows more controls for landscape/tablet layouts.
2021-11-20 10:44:40 -07:00
OxygenCobalt
0e3ffb973b
coil: completely refactor image loading
Upgrade to coil 2.0.0 and completely refactor the usage of coil to work
with the new library structure. This also fixes the issue where error
icons will just re-appear due to blocking calls. I had to add a fix on
my end and also use the new caching system in coil 2.0.0.
2021-11-20 09:00:23 -07:00
OxygenCobalt
0a4b07e583
playback: animate playback bar
Make the playback bar animate when it's shown at runtime. This
completes the playback bar layout and honestly it looks amazing.
2021-11-01 20:01:46 -06:00
OxygenCobalt
efb800ee6a
playback: fix playback progress bug
Fix an issue where I forgot to call executePendingBindings when
updating progress, resulting in strange behavior with the progress
bar.
2021-10-31 19:54:49 -06:00
OxygenCobalt
b50a23a47f
ui: fix misc issues
Fix miscellanious code style/compat/ui issues.
2021-10-31 16:06:00 -06:00
OxygenCobalt
c1e1329c21
playback: make compact playback ui a view
Change CompactPlaybackFragment into a View. This completely fixes the
issue I tried to band-aid in ae39054. The code is a bit uglier, but
that's tolerable.
2021-10-31 11:14:04 -06:00
OxygenCobalt
68782fadac
ui: create dedicated playback bar layout
Create a dedicated playback bar layout. This replaces the old janky
observer system with something that handles state better and is just
more elegant.
2021-10-30 18:21:30 -06:00
OxygenCobalt
51ba72d861
music: change loading ux
Move the main loading response code to MainFragment and add a new
method for other objects to be notified of the progress of the
music loading process. There's probably a better way to do this,
but kotlin coroutines are so complex that I don't know where I
would start. This also adds some enhancements, such as the error
message now showing in more parts of the app and SearchFragment
now re-running the query if the MusicStore instance is loaded.
2021-10-27 18:23:15 -06:00
OxygenCobalt
fe0c2761c7
music: make musicloader async
Make MusicLoader instantiation fully asynchronous. This implementation
changes a lot about Auxio. For one, the loading screen is now gone.
However, many parts of the app now run under the fact that MusicStore
might not be available. However, I don't think there will be too much bugs
from it. Some more changes will be made to improve this implementation.
2021-10-24 20:01:15 -06:00
OxygenCobalt
00b7e0cac3
ui: further apply elevation overlays
Apply elevation overlays to CompactPlaybackFragment and dragged queue
items. This makes elevation more noticable on dark mode.
2021-09-05 20:22:40 -06:00
OxygenCobalt
765f92ca98
ui: improve playback/about UIs
Make playback/about UIs follow the new liftOnScroll and edge-to-edge
idioms. This finally allows me to collapse a lot of duplicate code
into MainActivity and in general reduce code mess.
2021-08-30 19:53:19 -06:00
OxygenCobalt
047b885dca
ui: fix landscape problems
Once again fix annoying issues that arise from the quirks of phone
landscape mode. A lot of these fixes can be re-rolled back into the
edge-to-edge code eventually, but it requires fitsSystemWindows to
be phased out entirely.
2021-08-29 21:00:17 -06:00
OxygenCobalt
e142c17fca
home: make edge-to-edge
Make the home fragment span from edge-to-edge. This also adds a nice
effect for the toolbar to fade out when it collapses.
2021-08-29 18:29:58 -06:00
OxygenCobalt
5fe01777d0
all: refactor utils
Do the final utility refactor, placing custom views into a .ui
submodule and the general utils into a new .util module. This
system seems to stick well.
2021-08-23 17:05:42 -06:00
OxygenCobalt
9aa2c99be4
playback: add elevation to queue drag
Add a nice elevation effect to queue dragging operations. This has no
purpose outside of looking nicer. Luckily it doesn't effect queue
behavior at all.
2021-08-23 06:49:03 -06:00
OxygenCobalt
6c5a68c929
home: re-add navigation code
Re-add support for the navToItem system [this time w/o any navbar
magic] and fix its associated issues.
2021-08-22 16:31:30 -06:00
OxygenCobalt
a3e7cb93aa
home: merge all library views into home
Merge LibraryFragment, SongsFragment, and others into a new fragment
called HomeFragment. This is the beginning of the Auxio UI overhaul.
This has caused some regressions here and there, but these will be
rectified over time.
2021-08-21 19:49:25 -06:00
OxygenCobalt
f06ca142f6
style: fix accessibility issues
Fix a plethora of style issues that lead to a worse touch experience.
I tried to optimize these solutions so that they didn't reduce the layout
density too much. More updates may have to be made in the future.
2021-08-21 12:09:17 -06:00
OxygenCobalt
73ec99a214
ui: refactor utilities
Move the AndroidUtils file into the root Auxio directory, renaming it
to AuxioUtils as well. This also changes some methods to be extension
methods instead of argument functions.
2021-08-16 20:25:20 -06:00
OxygenCobalt
4cc433f7ef
style: fix style issues
Fix some style issues that came from the colorAccent reworks.
2021-08-08 14:05:44 -06:00
OxygenCobalt
64c9a4a4a7
all: add license boilerplate
Actually bother to add license boilerplate. Even though I've written
the entirety of Auxio, the boilerplate will be under "Auxio Project"
instead, as I don't want to share my real name.
2021-08-07 17:00:28 -06:00
OxygenCobalt
d50d2f0b1e
ui: fix binding issues
Use viewLifecycleOwner for all fragments that rely on databinding. This
should solve some possible memory leaks, as viewLifecycleOwner is tied
to the lifecycle of the fragment views instead of the fragments them
selves.
2021-08-01 17:59:12 -06:00
OxygenCobalt
85081c385f
chore: upgrade dependencies
Yet another dependency upgrade churn:
Android Plugin -> 4.2.2
Material -> 1.4.0
Androidx Core -> 1.6.0

Apparently material deprecated a bunch of BottomNavigationView's stuff
for no good reason. Okay.
2021-07-12 10:43:05 -06:00
OxygenCobalt
804c38d7ce
style: Use colorSurface everywhere
Instead of using @color/background directly, use ?attr/colorSurface
so that changes can be made to the theming easier. This also
resolves some more minor issues regarding certain widget's
backgrounds.
2021-05-24 19:33:54 -06:00
OxygenCobalt
0ba1048ead
Fix problems from plugin update
Remove the fixAnimInfoLeak hack since it seems that issue was fixed in the new android plugin, and once again modify with the styles to get the dialogs to use the correct style again.

Another day another magic flag I need to fiddle with to get this busted android app working. This platform sucks so much.
2021-05-08 08:38:09 -06:00
OxygenCobalt
ba79ac0001
Cleanup code
Do some code cleanup.
2021-03-21 09:56:20 -06:00
OxygenCobalt
2c93e3f362
Update code style
Heavily tweak the code style across the app, doing things such as fixing returns and giving names to lambda values.
2021-03-05 12:56:04 -07:00
OxygenCobalt
7f0042fd2f
Refactor file intent system
Finally find a way to handle file intents without having to coordinate it across three different fragments in onResume.
2021-02-23 14:04:45 -07:00
OxygenCobalt
5de45eea0e
Version 1.3.1
Ready for version 1.3.1 of Auxio.
2021-02-21 08:19:05 -07:00
OxygenCobalt
044f74b45b
Fix file intent crash
Keep tweaking this buggy system to fix another bug I caused where the app would crash if selecting a song while the app was inactive.
2021-02-20 21:29:20 -07:00