Commit graph

41 commits

Author SHA1 Message Date
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
df49e2765f
music: refactor model usage
Refactor the way music models are constructed to achieve the following:
- Add a unified interface for resolving display names of artists
- Disambiguate the role of Header in the music objects
- Eliminate the need to load strings in with a context when creating
Header instances
2021-10-28 19:09:54 -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
255154c411
home: remove fab scrolling behavior
Remove the ability for the FAB to disappear on scroll, mostly because
the state would not be consistent and it was generally bad UX when
combined with the fast scroller.
2021-10-25 16:38:37 -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
3107464dd2
home: make fab hide when fast scrolling
Hide the FAB when fast scrolling. This is just a UX enhancement.
2021-10-24 11:03:24 -06:00
OxygenCobalt
71480d0299
home: move shuffle control to fab
Instead of having a play/pause header at the top of the song list, use
a FAB instead. This allows people to shuffle all of their songs even if
the songs tab isn't enabled, and it can be tranformed into a create FAB
when playlists are added.
2021-10-24 10:17:55 -06:00
OxygenCobalt
97808ce1c3
home: merge fast scroller
Merge the fast scroller back into Auxio once again, albeit this time
it's AFS instead of IndicatorFastScroll. This not only slims down the
implementation but also allows me to stop the scroller from appearing
every time the home view is recreated. All modifications were noted
and attribution is included to abide by the Apache 2.0 license.
2021-10-23 18:22:50 -06:00
OxygenCobalt
36228d0536
widgets: improve widgets
Enhance widgets in a couple of ways:
1. Make the cover art expand to fit it's aspect ratio with padding
instead of the entire widget. This does the cover art justice and
is more visually appealing in general.
2. Add two new widget forms: Terminal, which applies to only the
smallest widgets, and Minimal, which applies to short and wide
widgets
2021-10-21 19:17:55 -06:00
OxygenCobalt
9030de7774
ui: add edge-to-edge on bar-dependent fragments
Add edge-to-edge on the Home, Detail, and Search fragments. This
solution is not ideal at all, relying on viewModel state to make
sure that the padding is only applied when the playback bar is not
present. However, it works. I'll likely replace it with a better
layout once I can figure out how similar layouts like Material
Files' PersistentBarLyout work.
2021-10-20 20:11:07 -06:00
OxygenCobalt
e01816a1dc
settings: make tab dialog use checkboxes
Make the tab selection dialog use checkboxes instead of icons to make
it more user-friendly.
2021-10-20 19:37:20 -06:00
OxygenCobalt
0537681a86
home: cleanup code
Clean up some bugs and old code from the tab customization
addition.
2021-10-17 20:53:00 -06:00
OxygenCobalt
23d1be8ebc
home: add tab customization
Finally add tab customization. This implementation is a
bit ugly, but I had to futureproof it for playlists and I'm
planning to clean up a lot of the duplicate code across the app.

This addition notably allows a default tab to be set, which is
something that was widely requested in #12. This UI rework finally
allows it to be added.
2021-10-17 20:27:16 -06:00
OxygenCobalt
a253cfccc4
home: add fast scroller
Add a new fast-scroller to the home view. This required some annoying
hacks to work, but it seems to work pretty well.
2021-10-13 19:49:20 -06:00
OxygenCobalt
2d5c438c58
playback: improve queue ui
Improve the queue UI some more:
- Fixed an issue where clearing the user queue by clearing all items would
result in it bugging out
- Queue items now show a Material-y background when they are swiped
away. This was way harder than you might think it was.
2021-10-11 20:32:23 -06:00
OxygenCobalt
f1db0a0162
home: make sorting persisent
Re-add persistent sorting to the home lists.
2021-10-03 18:57:21 -06:00
OxygenCobalt
7e32763662
ui: misc ui updates
Do a couple of UI changes I thought of over this week:
- Make the detail header text neutral, mostly so I can make it so that
the accent only corresponds to active thingsd
- Remove the vanity elevation from the cover images. This is mostly to
abide by Material Design.
- Move the about screen to it's own menu slot on the main fragment.
2021-10-01 20:17:48 -06:00
OxygenCobalt
e946648b24
home: refactor list management
Return to the "four seperate list fragments" system when it comes to
HomeFragment. This reduces code complexity [no more massive when
chains] and allows me to customize the content of each fragment without
adding special cases.
2021-10-01 19:49:54 -06:00
OxygenCobalt
394327a2c4
deps: upgrade deps
constraintlayout -> 2.1.1
media -> 1.4.2
exoplayer -> 2.15.1
2021-09-29 06:43:43 -06:00
OxygenCobalt
b3156941d4
home: add play/shuffle to song list
Re-add the play/shuffle options to the song list, now as a header. This
seems to be the best option UX-wise, but the implementation is really
I think the best option regarding that is to extend this idiom to all
lists or split these fragments up. Both are reasonable.
2021-09-26 19:48:44 -06:00
OxygenCobalt
3ab425839c
music: refactor music loading
Refactor music loading to be based off of songs entirely. This reduces
efficency but enables some nices fixes, notably:
1. Album artists now have basic support [You won't be able to see
specific artists, but they won't be fragmented anymore]
2. Samsung devices probably shouldn't get confused about artist names
anymore, like in #40

This should hopefully be the last time I need to refactor this horrible
system. Thank god.
2021-09-26 15:36:24 -06:00
OxygenCobalt
68b8ff0798
ui: become more material
Give up and add more material elements such as neutral toolbar colors
and rounded corners. This is largely for stylistic cohesion. I will
keep rounded corners to a minimum though, rounding album covers is a
crime against humanitity.
2021-09-24 19:46:42 -06:00
OxygenCobalt
08169b6167
ui: clean up dead code
Clean up the last remaining legacy SortMode remnants. Also reformat all
ViewHolder IDs to be properly unique and sequential.
2021-09-12 17:06:06 -06:00
OxygenCobalt
0e0be19e1d
detail: refactor module
Completely refactor the detail module. This is for a few reasons:

- Prevent data regeneration every time a fragment re-creates.
- Make DetailModel follow the customs of other ViewModels.
- Simplify layouts into a single detail item to reduce code
complexity.

Currently sorting doesn't work, but that is still being worked out
as the legacy SortMode continues to be phased out of Auxio.
2021-09-11 17:40:19 -06:00
OxygenCobalt
0433abc5cb
search: normalize unicode strings
Normalize unicode strings when making searches. This allows accented
characters to be treated as typical characters/
2021-09-05 19:42:17 -06:00
OxygenCobalt
dae334b1d6
home: re-add sorting
Re-add sorting to HomeFragment, except heavily improved. The major
improvement here is the addition of song sorting, which was a heavily
requested feature judging by #16. The setting does not save yet and
is not present in the detail fragments, but it is still a major
milestone for the new home ui.
2021-09-05 16:11:37 -06:00
OxygenCobalt
23e3c0241d
ui: completely migrate to material
Drop the Bridge theme and completely migrate to material. This is for
two reasons:

- To make Material You less painful
- Improve coloring [Dark mode, other colors, etc].

Most of the previous UI elements were kept [no rounded corners], but
did come at the cost of removing the hint tagline from the search bar
since there was simply no good way to integrate it. There are also
some other miscellanious issues [Weird selection menus, dividers are
not migrated still], but those will be fixed in future commits.
2021-09-03 20:37:32 -06:00
OxygenCobalt
74d55ba59e
home: make appbar liftOnScroll
Make HomeFragment's AppBarLayout lift when the data scrolls. This
was something I wanted to do initially, but kept running into issues
with. Turns out the addition of my custom AppBarLayout made this pretty
trivial all things considered. The entire app now follows this idiom.
2021-09-03 18:02:57 -06:00
OxygenCobalt
a4d2a8d48c
search: improve ui
Improve the search UI by making it edge-to-edge and adding the
liftOnScroll idiom. It does come with the caveat of walking on
eggshells to get the liftOnScroll code working, but its okay. It
may be improved in the future.
2021-08-29 20:20:25 -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
9ce7dc598d
playback: improve queue ui
Make the queue UI follow the liftOnScroll idiom that is already used
in the detail views. This also tweaks the edge-to-edge behavior so
that this view properly works.
2021-08-24 20:04:32 -06:00
OxygenCobalt
9162246b8b
home: fix appbar issues
Fix two annoying appbar issues:
- Appbar will collapse if the navigation sequence is too fast
- Tab ripple would paint over the indicator unless the ripple was unbounded [???]
2021-08-23 19:40:21 -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
504e8260ac
home: fix crash when recreating viewpager
Fix a crash where all HomeListFragments would lose their displayModes
when the activity was recreated [such as in settings].
2021-08-22 18:14:15 -06:00
OxygenCobalt
19e2fcbb90
search: improve keyboard management
Remove the janky requestFocus/clearFocus called on SearchFragment
and replace them with InputMethodManager calls. This is generally
more user friendly, especially when returning to search from
navigation.
2021-08-22 17:59:07 -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
776776690d
recycler: refactor displaymode usage
Remove the SHOW_ALL variant from DisplayMode, replacing it with null
in SearchFragment where it was initially used. This allows all the
home pager fragments to be combined into a single HomeListFragment
that simply chooses a DisplayMode.
2021-08-22 16:09:51 -06:00
OxygenCobalt
49eca55cd7
home: reduce viewpager sensitivity
By default, ViewPager2's sensitivity can result in vertical scroll
actions being registered as horizontal scroll actions, which is bad
for UX. Fix that by reflecting into the internal RecyclerView and
changing the touch slope value.
2021-08-22 09:04:54 -06:00
OxygenCobalt
b5c5fabad0
home: re-add grid spans
Re-add grid spans to HomeFragment when on landscape mode.
2021-08-22 09:01: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