Commit graph

48 commits

Author SHA1 Message Date
OxygenCobalt
8e849feb7d
playback: rename loopmode to repeatmode
Rename LoopMode to RepeatMode, which is generally much clearer
than the previous name.

This changes all non-breaking instances of "loop" in the app with
"repeat".
2022-04-29 14:52:33 -06:00
OxygenCobalt
60367c45c3
nit: fix typos
Fix miscellanious typos.
2022-04-28 22:03:15 -06:00
OxygenCobalt
3a19d822ce
music: rework name heirarchy
Once again rework the naming system for music, this time with it being
much easier to localize (hopefully).
2022-04-03 12:54:29 -06:00
OxygenCobalt
05a5ef5c3f
ui: migrate esoteric adapters to framework
Migrate all esoteric adapters to the new RecyclerView framework.

One of the shortcomings with the previous RecyclerView utilities was
how more esoteric adapters with data that does not implement Item
could not use the utlities. The new system, by comparison, is capable
of taking any type of data, so we can no migrate all of the esoteric
adapters to the new system.
2022-03-27 09:59:35 -06:00
OxygenCobalt
8100f294d7
recycler: spin off data into separate class
Spin off the data instances into their own class called BackingData.

This is to isolate the sane adapters that rely on one type of diffing
from the insane adapters that use synchronous and asynchronous diffing
simultaniously. It also allows some of the more esoteric adapters to
implement their own backing data without much trouble or leaky
abstractions.
2022-03-26 11:32:54 -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
608112a7ac
all: migrate to centralized constant table
Migrate to a centralized constant table for easier management.

Previously, Auxio would tie constants to the class itself, which
led to a largely disjointed system that relied on an internal table
so that it would stay sane. This commit moves all of those constants
to a single table for easier usage and management.
2022-03-19 20:05:57 -06:00
OxygenCobalt
627ab97948
all: cleanup
A bunch of small changes that have accrued over the last week due to
having more or less no time to work on Auxio.
2022-03-13 16:42:03 -06:00
OxygenCobalt
c5be39774a
ui: remove memberBinding [#80]
Remove all usages of memberBinding from the app.

For some reason, certain devices running Android 10 and lower will
have a lifecycle race condition whenever the theme is mis-matched.
This ends up resulting in an invalid state whenever memberBinder was
used. Since we can't replace memberBinder with a better solution,
just dumpster the whole thing. This platform is so god damn broken,
jesus christ.

Resolves #80.
2022-02-24 19:31:48 -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
30ad7f99db
playback: fix headset focus bug
Fix an issue where headset focus would restart playback unexpectedly.

At some point during the broadcast refactor, I accidentally switched
the values of CONNECTED and DISCONNECTED when handling
AudioManager.ACTION_HEADSET_PLUG. This resulted in playback starting
for no reason in some situations.
2022-02-14 19:46:04 -07:00
OxygenCobalt
d9e2d7f07a
docs: rework contribution info
Update the contribution information and templates.

The contribution information and templates were growing a bit stale,
given that they haven't gotten a refresh since ~1.3.0. This commit
reworks them to be more thorough and straightfoward.
2022-02-06 14:33:36 -07:00
OxygenCobalt
685d3af12f
settings: remove 1.4.0 compatibility
Remove 1.4.0 setting migrations.

It's been nearly a year. Everyone should have migrated by now.
2022-02-05 11:01:03 -07:00
OxygenCobalt
b121b6428d
music: refactor music grouping
Completely refactor the way music is grouped up into artists and
albums.

The issue with previous attempts at implementing better artist
management was the reliance on MediaStore IDs in many parts of the
program. Dumpster this by merging the hash and ID values into a
single field that is garunteed to be unique enough. This allows songs
to be adequately grouped into case-insensitive artists while also
deduplicating albums that may have been split my MediaStore due to
heterogeneous formats.

Resolves #66.
2022-02-04 20:55:48 -07:00
OxygenCobalt
95e8b06f19
style: extend edge-to-edge on all versions
Extend edge-to-edge to versions below Android Oreo. This is done
through tinting the navigation bar colors on those versions,
circumventing the coloring issue.
2022-01-15 20:12:23 -07:00
OxygenCobalt
9a7571a59a
playback: add replaygain setting
Add a settings option for ReplayGain.
2022-01-06 17:27:45 -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
0fe73b5b18
docs: re-write architecture
Create a new ARCHITECTURE document that is up to date with Auxio 2.0.0.
2021-11-25 19:41:28 -07: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
7a17282c30
detail: re-add sorting
Re-add sorting to the detail fragments, now with the new system.
2021-09-25 18:12:42 -06:00
OxygenCobalt
443c26fe98
styles: refactor style methodology
Refactor the styling again to make all styles start with the Auxio
prefix. Also try to phase out the usage of layout_width and
layout_height in most places, since those can cause a lot of
frustration if they aren't used in the layout they are expected in.
2021-09-14 20:16:55 -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
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
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
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
a566a30c15
style: use colorAccent
Use colorAccent instead of colorPrimary and colorSecondary.
2021-08-06 17:47:11 -06:00
OxygenCobalt
1d828c7b0a
md: add widget module to ARCHITECTURE
Add documentation on the widget module to ARCHITECTURE.md.
2021-08-06 12:12:21 -06:00
OxygenCobalt
f1f2fcf41d
meta: remove access_network_state perm [#22]
ExoPlayer's online functionality will cause the library to request the
ACCESS_NETWORK_STATE permission. We don't need this since we use
ExoPlayer for local playback only. For simplicity [and to remove a
weird suspicious permission, we just disable it]
2021-07-02 08:32:38 -06:00
OxygenCobalt
a849d00248
Cleanup code
Clean up the formatting/structure of the codebase.
2021-05-02 18:49:16 -06:00
OxygenCobalt
e63122ce3e
Cleanup artist songs implementation
Clean up the artist song code to not rely so heavily on a hacky ActionHeader implementation and instead just use it's own viewholder.
2021-04-26 17:22:01 -06:00
OxygenCobalt
b9506bcbc3
Add artist songs list
Add a list of artist songs to ArtistDetailFragment. This moves the artist sort functionality to the song list instead of the album list.
2021-04-26 16:54:49 -06:00
OxygenCobalt
cc72ebc251
Update action header structure
Create a seperate ActionHeader object for headers with actions attached alongside a new viewholder to accompany it.
This allows action headers to be created easier without creating your own viewholder.
2021-04-25 17:15:20 -06:00
OxygenCobalt
f2445e56f2
Update loop behavior [Resolves #13]
Change the loop behavior to something that is actually sensible,
with [ ] looping the whole playlist and [ 1 ] looping the song.

This also removes the "Do on end" setting. A new stop option may
be reintroduced, however.

This resolves issue #13.
2021-04-03 14:56:50 -06:00
OxygenCobalt
0305eb0beb
Standardize settings entirely
Update the structure of the settings system to do several things:
- Finally use int preferences everywhere instead of the mix of strings & ints from before
- Create a new preference named `IntListPreference` that enables the use of integers in list preferences
- Actually centralize array values and default values into a single integers xml
- Isolate all the new migration code into a single file
- Refreshed the int tables used by data objects [DB version has been updated, will not update when other changes]

The only preference not migrated is doAtEnd since that is being planned to be retired in a future LoopMode update.
2021-04-03 10:53:16 -06:00
OxygenCobalt
b65814fdbd
Redo blacklist dialog
Completely refactor the blacklist dialog to not only use the Storage Access Framework, but also to completely eliminate the material dialogs dependency.
2021-03-26 09:54:48 -06:00
OxygenCobalt
3484b8a0bf
Update markdown
Update markdown in preperation for 1.3.2
2021-03-22 09:41:09 -06:00
OxygenCobalt
f1c40d2539
Add wakelock
Actually add a wakelock to the music load process to prevent it from stopping the CPU mid-load.
2021-03-21 11:12:48 -06:00
OxygenCobalt
72a7aa6744
Fix song restore issue
Fix an issue where the playback restore process would only search the list of songs for the currently playing song, running the risk of picking the wrong song with the same name.
2021-03-20 16:14:36 -06:00
OxygenCobalt
a750100aff
Fix queue edge-to-edge issue
Fix a problem where the last queue item would display behind the navigation bar when edge to edge is on.
2021-03-07 08:26:15 -07:00
OxygenCobalt
7524589969
Unify notification
Unify the notification extensions into a single PlaybackNotification object that does not rely on PlaybackStateManager and SettingsManager.
2021-02-19 15:54:58 -07:00
OxygenCobalt
2b24d6661e
Update libraries
Update Coil/Android libraries
2021-02-13 10:37:34 -07:00
OxygenCobalt
f1245d7d40
Improve layout responsiveness
Make layouts better on all screen sizes.
2021-02-13 10:20:48 -07:00
OxygenCobalt
e0485ebad9
Refactor coil
Completely refactor coil and how its used so that it centers around data objects instead of a hodgepodge of URIs and Song data.
2021-02-12 22:28:41 -07:00
OxygenCobalt
54f9ceca90
Update portrait tablet layout
Update the portait tablet layout to look better.
2021-02-07 20:18:06 -07:00
OxygenCobalt
ed10bd1898
Rewrite ARCHITECTURE.md
Redo the structure of ARCHITECTURE.md to make more sense with its intended purpose.
2021-02-07 19:57:52 -07:00
OxygenCobalt
26dd1036ec
Add actionmenu extension function
Simplify menu creation by using a Fragment extension to create a new ActionMenu.
2021-02-07 18:54:04 -07:00
OxygenCobalt
eb5292d083
Add architecture document
Add a document describing the high-level auxio architecture.
2021-02-07 16:07:16 -07:00