Commit graph

102 commits

Author SHA1 Message Date
OxygenCobalt
ee1a234e76
ui: rework base adapter class
Completely rework the base adapter class to require less boilerplate
and properly handle cases such as diffing. The major adapters have
been migrated to this system, but the other adapters have not been
changed so far.

This is only part 1 of a multi-part rework, as this is an incredibly
complex system.
2022-03-26 10:16:36 -06:00
OxygenCobalt
d79592e029
all: remove databinding
Remove databinding entirely.

Databinding was a terrible idea for Auxio. I rarely leveraged it, and
when I did, it produced messy code and bloated build times. Dumpster it
for just viewbinding, which is good. This reduces building times by
nearly 2/3, and generally makes the codebase more coherent and usable.
2022-03-23 10:59:01 -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
8f38ed6ee5
playback: rework view implementations
Rework the playback views to follow the new idioms I want to use for
Auxio.

This change mostly consists of flattening away some of the custom
views, removing databinding, and using a general viewbinding
fragment that I hope to extend to the entire app.
2022-03-21 20:15:42 -06:00
OxygenCobalt
9c07ad2d34
sort: completely rework class
Completely refactor the Sort class to be more efficient and
straightforward.

The original Sort class had *major* shortcomings, it was slow,
poorly organized, and relied on abusing compareBy to implement
special things like article sort. This rework eliminates all of
that in favor of a new system relying on custom comparators and
chaining to achieve something much faster and maintainable.
2022-03-19 15:44:11 -06:00
OxygenCobalt
90f10f2a84
home: clean up fast scroller
Clean up the fast scroller implementation to remove dead code and
be more coherent in general.
2022-03-19 10:59:13 -06: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
87035805d2
ui: general cleanup
Clean up a bunch of UI issues that have accumulated.
2022-02-23 15:26:40 -07:00
OxygenCobalt
9304e58190
playback: rework playback icon visibility
Add a circular indicator to playback icons.

Sometimes it can be too difficult to tell apart the active and inactive
states of the shuffle/loop icons. However, there is really no good way
to improve the contrast on these icons without some kind of muddled UX
fragmentation, or god-awful design. Try to settle on the okay-est
version, which is to use colorPrimary with a dot indicator on views we
control, and use a more muddled semi-transparent icon on views we don't
control, like notifications and widgets.
2022-02-21 16:36:08 -07:00
OxygenCobalt
0209e526e1
all: general cleanup
Do some general code cleanup.
2022-02-06 09:01:51 -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
4ccaa7c4bb
all: cleanup code
Clean up code and fits a bunch of miscellaneous issues.
2021-11-24 20:22:30 -07:00
OxygenCobalt
e697908a2f
detail: update layouts
Update the detail layouts to work better on tablets and be more
consistent overall.
2021-11-20 17:03:21 -07:00
OxygenCobalt
58c2681f72
widget: change default size
Make the default widget size 3x2 again. This is because the UX is
generally nicer if the smaller widget is used as the default and
because the small widget is now no longer text-only and ugly.
2021-11-20 09:53:10 -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
e3f4a6fefa
widgets: fix minor issues
Fix problems with weird margins in the small/wide widgets and change
the initial layout from widget_medium to widget_default.

The latter is nice, as it allows for more cohesion between the default
state and the "unhooked" state that's shown when the phone boots.
2021-11-16 16:48:40 -07:00
OxygenCobalt
c30c0d7fb3
accent: simplify accents
Simplify the accent scheme:
- Light Blue was re-generated to be a weird darker-on-light-mode
lighter-on-dark-mode blue that looked really similar to how blue-grey
turned out. These have been merged into a new color scheme called
deep blue.
- Deep Orange and Red were too similar after being re-generated, so
they have been merged to become a simple red accent.
2021-11-13 16:00:41 -07:00
OxygenCobalt
032fd2bd40
style: use material in playback view
Use Slider and FloatingActionbutton in the playback view. This is not
because I wanted to, but because there were insane bugs on Lollipop
devices that stemmed from them being unable to load complex selector
resources.
2021-11-11 16:25:56 -07:00
OxygenCobalt
67797d957e
all: cleanup code
Upgrade dependencies, fix deprecation issues, and just clean up code
in general.
2021-11-11 12:19:07 -07:00
OxygenCobalt
8f61d8479a
style: migrate to Material3 text styling
Migrate to 100% Material3 text styling. I had to basically ignore the
intended styling here just to get a sensible design here, which is
"bad" but I do what I want. The only usage of MaterialComponents left
in the project now is the dialog since the new dialog style the worst
thing ever.
2021-11-11 11:48:22 -07:00
OxygenCobalt
63198f8677
style: unify typography
Use Material typography everywhere instead of using a mix of AppCompat
and Material styles. This is still based around MaterialComponents
though, as I'm not fully sure how to wield the new Material3 text
styles yet. This also completely phases out inter bold.
2021-11-09 06:52:02 -07:00
OxygenCobalt
4f4f6654c0
widgets: re-add 2x2 widgets
Re-add 2x2 widgets. They were originally removed due to strange layouts
in landscape mode, but that has now been fixed with a new "tiny" layout
meant for that specific edge case. Also rename the widget forms to more
sensible names and make the small (previously minimal) widget be
text-only again.
2021-10-28 19:46:00 -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
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
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
8c7f0867f9
style: migrate to Material3
Mostly migrate to Material 3/Material You.

- Auxio should now follow dynamic colors on Android 12
- Accents have been regenerated to align with the new color roles
- Some colors have been tweaked here and there to line up with the
new design system
- Dialogs were not fully migrated, but that's because Material3 dialogs
look god-awful.
- Accent class was reworked to take up less memory

Now that this is out of the way, I can focus on other UI things before
the release of 2.0.0.
2021-10-10 16:44:17 -06:00
OxygenCobalt
bc6bba56fc
widget: update preview
Update the widget preview to reflect the UI tweaks made.
2021-09-12 17:33:48 -06:00
OxygenCobalt
744e4172f3
ui: improve misc ui elements
Make some minor UI tweaks across the app.
2021-09-11 20:54:36 -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
37a8cdccb6
playback: fix more queue issues
Fix more issues with the queue, such as landscape edge-to-edge not
working correctly and drag scroll events not resulting in the appbar
lifting.
2021-08-25 18:15:09 -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
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
4c59c37111
style: use material play/pause icons
The old play/pause icons that I used to use were really bad and didn't
work right on many display densities. Give up and just use the material
ones.
2021-08-21 09:52:39 -06:00
OxygenCobalt
0c54fa05b9
accent: fix crash when opening dialog
Fix a crash in the accent dialog that would occur because Android
Couldn't decipher the module path to the layout manager. Even though
this worked perfectly fine before moving the module. Why.
2021-08-21 08:43:22 -06:00
OxygenCobalt
21a24f2496
style: improve layout heirarchy
Further improve the layout heirarchy, shrinking some items so that
the layout is more compact and scrollable.
2021-08-19 17:40:16 -06:00
OxygenCobalt
1f9d23863f
widgets: remove compact/mini widgets
Remove the compact and mini widgets, as there seems to be no real way
for both controls and metadata to be packed into them.
2021-08-17 19:48:00 -06:00
OxygenCobalt
5788fb8732
style: tweak dimens
Tweak some dimens so that they line up with the 8dp grid. This doesn't
apply to all of them since some of them are fined-tuned [such as the
fast-scroller]. The latter would likely be migrated in the later UI
overhaul.
2021-08-16 19:31:00 -06:00
OxygenCobalt
fed6902c21
all: minor improvements
Add some minor UI tweaks that accumulated over this week.
2021-08-14 16:31:18 -06:00
OxygenCobalt
a5f65d39a5
loading: improve new ui
Improve the loading UI somewhat, reverting the progress bar and
applying some padding to the icon so that it looks a bit better
on Android 12.
2021-08-09 19:42:46 -06:00
OxygenCobalt
fe29e01311
loading: redesign ui
Redesign the loading UI to be in line with the rest of Auxio and the
upcoming Android 12 splash screen [sort of]. This also updates the
header and button designs so that the layout heirarchy is better/more
information dense.
2021-08-08 18:16:09 -06:00
OxygenCobalt
b51ec756de
widgets: simplify layouts
Simplify the layouts used by widgets, moving the more version-specific
attributes into settings.
2021-08-05 17:00:59 -06:00
OxygenCobalt
8551e90884
all: cleanup code
Cleanup unused resources and fix some code issues here and there.
2021-08-03 09:39:14 -06:00
OxygenCobalt
d3e738b973
widgets: add controls to minimal widget
Backtrack and add controls to the minimal widget, mostly for usability.
2021-08-03 09:05:20 -06:00
OxygenCobalt
c54790e24c
about: redesign ui
Completely redesign the about UI to remove its dependency on
bottomsheetdialogfragment. That object is such a hassle to deal with an
is the epitome of everything wrong with this horrible platform. This
design will enable further about extensions in the future.
2021-06-05 14:40:50 -06:00
OxygenCobalt
a849d00248
Cleanup code
Clean up the formatting/structure of the codebase.
2021-05-02 18:49:16 -06:00
OxygenCobalt
dcd5b3235c
Update header text style
Update the style of the header text further to be cleaner and to fix issues where the name would not be properly centered on smaller fonts.
2021-04-27 19:12:07 -06:00
OxygenCobalt
029a4b1ff6
Refactor margin/padding
Do two things to the margin and padding system:
- Remove the redundant padding/margin dimens and replace it with a unified "spacing" dimen namespace
- Make most margin and padding dimens follow the divisible-by-8 rule in material design
2021-04-25 14:59:21 -06:00
OxygenCobalt
194bcfcd05
Fix more fast-scroll issues
Fix two more fast scrolling issues:
- Fixed size of the view would cut off larger fonts
- Thumb would briefly show when the view would initially start

This custom view was a mistake, but anything for less kbs.
2021-03-25 09:24:40 -06:00
OxygenCobalt
688f9d3a52
Fix fast-scroll bugs
Fix some behavior issues with the new fast scroll view.
2021-03-23 17:06:06 -06:00