Commit graph

2174 commits

Author SHA1 Message Date
OxygenCobalt
d01aa3ea4a Prevent animated icons from animation on startup
Make ImageButtons that use animated icons not animate when the fragment is initially created.
2020-10-18 13:45:13 -06:00
OxygenCobalt
2811c83543 Improve semantics
Remove some useless TODOs, update naming in places.
2020-10-18 09:06:16 -06:00
OxygenCobalt
00667151dc Add shuffle buttons to Detail Fragments
Add shuffle buttons to AlbumDetailFragment & ArtistDetailFragment.
2020-10-15 15:31:06 -06:00
OxygenCobalt
c422071e93 Add shuffling
Add basic shuffling to PlaybackFragment.
2020-10-15 11:32:01 -06:00
OxygenCobalt
339100e436 Improve genre loading
Temporarily remove the ability to play from a genre, update MusicLoader to not load genres/artists simultaniously so that Artist ID's arent completely garbled. Improve PlaybackFragment slightly.
2020-10-15 08:49:32 -06:00
OxygenCobalt
c17666752b Add play buttons to other Detail Fragments
Add play buttons to the ArtistDetailFragment & GenreDetailFragment.
2020-10-14 15:49:49 -06:00
OxygenCobalt
a64627c7cf Add play button to AlbumDetailFragment
Add a play button to AlbumDetailFragment that shows the option to play the album, or pause/resume the playback if the album is already playing.
2020-10-14 10:10:57 -06:00
OxygenCobalt
9f05ce6e52 Add seperate queue types
Add seperate queue types for different contexts, such as playing a song from an album.
2020-10-14 08:09:45 -06:00
OxygenCobalt
96c30b3f93 Change music storage to shared object
Change MusicViewModel from a ViewModel to a shared object, so that it can be used everywhere in the app instead of just in fragments.
2020-10-13 16:44:14 -06:00
OxygenCobalt
3376b57f8e Add skipping
Add the ability to skip fowards/backwards.
2020-10-13 12:40:16 -06:00
OxygenCobalt
d8f40bfd27 Replace ClickListener with lambdas
Replace ClickListener with direct lambdas, so that adapters with multiple datatypes dont have to duplicate ClickListener for each type.
2020-10-13 11:09:48 -06:00
OxygenCobalt
a72ab10007 Improve Progress Bars on Playback Fragments
Change the Progress Bars on PlaybackFragment/CompactFragment to reflect the total seconds in a song, instead of the percentage of completion.
2020-10-12 19:36:32 -06:00
OxygenCobalt
3bafc17d0c Add durations to PlaybackFragment
Add the song duration & the current duration to PlaybackFragment, update the SeekBar in PlaybackFragment to reflect those durations.
2020-10-12 16:13:15 -06:00
OxygenCobalt
09d4e107e0 Refactor dimens
Refactor the dimen naming/use across the app.
2020-10-12 11:57:24 -06:00
OxygenCobalt
a2409a5718 Improve PlaybackFragment nav animation
Change PlaybackFragment's open/closing animation to slide over a stationary MainFragment, instead of MainFragment also sliding.
2020-10-12 07:57:14 -06:00
OxygenCobalt
4ad86593a6 Make PlaybackFragment full-screen
Change PlaybackFragment to a full-screen layout w/a slide animation.
2020-10-11 19:01:06 -06:00
OxygenCobalt
d8042ef159 Fix theming issues w/PlaybackFragment
Fix some theme issues with PlaybackFragment
2020-10-11 16:46:53 -06:00
OxygenCobalt
f884adc39d Use animated icons for play/pause
Use animated play/pause icons from Noice [https://github.com/ashutoshgngwr/noice] on the playback fragments.
2020-10-11 11:24:36 -06:00
OxygenCobalt
eb6839b10c Add play/pause controls
Add play/pause controls to the playback fragments.
2020-10-11 11:03:06 -06:00
OxygenCobalt
0c069dfbac Add specific playback fragment
Add a Playback Fragment that shows more information about what is currently playing.
2020-10-09 18:57:28 -06:00
OxygenCobalt
59c087d653 Update semantics slightly
Change some naming/structure somewhat, and move all TODOs from AuxioTODO to the project itself.
2020-10-09 13:57:36 -06:00
OxygenCobalt
a72cb48c71 Add playback fragment
Add a fragment to show songs that are currently being played.
2020-10-05 15:54:53 -06:00
OxygenCobalt
21ff93d5f0 Fix bug with app restart
Fix bug where the app would be unaware if MusicViewModel was cleared due to it being suspended in the background.
2020-10-05 09:26:22 -06:00
OxygenCobalt
7928347f9b Standardize fragment creation
Standardize the code layout for fragment creation.
2020-10-04 10:58:05 -06:00
OxygenCobalt
711d9a0b00 Add genre support to search
Add the ability for genres to show up in search, as long as the library is currently displaying them.
2020-10-04 10:22:52 -06:00
OxygenCobalt
127f700700 Change show constants to dedicated enum
Move the ShowMode constants to a dedicated ShowMode enum in /recycler/.
2020-10-04 08:36:21 -06:00
OxygenCobalt
7abb888108 Make shared ViewHolders used defined types
Make the shared ViewHolders use their respective types instead of BaseModel.
2020-10-03 19:44:35 -06:00
OxygenCobalt
2126b4f78f Update ViewHolder structure
Move all shared viewholders to /recycler/, and change structure of shared viewholders to prohibit direct instantiation.
2020-10-03 19:29:03 -06:00
OxygenCobalt
45f411fdd7 Change search to show all music items
Change the library search to show artists, albums, and songs.
2020-10-03 18:20:37 -06:00
OxygenCobalt
b814ac613d Fix more navigation bugs
Remove the clicklistener system I added before, as it turns out fragments arent immediately recreated if you navigate back. Fun.
2020-10-03 10:08:04 -06:00
OxygenCobalt
69c508caec Add search to LibraryFragment
Add searching to LibraryFragment.
2020-10-03 09:14:49 -06:00
OxygenCobalt
3a44ce7e43 Make ClickListener single-use
Change the RecyclerView click listener to only be able to be called once in order to eliminate the ViewModel isAlreadyNavigating variables.
2020-10-02 12:30:23 -06:00
OxygenCobalt
8b0c2a7d2e Add sorted genres/albums to LibraryFragment
Re-add the ability to show [sortable] Genres/Albums in LibraryFragment. Again.
2020-09-28 19:42:31 -06:00
OxygenCobalt
08f8e50bbf Highlight sort menu item when selected
Highlight the menu item for the currently shown order when its selected.
2020-09-28 18:11:56 -06:00
OxygenCobalt
37c52d9e5c Add sorting to LibraryFragment
Add basic sorting to LibraryFragment.
2020-09-28 15:37:41 -06:00
OxygenCobalt
aad42b5201 Fix album bugs
Fix bugs with the album items & detail fragments.
2020-09-27 17:03:35 -06:00
OxygenCobalt
af4c32eb5b Update stored DetailViewModel items
Change the stored items in DetailViewModel to LiveData. Remove the need to reset the stored items when a fragment is destroyed.
2020-09-27 16:16:32 -06:00
OxygenCobalt
d9cf3772e6 Update naming
Update naming on layout files & other code.
2020-09-27 15:26:15 -06:00
OxygenCobalt
f866e77ee4 Add parent ViewHolder
Add an base ViewHolder class so that there isnt as much repeated code.
2020-09-27 11:13:24 -06:00
OxygenCobalt
d99347722e Make music models inherit base class
Make the music models inherit a base data class that contains the ID & name to reduce redundant code.
2020-09-27 10:26:14 -06:00
OxygenCobalt
9ffc194c4d Add DetailFragment for genres
Add a DetailFragment for genres.
2020-09-27 09:47:53 -06:00
OxygenCobalt
21626d8d74 Add genres to LibraryFragment
Add a genre mode to LibraryFragment.
2020-09-27 08:24:11 -06:00
OxygenCobalt
5191220bc0 Update album items/details
Update the ArtistDetailFragment album item to show the year instead of song count. Update AlbumDetailFragment to show year, song count, and total duration.
2020-09-26 13:57:15 -06:00
OxygenCobalt
f754a82ba7 Enable albums on LibraryFragment
Readd album support to LibraryFragment.
2020-09-26 11:34:39 -06:00
OxygenCobalt
fddf5e4472 Remove excess zeroes from durations
Remove excess zeroes from the formatted durations.
2020-09-26 10:58:30 -06:00
OxygenCobalt
531825465f Add back navigation to detail fragments
Add backwards navigation to the DetailFragment toolbars.
2020-09-26 09:59:18 -06:00
OxygenCobalt
2a6fd45b8b Disable SortButton when theres one item
Disable the SortButton when theres only one item in the RecyclerView.
2020-09-24 17:08:41 -06:00
OxygenCobalt
35814c5b40 Add sorting to AlbumDetailFragment
Add sorting to AlbumDetailFragment. Ignore the other commit.
2020-09-24 16:31:07 -06:00
OxygenCobalt
35e186d8a9 Remove sorting modes
Remove the sorting modes from the detail fragments. They are somewhat useless there and would be better suited for LibraryFragment.
2020-09-24 16:00:47 -06:00
OxygenCobalt
ac3b3e7903 Fix sorting modes
Change the NUMERIC_DOWN sorting mode to actually sort by decending order, not ascending order.
2020-09-24 07:00:46 -06:00
OxygenCobalt
414e85153f Add sorting
Add Alphabetical/Numeric sorting to ArtistDetailFragment.
2020-09-23 20:32:42 -06:00
OxygenCobalt
b80a3596b8 Store references to items in DetailViewModel
Store references to the artist & album inside DetailViewModel to prevent an artist/album search on every re-creation.
2020-09-23 15:42:06 -06:00
OxygenCobalt
f5d007267d Remove sub-item sorting
Remove the sorting of the music models child items, its mostly redundant for now.
2020-09-22 20:18:18 -06:00
OxygenCobalt
6b56ce4ae8 Change parent artist navigation
Change the parent artist navigation so that its only enabled when an album is selected from LibraryFragment, otherwise dont enable it, as the user can just navigate up to see the parent artist.
2020-09-20 10:31:42 -06:00
OxygenCobalt
19a9ab4098 Add backwards navigation from album to artist
Add a way for AlbumDetailFragment to return to ArtistDetailFragment.
2020-09-20 09:51:12 -06:00
OxygenCobalt
a81860bed2 Fix bug w/Artist Images
Fix a bug where the app will crash if it attempts to load the artist image for an artist that has no albums.
2020-09-19 18:02:11 -06:00
OxygenCobalt
309ed2dcff Update track number sizing
Use AppCompatTextView on the track number so that track numbers over 100 are not cut off. Sort of, track numbers over 100000 will be cut off, but I bet that will be rare in normal use.
2020-09-19 16:44:00 -06:00
OxygenCobalt
4d47dcd464 Update Accessibility
Update the content descriptions on the ImageViews.
2020-09-18 16:30:04 -06:00
OxygenCobalt
602cc2153f Fix bugs w/music loading
Fix bugs with how genres/album names are displayed.
2020-09-17 19:55:55 -06:00
OxygenCobalt
ec45a020a5 Add song list to AlbumDetailFragment
Add a list of the albums songs to AlbumDetailFragment.
2020-09-17 15:20:41 -06:00
OxygenCobalt
20047313fc Add album detail fragment
Add a fragment for album details.
2020-09-17 14:52:40 -06:00
OxygenCobalt
ebc5aac011 Update resources
Update layouts to not assign a primary color through the tools namespace anymore, also bring back the light theme, which apparently disappeared at some point.
2020-09-16 07:00:55 -06:00
OxygenCobalt
f3e47414b0 Add header to artist albums
Add a header to the album RecyclerView in ArtistDetailFragment.
2020-09-14 18:13:33 -06:00
OxygenCobalt
47aec7f18a Add album list to ArtistDetailFragment
Add a list of the artists albums to ArtistDetailFragment.
2020-09-14 16:22:24 -06:00
OxygenCobalt
0e6750b19c Add more details to ArtistDetailFragment
Add the Artist Name/Genre/Counts to ArtistDetailFragment.
2020-09-14 15:06:10 -06:00
OxygenCobalt
26b53bd502 Add artist image to DetailFragment
Add the artist image to the DetailFragment. Still considering what I want to do design-wise with this.
2020-09-13 19:32:33 -06:00
OxygenCobalt
860033ac14 Remove generic recycler module
Remove the generic RecyclerView module and put its contents into other classes.
2020-09-11 10:44:41 -06:00
OxygenCobalt
02e803746b Revert to normal navigation structure
Revert to a saner navigation structure for the time being. Nested nav is interesting but I dont want to deal with the bugs at this moment.
2020-09-11 10:23:32 -06:00
OxygenCobalt
5814907798 Change LibraryFragment to Nav Fragment
Change LibraryFragment to extend NavHostFragment, so that the child fragments arent as extensively nested as they were before.
2020-09-10 15:53:03 -06:00
OxygenCobalt
d7b9ec4281 Fix navigation bug
Fix a bug where pressing on multiple library items at once would cause a crash.
2020-09-09 19:15:39 -06:00
OxygenCobalt
f7e25d3fa8 Add navigation to LibraryFragment
Add navigiation to LibraryFragment. This navigation is nested so that one can still move through the ViewPager, which will certainly have no problems later on. /s
2020-09-09 19:01:28 -06:00
OxygenCobalt
49248f98d9 Fix LoadingFragment bug
Fix a bug where LoadingFragment would be minified out of existence.
2020-09-09 18:54:26 -06:00
OxygenCobalt
fe7557addb Refactor RecyclerView files
Move Fragment-Specific adapters to their own files, keep the viewholders in the generic recycler package.
2020-09-09 16:58:53 -06:00
OxygenCobalt
4e57a94d3e Fix bugs/code style
Fix a recreation bug where MainActivity wont hide LoadingFragment, Fix a bug where artist click listeners wouldnt work, slightly tweak code here and there.
2020-09-08 19:38:44 -06:00
OxygenCobalt
4b50b80af4 Minor fragment/coil fixes
Update LoadingFragment path to prevent a crash on startup. Also switch how CoilUtils handles ArtistImageFetcher so that it doesnt cause a memory leak.
2020-09-07 16:58:29 -06:00
OxygenCobalt
031815d746 Heavily refactor Library Management
Remove MusicRepository/All Library models and replace it with a single shared ViewModel, Move MainFragment into MainActivity, and remove the LoadingFragment -> MainFragment navigation path.
2020-09-07 16:16:08 -06:00
OxygenCobalt
e9ee9d1ef1 Standardize coil usage
Completely switch over to use ImageRequest.Builder instead of the load extension function, spin off the Artist Image fetcher & Image BindingAdapters to a seperate module.
2020-09-07 10:52:07 -06:00
OxygenCobalt
a93c0f4af3 Add artist images
Add artist images back, now with proper mosaics.
2020-09-07 09:34:19 -06:00
OxygenCobalt
016d664e51 Update Music Loading
Slightly tweak the music models, use plural strings when formatting args, and properly sort the music items after everything else is sorted.
2020-09-06 18:52:20 -06:00
OxygenCobalt
565d1efa96 Minor music model changes
Move the size recalculations/child item sorting to a method called finalize() in artists, albums, and genres. Also remove the artist images for now, Ill figure out a good way to bring them back.
2020-09-04 18:28:11 -06:00
OxygenCobalt
7a2c779fe2 Add Artist item
Add the Artist item and switch LibraryFragment over to it.
2020-09-04 17:13:02 -06:00
OxygenCobalt
139cf3c089 Add basic transitions/animations
Add animations to all LoadingFragment & a transition from LoadingFragment to MainFragment.
2020-09-04 14:39:51 -06:00
OxygenCobalt
e59009a0fa Update gradle build settings
Update build settings to remove useless libraries [AppCompat], add useful libraries [LeakCanary], and also enable minifying on the release build [Which hadnt been enabled before somehow].
2020-09-04 12:19:36 -06:00
OxygenCobalt
4b3285cef0 Change RecyclerView divider color
Change the RecyclerView divider color to not require any transparency changes through ThemeUtils.
2020-09-03 19:25:11 -06:00
OxygenCobalt
d017774cef Fix bug with permission checking
Fix a bug with the permission checking where the MusicRepository would return NO_PERMS to the LoadingFragment faster than the creation of the view, causing the error message to never display. Permission checks are now handled by LoadingFragment instead.
2020-09-03 18:15:44 -06:00
OxygenCobalt
ce687cd515 Change selection ripple to accent color
Change the selection ripple so that it matches the chosen accent color.
2020-09-03 07:50:17 -06:00
OxygenCobalt
5827ca492c Add click listeners to Song/Album items
Add the ripple selection effect & the click listener to the song and album items.
2020-09-02 19:50:47 -06:00
OxygenCobalt
af26aed735 Add permission dialog for file reading
Add a permission dialog for the apps READ_EXTERNAL_STORAGE permission.
2020-09-02 18:00:52 -06:00
OxygenCobalt
5e6917f11c Update LoadingFragment layout
Update the layout of LoadingFragment with a new error icon/text style.
2020-09-02 16:50:33 -06:00
OxygenCobalt
8f850f2288 Add theming system
Standardize theming across the app into ThemeUtils.
2020-09-01 07:37:49 -06:00
OxygenCobalt
d5e6b813a9 Add bottom menu
Add a tab menu on the bottom of the screen that can switch between all fragments on the ViewPager.
2020-08-31 18:55:25 -06:00
OxygenCobalt
736e335ccf Add Genre sorting & better placeholders
* Add Genre sorting to MusicSorter.

* Revamp placeholders so that theyre assigned when loading instead of using a BindingAdapter.
2020-08-31 16:13:30 -06:00
OxygenCobalt
d158fc5786 Add proper placeholders
Add placeholders for album art, artist name, and album name if there arent any from the file itself.
2020-08-31 14:47:06 -06:00
OxygenCobalt
16038567dd Add song durations
Add song durations to the SongItem layout
2020-08-31 13:59:18 -06:00
OxygenCobalt
dc45e2973a Add ellipsizing to song/album items
Add ellipsizing to the song and album items, also modify their inflation so that the items take up the entire screen width.
2020-08-31 07:53:41 -06:00
OxygenCobalt
c8f7419833 Update RecyclerView item layouts
Update the song/album items to have the cover art be loaded by a BindingAdapter, and remove unnecessary chains.
2020-08-29 09:05:00 -06:00
OxygenCobalt
53710ca3f0 Remove useless ListAdapters
Remove unnecessary ListAdapter implementation from AlbumDataAdapter/SongDataAdapter and replace it with a normal adapter.
2020-08-27 17:27:58 -06:00
OxygenCobalt
eafc89a294 Fix RTL constraints for Album/Song items
Fix incorrect constraints when viewing an album or song item in Right-To-Left mode.
2020-08-27 07:49:32 -06:00
OxygenCobalt
c9875a03a9 Add All Songs fragment
Add an All Songs fragment, also modify the ViewPager structure.
2020-08-26 17:55:26 -06:00
OxygenCobalt
c109c3f359 Add ViewPager
Add a ViewPager, currently it has no purpose but it will eventually.
2020-08-26 16:17:04 -06:00
OxygenCobalt
d9dda08731 Move album art loading to Coil
Move the album art loading to Coil to decrease initial loading times.
2020-08-25 18:37:00 -06:00
OxygenCobalt
89398d9f4e Add RecyclerView dividers
Add divider decorations to the RecyclerView
2020-08-25 18:03:58 -06:00
OxygenCobalt
a6e8007972 Update styling/colors
Update the styling and add some colors that will be used as the base theme set in the future.
2020-08-25 17:56:19 -06:00
OxygenCobalt
f511cfd161 Add song count/Styling changes
Add a song count to the album item, along with updating the font once again to differentiate myself from Music Player GO.
2020-08-24 19:01:28 -06:00
OxygenCobalt
1e4f80b779 Change app style
Update the app style by modifying some colors & using Source Code Pro. Yes, this looks like Music Player GO but Ill probably make some more changes in the future.
2020-08-24 17:33:02 -06:00
OxygenCobalt
5662725c72 Add cover art to album list item
Add cover art to the album list item.
2020-08-24 16:46:40 -06:00
OxygenCobalt
acef9550fa Move LiveData away from MusicRepository
Change the LiveData in MusicRepository to just be a plain list, as MusicRepository isnt Lifecycle-Aware.
2020-08-24 15:07:19 -06:00
OxygenCobalt
c04a90c3fa Add RecyclerView to LibraryFragment
Add a basic RecyclerView to LibraryFragment that shows every album.
2020-08-24 14:53:13 -06:00
OxygenCobalt
37b071de0d Add album art loading
Add album art loading by decoding the album art URI into bitmaps for each album. I may use glide in the future if just using a bitmap isnt enough, but currently this works.
2020-08-21 17:47:56 -06:00
OxygenCobalt
f07542fd3a Minor Logging/Structure changes
Switch logging to templates instead of concat, move MusicLoader/MusicSorter to their own package, rename GenreCompat to MusicUtils
2020-08-21 14:53:00 -06:00
OxygenCobalt
ef9d097dc3 Minor nullability/Logging changes
Remove nullables from all the music models, just so that theyre easier to work with, also update Logging at places.
2020-08-21 12:17:15 -06:00
OxygenCobalt
b1be2802cf Rewrite Music Loading a g a i n
Rewrite the music loading for [hopefully] the final time, now with Artists/Albums/Media instead of just AudioColumns, improved genre loading, and easier to implement album-art. Hopefully this system will stick.
2020-08-21 11:51:07 -06:00
OxygenCobalt
160013bbe9 Add [Very hacky] genre support
Add a way to load genres! Except it creates duplicates. And requires creating like 20 music cursors. At least it works?
2020-08-21 09:43:22 -06:00
OxygenCobalt
f8ae5d57a5 Remove cover/genre loading
Remove the cover loading [For now] and permanently remove the genre loading, as both take too long to do in the loading screen. Will re-add album loading once more UI is added.
2020-08-19 16:38:43 -06:00
OxygenCobalt
6508280900 Break up MusicRepository into seperate files
Remove the loading/sorting functions from MusicRepository and place them into their own files.
2020-08-19 11:14:20 -06:00
OxygenCobalt
24452e8fa4 Add Loading fallback states
Add fallback states for when there is no music & if the load fails, along with a retry button if that happens.
2020-08-19 10:10:36 -06:00
OxygenCobalt
1b21552576 Add Loading Screen
Add a basic loading screen that loads the music in the background before starting the app.
2020-08-19 09:28:15 -06:00
OxygenCobalt
3134e313a3 Move MusicRepository initialization to coroutine
Move the init call to MusicRepostiory to a coroutine so that it doesnt stop the UI thread.
2020-08-18 15:33:59 -06:00
OxygenCobalt
21a110edb0 Heavily rewrite/refactor MusicRepository
Rewrite MusicRepository to perform all metadata calculations by themselves, also adding support for Genre loading & Album Art.
2020-08-18 15:22:12 -06:00
OxygenCobalt
a8b368b577 Add music sorting
Change MusicRepository so that all music is sorted into Artist/Album/Song lists.
2020-08-18 10:37:02 -06:00
OxygenCobalt
22e8049d6b Add Music Loading
Add a Music Repository/Loader, along with a boilerplate ViewModel for LibraryFragment.
2020-08-17 15:21:14 -06:00
OxygenCobalt
9961b87f47 Refactor Now Playing into Library
Turns out a dedicated Now Playing screen wont look that good, so refactor that into the Library screen. Also replace the ActionBar with a Toolbar and update the theming a bit.
2020-08-17 11:28:23 -06:00
OxygenCobalt
7c447e0296 Add basic fragment structure
Add the boilerplate fragment code.
2020-08-17 10:32:28 -06:00
OxygenCobalt
675f4af41b Add android boilerplate code
Add the Gradle/Android project structure and the boilerplate code.
2020-08-17 09:52:52 -06:00