Commit graph

213 commits

Author SHA1 Message Date
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
637bcccd51
music: clean up loader implementation
Clean up the music loader implementation, removing pre-sorting to make
it a bit more efficent. Instead, sorting is done on indiviual
components.
2021-12-05 17:56:21 -07:00
OxygenCobalt
cde3a99f4d
playback: fade out content as view slides
Re-add the ability for content to fade out as the playback or queue
view slides up. This also migrates the queue slide animation to also
fade out content, which allows for the stylistic cohesion I desire.
2021-11-27 11:49:06 -07:00
OxygenCobalt
e397cf1540
coil: add option to round album covers
Add an option to round album covers for people who might want more
visual cohesion with apps that have completely drunken the "Round
Everything!" kool-aid. Covers will still be hard-edged by default.
2021-11-26 14:15:26 -07:00
OxygenCobalt
14c9b81532
coil: fix mosaics on odd image sizes
Round the image sizes we use for our mosaics so that they are even.
Previously we didn't, and that resulted in bad mosaics being created.
2021-11-26 11:41:01 -07:00
OxygenCobalt
ec8f538cf0
docs: update metadata
Update metadata in preperation for 2.0.0.
2021-11-26 08:56:09 -07:00
OxygenCobalt
2be49b0042
playback: remove playback subtitle
Remove the playback subtitle for now. I'm considering re-adding it
eventually, but I want to make it so that the UI is less cluttered.
2021-11-25 14:22:47 -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
06a7d8258b
sort: refactor sorting
Refactor sorting again to support free-floating ascending/descending
values on every single sort mode. This enables greater freedom in how
users can sort their music and allows me to finally get rid of the
old legacy sematic sorting modes that chose their ascending/decending
order depending on how they wanted it.
2021-11-21 15:45:20 -07:00
OxygenCobalt
f66dea9469
accent: rename all light accents to deep accents
The way Material3 uses an initial light accent seeds is...odd. It more
closely resembles deep purple [darker on light mode, lighter on dark
mode] in behavior. Therefore we simply rename the light accents to
this. This does mess up translations a lot, but I'll fix it when I
update the rest of the translations.
2021-11-13 19:16:42 -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
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
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
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
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
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
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
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
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
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
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
fed6902c21
all: minor improvements
Add some minor UI tweaks that accumulated over this week.
2021-08-14 16:31:18 -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
a566a30c15
style: use colorAccent
Use colorAccent instead of colorPrimary and colorSecondary.
2021-08-06 17:47:11 -06:00
OxygenCobalt
1b5822eae0
chore: upgrade deps
Update dependencies again:

activity -> 1.3.1
constraintlayout -> 2.1.0
media -> 1.4.1
2021-08-06 09:41:31 -06:00
OxygenCobalt
828ab3ccee
styles: refactor styles
Refactor styles again, this time trying to seperate the more
layout-specific attributes so that layouts become more re-usable.
This also updates the naming conventions of styles.
2021-08-06 09:36:56 -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
8c07f8cd8c
widgets: add preview for <31
Add an image widget preview for android versions below 12.
2021-08-05 16:09:27 -06:00
OxygenCobalt
6f8f333b72
widgets: make widget responsive
The plans for widgets have changed somewhat. Instead of 4 or so
variants, there will instead be one unified widget that chooses
different layouts depending on its size. The first one added is the
full widget, which shows more controls as long as theres enough
space.
2021-08-05 10:22:41 -06:00
OxygenCobalt
49db7e0741
widgets: add widget layout preview
Add a layout preview to the Android 12 widget metadata. I'm holding off
on implementing a drawable until the widgets are completely finalized.
2021-08-03 10:33:07 -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
8673995630
widgets: backport to <v31
Modify the minimal wdiget so that it can work on Android 11 and below.
Was not actually that hard, mostly changing layouts around all things
considered. This also splits up the default view and the main widget
views, which makes managing UI state much easier.
2021-08-02 08:57:35 -06:00
OxygenCobalt
66be3da7e3
widgets: add minimal widget [#8]
Add the first widget implementation, the minimal widget. This took a
good 2 days of hacking and frustration to get the first prototype
working. And even then, its currently scoped to android 12 until I'm
able to port them. The implementation is still quite rough, but should
become manageable over time. More widgets will come.
2021-08-01 17:32:38 -06:00
OxygenCobalt
2e278aef8a
behavior: add option to pause when a song repeats
Add a new option to pause playback whenever a song loops [e.g while in
LoopMode.TRACK]. This does mean that we can no longer use exoplayer's
native looping system, but it doesn't seem to be that much of an issue.

Resolves #29.
2021-07-22 17:00:51 -06:00
OxygenCobalt
7b5e817d3b
all: cleanup code
Cleanup the codebase in general:
- Remove useless resources
- Upgrade kotlin to 1.5.2
- Upgrade coil to 1.2.2
2021-06-26 19:53:57 -06:00
OxygenCobalt
68bdd0d929
style: add basic black theme
Finally add black theme support to Auxio. This is abit of a janky
implementation since I had to add an extra set of accents, but it
shouldn't be as big of a problem after the styles refactoring.
Support for black android components is not implemented yet, but
will be eventually.
2021-06-11 09:13: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
732b89a0b1
Update dependencies
Update multiple dependencies to newer versions:
RecyclerView 1.2.0 -> 1.3.0
Coil 1.1.1 -> 1.2.0
Media 1.2.1 -> 1.3.0
Navigation 2.3.4 -> 2.3.5
ExoPlayer 2.13.2 -> 2.13.3

This commit also removes all dependence on JCenter. Woohoo.
2021-04-14 11:48:05 -06:00
OxygenCobalt
969f25176a
Update browser opening code
Make the browser opening code actually use the app picker and target browsers specifically.
2021-04-04 12:00:27 -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
53ec1aa8a5
Improve dialog layouts
Improve the dialog layouts so that only the recyclerview scrolls when it cannot fit instead of the entire layout being forced to scroll.
2021-03-26 15:24:04 -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
66685350cb
Update blacklist strings
Update the strings related to the blacklist functionality, also adding german translations.
2021-03-20 17:22:36 -06:00
OxygenCobalt
68887ffb64
Add blacklist restart functionality
When the user selects the "Save" button in the blacklist dialog, the app will now restart to reload the music library with the new directories.
2021-03-15 15:55:52 -06:00
OxygenCobalt
aa0c978a65
Add blacklist UI
Add a UI for the blacklist functionality.
2021-03-13 17:07:42 -07:00
OxygenCobalt
3f0331f1c9
Redo accents
Collapse amber and yellow into a single accent [Yellow], remove the neutral accent due to UI isuses, and darken light-mode accents across the board to be more visible.
2021-02-28 16:07:46 -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
89174b8011
Clean code
Do some codebase cleaning.
2021-02-20 16:35:36 -07:00
OxygenCobalt
e631ddd730
Make save playback state setting public
Make the ability to force-save the playback state public in the settings menu instead of in the debug menu.
2021-02-19 11:19:45 -07:00
OxygenCobalt
e3e0015237
Rewrite loading UI
Completely rewrite the loading UI to be far more understandable.
2021-02-19 09:33:49 -07:00
OxygenCobalt
92e9e3282c
Update documents
Make the description and tagline less needlessly verbose, update info about translations in the FAQ.
2021-02-18 19:20:46 -07:00
OxygenCobalt
1d8aeb16c2
Further streamline coil usage
Simplify how coil is used even further.
2021-02-16 09:27:41 -07:00
OxygenCobalt
118172b7c8
Fix song selection bug
Fix a bug where if a song is selected while shuffling it would not move that song to the beginning of the queue.
2021-02-15 14:27:03 -07:00
OxygenCobalt
6a273ab34d
add hu [Hungarian] translations
Add partial translations for Hungarian.
2021-02-14 17:07:37 -07:00
OxygenCobalt
0d396aaa6b
Change sorting names
Change the names of the sorting modes to "Ascending" and "Descending" to make them more translation-friendly.
2021-02-14 11:41:59 -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
55af5790b8
Reformat code/markdown
Make some changes to the code formatting & the markdown documents
2021-01-30 10:25:51 -07:00
OxygenCobalt
4438fb9970
Simplify base themes
Simplify Theme.Base so that a change in the single Theme.Base will affect all modes regardless of version or theme.
2021-01-30 09:16:27 -07:00
OxygenCobalt
15dbe59db5
Minor fixes
Fix some ordering & display issues. Also slightly increased the play/pause icons size on PlaybackFragment.
2021-01-29 21:21:57 -07:00
OxygenCobalt
b3e5777a47
Reformat translations
Completely refactor translations to be in line with the main strings.xml file.
2021-01-29 20:42:08 -07:00
OxygenCobalt
ee669ce389
Add hi [Hindi] translations
Add some hindi translations, not alot however.
2021-01-27 19:32:29 -07:00
OxygenCobalt
2099453d01
Add el [Greek] translations
Add partial translations for greek
2021-01-26 17:42:31 -07:00
OxygenCobalt
c9d7193bd7
Use integer format strings
Use %d in certain format strings instead of %s
2021-01-25 19:11:04 -07:00
OxygenCobalt
6c671488b0
Add fr [French] translations
Add incomplete french translations, I'm not fluent in this language so other people will likely have to complete these.
2021-01-25 15:46:20 -07:00
OxygenCobalt
35551e3dba
Improve german translations
Fix alot of problems with the german translations
2021-01-25 14:45:21 -07:00
OxygenCobalt
3ab5671319
Add de [German] translations
Add some [Likely broken] german translations using a mix of other sources, my own knowledge, and a english-deutsch dictionary. Ill try to improve these as I go along as theyre the only ones that I'm really able to translate.
2021-01-24 19:13:27 -07:00
OxygenCobalt
554a0f28b2
Fix more playback display issues
Fix some other problems with the way playback is displayed.
2021-01-18 14:03:32 -07:00
OxygenCobalt
7de02af86f
Clean code
Make some minor changes to the codebase.
2021-01-16 09:17:10 -07:00
OxygenCobalt
d86e5f1414
Revert to old playback shuffling system
The new shuffling system wasnt working out the best, so just revert to the previous and fix the issues with it.
2021-01-15 15:01:26 -07:00
OxygenCobalt
eab260a9c1
Add filtering to SearchFragment
Add the ability to filter items to SearchFragment
2021-01-12 16:15:46 -07:00
OxygenCobalt
8f5e6621ad
Create dedicated search tab
Move all searching to a tab of its own.
2021-01-11 20:17:22 -07:00
OxygenCobalt
6627de4b62
Add filtering to library search
Add filtering to the library search bar.
2021-01-07 10:40:10 -07:00
OxygenCobalt
406ba212f8
Update library searching
Reorder how library items are displayed when searching, no longer hiding genres/artists depending on the DisplayMode.
2021-01-07 09:25:58 -07:00
OxygenCobalt
22ab5ad255
Move song search to SongsFragment
Move the ability to search for songs to SongsFragment for better consistency. May switch to a dedicated search tab in the future but I generally like how this looks.
2021-01-06 15:54:33 -07:00
OxygenCobalt
ee1d05d347
Change sorting menu to dedicated action
Make the sorting menu on LibraryFragment an action instead of just some things in the overflow menu to improve consistency and accesibility.
2021-01-03 12:03:35 -07:00
OxygenCobalt
6c37ba7d3e
Optimize quality cover loading
Make the loading process for higher-quality covers far more efficent and elegant compared to the previous method.
2021-01-01 09:41:56 -07:00
OxygenCobalt
bc1992de4e
Remove rewind threshold setting
Remove the ability to customize the rewind threshhold, as I dont think its that useful in the long-term
2020-12-31 20:22:33 -07:00
OxygenCobalt
14fc47913e
Disable disk caching when using MediaStore
Since the MediaStore covers are already cached by the android system, disable the auto-caching that Coil uses to save space.
2020-12-31 19:29:38 -07:00
OxygenCobalt
39ba1c38ec
Add option to not load cover art
Add an option to not load cover art whatsoever.
2020-12-31 19:07:16 -07:00
OxygenCobalt
d7087fe0b1
Add option to ignore MediaStore covers
Add an option to ignore MediaStore covers and to get higher quality covers, at the cost of slower loading times.
2020-12-31 12:17:50 -07:00
OxygenCobalt
fef8d4146e
Add option to play song from genre
Add the option to play a song from a genre.
2020-12-30 12:30:43 -07:00
OxygenCobalt
8fe0734ca1
Refactor menus
Heavily refactor how certain menus are used when it comes to songs.
2020-12-29 14:45:55 -07:00
OxygenCobalt
51a5e9fd63
Refactor genre UI
Fully refactor the genre UI so that it makes more sense.
2020-12-21 20:10:38 -07:00
OxygenCobalt
ed33813112
Add proper README
Add a proper readme and other documents for this project.
2020-12-18 17:15:57 -07:00
OxygenCobalt
0d32ab0f7e
Add about dialog
Add an about dialog with information about this app.
2020-12-18 10:05:31 -07:00
OxygenCobalt
7458588913 Move playback save button to SettingsListFragment
Move the ability to save the current playback state into a dedicated preference in SettingsListFragment.
2020-12-13 16:01:40 -07:00
OxygenCobalt
c7549d6bfa Add queue behavior options
Add options for whether to remember the shuffle toggle & what to do when a playlist ends.
2020-12-13 12:18:43 -07:00
OxygenCobalt
6882722201 Add option to rewind before skipping back
Add an option to rewind before skipping to prevous song, depending on the user-defined threshhold.
2020-12-12 15:45:51 -07:00
OxygenCobalt
aaa1ad1a3d Add song playback mode option
Add an option to customize whether a song should play from its artist, its album, or all songs when selected.
2020-12-12 13:50:46 -07:00
OxygenCobalt
60750d976b Minor Fixes
Fix some issues with playback, album detail, and other things in the app
2020-12-12 11:30:50 -07:00
OxygenCobalt
dbd2c022a0 Improve accents
Add a new "Neutral" accent and improve the yellow accent so that its more visible.
2020-12-05 10:42:22 -07:00
OxygenCobalt
c44003907a Add audio settings
Add some settings to control how audio is being played.
2020-12-05 09:42:09 -07:00
OxygenCobalt
276c099f84 Make accent summary use string resources
Make accent summaries use string resources instead of the names of the colors in resources themselves, in order to make the names translatable.
2020-12-04 20:17:28 -07:00
OxygenCobalt
a49ad5ddad Add library item customization
Add the ability to customize library items.
2020-12-04 19:48:01 -07:00
OxygenCobalt
0a0828684c Add notification settings
Add some notification settings to change the action & the colorization.
2020-12-03 20:22:15 -07:00
OxygenCobalt
51b2749c06 Refactor styles heavily
Move a bunch of UI elements into reusable styles, along with removing literal dimen resources.
2020-12-02 19:03:17 -07:00