Commit graph

171 commits

Author SHA1 Message Date
Alexander Capehart
751cd94736
service: re-add attach pattern
Turns out I can't actually couple creation/attach without creating a
huge amount of variable issues.
2024-10-14 12:46:04 -06:00
Alexander Capehart
f4e1681044
all: reformat 2024-09-13 13:35:48 -06:00
Alexander Capehart
a3af24688a
playback: use factory pattern 2024-09-13 13:35:46 -06:00
Alexander Capehart
c1e5adbc44
media: unwind tightly bound action handling 2024-08-23 13:55:49 -06:00
Alexander Capehart
67e51ab54c
widgets: decrease bitmap reduction 2024-08-14 18:49:56 -06:00
Alexander Capehart
ba46895ad1
widget: increase bitmap reduction 2024-08-14 18:49:48 -06:00
Alexander Capehart
d10f84efa8
widgets: move size fixing into a transform 2024-08-14 18:49:37 -06:00
Alexander Capehart
be23208f72
service: break into components 2024-04-11 23:48:45 -06:00
Alexander Capehart
99a527983b
service: break up
Break up the monster AuxioService into sub-classes, keeping just the
major lifecycle and music stuff in AuxioService for now (which will
likely be split out itself eventually)
2024-04-10 19:18:04 -06:00
Alexander Capehart
04ea6834fb
playback: rearchitecture around media3 (prototype)
Nowhere near complete in any capacity.
2024-04-07 23:25:53 -06:00
Alexander Capehart
3ca9b515cf
widget: fix wafer cover setup
Apparently:
1. Some OEMs don't actually autocrop to rounded corners
2. I was not correctly using the right corner radius attributes in the
first place, making it inconsistent.

Let's fix that.

Closes #730
2024-04-07 23:25:52 -06:00
Alexander Capehart
22a22a883f
service: unify playback and indexer
Playback and indexing now occur in the same service through a new
bridge called AuxioService.

AuxioService contains the existing service instances as Fragment
implementations, and then forwards typical service events to them
(albeit this will drift more and more as I continue to deal with
lifecycle issues).

This should be the first step in enabling true service independence,
as it means that the service will now immediately initialize and load
music as soon as possible.
2024-04-07 23:25:52 -06:00
Alexander Capehart
8dc0be4a52
all: cleanup 2024-01-21 20:01:26 -07:00
Alexander Capehart
881df0fc02
widgets: add 1x3/1x4 widget
Add a 1x3/1x4 widget that displays the cover and controls

Also requires another widget type that just displays controls to
accomodate landscape devices.

Resolves #420.
2024-01-15 20:49:35 -07:00
Alexander Capehart
1d63ad5b7b
playback: mirror state internally
Mirror the last playback state of the holder inside
PlaybackStateManager.

This is generally more efficient and will enable better handling of
when state holders attach and detach.
2024-01-09 15:04:32 -07:00
Alexander Capehart
26d14ec6e1
playback: ramshack initial gapless playback impl 2024-01-07 16:05:03 -07:00
Alexander Capehart
68a9ce7b09
build: update deps
I didn't fully keep track of what I did this time, mostly since I was
busy wrangling some of the insane build issues from this gradle update.
2023-07-25 14:35:26 -06:00
Alexander Capehart
ada446767d
image: make coverview respond to settings
Make CoverView respond to all cover settings and the round mode
setting.
2023-07-04 15:01:12 -06:00
Alexander Capehart
903a3e561a
image: add option to restore 1:1 crop behavior
Add an option to restore the old 1:1 crop behavior to the app.

Some people think this looks better, some people like to have youtube
thumbnails in their APICs. Can't really be opinionated here.
2023-06-20 17:25:37 -06:00
Alexander Capehart
47b791b95f
image: allow non-square album covers
Make the app UI properly handle album covers that are not 1:1, instead
of just cropping them.

This required switching to Coil's rounded corners transformation
outright so that the non-1:1 image can sit inside the CoverView in a
way that actually looks good

I'm pretty confident this will work, but there might be some edge cases
since coil's transformation is really finicky.

Resolves #355.
2023-05-28 19:05:42 -06:00
Alexander Capehart
699227c1a8
all: relog project
Fill in a lot of code paths in the project with log statements in order
to improve the debugging experience.
2023-05-26 16:36:06 -06:00
Alexander Capehart
af563c83ac
build: reduce execution times
Reduce build execution times through the use of non-transitive/final R
classes and removing unnecessary wildcard imports.
2023-05-22 21:41:13 -06:00
Alexander Capehart
c7b875376c
music: refactor name implementation
Refactor the music name implementation to do the following:
1. Unify normal and sort names under a single datatype
2. Handle arbitrary-length digit strings
3. Ignore puncutation regardless of the intelligent sort
configuration, as it is trivially localizable.

Resolves #423.

Co-authored by: ChatGPT-3.5
2023-05-11 12:19:39 -06:00
Alexander Capehart
f2a90bf0af
picker: refactor into module-specific impls
Refactor the weird picker god module into specific sub-impls in
playback and a new navigation package.

I cannot keep this unified. The needs are too different among each
picker. Better to keep it separate, especially in preparation for
the playlist dialogs.
2023-03-25 21:13:42 -06:00
Alexander Capehart
5de1e221ac
widget: fix inconsistent cover corner radius
Somehow the line that makes the corner sizes consistent was lost.
2023-03-25 15:54:06 -06:00
Alexander Capehart
f0d62e8176
deps: update deps
Lifecycle -> 2.6.0
Spotless -> 6.17.0 (Allows file name field to be used)
2023-03-17 15:13:11 -06:00
Alexander Capehart
86ca6d577e
list: re-add fine-grained updates
Re-add the fine-grained updates that were removed prior due to state
concerns.

This time they should be safe enough to use, as the differ has been
fully vendored. The change is not complete enough however, as the queue
view has not been properly ported to use these updates just yet.
2023-03-04 23:08:03 -07:00
Alexander Capehart
83c5b85424
deps: update
Spotless -> 6.15.0
Core -> 1.9.0
2023-02-24 21:57:01 -07:00
Alexander Capehart
9c7fa86ead
widget: fix widget failing to update
Turns out WidgetProvider doesn't support Hilt. Of course, it let me
know by silently failing on an exception for no reason.
2023-02-20 21:32:47 -07:00
Alexander Capehart
975f239b8b
detail: add metadata to song detail view
Add metadata items to the song detail view. Should provide a useful
view into how Auxio is interpreting song metadata.

Resolves #330.
2023-02-19 21:59:58 -07:00
Alexander Capehart
213409924b
playback: switch to ffmpeg extension
Switch to the FFMpeg ExoPlayer extension, which should enable support
for ALAC while also retaining support for FLAC below Android 8.
2023-02-13 09:06:45 -07:00
Alexander Capehart
dd2017c510
image: use di w/coil
Use dependency injection with Coil.

This allows me to use the coil-base artifact which should remove a bit
of superfluous dexcode, assuming dagger uses less. It probably doesn't.
2023-02-12 19:07:00 -07:00
Alexander Capehart
63e5a7ee69
playback: fully use di
Fully use DI in the playback module.

Previously use was split among different components that could leverage
injection, and components that could not. This fully unifies them.
2023-02-12 18:50:33 -07:00
Alexander Capehart
833ddceba4
all: use binds di
Use @Binds more heavily with dependency injection, whee currently
reasonable.

Reduces the amount of boilerplate "fun from" functions that need to be
used.
2023-02-11 16:29:47 -07:00
Alexander Capehart
f8d1a880d4
all: post-refactor cleanup 2023-01-29 17:45:51 -07:00
Alexander Capehart
bb2ea9df27
playback: hide playbackstatemanaager impl
Make PlaybackStateManager an interface instead of a direct
implementation.

Part of a rework to implement dependency injection in-app.
2023-01-29 15:46:41 -07:00
Alexander Capehart
f27215a4be
playback: use room for persistence
Finally give up and use Room to persist the playback state.

This should make dependency injection much easier, and the
implementation isn't exactly the *worst*, as I was already using
"raw" data structures for the old queue database.
2023-01-23 12:45:55 -07:00
Alexander Capehart
f7bf12c4a5
widget: fix round mode issue
Fix a problem where round mode would not round the widget bar, as it
normally would.
2023-01-17 15:07:37 -07:00
Alexander Capehart
ac9f50c0a0
settings: do not use sharedpreference listener
Switch back to using settings-specific listeners rather than the
SharedPreference listener.

Again, this is due to the need to decouple android code from settings.
It also allows us to fully obscure the details of what settings we are
actually working with.
2023-01-06 19:20:56 -07:00
Alexander Capehart
1b19b698a1
settings: decouple
Decouple the settings god object into feature-specific settings.

This should make testing settings-dependent code much easier, as it no
longer requires a context.
2023-01-06 16:17:57 -07:00
Alexander Capehart
3f0a532a2d
music: allow editing past queue items
Allow past and currently playing queue items to be edited, instead of
just future queue items.

This was a somewhat requested feature that was impossible with the
prior queue system. With some fixes, the new queue system can now be
used to do this.

This even works with edge cases like removing the currently playing
song. Albeit, it's likely that more bug fixes and testing will be
needed.

Resolves #223.
2023-01-05 09:31:48 -07:00
Alexander Capehart
16513e6547
playback: implement new queue system
Implement a new heap-based queue system into the app.

Unlike the prior queue, this one no longer keeps one canonical queue
and then simply swaps between shuffled and ordered queues by
re-grabbing the song list currently being played. Instead, the same
"heap" of songs is used throughout, with only the way they are
interpreted changing.

This enables a bunch of near functionality that would not be possible
with the prior queue system, but is also really unstable and needs a
lot more testing.

Currently this commit disables state saving at the moment. It will be
re-enabled when the new queue can be reliably restored.
2023-01-04 19:24:30 -07:00
Alexander Capehart
493b0a9f32
all: rework context-dependent object use
Rework some of the taped together ways context-dependent objects were
replied on in-app, such as removing redundant constructs and extremely
hacky lifecycle mechanisms.
2022-12-31 11:12:50 -07:00
Alexander Capehart
bf56a50b59
all: refactor associating class naming
Standardize from/new companion method usage, Callback/Listener usage,
and companion object visibility across the app.
2022-12-30 19:26:09 -07:00
Alexander Capehart
affe5c482b
all: reformat code 2022-12-30 11:39:28 -07:00
Alexander Capehart
cce7b766d7
all: reformat code
Reformat all project code
2022-12-26 19:59:27 -07:00
Alexander Capehart
9d283fc6e4
accent: move back to ui
Move the accent module back into the ui module, where it's more consistent.
2022-12-25 19:32:34 -07:00
Alexander Capehart
18ba845302
shared: redocument
Redocument the shared module (previously ui).
2022-12-24 11:41:32 -07:00
Alexander Capehart
200a3dfeaf
appwidget: redocument
Redocument the appwidget (formerly widget) module.

This commit also re-architectures the module somewhat to make further
extension easier later on.
2022-12-23 22:07:10 -07:00
Alexander Capehart
7415c28e2d
util: redocument
Redocument the util module.

This should make the purpose of the utilities used in this app clearer.
2022-12-22 20:25:54 -07:00