From c35e1746778afbd682f66e2349690de1ee215261 Mon Sep 17 00:00:00 2001 From: No Name Pro Date: Fri, 17 Jul 2020 16:32:06 +0200 Subject: [PATCH 1/7] Readme: Twitter link to follow image --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 24f720ddc..84d54d1ef 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [![Generic badge](https://img.shields.io/badge/minSdkVersion-21-green.svg)](https://github.com/h4h13/RetroMusicPlayer) [![Generic badge](https://img.shields.io/badge/Download-Google_Play-green.svg)](https://play.google.com/store/apps/details?id=code.name.monkey.retromusic&hl=en_IN) [![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://github.com/h4h13/RetroMusicPlayer/blob/master/LICENSE.txt) -![Twitter Follow](https://img.shields.io/twitter/follow/retromusicapp?style=social) +[![Twitter Follow](https://img.shields.io/twitter/follow/retromusicapp?style=social)](https://twitter.com/retromusicapp) ## 🆕 Material Design music player for Android music lovers ## Screenshots From 93b94823b324aa249613c4443a82f5d0ae3fb579 Mon Sep 17 00:00:00 2001 From: Milind Goel <45682747+milindgoel15@users.noreply.github.com> Date: Thu, 23 Jul 2020 11:05:51 +0530 Subject: [PATCH 2/7] Update FAQ --- FAQ.md | 100 +++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 86 insertions(+), 14 deletions(-) diff --git a/FAQ.md b/FAQ.md index 56599cc44..2ac44e716 100644 --- a/FAQ.md +++ b/FAQ.md @@ -1,11 +1,18 @@ -### Q: How do I get the beta version of Retro Music? +#### Q: How do I get the beta version of Retro Music? You can opt-in for the beta build by clicking on this link: https://play.google.com/apps/testing/code.name.monkey.retromusic -### Q: How do I use offline synced lyrics? + +#### Q: How to restore my purchases? +Make sure to switch and use account in the Play Store app through which you purchased before installing Retro music. The account used to install the app is also used to purchase/restore the pro license. + +If you already installed, remove all other accounts except the one with which you purchased premium. Then restore the purchase. + + +#### Q: How do I use offline synced lyrics? There are two methods for how to get offline synced lyrics. #### Method 1:- -##### STEP 1: +##### STEP 1: Find the time stamped lyrics for your songs which don't have lyrics already. A time stamped lyrics looks like this, "[00:04:02] Some lyrics text" for example. ##### STEP 2: Copy these time stamped lyrics. @@ -26,55 +33,120 @@ Now you have to rename the file you created in this way: - If you want to skip to particular time stamp, simply scroll to the time stamp from where you want to start from and a 'Play' icon will appear left to the particular stamp. Tap on play button to play from there. -### Q: Why isn't the artist's image downloading? -Last.fm has disabled the download of artist's images for the time being, whether functionality for this will be restored in future is uncertain. +#### Q: Why isn't the artist's image downloading? +Last.fm has disabled the download of artist's images for the time being, whether functionality for this will be restored in future is uncertain. So we have moved to deezer API for artist images which have very less artists in their database and you might not able to see covers on every artist profiles. -### Q: How do I change the theme? + +#### Q: How do I change the theme? Settings -> Look and feel -> Select your theme. -### Q: Why aren't last added songs showing? + +#### Q: Equailizer is very laggy and unstable or I am getting "No equalizer found" error. why? +The Retro music in-built equalizer was removed updates ago so the only equalizer you will have by your OEM or android which aren't made by us and have no control over them. So you can report those issues to your OEM so that they can provide a fix in next updates. + +If you are seeing "No Equalizer Found" in your device, this means your device doesn't have stock equalizer MusicFx Equalizer. You can try using this one. Its made by AEX ROM developers. + +https://drive.google.com/file/d/1_1bpsn6roeEyElGKikbU39lVKUH8O3xp/view?usp=drivesdk + + +#### Q: Why aren't last added songs showing? Settings -> Other -> Last added playlist interval -> Select an option from the list. -### Q: How do I enable fullscreen lockscreen controls? + +#### Q: How do I enable fullscreen lockscreen controls? Settings -> Personalize -> Fullscreen controls -> Enable (this will only be visible when songs are playing from Retro Music). -### Q: Why are gallery or random pictures showing up as album art? + +#### Q: Why are gallery or random pictures showing up as album art? Settings -> Images -> Ignore media store covers -> Enable -### Q: Which file types are supported? + +#### Q: Which file types are supported? Retro Music uses the native media player that comes with your Android phone, so as long as a file type is supported by your phone, it's supported by Retro Music. -### Q: Why is my device slowing down when I'm using the app? + +#### Q: Why is my device slowing down when I'm using the app? Retro Music is image intensive, it keeps images in the cache for quick loading. -### Q: The title "Retro Music" is showing on the top of the app, how can i fix this? + +#### Q: The title "Retro Music" is showing on the top of the app, how can i fix this? Clear the app's cache and data. + #### Q: My app is crashing, how do i fix this? (Sorry, settings have changed internally) -Reinstalling the app should fix this issue. +Please try clear data of the app. If it doesn't work, reinstalling fresh from play store should help. + #### Q: Why has all the text gone white/dissapeared? Change the theme to Black or Dark and change it back to what you had before. + #### Q: Why some of my songs are not showing in my library? Try checking up if those songs are not less than 30 seconds, if so head to settings -> other -> filter song duration. Put this to zero and see the songs should start appearimg in the library. + If this doesn't work out for you, re-scanning the media folder should help and subsquently rebooting the device to refresh media store. + At last resort, If nothing worked and your audio files are stored in SD card. Try moving them to internal memory then back to SD card. + +#### Q: Why some of my songs are not showing in my library? +1. Try checking up if those songs are not less than 30 seconds, if so head to settings -> other -> filter song duration. Put this to zero and see the songs should start appearimg in the library. + +2. If this doesn't work out for you, re-scanning the media folder should help and subsquently rebooting the device to refresh media store. + +3. At last resort, If nothing worked and your audio files are stored in SD card. Try moving them to internal memory then back to SD card. + + #### Q: Why my playlist/playlist songs keep disappearing? Playlist/Playlist songs disappearing is based on android media store system. Save those playlist as file(Tap on three dot menu next to available playlist and save as file) and it should get fixed. + #### Q: Why does my library shows song files twice or no song at all? If you are seeing duplication of songs in the library or no songs at all, then it's because of Media Store issue which got affected by some other app. + To fix this: + • Head to your device settings + • Open up "Apps & notifications" (This name depends from ROM to ROM) + • Find 'Media storage' app and clear storage (both data and cache) of it. + • Then open Retro Music app and manually scan your music from your storage. + • Reboot the device to refresh media store (Not sure if this is necessary) NOTE: Don't panic when you will open Retro Music and see "Zero" songs there in the library. It's because you cleared Media Store which is responsible for recognising files on your device. + + +#### Q: I can't find folder menu anymore after latest update? +Head to settings -> personalise. And select folders from "library categories". If there is option of folders, tap on reset and select folders. + + +#### Q: After updating the app to latest version, font got removed. Why? +Retro Music's font have now been replaced with system font now, which means the default font your system uses will be used by Retro too. It fixes all font related issues you used to face/are facing in the app. + +If you think the font looks ugly, then you just need to change the default font from your Android settings (or use any Magisk module). If you can't, there's nothing we can do about it. + + +#### Q: How to export playlist: +In your built-in music player, there should be an option to save those playlist as file. Save them and import from file manager by opening it into retro music. + +Note that those playlist must be of your offline music only since retro music is offline music player not an online music player. So if your playlist are of online music, it can't be opened on other offline players nor can be exported + + +#### Q: How to restore/import playlist: +Retro Music will automatically detect any playlist file when that playlist file is stored in InternalStorage/Playlist. However, if it doesn't, just open "file manager" and open that playlist file with Retro Music. + +For restoring playlists, the location of songs must be same in both Playlist file and in your storage. For example, your music is in "Internalstorage/Music" and playlist file has songs location "Internalstorage/Songs". Then it will not going to work since both these location are different. + + +#### Q: Adding songs to playlist or marking them as favourite are making app crash. Why? +It's a known issue with only android 10 with its media store API when songs are in SD card due to introduction of Scoped Storage by Google. The issue have been created on Google Issue Tracker by many users. Many other players which doesn't have this issue are using a custom database for storing playlist. We will soon be implementing a custom database for playlist to fix this issue! + +Workaround: You can move all songs to internal storage to fix the issue. + +ISSUE link: https://issuetracker.google.com/issues/147619577 From 373befcd835fd39cc123c625c9e2e67eff97bda1 Mon Sep 17 00:00:00 2001 From: Hemanth S Date: Fri, 24 Jul 2020 23:58:15 +0530 Subject: [PATCH 3/7] Added navigation graph for settings --- app/build.gradle | 8 +- .../retromusic/activities/MainActivity.kt | 2 +- .../retromusic/activities/SettingsActivity.kt | 6 - .../activities/albums/AlbumDetailsActivity.kt | 43 +++--- .../albums/AlbumDetailsViewModel.kt | 8 +- .../artists/ArtistDetailActivity.kt | 51 ++++--- .../retromusic/adapter/album/AlbumAdapter.kt | 5 - .../adapter/album/AlbumCoverPagerAdapter.kt | 8 +- .../retromusic/extensions/FragmentExt.kt | 18 ++- .../retromusic/fragments/LibraryViewModel.kt | 14 +- .../fragments/albums/AlbumsFragment.kt | 2 +- .../fragments/artists/ArtistsFragment.kt | 4 +- .../FoldersFragment.java | 2 +- .../fragments/genres/GenresFragment.kt | 4 +- .../fragments/home/BannerHomeFragment.kt | 2 +- .../retromusic/fragments/main/MainFragment.kt | 18 +++ .../fragments/player/MainPlayerFragment.kt | 16 +++ .../player/PlayerAlbumCoverFragment.kt | 2 +- .../fragments/playlists/PlaylistsFragment.kt | 2 +- .../settings/MainSettingsFragment.kt | 30 ++-- .../fragments/songs/SongsFragment.kt | 7 +- .../retromusic/service/MusicService.java | 1 + .../monkey/retromusic/util/PreferenceUtil.kt | 2 +- .../res/anim/retro_fragment_close_enter.xml | 40 ++++++ .../res/anim/retro_fragment_close_exit.xml | 41 ++++++ .../res/anim/retro_fragment_fade_enter.xml | 20 +++ .../res/anim/retro_fragment_fade_exit.xml | 22 +++ .../retro_fragment_fast_out_extra_slow_in.xml | 18 +++ .../res/anim/retro_fragment_open_enter.xml | 41 ++++++ .../res/anim/retro_fragment_open_exit.xml | 41 ++++++ app/src/main/res/layout/activity_settings.xml | 7 +- app/src/main/res/layout/fragment_main.xml | 63 +++++++++ .../main/res/layout/fragment_main_player.xml | 6 + .../res/layout/sliding_music_panel_layout.xml | 4 +- app/src/main/res/navigation/now_playing.xml | 131 ++++++++++++++++++ app/src/main/res/navigation/retro_graph.xml | 33 +++++ .../main/res/navigation/settings_graph.xml | 88 ++++++++++++ .../appthemehelper/util/MaterialUtil.kt | 15 ++ build.gradle | 2 + 39 files changed, 713 insertions(+), 114 deletions(-) rename app/src/main/java/code/name/monkey/retromusic/fragments/{mainactivity => folder}/FoldersFragment.java (99%) create mode 100644 app/src/main/java/code/name/monkey/retromusic/fragments/main/MainFragment.kt create mode 100644 app/src/main/java/code/name/monkey/retromusic/fragments/player/MainPlayerFragment.kt create mode 100644 app/src/main/res/anim/retro_fragment_close_enter.xml create mode 100644 app/src/main/res/anim/retro_fragment_close_exit.xml create mode 100644 app/src/main/res/anim/retro_fragment_fade_enter.xml create mode 100644 app/src/main/res/anim/retro_fragment_fade_exit.xml create mode 100644 app/src/main/res/anim/retro_fragment_fast_out_extra_slow_in.xml create mode 100644 app/src/main/res/anim/retro_fragment_open_enter.xml create mode 100644 app/src/main/res/anim/retro_fragment_open_exit.xml create mode 100644 app/src/main/res/layout/fragment_main.xml create mode 100644 app/src/main/res/layout/fragment_main_player.xml create mode 100644 app/src/main/res/navigation/now_playing.xml create mode 100644 app/src/main/res/navigation/retro_graph.xml create mode 100644 app/src/main/res/navigation/settings_graph.xml diff --git a/app/build.gradle b/app/build.gradle index fbd8bd3ad..b6b12352f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -3,6 +3,7 @@ apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' apply plugin: 'kotlin-kapt' apply plugin: "ru.cleverpumpkin.proguard-dictionaries-generator" +apply plugin: "androidx.navigation.safeargs.kotlin" proguardDictionaries { dictionaryNames = [ @@ -111,7 +112,7 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.annotation:annotation:1.1.0' implementation 'androidx.preference:preference-ktx:1.1.1' - implementation 'androidx.core:core-ktx:1.3.0' + implementation 'androidx.core:core-ktx:1.3.1' implementation 'androidx.fragment:fragment-ktx:1.2.5' implementation 'androidx.palette:palette-ktx:1.0.0' @@ -168,4 +169,9 @@ dependencies { implementation "org.koin:koin-core:$koin_version" implementation "org.koin:koin-android:$koin_version" implementation "org.koin:koin-android-viewmodel:$koin_version" + + def nav_version = "2.3.0" + implementation "androidx.navigation:navigation-fragment-ktx:$nav_version" + implementation "androidx.navigation:navigation-ui-ktx:$nav_version" + } \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt index e5c91ae70..931703ca3 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt @@ -24,9 +24,9 @@ import code.name.monkey.retromusic.fragments.LibraryViewModel import code.name.monkey.retromusic.fragments.albums.AlbumsFragment import code.name.monkey.retromusic.fragments.artists.ArtistsFragment import code.name.monkey.retromusic.fragments.base.AbsLibraryPagerRecyclerViewCustomGridSizeFragment +import code.name.monkey.retromusic.fragments.folder.FoldersFragment import code.name.monkey.retromusic.fragments.genres.GenresFragment import code.name.monkey.retromusic.fragments.home.BannerHomeFragment -import code.name.monkey.retromusic.fragments.mainactivity.FoldersFragment import code.name.monkey.retromusic.fragments.playlists.PlaylistsFragment import code.name.monkey.retromusic.fragments.queue.PlayingQueueFragment import code.name.monkey.retromusic.fragments.songs.SongsFragment diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/SettingsActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/SettingsActivity.kt index 241d59c4b..bda70239f 100755 --- a/app/src/main/java/code/name/monkey/retromusic/activities/SettingsActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/SettingsActivity.kt @@ -10,7 +10,6 @@ import code.name.monkey.retromusic.R import code.name.monkey.retromusic.activities.base.AbsBaseActivity import code.name.monkey.retromusic.appshortcuts.DynamicShortcutManager import code.name.monkey.retromusic.extensions.applyToolbar -import code.name.monkey.retromusic.fragments.settings.MainSettingsFragment import com.afollestad.materialdialogs.color.ColorChooserDialog import kotlinx.android.synthetic.main.activity_settings.* @@ -26,11 +25,6 @@ class SettingsActivity : AbsBaseActivity(), ColorChooserDialog.ColorCallback { setNavigationbarColorAuto() setLightNavigationBar(true) setupToolbar() - - if (savedInstanceState == null) { - fragmentManager.beginTransaction().replace(R.id.contentFrame, MainSettingsFragment()) - .commit() - } } private fun setupToolbar() { diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/albums/AlbumDetailsActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/albums/AlbumDetailsActivity.kt index 7ff9bff1d..873a35da3 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/albums/AlbumDetailsActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/albums/AlbumDetailsActivity.kt @@ -8,7 +8,6 @@ import android.view.Menu import android.view.MenuItem import android.view.SubMenu import android.view.View -import android.widget.ImageView import androidx.core.app.ActivityCompat import androidx.recyclerview.widget.DefaultItemAnimator import androidx.recyclerview.widget.GridLayoutManager @@ -25,7 +24,6 @@ import code.name.monkey.retromusic.adapter.song.SimpleSongAdapter import code.name.monkey.retromusic.dialogs.AddToPlaylistDialog import code.name.monkey.retromusic.dialogs.DeleteSongsDialog import code.name.monkey.retromusic.extensions.extraNotNull -import code.name.monkey.retromusic.extensions.ripAlpha import code.name.monkey.retromusic.extensions.show import code.name.monkey.retromusic.extensions.surfaceColor import code.name.monkey.retromusic.glide.AlbumGlideRequest @@ -73,7 +71,6 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), CabHolder { } private lateinit var simpleSongAdapter: SimpleSongAdapter private lateinit var album: Album - private lateinit var artistImage: ImageView private var cab: MaterialCab? = null private val savedSortOrder: String get() = PreferenceUtil.albumDetailSongSortOrder @@ -101,24 +98,25 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), CabHolder { setBottomBarVisibility(View.GONE) window.sharedElementsUseOverlay = true windowEnterTransition() + toolbar.setBackgroundColor(surfaceColor()) addMusicServiceEventListener(detailsViewModel) ActivityCompat.postponeEnterTransition(this) - //val viewModelFactory = AlbumDetailsViewModelFactory(application, albumId) - //viewModel = ViewModelProvider(this, viewModelFactory).get(AlbumDetailsViewModel::class.java) detailsViewModel.getAlbum().observe(this, androidx.lifecycle.Observer { ActivityCompat.startPostponedEnterTransition(this@AlbumDetailsActivity) - album(it) + showAlbum(it) }) detailsViewModel.getArtist().observe(this, androidx.lifecycle.Observer { loadArtistImage(it) }) + detailsViewModel.getMoreAlbums().observe(this, androidx.lifecycle.Observer { + moreAlbums(it) + }) detailsViewModel.getAlbumInfo().observe(this, androidx.lifecycle.Observer { aboutAlbum(it) }) setupRecyclerView() - artistImage = findViewById(R.id.artistImage) artistImage.setOnClickListener { val artistPairs = ActivityOptions.makeSceneTransitionAnimation( this, @@ -155,12 +153,7 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), CabHolder { } } - fun complete() { - ActivityCompat.startPostponedEnterTransition(this) - } - - fun album(album: Album) { - complete() + private fun showAlbum(album: Album) { if (album.songs!!.isEmpty()) { finish() return @@ -196,7 +189,7 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), CabHolder { detailsViewModel.loadAlbumInfo(album) } - fun moreAlbums(albums: List) { + private fun moreAlbums(albums: List) { moreTitle.show() moreRecyclerView.show() moreTitle.text = String.format(getString(R.string.label_more_from), album.artistName) @@ -211,7 +204,7 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), CabHolder { moreRecyclerView.adapter = albumAdapter } - fun aboutAlbum(lastFmAlbum: LastFmAlbum) { + private fun aboutAlbum(lastFmAlbum: LastFmAlbum) { if (lastFmAlbum.album != null) { if (lastFmAlbum.album.wiki != null) { aboutAlbumText.show() @@ -232,7 +225,7 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), CabHolder { } } - fun loadArtistImage(artist: Artist) { + private fun loadArtistImage(artist: Artist) { ArtistGlideRequest.Builder.from(Glide.with(this), artist) .generatePalette(this) .build() @@ -260,15 +253,17 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), CabHolder { } private fun setColors(color: MediaNotificationProcessor) { - val buttonColor = if (PreferenceUtil.isAdaptiveColor) - color.backgroundColor.ripAlpha() - else - ATHUtil.resolveColor(this, R.attr.colorSurface) + MaterialUtil.tintColor( + button = shuffleAction, + textColor = color.primaryTextColor, + backgroundColor = color.backgroundColor + ) + MaterialUtil.tintColor( + button = playAction, + textColor = color.primaryTextColor, + backgroundColor = color.backgroundColor + ) - MaterialUtil.setTint(button = shuffleAction, color = buttonColor) - MaterialUtil.setTint(button = playAction, color = buttonColor) - - toolbar.setBackgroundColor(surfaceColor()) setSupportActionBar(toolbar) supportActionBar?.title = null } diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/albums/AlbumDetailsViewModel.kt b/app/src/main/java/code/name/monkey/retromusic/activities/albums/AlbumDetailsViewModel.kt index 38bde635d..2a9d83595 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/albums/AlbumDetailsViewModel.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/albums/AlbumDetailsViewModel.kt @@ -7,8 +7,8 @@ import androidx.lifecycle.viewModelScope import code.name.monkey.retromusic.interfaces.MusicServiceEventListener import code.name.monkey.retromusic.model.Album import code.name.monkey.retromusic.model.Artist -import code.name.monkey.retromusic.providers.RepositoryImpl import code.name.monkey.retromusic.network.model.LastFmAlbum +import code.name.monkey.retromusic.providers.RepositoryImpl import kotlinx.coroutines.Deferred import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.async @@ -22,10 +22,12 @@ class AlbumDetailsViewModel( private val _album = MutableLiveData() private val _artist = MutableLiveData() private val _lastFmAlbum = MutableLiveData() + private val _moreAlbums = MutableLiveData>() fun getAlbum(): LiveData = _album fun getArtist(): LiveData = _artist fun getAlbumInfo(): LiveData = _lastFmAlbum + fun getMoreAlbums(): LiveData> = _moreAlbums; init { loadAlbumDetails() @@ -44,6 +46,10 @@ class AlbumDetailsViewModel( fun loadArtist(artistId: Int) = viewModelScope.launch(Dispatchers.IO) { val artist = repository.artistById(artistId) _artist.postValue(artist) + + artist.albums?.filter { item -> item.id != albumId }?.let { albums -> + if (albums.isNotEmpty()) _moreAlbums.postValue(albums) + } } private val loadAlbumAsync: Deferred diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/artists/ArtistDetailActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/artists/ArtistDetailActivity.kt index 8848be8ec..4eb8cd512 100755 --- a/app/src/main/java/code/name/monkey/retromusic/activities/artists/ArtistDetailActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/artists/ArtistDetailActivity.kt @@ -22,7 +22,6 @@ import code.name.monkey.retromusic.adapter.album.HorizontalAlbumAdapter import code.name.monkey.retromusic.adapter.song.SimpleSongAdapter import code.name.monkey.retromusic.dialogs.AddToPlaylistDialog import code.name.monkey.retromusic.extensions.extraNotNull -import code.name.monkey.retromusic.extensions.ripAlpha import code.name.monkey.retromusic.extensions.show import code.name.monkey.retromusic.extensions.surfaceColor import code.name.monkey.retromusic.glide.ArtistGlideRequest @@ -31,7 +30,10 @@ import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.interfaces.CabHolder import code.name.monkey.retromusic.model.Artist import code.name.monkey.retromusic.network.model.LastFmArtist -import code.name.monkey.retromusic.util.* +import code.name.monkey.retromusic.util.CustomArtistImageUtil +import code.name.monkey.retromusic.util.MusicUtil +import code.name.monkey.retromusic.util.RetroColorUtil +import code.name.monkey.retromusic.util.RetroUtil import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import com.afollestad.materialcab.MaterialCab import com.bumptech.glide.Glide @@ -95,8 +97,11 @@ class ArtistDetailActivity : AbsSlidingMusicPanelActivity(), CabHolder { setBottomBarVisibility(View.GONE) window.sharedElementsUseOverlay = true windowEnterTransition() - ActivityCompat.postponeEnterTransition(this) + toolbar.setBackgroundColor(surfaceColor()) + addMusicServiceEventListener(detailsViewModel) + + ActivityCompat.postponeEnterTransition(this) detailsViewModel.getArtist().observe(this, androidx.lifecycle.Observer { ActivityCompat.startPostponedEnterTransition(this@ArtistDetailActivity) artist(it) @@ -150,18 +155,12 @@ class ArtistDetailActivity : AbsSlidingMusicPanelActivity(), CabHolder { } } - fun complete() { - ActivityCompat.startPostponedEnterTransition(this) - } - fun artist(artist: Artist) { - complete() - if (artist.songCount <= 0) { + if (artist.songs.isEmpty()) { finish() } this.artist = artist - loadArtistImage() - + loadArtistImage(artist) if (RetroUtil.isAllowedToDownloadMetadata(this)) { loadBiography(artist.name) } @@ -186,7 +185,7 @@ class ArtistDetailActivity : AbsSlidingMusicPanelActivity(), CabHolder { songTitle.text = songText albumTitle.text = albumText songAdapter.swapDataSet(artist.songs) - albumAdapter.swapDataSet(artist.albums!!) + artist.albums?.let { albumAdapter.swapDataSet(it) } } private fun loadBiography( @@ -198,7 +197,7 @@ class ArtistDetailActivity : AbsSlidingMusicPanelActivity(), CabHolder { detailsViewModel.loadBiography(name, lang, null) } - fun artistInfo(lastFmArtist: LastFmArtist?) { + private fun artistInfo(lastFmArtist: LastFmArtist?) { if (lastFmArtist != null && lastFmArtist.artist != null) { val bioContent = lastFmArtist.artist.bio.content if (bioContent != null && bioContent.trim { it <= ' ' }.isNotEmpty()) { @@ -211,7 +210,6 @@ class ArtistDetailActivity : AbsSlidingMusicPanelActivity(), CabHolder { listenersLabel.show() scrobbles.show() scrobblesLabel.show() - listeners.text = RetroUtil.formatValue(lastFmArtist.artist.stats.listeners.toFloat()) scrobbles.text = @@ -228,8 +226,9 @@ class ArtistDetailActivity : AbsSlidingMusicPanelActivity(), CabHolder { private var lang: String? = null - private fun loadArtistImage() { - ArtistGlideRequest.Builder.from(Glide.with(this), artist).generatePalette(this).build() + private fun loadArtistImage(artist: Artist) { + ArtistGlideRequest.Builder.from(Glide.with(this), artist) + .generatePalette(this).build() .dontAnimate().into(object : RetroMusicColoredTarget(image) { override fun onColorReady(colors: MediaNotificationProcessor) { setColors(colors) @@ -238,16 +237,16 @@ class ArtistDetailActivity : AbsSlidingMusicPanelActivity(), CabHolder { } private fun setColors(color: MediaNotificationProcessor) { - val buttonColor = if (PreferenceUtil.isAdaptiveColor) - color.backgroundColor.ripAlpha() - else - ATHUtil.resolveColor(this, R.attr.colorSurface) - - MaterialUtil.setTint(button = shuffleAction, color = buttonColor) - MaterialUtil.setTint(button = playAction, color = buttonColor) - - - toolbar.setBackgroundColor(surfaceColor()) + MaterialUtil.tintColor( + button = shuffleAction, + textColor = color.primaryTextColor, + backgroundColor = color.backgroundColor + ) + MaterialUtil.tintColor( + button = playAction, + textColor = color.primaryTextColor, + backgroundColor = color.backgroundColor + ) setSupportActionBar(toolbar) supportActionBar?.title = null } diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumAdapter.kt index 3841fd9eb..a8ae9ce31 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumAdapter.kt @@ -3,7 +3,6 @@ package code.name.monkey.retromusic.adapter.album import android.app.ActivityOptions import android.content.res.ColorStateList import android.content.res.Resources -import android.graphics.drawable.Drawable import android.view.LayoutInflater import android.view.MenuItem import android.view.View @@ -106,10 +105,6 @@ open class AlbumAdapter( .generatePalette(activity) .build() .into(object : RetroMusicColoredTarget(holder.image!!) { - override fun onLoadCleared(placeholder: Drawable?) { - super.onLoadCleared(placeholder) - //setColors(defaultFooterColor, holder) - } override fun onColorReady(colors: MediaNotificationProcessor) { setColors(colors, holder) diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt index b2c844e62..987e98e86 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt @@ -7,6 +7,7 @@ import android.view.ViewGroup import android.widget.ImageView import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager +import androidx.lifecycle.lifecycleScope import code.name.monkey.retromusic.R import code.name.monkey.retromusic.fragments.AlbumCoverStyle import code.name.monkey.retromusic.fragments.NowPlayingScreen.* @@ -21,7 +22,6 @@ import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import com.bumptech.glide.Glide import com.google.android.material.dialog.MaterialAlertDialogBuilder import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import kotlinx.coroutines.withContext @@ -68,7 +68,7 @@ class AlbumCoverPagerAdapter( class AlbumCoverFragment : Fragment() { - lateinit var albumCover: ImageView + private lateinit var albumCover: ImageView private var isColorReady: Boolean = false private lateinit var color: MediaNotificationProcessor private lateinit var song: Song @@ -96,7 +96,7 @@ class AlbumCoverPagerAdapter( } private fun showLyricsDialog() { - GlobalScope.launch(Dispatchers.IO) { + lifecycleScope.launch(Dispatchers.IO) { val data = MusicUtil.getLyrics(song) withContext(Dispatchers.Main) { MaterialAlertDialogBuilder( @@ -116,7 +116,7 @@ class AlbumCoverPagerAdapter( private fun getLayoutWithPlayerTheme(): Int { return when (PreferenceUtil.nowPlayingScreen) { - Card, Fit, Tiny, Classic, Peak, Gradient, Full -> R.layout.fragment_album_full_cover + Card, Peak, Fit, Tiny, Classic, Gradient, Full -> R.layout.fragment_album_full_cover else -> { if (PreferenceUtil.isCarouselEffect) { R.layout.fragment_album_carousel_cover diff --git a/app/src/main/java/code/name/monkey/retromusic/extensions/FragmentExt.kt b/app/src/main/java/code/name/monkey/retromusic/extensions/FragmentExt.kt index 311b944d0..4a0dc22f5 100644 --- a/app/src/main/java/code/name/monkey/retromusic/extensions/FragmentExt.kt +++ b/app/src/main/java/code/name/monkey/retromusic/extensions/FragmentExt.kt @@ -4,7 +4,10 @@ import android.content.Context import android.content.res.Configuration import android.os.PowerManager import androidx.annotation.IntegerRes +import androidx.appcompat.app.AppCompatActivity import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.navigation.fragment.NavHostFragment import code.name.monkey.retromusic.util.PreferenceUtil fun Fragment.getIntRes(@IntegerRes int: Int): Int { @@ -36,4 +39,17 @@ inline fun Fragment.extra(key: String, default: T? = null) = l inline fun Fragment.extraNotNull(key: String, default: T? = null) = lazy { val value = arguments?.get(key) requireNotNull(if (value is T) value else default) { key } -} \ No newline at end of file +} + +val NavHostFragment.currentFragment: Fragment? + get() = targetFragment + +val FragmentManager.currentNavigationFragment: Fragment? + get() = primaryNavigationFragment?.childFragmentManager?.fragments?.first() + +fun AppCompatActivity.currentFragment(navHostId: Int): Fragment? { + val navHostFragment: NavHostFragment = + supportFragmentManager.findFragmentById(navHostId) as NavHostFragment + navHostFragment.targetFragment + return navHostFragment?.childFragmentManager?.fragments?.first() +} diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/LibraryViewModel.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/LibraryViewModel.kt index 9ffa6af53..73a71dd09 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/LibraryViewModel.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/LibraryViewModel.kt @@ -24,13 +24,15 @@ class LibraryViewModel( private val _playlist = MutableLiveData>() private val _genre = MutableLiveData>() private val _homeSections = MutableLiveData>() + private val _paletteColor = MutableLiveData() - fun homeSections(): LiveData> = _homeSections - fun allAlbums(): LiveData> = _albums - fun allSongs(): LiveData> = _songs - fun allArtists(): LiveData> = _artists - fun allPlaylisits(): LiveData> = _playlist - fun allGenres(): LiveData> = _genre + val paletteColor: LiveData = _paletteColor + val homeSections: LiveData> = _homeSections + val allAlbums: LiveData> = _albums + val allSongs: LiveData> = _songs + val allArtists: LiveData> = _artists + val allPlaylisits: LiveData> = _playlist + val allGenres: LiveData> = _genre init { viewModelScope.launch { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumsFragment.kt index 47d3fd522..425f3fe9d 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumsFragment.kt @@ -17,7 +17,7 @@ class AlbumsFragment : override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - mainActivity.libraryViewModel.allAlbums() + mainActivity.libraryViewModel.allAlbums .observe(viewLifecycleOwner, Observer { albums -> if (albums.isNotEmpty()) adapter?.swapDataSet(albums) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/artists/ArtistsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/artists/ArtistsFragment.kt index 9b308bbbb..48944baba 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/artists/ArtistsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/artists/ArtistsFragment.kt @@ -16,8 +16,8 @@ class ArtistsFragment : MainActivityFragmentCallbacks { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - mainActivity.libraryViewModel.allArtists().observe( - viewLifecycleOwner, Observer { artists -> + mainActivity.libraryViewModel.allArtists + .observe(viewLifecycleOwner, Observer { artists -> if (artists.isNotEmpty()) { adapter?.swapDataSet(artists) } else { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/FoldersFragment.java b/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.java similarity index 99% rename from app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/FoldersFragment.java rename to app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.java index a430edd1d..0df60de03 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/FoldersFragment.java +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.java @@ -12,7 +12,7 @@ * See the GNU General Public License for more details. */ -package code.name.monkey.retromusic.fragments.mainactivity; +package code.name.monkey.retromusic.fragments.folder; import android.app.Dialog; import android.content.Context; diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenresFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenresFragment.kt index 8767ff7a2..c696b28c5 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenresFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenresFragment.kt @@ -28,8 +28,8 @@ class GenresFragment : AbsLibraryPagerRecyclerViewFragment + mainActivity.libraryViewModel.allGenres + .observe(viewLifecycleOwner, Observer { genres -> if (genres.isNotEmpty()) { adapter?.swapDataSet(genres) } else { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/home/BannerHomeFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/home/BannerHomeFragment.kt index 1a67cbd93..16b2d1323 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/home/BannerHomeFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/home/BannerHomeFragment.kt @@ -112,7 +112,7 @@ class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallba adapter = homeAdapter } - mainActivity.libraryViewModel.homeSections() + mainActivity.libraryViewModel.homeSections .observe(viewLifecycleOwner, Observer { sections -> homeAdapter.swapData(sections) }) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/main/MainFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/main/MainFragment.kt new file mode 100644 index 000000000..8bfe48608 --- /dev/null +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/main/MainFragment.kt @@ -0,0 +1,18 @@ +package code.name.monkey.retromusic.fragments.main + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.fragments.base.AbsMusicServiceFragment + +class MainFragment : AbsMusicServiceFragment() { + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + return inflater.inflate(R.layout.fragment_main, container, false) + } +} \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/MainPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/MainPlayerFragment.kt new file mode 100644 index 000000000..e9ba68684 --- /dev/null +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/MainPlayerFragment.kt @@ -0,0 +1,16 @@ +package code.name.monkey.retromusic.fragments.player + +import android.os.Bundle +import androidx.fragment.app.Fragment +import androidx.navigation.fragment.findNavController +import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.util.PreferenceUtil + +class MainPlayerFragment : Fragment(R.layout.fragment_main_player) { + override fun onActivityCreated(savedInstanceState: Bundle?) { + super.onActivityCreated(savedInstanceState) + when (PreferenceUtil.nowPlayingScreen) { + else -> findNavController().navigate(R.id.action_mainPlayerFragment_to_adaptiveFragment) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/PlayerAlbumCoverFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/PlayerAlbumCoverFragment.kt index 7a2c42499..13ef1ffd8 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/PlayerAlbumCoverFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/PlayerAlbumCoverFragment.kt @@ -50,7 +50,7 @@ class PlayerAlbumCoverFragment : AbsMusicServiceFragment(), ViewPager.OnPageChan val metrics = resources.displayMetrics val ratio = metrics.heightPixels.toFloat() / metrics.widthPixels.toFloat() - if (nps == Full || nps == Classic || nps == Fit || nps == Gradient) { + if (nps == Full || nps == Classic || nps == Fit || nps == Gradient || nps == Peak) { viewPager.offscreenPageLimit = 2 } else if (PreferenceUtil.isCarouselEffect) { viewPager.clipToPadding = false diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistsFragment.kt index 962e3200d..345651ad2 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistsFragment.kt @@ -18,7 +18,7 @@ class PlaylistsFragment : override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - mainActivity.libraryViewModel.allPlaylisits() + mainActivity.libraryViewModel.allPlaylisits .observe(viewLifecycleOwner, Observer { playlists -> if (playlists.isNotEmpty()) { adapter?.swapDataSet(playlists) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/MainSettingsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/MainSettingsFragment.kt index 2a690c087..5095de933 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/MainSettingsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/MainSettingsFragment.kt @@ -21,6 +21,7 @@ import android.view.View import android.view.ViewGroup import androidx.annotation.StringRes import androidx.fragment.app.Fragment +import androidx.navigation.fragment.findNavController import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.retromusic.App import code.name.monkey.retromusic.R @@ -33,29 +34,14 @@ import kotlinx.android.synthetic.main.fragment_main_settings.* class MainSettingsFragment : Fragment(), View.OnClickListener { override fun onClick(view: View) { when (view.id) { - R.id.generalSettings -> inflateFragment( - ThemeSettingsFragment(), - R.string.general_settings_title - ) - R.id.audioSettings -> inflateFragment(AudioSettings(), R.string.pref_header_audio) - R.id.nowPlayingSettings -> inflateFragment( - NowPlayingSettingsFragment(), - R.string.now_playing - ) - R.id.personalizeSettings -> inflateFragment( - PersonalizeSettingsFragment(), - R.string.personalize - ) - R.id.imageSettings -> inflateFragment( - ImageSettingFragment(), - R.string.pref_header_images - ) - R.id.notificationSettings -> inflateFragment( - NotificationSettingsFragment(), - R.string.notification - ) - R.id.otherSettings -> inflateFragment(OtherSettingsFragment(), R.string.others) + R.id.generalSettings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_themeSettingsFragment) + R.id.audioSettings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_audioSettings) + R.id.personalizeSettings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_personalizeSettingsFragment) + R.id.imageSettings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_imageSettingFragment) + R.id.notificationSettings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_notificationSettingsFragment) + R.id.otherSettings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_otherSettingsFragment) R.id.aboutSettings -> NavigationUtil.goToAbout(requireActivity()) + R.id.nowPlayingSettings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_nowPlayingSettingsFragment) } } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/songs/SongsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/songs/SongsFragment.kt index 38f16a578..5d0fe3166 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/songs/SongsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/songs/SongsFragment.kt @@ -3,6 +3,7 @@ package code.name.monkey.retromusic.fragments.songs import android.os.Bundle import android.view.View import androidx.annotation.LayoutRes +import androidx.lifecycle.Observer import androidx.recyclerview.widget.GridLayoutManager import code.name.monkey.retromusic.R import code.name.monkey.retromusic.adapter.song.ShuffleButtonSongAdapter @@ -17,8 +18,8 @@ class SongsFragment : MainActivityFragmentCallbacks { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - mainActivity.libraryViewModel.allSongs() - .observe(viewLifecycleOwner, androidx.lifecycle.Observer { + mainActivity.libraryViewModel.allSongs + .observe(viewLifecycleOwner, Observer { if (it.isNotEmpty()) { adapter?.swapDataSet(it) } else { @@ -73,7 +74,7 @@ class SongsFragment : override fun setGridSize(gridSize: Int) { adapter?.notifyDataSetChanged() } - + override fun loadSortOrder(): String { return PreferenceUtil.songSortOrder } diff --git a/app/src/main/java/code/name/monkey/retromusic/service/MusicService.java b/app/src/main/java/code/name/monkey/retromusic/service/MusicService.java index 62971fae9..56ac1afdd 100644 --- a/app/src/main/java/code/name/monkey/retromusic/service/MusicService.java +++ b/app/src/main/java/code/name/monkey/retromusic/service/MusicService.java @@ -170,6 +170,7 @@ public class MusicService extends Service implements private AppWidgetSmall appWidgetSmall = AppWidgetSmall.Companion.getInstance(); private AppWidgetText appWidgetText = AppWidgetText.Companion.getInstance(); + private final BroadcastReceiver widgetIntentReceiver = new BroadcastReceiver() { @Override public void onReceive(final Context context, final Intent intent) { diff --git a/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.kt b/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.kt index 2b4b5c9e3..86ed7e750 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.kt +++ b/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.kt @@ -13,7 +13,7 @@ import code.name.monkey.retromusic.extensions.getIntRes import code.name.monkey.retromusic.extensions.getStringOrDefault import code.name.monkey.retromusic.fragments.AlbumCoverStyle import code.name.monkey.retromusic.fragments.NowPlayingScreen -import code.name.monkey.retromusic.fragments.mainactivity.FoldersFragment +import code.name.monkey.retromusic.fragments.folder.FoldersFragment import code.name.monkey.retromusic.helper.SortOrder.* import code.name.monkey.retromusic.model.CategoryInfo import code.name.monkey.retromusic.transform.* diff --git a/app/src/main/res/anim/retro_fragment_close_enter.xml b/app/src/main/res/anim/retro_fragment_close_enter.xml new file mode 100644 index 000000000..72ea35a8d --- /dev/null +++ b/app/src/main/res/anim/retro_fragment_close_enter.xml @@ -0,0 +1,40 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/retro_fragment_close_exit.xml b/app/src/main/res/anim/retro_fragment_close_exit.xml new file mode 100644 index 000000000..164efc950 --- /dev/null +++ b/app/src/main/res/anim/retro_fragment_close_exit.xml @@ -0,0 +1,41 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/retro_fragment_fade_enter.xml b/app/src/main/res/anim/retro_fragment_fade_enter.xml new file mode 100644 index 000000000..939f446c4 --- /dev/null +++ b/app/src/main/res/anim/retro_fragment_fade_enter.xml @@ -0,0 +1,20 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/anim/retro_fragment_fade_exit.xml b/app/src/main/res/anim/retro_fragment_fade_exit.xml new file mode 100644 index 000000000..3b4d7ae8a --- /dev/null +++ b/app/src/main/res/anim/retro_fragment_fade_exit.xml @@ -0,0 +1,22 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/anim/retro_fragment_fast_out_extra_slow_in.xml b/app/src/main/res/anim/retro_fragment_fast_out_extra_slow_in.xml new file mode 100644 index 000000000..c3baa5df6 --- /dev/null +++ b/app/src/main/res/anim/retro_fragment_fast_out_extra_slow_in.xml @@ -0,0 +1,18 @@ + + + + diff --git a/app/src/main/res/anim/retro_fragment_open_enter.xml b/app/src/main/res/anim/retro_fragment_open_enter.xml new file mode 100644 index 000000000..648ca0840 --- /dev/null +++ b/app/src/main/res/anim/retro_fragment_open_enter.xml @@ -0,0 +1,41 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/retro_fragment_open_exit.xml b/app/src/main/res/anim/retro_fragment_open_exit.xml new file mode 100644 index 000000000..3727f66f7 --- /dev/null +++ b/app/src/main/res/anim/retro_fragment_open_exit.xml @@ -0,0 +1,41 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index ec83f3e5c..4e115feb5 100755 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -23,10 +23,13 @@ android:layout_height="wrap_content" app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior"> - + android:layout_height="wrap_content" + app:defaultNavHost="true" + app:navGraph="@navigation/settings_graph" /> + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_main_player.xml b/app/src/main/res/layout/fragment_main_player.xml new file mode 100644 index 000000000..61a4490a4 --- /dev/null +++ b/app/src/main/res/layout/fragment_main_player.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/sliding_music_panel_layout.xml b/app/src/main/res/layout/sliding_music_panel_layout.xml index 8dad22c22..b0c54814c 100644 --- a/app/src/main/res/layout/sliding_music_panel_layout.xml +++ b/app/src/main/res/layout/sliding_music_panel_layout.xml @@ -28,12 +28,12 @@ app:behavior_peekHeight="0dp" app:layout_behavior="code.name.monkey.retromusic.RetroBottomSheetBehavior"> - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/navigation/retro_graph.xml b/app/src/main/res/navigation/retro_graph.xml new file mode 100644 index 000000000..3900d7fe9 --- /dev/null +++ b/app/src/main/res/navigation/retro_graph.xml @@ -0,0 +1,33 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/navigation/settings_graph.xml b/app/src/main/res/navigation/settings_graph.xml new file mode 100644 index 000000000..4adf4506e --- /dev/null +++ b/app/src/main/res/navigation/settings_graph.xml @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/MaterialUtil.kt b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/MaterialUtil.kt index 4eca6ea19..dae1401b0 100644 --- a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/MaterialUtil.kt +++ b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/MaterialUtil.kt @@ -1,6 +1,7 @@ package code.name.monkey.appthemehelper.util import android.content.res.ColorStateList +import android.graphics.Color import code.name.monkey.appthemehelper.ThemeStore import com.google.android.material.button.MaterialButton import com.google.android.material.textfield.TextInputLayout @@ -36,6 +37,20 @@ object MaterialUtil { } } + @JvmOverloads + @JvmStatic + fun tintColor( + button: MaterialButton, + textColor: Int = Color.WHITE, + backgroundColor: Int = Color.BLACK + ) { + val backgroundColorStateList = ColorStateList.valueOf(backgroundColor) + val textColorColorStateList = ColorStateList.valueOf(textColor) + button.backgroundTintList = backgroundColorStateList + button.setTextColor(textColorColorStateList) + button.iconTint = textColorColorStateList + } + @JvmOverloads @JvmStatic fun setTint(textInputLayout: TextInputLayout, background: Boolean = true) { diff --git a/build.gradle b/build.gradle index aba171eaa..a4cb3bb6b 100644 --- a/build.gradle +++ b/build.gradle @@ -14,6 +14,8 @@ buildscript { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'com.android.tools.build:bundletool:0.9.0' classpath "gradle.plugin.ru.cleverpumpkin.proguard-dictionaries-generator:plugin:1.0.8" + def nav_version = "2.3.0" + classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } } From d4ab36fd69db583bf0ebdcac2fe557e678a3b85d Mon Sep 17 00:00:00 2001 From: Hemanth S Date: Sat, 25 Jul 2020 00:02:28 +0530 Subject: [PATCH 4/7] About activity added to nav graph --- .../fragments/settings/MainSettingsFragment.kt | 2 +- app/src/main/res/navigation/settings_graph.xml | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/MainSettingsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/MainSettingsFragment.kt index 5095de933..9b523575f 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/MainSettingsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/MainSettingsFragment.kt @@ -40,7 +40,7 @@ class MainSettingsFragment : Fragment(), View.OnClickListener { R.id.imageSettings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_imageSettingFragment) R.id.notificationSettings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_notificationSettingsFragment) R.id.otherSettings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_otherSettingsFragment) - R.id.aboutSettings -> NavigationUtil.goToAbout(requireActivity()) + R.id.aboutSettings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_aboutActivity) R.id.nowPlayingSettings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_nowPlayingSettingsFragment) } } diff --git a/app/src/main/res/navigation/settings_graph.xml b/app/src/main/res/navigation/settings_graph.xml index 4adf4506e..c398464c7 100644 --- a/app/src/main/res/navigation/settings_graph.xml +++ b/app/src/main/res/navigation/settings_graph.xml @@ -55,6 +55,10 @@ app:exitAnim="@anim/retro_fragment_open_exit" app:popEnterAnim="@anim/retro_fragment_close_enter" app:popExitAnim="@anim/retro_fragment_close_exit" /> + + + + + \ No newline at end of file From c23e95935652cbab9e1d2333801729d23bb89cde Mon Sep 17 00:00:00 2001 From: Hemanth S Date: Sun, 26 Jul 2020 01:52:37 +0530 Subject: [PATCH 5/7] Code refactor and Genre category added to home --- app/build.gradle | 7 +++-- app/proguard-rules.pro | 5 ---- .../java/code/name/monkey/retromusic/App.kt | 3 +- .../code/name/monkey/retromusic/MainModule.kt | 17 +++++++++-- .../retromusic/activities/MainActivity.kt | 9 ++++-- .../monkey/retromusic/adapter/HomeAdapter.kt | 28 ++++++++++++++++++- .../retromusic/fragments/LibraryViewModel.kt | 3 +- .../fragments/albums/AlbumsFragment.kt | 8 ++++-- .../fragments/artists/ArtistsFragment.kt | 9 ++++-- .../fragments/genres/GenresFragment.kt | 6 +++- .../fragments/home/BannerHomeFragment.kt | 6 +++- .../fragments/playlists/PlaylistsFragment.kt | 18 ++++++------ .../fragments/songs/SongsFragment.kt | 22 +++++++++------ .../retromusic/providers/ProviderModule.kt | 11 -------- .../retromusic/providers/RepositoryImpl.kt | 27 ++++++++++++++---- .../providers/interfaces/Repository.kt | 2 ++ .../fragment_main_activity_recycler_view.xml | 1 - app/src/main/res/layout/home_content.xml | 1 - app/src/main/res/layout/item_grid_genre.xml | 18 ++++++++++++ .../main/res/navigation/settings_graph.xml | 4 +++ build.gradle | 2 +- 21 files changed, 149 insertions(+), 58 deletions(-) delete mode 100644 app/src/main/java/code/name/monkey/retromusic/providers/ProviderModule.kt create mode 100644 app/src/main/res/layout/item_grid_genre.xml diff --git a/app/build.gradle b/app/build.gradle index b6b12352f..bf1c7c9a1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -167,8 +167,11 @@ dependencies { def koin_version = "2.1.5" implementation "org.koin:koin-core:$koin_version" - implementation "org.koin:koin-android:$koin_version" - implementation "org.koin:koin-android-viewmodel:$koin_version" + implementation "org.koin:koin-core-ext:$koin_version" + implementation "org.koin:koin-androidx-scope:$koin_version" + implementation "org.koin:koin-androidx-viewmodel:$koin_version" + implementation "org.koin:koin-androidx-fragment:$koin_version" + implementation "org.koin:koin-androidx-ext:$koin_version" def nav_version = "2.3.0" implementation "androidx.navigation:navigation-fragment-ktx:$nav_version" diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index b58c71e0b..5e2e2be56 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -59,11 +59,6 @@ #-keep class org.jaudiotagger.** { *; } -#For cast --keep class code.name.monkey.retromusic.cast.CastOptionsProvider { *; } --keep class android.support.** { *; } --keep class com.google.** { *; } --keep class java.nio.file.** { *; } -obfuscationdictionary build/obfuscation-dictionary.txt -classobfuscationdictionary build/class-dictionary.txt diff --git a/app/src/main/java/code/name/monkey/retromusic/App.kt b/app/src/main/java/code/name/monkey/retromusic/App.kt index e6fe75c63..6e0f2cfa0 100644 --- a/app/src/main/java/code/name/monkey/retromusic/App.kt +++ b/app/src/main/java/code/name/monkey/retromusic/App.kt @@ -20,7 +20,6 @@ import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.util.VersionUtils import code.name.monkey.retromusic.Constants.PRO_VERSION_PRODUCT_ID import code.name.monkey.retromusic.appshortcuts.DynamicShortcutManager -import code.name.monkey.retromusic.network.networkModule import code.name.monkey.retromusic.providers.provideModules import com.anjlab.android.iab.v3.BillingProcessor import com.anjlab.android.iab.v3.TransactionDetails @@ -37,7 +36,7 @@ class App : MultiDexApplication() { startKoin { androidContext(this@App) - modules(listOf(mainModule, provideModules, networkModule)) + modules(appModules) } // default theme if (!ThemeStore.isConfigured(this, 3)) { diff --git a/app/src/main/java/code/name/monkey/retromusic/MainModule.kt b/app/src/main/java/code/name/monkey/retromusic/MainModule.kt index cc13de3d1..f551bd945 100644 --- a/app/src/main/java/code/name/monkey/retromusic/MainModule.kt +++ b/app/src/main/java/code/name/monkey/retromusic/MainModule.kt @@ -8,11 +8,20 @@ import code.name.monkey.retromusic.activities.search.SearchViewModel import code.name.monkey.retromusic.fragments.LibraryViewModel import code.name.monkey.retromusic.model.Genre import code.name.monkey.retromusic.model.Playlist -import org.koin.android.viewmodel.dsl.viewModel +import code.name.monkey.retromusic.network.networkModule +import code.name.monkey.retromusic.providers.RepositoryImpl +import org.eclipse.egit.github.core.Repository +import org.koin.androidx.viewmodel.dsl.viewModel +import org.koin.dsl.bind import org.koin.dsl.module +private val dataModule = module { + single { + RepositoryImpl(get(), get()) + } bind Repository::class +} -val mainModule = module { +private val viewModules = module { viewModel { LibraryViewModel(get()) @@ -37,4 +46,6 @@ val mainModule = module { viewModel { SearchViewModel(get()) } -} \ No newline at end of file +} + +val appModules = listOf(dataModule, viewModules, networkModule) \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt index 931703ca3..ae82e3c5e 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt @@ -74,7 +74,7 @@ class MainActivity : AbsSlidingMusicPanelActivity(), const val APP_UPDATE_REQUEST_CODE = 9002 } - val libraryViewModel: LibraryViewModel by inject() + private val libraryViewModel: LibraryViewModel by inject() private var cab: MaterialCab? = null private val intentFilter = IntentFilter(Intent.ACTION_SCREEN_OFF) private lateinit var currentFragment: MainActivityFragmentCallbacks @@ -621,8 +621,13 @@ class MainActivity : AbsSlidingMusicPanelActivity(), fragment: Fragment, tag: String ) { - supportFragmentManager.commit { + setCustomAnimations( + R.anim.retro_fragment_open_enter, + R.anim.retro_fragment_open_exit, + R.anim.retro_fragment_fade_enter, + R.anim.retro_fragment_fade_exit + ) replace(R.id.fragment_container, fragment, tag) } currentFragment = fragment as MainActivityFragmentCallbacks diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/HomeAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/HomeAdapter.kt index 681dadece..77590c89c 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/HomeAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/HomeAdapter.kt @@ -50,6 +50,7 @@ class HomeAdapter( .inflate(R.layout.metal_section_recycler_view, parent, false) ) } + GENRES -> GenreViewHolder(layout) FAVOURITES -> PlaylistViewHolder(layout) else -> { SuggestionsViewHolder( @@ -103,6 +104,10 @@ class HomeAdapter( R.string.favorites ) } + GENRES -> { + val viewHolder = holder as GenreViewHolder + viewHolder.bind(list[position].arrayList as List, R.string.genres) + } } } @@ -117,7 +122,15 @@ class HomeAdapter( companion object { - @IntDef(RECENT_ALBUMS, TOP_ALBUMS, RECENT_ARTISTS, TOP_ARTISTS, SUGGESTIONS, FAVOURITES) + @IntDef( + RECENT_ALBUMS, + TOP_ALBUMS, + RECENT_ARTISTS, + TOP_ARTISTS, + SUGGESTIONS, + FAVOURITES, + GENRES + ) @Retention(AnnotationRetention.SOURCE) annotation class HomeSection @@ -127,6 +140,7 @@ class HomeAdapter( const val TOP_ARTISTS = 0 const val SUGGESTIONS = 5 const val FAVOURITES = 4 + const val GENRES = 6 } private inner class AlbumViewHolder(view: View) : AbsHomeViewItem(view) { @@ -214,6 +228,18 @@ class HomeAdapter( } } + private inner class GenreViewHolder(itemView: View) : AbsHomeViewItem(itemView) { + fun bind(genres: List, titleRes: Int) { + title.text = activity.getString(titleRes) + recyclerView.apply { + show() + layoutManager = GridLayoutManager(activity, 2, GridLayoutManager.HORIZONTAL, false) + val genreAdapter = GenreAdapter(activity, genres, R.layout.item_grid_genre) + adapter = genreAdapter + } + } + } + open inner class AbsHomeViewItem(itemView: View) : RecyclerView.ViewHolder(itemView) { val recyclerView: RecyclerView = itemView.findViewById(R.id.recyclerView) val title: AppCompatTextView = itemView.findViewById(R.id.title) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/LibraryViewModel.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/LibraryViewModel.kt index 73a71dd09..dd142d5a1 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/LibraryViewModel.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/LibraryViewModel.kt @@ -57,7 +57,8 @@ class LibraryViewModel( repository.recentArtists(), repository.recentAlbums(), repository.suggestions(), - repository.favoritePlaylist() + repository.favoritePlaylist(), + repository.homeGenres() ) result.forEach { if (it != null && it.arrayList.isNotEmpty()) { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumsFragment.kt index 425f3fe9d..ab44cbf8c 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumsFragment.kt @@ -6,18 +6,22 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.GridLayoutManager import code.name.monkey.retromusic.R import code.name.monkey.retromusic.adapter.album.AlbumAdapter +import code.name.monkey.retromusic.fragments.LibraryViewModel import code.name.monkey.retromusic.fragments.ReloadType import code.name.monkey.retromusic.fragments.base.AbsLibraryPagerRecyclerViewCustomGridSizeFragment import code.name.monkey.retromusic.interfaces.MainActivityFragmentCallbacks import code.name.monkey.retromusic.util.PreferenceUtil +import org.koin.android.viewmodel.ext.android.sharedViewModel class AlbumsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment(), MainActivityFragmentCallbacks { + private val libraryViewModel: LibraryViewModel by sharedViewModel() + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - mainActivity.libraryViewModel.allAlbums + libraryViewModel.allAlbums .observe(viewLifecycleOwner, Observer { albums -> if (albums.isNotEmpty()) adapter?.swapDataSet(albums) @@ -73,7 +77,7 @@ class AlbumsFragment : } override fun setSortOrder(sortOrder: String) { - mainActivity.libraryViewModel.forceReload(ReloadType.Albums) + libraryViewModel.forceReload(ReloadType.Albums) } override fun loadLayoutRes(): Int { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/artists/ArtistsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/artists/ArtistsFragment.kt index 48944baba..a669f77a7 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/artists/ArtistsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/artists/ArtistsFragment.kt @@ -6,17 +6,22 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.GridLayoutManager import code.name.monkey.retromusic.R import code.name.monkey.retromusic.adapter.artist.ArtistAdapter +import code.name.monkey.retromusic.fragments.LibraryViewModel import code.name.monkey.retromusic.fragments.ReloadType import code.name.monkey.retromusic.fragments.base.AbsLibraryPagerRecyclerViewCustomGridSizeFragment import code.name.monkey.retromusic.interfaces.MainActivityFragmentCallbacks import code.name.monkey.retromusic.util.PreferenceUtil +import org.koin.android.viewmodel.ext.android.sharedViewModel class ArtistsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment(), MainActivityFragmentCallbacks { + + private val libraryViewModel: LibraryViewModel by sharedViewModel() + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - mainActivity.libraryViewModel.allArtists + libraryViewModel.allArtists .observe(viewLifecycleOwner, Observer { artists -> if (artists.isNotEmpty()) { adapter?.swapDataSet(artists) @@ -34,7 +39,7 @@ class ArtistsFragment : get() = R.string.no_artists override fun setSortOrder(sortOrder: String) { - mainActivity.libraryViewModel.forceReload(ReloadType.Artists) + libraryViewModel.forceReload(ReloadType.Artists) } override fun createLayoutManager(): GridLayoutManager { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenresFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenresFragment.kt index c696b28c5..94fecdd31 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenresFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenresFragment.kt @@ -20,15 +20,19 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import code.name.monkey.retromusic.R import code.name.monkey.retromusic.adapter.GenreAdapter +import code.name.monkey.retromusic.fragments.LibraryViewModel import code.name.monkey.retromusic.fragments.base.AbsLibraryPagerRecyclerViewFragment import code.name.monkey.retromusic.interfaces.MainActivityFragmentCallbacks +import org.koin.android.viewmodel.ext.android.sharedViewModel class GenresFragment : AbsLibraryPagerRecyclerViewFragment(), MainActivityFragmentCallbacks { + private val libraryViewModel: LibraryViewModel by sharedViewModel() + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - mainActivity.libraryViewModel.allGenres + libraryViewModel.allGenres .observe(viewLifecycleOwner, Observer { genres -> if (genres.isNotEmpty()) { adapter?.swapDataSet(genres) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/home/BannerHomeFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/home/BannerHomeFragment.kt index 16b2d1323..0f05c0c75 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/home/BannerHomeFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/home/BannerHomeFragment.kt @@ -24,6 +24,7 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import code.name.monkey.retromusic.R import code.name.monkey.retromusic.adapter.HomeAdapter +import code.name.monkey.retromusic.fragments.LibraryViewModel import code.name.monkey.retromusic.fragments.base.AbsMainActivityFragment import code.name.monkey.retromusic.glide.ProfileBannerGlideRequest import code.name.monkey.retromusic.glide.UserProfileGlideRequest @@ -39,9 +40,12 @@ import com.bumptech.glide.Glide import kotlinx.android.synthetic.main.abs_playlists.* import kotlinx.android.synthetic.main.fragment_banner_home.* import kotlinx.android.synthetic.main.home_content.* +import org.koin.android.viewmodel.ext.android.sharedViewModel class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallbacks { + private lateinit var homeAdapter: HomeAdapter + private val libraryViewModel: LibraryViewModel by sharedViewModel() override fun onCreateView( inflater: LayoutInflater, @@ -112,7 +116,7 @@ class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallba adapter = homeAdapter } - mainActivity.libraryViewModel.homeSections + libraryViewModel.homeSections .observe(viewLifecycleOwner, Observer { sections -> homeAdapter.swapData(sections) }) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistsFragment.kt index 345651ad2..baaf46c1d 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistsFragment.kt @@ -8,24 +8,26 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.GridLayoutManager import code.name.monkey.retromusic.R import code.name.monkey.retromusic.adapter.playlist.PlaylistAdapter +import code.name.monkey.retromusic.fragments.LibraryViewModel import code.name.monkey.retromusic.fragments.base.AbsLibraryPagerRecyclerViewFragment import code.name.monkey.retromusic.interfaces.MainActivityFragmentCallbacks +import org.koin.android.viewmodel.ext.android.sharedViewModel class PlaylistsFragment : AbsLibraryPagerRecyclerViewFragment(), MainActivityFragmentCallbacks { + private val libraryViewModel: LibraryViewModel by sharedViewModel() override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - mainActivity.libraryViewModel.allPlaylisits - .observe(viewLifecycleOwner, Observer { playlists -> - if (playlists.isNotEmpty()) { - adapter?.swapDataSet(playlists) - } else { - adapter?.swapDataSet(listOf()) - } - }) + libraryViewModel.allPlaylisits.observe(viewLifecycleOwner, Observer { playlists -> + if (playlists.isNotEmpty()) { + adapter?.swapDataSet(playlists) + } else { + adapter?.swapDataSet(listOf()) + } + }) } override fun handleBackPress(): Boolean { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/songs/SongsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/songs/SongsFragment.kt index 5d0fe3166..e6ff5425c 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/songs/SongsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/songs/SongsFragment.kt @@ -8,24 +8,28 @@ import androidx.recyclerview.widget.GridLayoutManager import code.name.monkey.retromusic.R import code.name.monkey.retromusic.adapter.song.ShuffleButtonSongAdapter import code.name.monkey.retromusic.adapter.song.SongAdapter +import code.name.monkey.retromusic.fragments.LibraryViewModel import code.name.monkey.retromusic.fragments.ReloadType import code.name.monkey.retromusic.fragments.base.AbsLibraryPagerRecyclerViewCustomGridSizeFragment import code.name.monkey.retromusic.interfaces.MainActivityFragmentCallbacks import code.name.monkey.retromusic.util.PreferenceUtil +import org.koin.android.viewmodel.ext.android.sharedViewModel class SongsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment(), MainActivityFragmentCallbacks { + + private val libraryViewModel: LibraryViewModel by sharedViewModel() + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - mainActivity.libraryViewModel.allSongs - .observe(viewLifecycleOwner, Observer { - if (it.isNotEmpty()) { - adapter?.swapDataSet(it) - } else { - adapter?.swapDataSet(listOf()) - } - }) + libraryViewModel.allSongs.observe(viewLifecycleOwner, Observer { + if (it.isNotEmpty()) { + adapter?.swapDataSet(it) + } else { + adapter?.swapDataSet(listOf()) + } + }) } override val emptyMessage: Int @@ -93,7 +97,7 @@ class SongsFragment : } override fun setSortOrder(sortOrder: String) { - mainActivity.libraryViewModel.forceReload(ReloadType.Songs) + libraryViewModel.forceReload(ReloadType.Songs) } companion object { diff --git a/app/src/main/java/code/name/monkey/retromusic/providers/ProviderModule.kt b/app/src/main/java/code/name/monkey/retromusic/providers/ProviderModule.kt deleted file mode 100644 index a5874e77a..000000000 --- a/app/src/main/java/code/name/monkey/retromusic/providers/ProviderModule.kt +++ /dev/null @@ -1,11 +0,0 @@ -package code.name.monkey.retromusic.providers - -import org.eclipse.egit.github.core.Repository -import org.koin.dsl.bind -import org.koin.dsl.module - -val provideModules = module { - single { - RepositoryImpl(get(), get()) - } bind Repository::class -} \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/providers/RepositoryImpl.kt b/app/src/main/java/code/name/monkey/retromusic/providers/RepositoryImpl.kt index 367b646fa..c1c778e9c 100644 --- a/app/src/main/java/code/name/monkey/retromusic/providers/RepositoryImpl.kt +++ b/app/src/main/java/code/name/monkey/retromusic/providers/RepositoryImpl.kt @@ -32,19 +32,19 @@ class RepositoryImpl( override suspend fun allAlbums(): List = AlbumLoader.getAllAlbums(context) + override suspend fun albumById(albumId: Int): Album = AlbumLoader.getAlbum(context, albumId) + override suspend fun allArtists(): List = ArtistLoader.getAllArtists(context) + override suspend fun artistById(artistId: Int): Artist = + ArtistLoader.getArtist(context, artistId) + override suspend fun allPlaylists(): List = PlaylistLoader.getAllPlaylists(context) override suspend fun allGenres(): List = GenreLoader.getAllGenres(context) override suspend fun allSongs(): List = SongLoader.getAllSongs(context) - override suspend fun albumById(albumId: Int): Album = AlbumLoader.getAlbum(context, albumId) - - override suspend fun artistById(artistId: Int): Artist = - ArtistLoader.getArtist(context, artistId) - override suspend fun suggestions(): Home? { val songs = NotRecentlyPlayedPlaylist(context).getSongs(context).shuffled().apply { if (size > 9) subList(0, 9) @@ -59,6 +59,23 @@ class RepositoryImpl( return null } + override suspend fun homeGenres(): Home? { + val genres = + GenreLoader.getAllGenres(context) + .shuffled() + .take(10) + .filter { it.name.length > 4 } + + if (genres.isNotEmpty()) { + return Home( + genres, + HomeAdapter.GENRES, + R.drawable.ic_guitar + ) + } + return null + } + override suspend fun search(query: String?): MutableList = SearchLoader.searchAll(context, query) diff --git a/app/src/main/java/code/name/monkey/retromusic/providers/interfaces/Repository.kt b/app/src/main/java/code/name/monkey/retromusic/providers/interfaces/Repository.kt index 2f2d6f83b..984960df3 100644 --- a/app/src/main/java/code/name/monkey/retromusic/providers/interfaces/Repository.kt +++ b/app/src/main/java/code/name/monkey/retromusic/providers/interfaces/Repository.kt @@ -58,4 +58,6 @@ interface Repository { suspend fun favoritePlaylist(): Home? suspend fun suggestions(): Home? + + suspend fun homeGenres(): Home? } \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_main_activity_recycler_view.xml b/app/src/main/res/layout/fragment_main_activity_recycler_view.xml index 9a925d898..d546767b5 100644 --- a/app/src/main/res/layout/fragment_main_activity_recycler_view.xml +++ b/app/src/main/res/layout/fragment_main_activity_recycler_view.xml @@ -11,7 +11,6 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:clipToPadding="false" - android:layoutAnimation="@anim/layout_animation_fall_down" android:overScrollMode="never" android:scrollbars="none" app:layout_dodgeInsetEdges="bottom" diff --git a/app/src/main/res/layout/home_content.xml b/app/src/main/res/layout/home_content.xml index 31fa3b898..f97294c12 100644 --- a/app/src/main/res/layout/home_content.xml +++ b/app/src/main/res/layout/home_content.xml @@ -37,7 +37,6 @@ android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layoutAnimation="@anim/layout_animation_fall_down" android:nestedScrollingEnabled="false" android:overScrollMode="never" app:layoutManager="androidx.recyclerview.widget.GridLayoutManager" diff --git a/app/src/main/res/layout/item_grid_genre.xml b/app/src/main/res/layout/item_grid_genre.xml new file mode 100644 index 000000000..408c88694 --- /dev/null +++ b/app/src/main/res/layout/item_grid_genre.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/navigation/settings_graph.xml b/app/src/main/res/navigation/settings_graph.xml index c398464c7..2559e9dcb 100644 --- a/app/src/main/res/navigation/settings_graph.xml +++ b/app/src/main/res/navigation/settings_graph.xml @@ -47,6 +47,10 @@ app:popExitAnim="@anim/retro_fragment_close_exit" /> Date: Wed, 29 Jul 2020 00:48:34 +0530 Subject: [PATCH 6/7] Add Android Navigation component --- .../java/code/name/monkey/retromusic/App.kt | 1 - .../retromusic/activities/MainActivity.kt | 170 ++++++------------ .../retromusic/activities/SettingsActivity.kt | 18 ++ .../activities/albums/AlbumDetailsActivity.kt | 4 +- .../artists/ArtistDetailActivity.kt | 2 +- .../base/AbsSlidingMusicPanelActivity.kt | 131 ++++---------- .../activities/genre/GenreDetailsActivity.kt | 2 +- .../playlist/PlaylistDetailActivity.kt | 2 +- .../adapter/album/AlbumCoverPagerAdapter.kt | 2 +- .../extensions/NavigationExtensions.kt | 20 +++ .../retromusic/fragments/LibraryViewModel.kt | 53 +++--- .../retromusic/fragments/NowPlayingScreen.kt | 2 +- .../fragments/albums/AlbumsFragment.kt | 4 +- .../fragments/artists/ArtistsFragment.kt | 4 +- .../fragments/base/AbsPlayerFragment.kt | 23 +-- .../fragments/folder/FoldersFragment.java | 5 +- .../fragments/genres/GenresFragment.kt | 4 +- .../fragments/home/BannerHomeFragment.kt | 4 +- .../fragments/player/MainPlayerFragment.kt | 16 -- .../player/NowPlayingPlayerFragment.kt | 45 +++++ .../player/PlayerAlbumCoverFragment.kt | 2 +- .../player/adaptive/AdaptiveFragment.kt | 2 +- .../player/blur/BlurPlayerFragment.kt | 2 +- .../fragments/player/card/CardFragment.kt | 2 +- .../player/cardblur/CardBlurFragment.kt | 2 +- .../player/classic/ClassicPlayerFragment.kt | 2 +- .../fragments/player/color/ColorFragment.kt | 3 +- .../fragments/player/fit/FitFragment.kt | 2 +- .../flat/FlatPlaybackControlsFragment.kt | 12 +- .../player/flat/FlatPlayerFragment.kt | 2 +- .../player/full/FullPlayerFragment.kt | 2 +- .../player/gradient/GradientPlayerFragment.kt | 2 +- .../player/home/HomePlayerFragment.kt | 2 +- .../player/material/MaterialFragment.kt | 2 +- .../fragments/player/normal/PlayerFragment.kt | 2 +- .../player/peak/PeakPlayerFragment.kt | 2 +- .../player/plain/PlainPlayerFragment.kt | 2 +- .../player/simple/SimplePlayerFragment.kt | 2 +- .../player/tiny/TinyPlayerFragment.kt | 2 +- .../fragments/playlists/PlaylistsFragment.kt | 4 +- .../fragments/settings/AbsSettingsFragment.kt | 4 +- .../fragments/songs/SongsFragment.kt | 4 +- .../retromusic/providers/RepositoryImpl.kt | 3 +- .../monkey/retromusic/util/PreferenceUtil.kt | 12 +- .../monkey/retromusic/views/ListItemView.kt | 2 +- .../main/res/layout/activity_main_content.xml | 6 +- .../main/res/layout/fragment_main_player.xml | 6 - .../layout/fragment_now_playing_player.xml | 13 ++ app/src/main/res/layout/item_list.xml | 6 +- .../main/res/layout/list_item_color_view.xml | 90 +++++----- app/src/main/res/layout/list_item_view.xml | 65 +++---- .../res/layout/list_item_view_no_card.xml | 74 ++++++++ .../res/layout/list_item_view_no_title.xml | 53 +++--- .../res/layout/list_item_view_seekbar.xml | 63 ++++--- .../main/res/layout/list_item_view_switch.xml | 60 ++++--- .../layout/list_item_view_switch_no_title.xml | 108 +++++------ .../res/layout/preference_category_title.xml | 1 + .../res/layout/sliding_music_panel_layout.xml | 3 +- app/src/main/res/navigation/now_playing.xml | 36 +++- app/src/main/res/navigation/retro_graph.xml | 34 ++-- .../main/res/navigation/settings_graph.xml | 23 ++- app/src/main/res/xml/pref_general.xml | 1 + 62 files changed, 662 insertions(+), 570 deletions(-) create mode 100644 app/src/main/java/code/name/monkey/retromusic/extensions/NavigationExtensions.kt delete mode 100644 app/src/main/java/code/name/monkey/retromusic/fragments/player/MainPlayerFragment.kt create mode 100644 app/src/main/java/code/name/monkey/retromusic/fragments/player/NowPlayingPlayerFragment.kt delete mode 100644 app/src/main/res/layout/fragment_main_player.xml create mode 100644 app/src/main/res/layout/fragment_now_playing_player.xml create mode 100644 app/src/main/res/layout/list_item_view_no_card.xml diff --git a/app/src/main/java/code/name/monkey/retromusic/App.kt b/app/src/main/java/code/name/monkey/retromusic/App.kt index 6e0f2cfa0..de9167932 100644 --- a/app/src/main/java/code/name/monkey/retromusic/App.kt +++ b/app/src/main/java/code/name/monkey/retromusic/App.kt @@ -20,7 +20,6 @@ import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.util.VersionUtils import code.name.monkey.retromusic.Constants.PRO_VERSION_PRODUCT_ID import code.name.monkey.retromusic.appshortcuts.DynamicShortcutManager -import code.name.monkey.retromusic.providers.provideModules import com.anjlab.android.iab.v3.BillingProcessor import com.anjlab.android.iab.v3.TransactionDetails import org.koin.android.ext.koin.androidContext diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt index ae82e3c5e..3b9ea1eb9 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt @@ -12,23 +12,22 @@ import android.view.SubMenu import android.view.View import androidx.core.app.ActivityCompat import androidx.fragment.app.Fragment -import androidx.fragment.app.commit +import androidx.navigation.NavOptions import code.name.monkey.appthemehelper.ThemeStore.Companion.accentColor import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ATHUtil.resolveColor import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper import code.name.monkey.retromusic.* import code.name.monkey.retromusic.activities.base.AbsSlidingMusicPanelActivity -import code.name.monkey.retromusic.dialogs.CreatePlaylistDialog.Companion.create -import code.name.monkey.retromusic.fragments.LibraryViewModel +import code.name.monkey.retromusic.dialogs.CreatePlaylistDialog +import code.name.monkey.retromusic.extensions.navController import code.name.monkey.retromusic.fragments.albums.AlbumsFragment import code.name.monkey.retromusic.fragments.artists.ArtistsFragment import code.name.monkey.retromusic.fragments.base.AbsLibraryPagerRecyclerViewCustomGridSizeFragment import code.name.monkey.retromusic.fragments.folder.FoldersFragment -import code.name.monkey.retromusic.fragments.genres.GenresFragment +import code.name.monkey.retromusic.fragments.folder.FoldersFragment.PATH import code.name.monkey.retromusic.fragments.home.BannerHomeFragment import code.name.monkey.retromusic.fragments.playlists.PlaylistsFragment -import code.name.monkey.retromusic.fragments.queue.PlayingQueueFragment import code.name.monkey.retromusic.fragments.songs.SongsFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote.isPlaying import code.name.monkey.retromusic.helper.MusicPlayerRemote.openAndShuffleQueue @@ -38,7 +37,6 @@ import code.name.monkey.retromusic.helper.MusicPlayerRemote.shuffleMode import code.name.monkey.retromusic.helper.SearchQueryHelper.getSongs import code.name.monkey.retromusic.helper.SortOrder.* import code.name.monkey.retromusic.interfaces.CabHolder -import code.name.monkey.retromusic.interfaces.MainActivityFragmentCallbacks import code.name.monkey.retromusic.loaders.AlbumLoader.getAlbum import code.name.monkey.retromusic.loaders.ArtistLoader.getArtist import code.name.monkey.retromusic.loaders.PlaylistSongsLoader.getPlaylistSongList @@ -63,7 +61,6 @@ import com.google.android.play.core.install.model.InstallStatus.INSTALLED import com.google.android.play.core.install.model.UpdateAvailability import com.google.android.play.core.tasks.Task import kotlinx.android.synthetic.main.activity_main_content.* -import org.koin.android.ext.android.inject import java.util.* class MainActivity : AbsSlidingMusicPanelActivity(), @@ -74,10 +71,8 @@ class MainActivity : AbsSlidingMusicPanelActivity(), const val APP_UPDATE_REQUEST_CODE = 9002 } - private val libraryViewModel: LibraryViewModel by inject() private var cab: MaterialCab? = null private val intentFilter = IntentFilter(Intent.ACTION_SCREEN_OFF) - private lateinit var currentFragment: MainActivityFragmentCallbacks private var appUpdateManager: AppUpdateManager? = null private var blockRequestPermissions = false private val listener = object : InstallStateUpdatedListener { @@ -123,22 +118,33 @@ class MainActivity : AbsSlidingMusicPanelActivity(), hideStatusBar() setBottomBarVisibility(View.VISIBLE) - addMusicServiceEventListener(libraryViewModel) - if (savedInstanceState == null) { - selectedFragment(PreferenceUtil.lastPage) - } else { - restoreCurrentFragment() - } - appLaunched(this) setupToolbar() checkUpdate() updateTabs() - getBottomNavigationView().selectedItemId = PreferenceUtil.lastPage + + val navController = navController(R.id.fragment_container) + val navOptions: NavOptions = NavOptions.Builder() + .setLaunchSingleTop(true) + .setEnterAnim(R.anim.retro_fragment_open_enter) + .setExitAnim(R.anim.retro_fragment_open_exit) + .setPopEnterAnim(R.anim.retro_fragment_close_enter) + .setPopExitAnim(R.anim.retro_fragment_close_exit) + .setPopUpTo(navController.graph.startDestination, false) + .build() getBottomNavigationView().setOnNavigationItemSelectedListener { - PreferenceUtil.lastPage = it.itemId - selectedFragment(it.itemId) - true + var handled = false + when (it.itemId) { + R.id.action_folder -> navController.navigate(it.itemId, Bundle().apply { + putSerializable(PATH, PreferenceUtil.startDirectory) + }, navOptions) + else -> if (navController.graph.findNode(it.itemId) != null) { + navController.navigate(it.itemId, null, navOptions) + handled = true; + } + } + return@setOnNavigationItemSelectedListener handled + } } @@ -161,7 +167,7 @@ class MainActivity : AbsSlidingMusicPanelActivity(), } try { if (appUpdateInfo.updateAvailability() == UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS) { - appUpdateManager!!.startUpdateFlowForResult( + appUpdateManager?.startUpdateFlowForResult( appUpdateInfo, AppUpdateType.IMMEDIATE, this, @@ -238,20 +244,14 @@ class MainActivity : AbsSlidingMusicPanelActivity(), override fun onOptionsItemSelected(item: MenuItem): Boolean { val fragment = getCurrentFragment() if (fragment is AbsLibraryPagerRecyclerViewCustomGridSizeFragment<*, *>) { - if (handleGridSizeMenuItem(fragment, item)) { - return true - } - if (handleLayoutResType(fragment, item)) { - return true - } - if (handleSortOrderMenuItem(fragment, item)) { - return true - } + if (handleGridSizeMenuItem(fragment, item)) return true + if (handleLayoutResType(fragment, item)) return true + if (handleSortOrderMenuItem(fragment, item)) return true } when (item.itemId) { R.id.action_search -> NavigationUtil.goToSearch(this) R.id.action_new_playlist -> { - create().show(supportFragmentManager, "CREATE_PLAYLIST") + CreatePlaylistDialog.create().show(supportFragmentManager, "CREATE_PLAYLIST") return true } R.id.action_mic -> { @@ -276,32 +276,26 @@ class MainActivity : AbsSlidingMusicPanelActivity(), ): Boolean { var sortOrder: String? = null when (fragment) { - is AlbumsFragment -> { - when (item.itemId) { - R.id.action_album_sort_order_asc -> sortOrder = AlbumSortOrder.ALBUM_A_Z - R.id.action_album_sort_order_desc -> sortOrder = AlbumSortOrder.ALBUM_Z_A - R.id.action_album_sort_order_artist -> sortOrder = AlbumSortOrder.ALBUM_ARTIST - R.id.action_album_sort_order_year -> sortOrder = AlbumSortOrder.ALBUM_YEAR - } + is AlbumsFragment -> when (item.itemId) { + R.id.action_album_sort_order_asc -> sortOrder = AlbumSortOrder.ALBUM_A_Z + R.id.action_album_sort_order_desc -> sortOrder = AlbumSortOrder.ALBUM_Z_A + R.id.action_album_sort_order_artist -> sortOrder = AlbumSortOrder.ALBUM_ARTIST + R.id.action_album_sort_order_year -> sortOrder = AlbumSortOrder.ALBUM_YEAR } - is ArtistsFragment -> { - when (item.itemId) { - R.id.action_artist_sort_order_asc -> sortOrder = ArtistSortOrder.ARTIST_A_Z - R.id.action_artist_sort_order_desc -> sortOrder = ArtistSortOrder.ARTIST_Z_A - } + is ArtistsFragment -> when (item.itemId) { + R.id.action_artist_sort_order_asc -> sortOrder = ArtistSortOrder.ARTIST_A_Z + R.id.action_artist_sort_order_desc -> sortOrder = ArtistSortOrder.ARTIST_Z_A } - is SongsFragment -> { - when (item.itemId) { - R.id.action_song_sort_order_asc -> sortOrder = SongSortOrder.SONG_A_Z - R.id.action_song_sort_order_desc -> sortOrder = SongSortOrder.SONG_Z_A - R.id.action_song_sort_order_artist -> sortOrder = SongSortOrder.SONG_ARTIST - R.id.action_song_sort_order_album -> sortOrder = SongSortOrder.SONG_ALBUM - R.id.action_song_sort_order_year -> sortOrder = SongSortOrder.SONG_YEAR - R.id.action_song_sort_order_date -> sortOrder = SongSortOrder.SONG_DATE - R.id.action_song_sort_order_composer -> sortOrder = SongSortOrder.COMPOSER - R.id.action_song_sort_order_date_modified -> - sortOrder = SongSortOrder.SONG_DATE_MODIFIED - } + is SongsFragment -> when (item.itemId) { + R.id.action_song_sort_order_asc -> sortOrder = SongSortOrder.SONG_A_Z + R.id.action_song_sort_order_desc -> sortOrder = SongSortOrder.SONG_Z_A + R.id.action_song_sort_order_artist -> sortOrder = SongSortOrder.SONG_ARTIST + R.id.action_song_sort_order_album -> sortOrder = SongSortOrder.SONG_ALBUM + R.id.action_song_sort_order_year -> sortOrder = SongSortOrder.SONG_YEAR + R.id.action_song_sort_order_date -> sortOrder = SongSortOrder.SONG_DATE + R.id.action_song_sort_order_composer -> sortOrder = SongSortOrder.COMPOSER + R.id.action_song_sort_order_date_modified -> + sortOrder = SongSortOrder.SONG_DATE_MODIFIED } } @@ -617,70 +611,6 @@ class MainActivity : AbsSlidingMusicPanelActivity(), snackBar.show() } - private fun setCurrentFragment( - fragment: Fragment, - tag: String - ) { - supportFragmentManager.commit { - setCustomAnimations( - R.anim.retro_fragment_open_enter, - R.anim.retro_fragment_open_exit, - R.anim.retro_fragment_fade_enter, - R.anim.retro_fragment_fade_exit - ) - replace(R.id.fragment_container, fragment, tag) - } - currentFragment = fragment as MainActivityFragmentCallbacks - } - - private fun selectedFragment(itemId: Int) { - when (itemId) { - R.id.action_album -> setCurrentFragment( - AlbumsFragment.newInstance(), - AlbumsFragment.TAG - ) - R.id.action_artist -> setCurrentFragment( - ArtistsFragment.newInstance(), - ArtistsFragment.TAG - ) - R.id.action_playlist -> setCurrentFragment( - PlaylistsFragment.newInstance(), - PlaylistsFragment.TAG - ) - R.id.action_genre -> setCurrentFragment( - GenresFragment.newInstance(), - GenresFragment.TAG - ) - R.id.action_playing_queue -> setCurrentFragment( - PlayingQueueFragment.newInstance(), - PlayingQueueFragment.TAG - ) - R.id.action_song -> setCurrentFragment( - SongsFragment.newInstance(), - SongsFragment.TAG - ) - R.id.action_folder -> setCurrentFragment( - FoldersFragment.newInstance(this), - FoldersFragment.TAG - ) - R.id.action_home -> setCurrentFragment( - BannerHomeFragment.newInstance(), - BannerHomeFragment.TAG - ) - else -> setCurrentFragment( - BannerHomeFragment.newInstance(), - BannerHomeFragment.TAG - ) - } - } - - private fun restoreCurrentFragment() { - val fragment = supportFragmentManager.findFragmentById(R.id.fragment_container) - if (fragment != null) { - currentFragment = fragment as MainActivityFragmentCallbacks - } - } - override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) { if (key == GENERAL_THEME || key == BLACK_THEME || key == ADAPTIVE_COLOR_APP || key == USER_NAME || key == TOGGLE_FULL_SCREEN || key == TOGGLE_VOLUME || key == ROUND_CORNERS || key == CAROUSEL_EFFECT || key == NOW_PLAYING_SCREEN_ID || key == TOGGLE_GENRE || key == BANNER_IMAGE_PATH || key == PROFILE_IMAGE_PATH || key == CIRCULAR_ALBUM_ART || key == KEEP_SCREEN_ON || key == TOGGLE_SEPARATE_LINE || key == TOGGLE_HOME_BANNER || key == TOGGLE_ADD_CONTROLS || key == ALBUM_COVER_STYLE || key == HOME_ARTIST_GRID_STYLE || key == ALBUM_COVER_TRANSFORM || key == DESATURATED_COLOR || key == EXTRA_SONG_INFO || key == TAB_TEXT_MODE || key == LANGUAGE_NAME || key == LIBRARY_CATEGORIES ) { @@ -766,7 +696,7 @@ class MainActivity : AbsSlidingMusicPanelActivity(), cab?.finish() return true } - return super.handleBackPress() || currentFragment.handleBackPress() + return super.handleBackPress() } override fun openCab(menuRes: Int, callback: MaterialCab.Callback): MaterialCab { diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/SettingsActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/SettingsActivity.kt index bda70239f..c741d870c 100755 --- a/app/src/main/java/code/name/monkey/retromusic/activities/SettingsActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/SettingsActivity.kt @@ -4,6 +4,9 @@ import android.os.Bundle import android.view.MenuItem import androidx.annotation.StringRes import androidx.fragment.app.Fragment +import androidx.navigation.NavController +import androidx.navigation.fragment.NavHostFragment +import androidx.navigation.ui.AppBarConfiguration import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.util.VersionUtils import code.name.monkey.retromusic.R @@ -16,6 +19,8 @@ import kotlinx.android.synthetic.main.activity_settings.* class SettingsActivity : AbsBaseActivity(), ColorChooserDialog.ColorCallback { private val fragmentManager = supportFragmentManager + private lateinit var appBarConfiguration: AppBarConfiguration + private lateinit var navController: NavController override fun onCreate(savedInstanceState: Bundle?) { setDrawUnderStatusBar() @@ -30,6 +35,19 @@ class SettingsActivity : AbsBaseActivity(), ColorChooserDialog.ColorCallback { private fun setupToolbar() { setTitle(R.string.action_settings) applyToolbar(toolbar) + val navHostFragment = supportFragmentManager.findFragmentById(R.id.contentFrame) as NavHostFragment + val navController: NavController = navHostFragment.navController + navController.addOnDestinationChangedListener { _, _, _ -> + toolbar.title = navController.currentDestination?.label + } + + //It removes the back button + //appBarConfiguration = AppBarConfiguration(navController.graph) + //setupActionBarWithNavController(navController, appBarConfiguration) + } + + override fun onSupportNavigateUp(): Boolean { + return navController.navigateUp() || super.onSupportNavigateUp() } fun setupFragment(fragment: Fragment, @StringRes titleName: Int) { diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/albums/AlbumDetailsActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/albums/AlbumDetailsActivity.kt index 873a35da3..18c0511a9 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/albums/AlbumDetailsActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/albums/AlbumDetailsActivity.kt @@ -41,7 +41,7 @@ import com.afollestad.materialcab.MaterialCab import com.bumptech.glide.Glide import kotlinx.android.synthetic.main.activity_album.* import kotlinx.android.synthetic.main.activity_album_content.* -import org.koin.android.viewmodel.ext.android.viewModel +import org.koin.androidx.viewmodel.ext.android.viewModel import org.koin.core.parameter.parametersOf import java.util.* import android.util.Pair as UtilPair @@ -66,7 +66,7 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), CabHolder { return cab as MaterialCab } - private val detailsViewModel: AlbumDetailsViewModel by viewModel { + private val detailsViewModel by viewModel { parametersOf(extraNotNull(EXTRA_ALBUM_ID).value) } private lateinit var simpleSongAdapter: SimpleSongAdapter diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/artists/ArtistDetailActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/artists/ArtistDetailActivity.kt index 4eb8cd512..420a1f402 100755 --- a/app/src/main/java/code/name/monkey/retromusic/activities/artists/ArtistDetailActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/artists/ArtistDetailActivity.kt @@ -39,7 +39,7 @@ import com.afollestad.materialcab.MaterialCab import com.bumptech.glide.Glide import kotlinx.android.synthetic.main.activity_artist_content.* import kotlinx.android.synthetic.main.activity_artist_details.* -import org.koin.android.viewmodel.ext.android.viewModel +import org.koin.androidx.viewmodel.ext.android.viewModel import org.koin.core.parameter.parametersOf import java.util.* import kotlin.collections.ArrayList diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt index 411987f43..2f3f5eed6 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt @@ -1,6 +1,5 @@ package code.name.monkey.retromusic.activities.base -import android.animation.ValueAnimator import android.graphics.Color import android.os.Bundle import android.view.View @@ -8,61 +7,41 @@ import android.view.ViewGroup import android.view.ViewTreeObserver import android.widget.FrameLayout import androidx.annotation.LayoutRes -import androidx.fragment.app.Fragment +import androidx.lifecycle.Observer import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.retromusic.R import code.name.monkey.retromusic.RetroBottomSheetBehavior import code.name.monkey.retromusic.extensions.hide import code.name.monkey.retromusic.extensions.show +import code.name.monkey.retromusic.fragments.LibraryViewModel import code.name.monkey.retromusic.fragments.MiniPlayerFragment import code.name.monkey.retromusic.fragments.NowPlayingScreen import code.name.monkey.retromusic.fragments.NowPlayingScreen.* -import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment -import code.name.monkey.retromusic.fragments.player.adaptive.AdaptiveFragment -import code.name.monkey.retromusic.fragments.player.blur.BlurPlayerFragment -import code.name.monkey.retromusic.fragments.player.card.CardFragment -import code.name.monkey.retromusic.fragments.player.cardblur.CardBlurFragment -import code.name.monkey.retromusic.fragments.player.circle.CirclePlayerFragment -import code.name.monkey.retromusic.fragments.player.classic.ClassicPlayerFragment -import code.name.monkey.retromusic.fragments.player.color.ColorFragment -import code.name.monkey.retromusic.fragments.player.fit.FitFragment -import code.name.monkey.retromusic.fragments.player.flat.FlatPlayerFragment -import code.name.monkey.retromusic.fragments.player.full.FullPlayerFragment -import code.name.monkey.retromusic.fragments.player.gradient.GradientPlayerFragment -import code.name.monkey.retromusic.fragments.player.material.MaterialFragment -import code.name.monkey.retromusic.fragments.player.normal.PlayerFragment -import code.name.monkey.retromusic.fragments.player.peak.PeakPlayerFragment -import code.name.monkey.retromusic.fragments.player.plain.PlainPlayerFragment -import code.name.monkey.retromusic.fragments.player.simple.SimplePlayerFragment -import code.name.monkey.retromusic.fragments.player.tiny.TinyPlayerFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.model.CategoryInfo import code.name.monkey.retromusic.util.DensityUtil import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.views.BottomNavigationBarTinted import com.google.android.material.bottomsheet.BottomSheetBehavior -import com.google.android.material.shape.MaterialShapeDrawable -import com.google.android.material.shape.ShapeAppearanceModel import kotlinx.android.synthetic.main.sliding_music_panel_layout.* +import org.koin.androidx.viewmodel.ext.android.viewModel -abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(), - AbsPlayerFragment.Callbacks { +abstract class AbsSlidingMusicPanelActivity() : AbsMusicServiceActivity() { companion object { val TAG: String = AbsSlidingMusicPanelActivity::class.java.simpleName } + private val libraryViewModel by viewModel() private lateinit var behavior: RetroBottomSheetBehavior private var miniPlayerFragment: MiniPlayerFragment? = null - private var playerFragment: AbsPlayerFragment? = null private var cps: NowPlayingScreen? = null private var navigationBarColor: Int = 0 private var taskColor: Int = 0 private var lightStatusBar: Boolean = false private var lightNavigationBar: Boolean = false - private var navigationBarColorAnimator: ValueAnimator? = null + private var paletteColor: Int = Color.WHITE protected abstract fun createContentView(): View - private lateinit var shapeDrawable: MaterialShapeDrawable private val panelState: Int get() = behavior.state @@ -72,7 +51,6 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(), setMiniPlayerAlphaProgress(slideOffset) dimBackground.show() dimBackground.alpha = slideOffset - shapeDrawable.interpolation = 1 - slideOffset } override fun onStateChanged(bottomSheet: View, newState: Int) { @@ -91,35 +69,29 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(), } } - fun getBottomSheetBehavior() = behavior override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(createContentView()) chooseFragmentForTheme() setupSlidingUpPanel() + addMusicServiceEventListener(libraryViewModel) - - - behavior = BottomSheetBehavior.from(slidingPanel) as RetroBottomSheetBehavior + setupBottomSheet() val themeColor = ATHUtil.resolveColor(this, android.R.attr.windowBackground, Color.GRAY) dimBackground.setBackgroundColor(ColorUtil.withAlpha(themeColor, 0.5f)) - shapeDrawable = MaterialShapeDrawable( - ShapeAppearanceModel.builder( - this, - R.style.ClassicThemeOverLay, - 0 - ).build() - ) - slidingPanel.background = shapeDrawable + + libraryViewModel.paletteColorLiveData.observe(this, Observer { + this.paletteColor = it + onPaletteColorChanged() + }) } - override fun onResume() { - super.onResume() - if (cps != PreferenceUtil.nowPlayingScreen) { - postRecreate() - } + fun getBottomSheetBehavior() = behavior + + private fun setupBottomSheet() { + behavior = BottomSheetBehavior.from(slidingPanel) as RetroBottomSheetBehavior behavior.addBottomSheetCallback(bottomSheetCallbackList) if (behavior.state == BottomSheetBehavior.STATE_EXPANDED) { @@ -127,17 +99,23 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(), } } + override fun onResume() { + super.onResume() + if (cps != PreferenceUtil.nowPlayingScreen) { + postRecreate() + } + } + override fun onDestroy() { super.onDestroy() behavior.removeBottomSheetCallback(bottomSheetCallbackList) - if (navigationBarColorAnimator != null) navigationBarColorAnimator?.cancel() // just in case } protected fun wrapSlidingMusicPanel(@LayoutRes resId: Int): View { val slidingMusicPanelLayout = layoutInflater.inflate(R.layout.sliding_music_panel_layout, null) - val contentContainer = - slidingMusicPanelLayout.findViewById(R.id.mainContentFrame) + val contentContainer: ViewGroup = + slidingMusicPanelLayout.findViewById(R.id.mainContentFrame) layoutInflater.inflate(resId, contentContainer) return slidingMusicPanelLayout } @@ -159,7 +137,7 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(), miniPlayerFragment?.view?.visibility = if (alpha == 0f) View.GONE else View.VISIBLE bottomNavigationView.translationY = progress * 500 - //bottomNavigationView.alpha = alpha + bottomNavigationView.alpha = alpha } open fun onPanelCollapsed() { @@ -168,20 +146,9 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(), super.setTaskDescriptionColor(taskColor) super.setNavigationbarColor(navigationBarColor) super.setLightNavigationBar(lightNavigationBar) - - - playerFragment?.setMenuVisibility(false) - playerFragment?.userVisibleHint = false - playerFragment?.onHide() } open fun onPanelExpanded() { - val playerFragmentColor = playerFragment!!.paletteColor - super.setTaskDescriptionColor(playerFragmentColor) - - playerFragment?.setMenuVisibility(true) - playerFragment?.userVisibleHint = true - playerFragment?.onShow() onPaletteColorChanged() } @@ -190,15 +157,12 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(), ViewTreeObserver.OnGlobalLayoutListener { override fun onGlobalLayout() { slidingPanel.viewTreeObserver.removeOnGlobalLayoutListener(this) - if (cps != Peak) { - val params = slidingPanel.layoutParams as ViewGroup.LayoutParams - params.height = ViewGroup.LayoutParams.MATCH_PARENT - slidingPanel.layoutParams = params - } when (panelState) { BottomSheetBehavior.STATE_EXPANDED -> onPanelExpanded() BottomSheetBehavior.STATE_COLLAPSED -> onPanelCollapsed() - else -> playerFragment!!.onHide() + else -> { + //playerFragment!!.onHide() + } } } }) @@ -240,33 +204,6 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(), private fun chooseFragmentForTheme() { cps = PreferenceUtil.nowPlayingScreen - val fragment: Fragment = when (cps) { - Blur -> BlurPlayerFragment() - Adaptive -> AdaptiveFragment() - Normal -> PlayerFragment() - Card -> CardFragment() - BlurCard -> CardBlurFragment() - Fit -> FitFragment() - Flat -> FlatPlayerFragment() - Full -> FullPlayerFragment() - Plain -> PlainPlayerFragment() - Simple -> SimplePlayerFragment() - Material -> MaterialFragment() - Color -> ColorFragment() - Tiny -> TinyPlayerFragment() - Peak -> PeakPlayerFragment() - Circle -> CirclePlayerFragment() - Classic -> ClassicPlayerFragment() - Gradient -> GradientPlayerFragment() - else -> PlayerFragment() - } // must implement AbsPlayerFragment - supportFragmentManager.beginTransaction() - .replace(R.id.playerFragmentContainer, fragment) - .commit() - supportFragmentManager.executePendingTransactions() - - playerFragment = - supportFragmentManager.findFragmentById(R.id.playerFragmentContainer) as AbsPlayerFragment miniPlayerFragment = supportFragmentManager.findFragmentById(R.id.miniPlayerFragment) as MiniPlayerFragment miniPlayerFragment?.view?.setOnClickListener { expandPanel() } @@ -295,7 +232,7 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(), } open fun handleBackPress(): Boolean { - if (behavior.peekHeight != 0 && playerFragment!!.onBackPressed()) return true + if (panelState == BottomSheetBehavior.STATE_EXPANDED) { collapsePanel() return true @@ -303,13 +240,10 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(), return false } - override fun onPaletteColorChanged() { + private fun onPaletteColorChanged() { if (panelState == BottomSheetBehavior.STATE_EXPANDED) { - val paletteColor = playerFragment!!.paletteColor super.setTaskDescriptionColor(paletteColor) - val isColorLight = ColorUtil.isColorLight(paletteColor) - if (PreferenceUtil.isAdaptiveColor && (cps == Normal || cps == Flat)) { super.setLightNavigationBar(true) super.setLightStatusbar(isColorLight) @@ -360,7 +294,6 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(), override fun setNavigationbarColor(color: Int) { navigationBarColor = color if (panelState == BottomSheetBehavior.STATE_COLLAPSED) { - if (navigationBarColorAnimator != null) navigationBarColorAnimator!!.cancel() super.setNavigationbarColor(color) } } diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/genre/GenreDetailsActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/genre/GenreDetailsActivity.kt index 8a4524b43..3af3facf6 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/genre/GenreDetailsActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/genre/GenreDetailsActivity.kt @@ -21,7 +21,7 @@ import code.name.monkey.retromusic.util.DensityUtil import code.name.monkey.retromusic.util.RetroColorUtil import com.afollestad.materialcab.MaterialCab import kotlinx.android.synthetic.main.activity_playlist_detail.* -import org.koin.android.viewmodel.ext.android.viewModel +import org.koin.androidx.viewmodel.ext.android.viewModel import org.koin.core.parameter.parametersOf import java.util.* diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/playlist/PlaylistDetailActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/playlist/PlaylistDetailActivity.kt index f740275de..5bb0fbc48 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/playlist/PlaylistDetailActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/playlist/PlaylistDetailActivity.kt @@ -28,7 +28,7 @@ import com.h6ah4i.android.widget.advrecyclerview.animator.RefactoredDefaultItemA import com.h6ah4i.android.widget.advrecyclerview.draggable.RecyclerViewDragDropManager import com.h6ah4i.android.widget.advrecyclerview.utils.WrapperAdapterUtils import kotlinx.android.synthetic.main.activity_playlist_detail.* -import org.koin.android.viewmodel.ext.android.viewModel +import org.koin.androidx.viewmodel.ext.android.viewModel import org.koin.core.parameter.parametersOf class PlaylistDetailActivity : AbsSlidingMusicPanelActivity(), CabHolder { diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt index 987e98e86..039aa9fe2 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt @@ -116,7 +116,7 @@ class AlbumCoverPagerAdapter( private fun getLayoutWithPlayerTheme(): Int { return when (PreferenceUtil.nowPlayingScreen) { - Card, Peak, Fit, Tiny, Classic, Gradient, Full -> R.layout.fragment_album_full_cover + Card, Fit, Tiny, Classic, Gradient, Full -> R.layout.fragment_album_full_cover else -> { if (PreferenceUtil.isCarouselEffect) { R.layout.fragment_album_carousel_cover diff --git a/app/src/main/java/code/name/monkey/retromusic/extensions/NavigationExtensions.kt b/app/src/main/java/code/name/monkey/retromusic/extensions/NavigationExtensions.kt new file mode 100644 index 000000000..a4f3d8732 --- /dev/null +++ b/app/src/main/java/code/name/monkey/retromusic/extensions/NavigationExtensions.kt @@ -0,0 +1,20 @@ +package code.name.monkey.retromusic.extensions + +import androidx.annotation.IdRes +import androidx.appcompat.app.AppCompatActivity +import androidx.fragment.app.Fragment +import androidx.navigation.NavController +import androidx.navigation.fragment.NavHostFragment +import androidx.navigation.fragment.findNavController + +fun Fragment.navigate(@IdRes id: Int) = findNavController().navigate(id) + +fun Fragment.navController(@IdRes id: Int): NavController { + val fragment = childFragmentManager.findFragmentById(id) as NavHostFragment + return fragment.navController +} + +fun AppCompatActivity.navController(@IdRes id: Int): NavController { + val fragment = supportFragmentManager.findFragmentById(id) as NavHostFragment + return fragment.navController +} \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/LibraryViewModel.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/LibraryViewModel.kt index dd142d5a1..f0c3cce0c 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/LibraryViewModel.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/LibraryViewModel.kt @@ -18,21 +18,21 @@ class LibraryViewModel( private val repository: RepositoryImpl ) : ViewModel(), MusicServiceEventListener { - private val _albums = MutableLiveData>() - private val _songs = MutableLiveData>() - private val _artists = MutableLiveData>() - private val _playlist = MutableLiveData>() - private val _genre = MutableLiveData>() - private val _homeSections = MutableLiveData>() - private val _paletteColor = MutableLiveData() + private val albums = MutableLiveData>() + private val songs = MutableLiveData>() + private val artists = MutableLiveData>() + private val playlists = MutableLiveData>() + private val genres = MutableLiveData>() + private val home = MutableLiveData>() + private val paletteColor = MutableLiveData() - val paletteColor: LiveData = _paletteColor - val homeSections: LiveData> = _homeSections - val allAlbums: LiveData> = _albums - val allSongs: LiveData> = _songs - val allArtists: LiveData> = _artists - val allPlaylisits: LiveData> = _playlist - val allGenres: LiveData> = _genre + val paletteColorLiveData: LiveData = paletteColor + val homeLiveData: LiveData> = home + val albumsLiveData: LiveData> = albums + val songsLiveData: LiveData> = songs + val artistsLiveData: LiveData> = artists + val playlisitsLiveData: LiveData> = playlists + val genresLiveData: LiveData> = genres init { viewModelScope.launch { @@ -41,11 +41,11 @@ class LibraryViewModel( } private fun loadLibraryContent() = viewModelScope.launch { - _songs.value = loadSongs.await() - _albums.value = loadAlbums.await() - _artists.value = loadArtists.await() - _playlist.value = loadPlaylists.await() - _genre.value = loadGenres.await() + songs.value = loadSongs.await() + albums.value = loadAlbums.await() + artists.value = loadArtists.await() + playlists.value = loadPlaylists.await() + genres.value = loadGenres.await() loadHomeSections() } @@ -71,7 +71,7 @@ class LibraryViewModel( } } } - _homeSections.value = list + home.value = list } private val loadSongs: Deferred> @@ -101,13 +101,17 @@ class LibraryViewModel( fun forceReload(reloadType: ReloadType) = viewModelScope.launch { when (reloadType) { - Songs -> _songs.value = loadSongs.await() - Albums -> _albums.value = loadAlbums.await() - Artists -> _artists.value = loadArtists.await() - HomeSections -> _songs.value = loadSongs.await() + Songs -> songs.value = loadSongs.await() + Albums -> albums.value = loadAlbums.await() + Artists -> artists.value = loadArtists.await() + HomeSections -> songs.value = loadSongs.await() } } + fun updateColor(newColor: Int) { + paletteColor.postValue(newColor) + } + override fun onMediaStoreChanged() { loadLibraryContent() } @@ -119,6 +123,7 @@ class LibraryViewModel( override fun onPlayStateChanged() {} override fun onRepeatModeChanged() {} override fun onShuffleModeChanged() {} + } enum class ReloadType { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/NowPlayingScreen.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/NowPlayingScreen.kt index 522a93291..19e085222 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/NowPlayingScreen.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/NowPlayingScreen.kt @@ -24,7 +24,7 @@ enum class NowPlayingScreen constructor( Gradient(R.string.gradient, R.drawable.np_gradient, 17), Material(R.string.material, R.drawable.np_material, 11), Normal(R.string.normal, R.drawable.np_normal, 0), - Peak(R.string.peak, R.drawable.np_peak, 14), + //Peak(R.string.peak, R.drawable.np_peak, 14), Plain(R.string.plain, R.drawable.np_plain, 3), Simple(R.string.simple, R.drawable.np_simple, 8), Tiny(R.string.tiny, R.drawable.np_tiny, 7), diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumsFragment.kt index ab44cbf8c..159844088 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumsFragment.kt @@ -11,7 +11,7 @@ import code.name.monkey.retromusic.fragments.ReloadType import code.name.monkey.retromusic.fragments.base.AbsLibraryPagerRecyclerViewCustomGridSizeFragment import code.name.monkey.retromusic.interfaces.MainActivityFragmentCallbacks import code.name.monkey.retromusic.util.PreferenceUtil -import org.koin.android.viewmodel.ext.android.sharedViewModel +import org.koin.androidx.viewmodel.ext.android.sharedViewModel class AlbumsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment(), @@ -21,7 +21,7 @@ class AlbumsFragment : override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - libraryViewModel.allAlbums + libraryViewModel.albumsLiveData .observe(viewLifecycleOwner, Observer { albums -> if (albums.isNotEmpty()) adapter?.swapDataSet(albums) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/artists/ArtistsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/artists/ArtistsFragment.kt index a669f77a7..64aa49448 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/artists/ArtistsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/artists/ArtistsFragment.kt @@ -11,7 +11,7 @@ import code.name.monkey.retromusic.fragments.ReloadType import code.name.monkey.retromusic.fragments.base.AbsLibraryPagerRecyclerViewCustomGridSizeFragment import code.name.monkey.retromusic.interfaces.MainActivityFragmentCallbacks import code.name.monkey.retromusic.util.PreferenceUtil -import org.koin.android.viewmodel.ext.android.sharedViewModel +import org.koin.androidx.viewmodel.ext.android.sharedViewModel class ArtistsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment(), @@ -21,7 +21,7 @@ class ArtistsFragment : override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - libraryViewModel.allArtists + libraryViewModel.artistsLiveData .observe(viewLifecycleOwner, Observer { artists -> if (artists.isNotEmpty()) { adapter?.swapDataSet(artists) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt index 9c055f937..301ef80c8 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt @@ -2,7 +2,6 @@ package code.name.monkey.retromusic.fragments.base import android.annotation.SuppressLint import android.content.ContentUris -import android.content.Context import android.content.Intent import android.media.MediaMetadataRetriever import android.os.AsyncTask @@ -19,6 +18,7 @@ import code.name.monkey.retromusic.activities.tageditor.AbsTagEditorActivity import code.name.monkey.retromusic.activities.tageditor.SongTagEditorActivity import code.name.monkey.retromusic.dialogs.* import code.name.monkey.retromusic.extensions.hide +import code.name.monkey.retromusic.fragments.LibraryViewModel import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.interfaces.PaletteColorHolder @@ -26,6 +26,7 @@ import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.model.lyrics.Lyrics import code.name.monkey.retromusic.util.* import kotlinx.android.synthetic.main.shadow_statusbar_toolbar.* +import org.koin.androidx.viewmodel.ext.android.sharedViewModel import java.io.FileNotFoundException abstract class AbsPlayerFragment : AbsMusicServiceFragment(), @@ -33,27 +34,11 @@ abstract class AbsPlayerFragment : AbsMusicServiceFragment(), PaletteColorHolder, PlayerAlbumCoverFragment.Callbacks { - var callbacks: Callbacks? = null - private set + private var updateIsFavoriteTask: AsyncTask<*, *, *>? = null private var updateLyricsAsyncTask: AsyncTask<*, *, *>? = null private var playerAlbumCoverFragment: PlayerAlbumCoverFragment? = null - - override fun onAttach( - context: Context - ) { - super.onAttach(context) - try { - callbacks = context as Callbacks? - } catch (e: ClassCastException) { - throw RuntimeException(context.javaClass.simpleName + " must implement " + Callbacks::class.java.simpleName) - } - } - - override fun onDetach() { - super.onDetach() - callbacks = null - } + protected val libraryViewModel by sharedViewModel() override fun onMenuItemClick( item: MenuItem diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.java b/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.java index 0df60de03..9a81800e5 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.java +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.java @@ -84,7 +84,7 @@ public class FoldersFragment extends AbsMainActivityFragment implements FileUtil.fileIsMimeType(file, "audio/*", MimeTypeMap.getSingleton()) || FileUtil.fileIsMimeType(file, "application/opus", MimeTypeMap.getSingleton()) || FileUtil.fileIsMimeType(file, "application/ogg", MimeTypeMap.getSingleton())); - private static final String PATH = "path"; + public static final String PATH = "path"; private static final String CRUMBS = "crumbs"; private static final int LOADER_ID = 5; private SongFileAdapter adapter; @@ -170,8 +170,7 @@ public class FoldersFragment extends AbsMainActivityFragment implements if (savedInstanceState == null) { //noinspection ConstantConditions - setCrumb(new BreadCrumbLayout.Crumb( - FileUtil.safeGetCanonicalFile((File) getArguments().getSerializable(PATH))), true); + setCrumb(new BreadCrumbLayout.Crumb(FileUtil.safeGetCanonicalFile((File) requireArguments().getSerializable(PATH))), true); } else { breadCrumbs.restoreFromStateWrapper(savedInstanceState.getParcelable(CRUMBS)); getLoaderManager().initLoader(LOADER_ID, null, this); diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenresFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenresFragment.kt index 94fecdd31..fb524a699 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenresFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenresFragment.kt @@ -23,7 +23,7 @@ import code.name.monkey.retromusic.adapter.GenreAdapter import code.name.monkey.retromusic.fragments.LibraryViewModel import code.name.monkey.retromusic.fragments.base.AbsLibraryPagerRecyclerViewFragment import code.name.monkey.retromusic.interfaces.MainActivityFragmentCallbacks -import org.koin.android.viewmodel.ext.android.sharedViewModel +import org.koin.androidx.viewmodel.ext.android.sharedViewModel class GenresFragment : AbsLibraryPagerRecyclerViewFragment(), MainActivityFragmentCallbacks { @@ -32,7 +32,7 @@ class GenresFragment : AbsLibraryPagerRecyclerViewFragment if (genres.isNotEmpty()) { adapter?.swapDataSet(genres) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/home/BannerHomeFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/home/BannerHomeFragment.kt index 0f05c0c75..d5eb671b2 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/home/BannerHomeFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/home/BannerHomeFragment.kt @@ -40,7 +40,7 @@ import com.bumptech.glide.Glide import kotlinx.android.synthetic.main.abs_playlists.* import kotlinx.android.synthetic.main.fragment_banner_home.* import kotlinx.android.synthetic.main.home_content.* -import org.koin.android.viewmodel.ext.android.sharedViewModel +import org.koin.androidx.viewmodel.ext.android.sharedViewModel class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallbacks { @@ -116,7 +116,7 @@ class BannerHomeFragment : AbsMainActivityFragment(), MainActivityFragmentCallba adapter = homeAdapter } - libraryViewModel.homeSections + libraryViewModel.homeLiveData .observe(viewLifecycleOwner, Observer { sections -> homeAdapter.swapData(sections) }) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/MainPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/MainPlayerFragment.kt deleted file mode 100644 index e9ba68684..000000000 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/MainPlayerFragment.kt +++ /dev/null @@ -1,16 +0,0 @@ -package code.name.monkey.retromusic.fragments.player - -import android.os.Bundle -import androidx.fragment.app.Fragment -import androidx.navigation.fragment.findNavController -import code.name.monkey.retromusic.R -import code.name.monkey.retromusic.util.PreferenceUtil - -class MainPlayerFragment : Fragment(R.layout.fragment_main_player) { - override fun onActivityCreated(savedInstanceState: Bundle?) { - super.onActivityCreated(savedInstanceState) - when (PreferenceUtil.nowPlayingScreen) { - else -> findNavController().navigate(R.id.action_mainPlayerFragment_to_adaptiveFragment) - } - } -} \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/NowPlayingPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/NowPlayingPlayerFragment.kt new file mode 100644 index 000000000..d1c1b54c1 --- /dev/null +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/NowPlayingPlayerFragment.kt @@ -0,0 +1,45 @@ +package code.name.monkey.retromusic.fragments.player + +import android.os.Bundle +import android.util.Log +import androidx.fragment.app.Fragment +import androidx.navigation.NavController +import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.extensions.navController +import code.name.monkey.retromusic.fragments.NowPlayingScreen.* +import code.name.monkey.retromusic.util.PreferenceUtil + +class NowPlayingPlayerFragment : Fragment(R.layout.fragment_now_playing_player) { + companion object { + const val TAG = "NowPlaying" + } + + override fun onActivityCreated(savedInstanceState: Bundle?) { + super.onActivityCreated(savedInstanceState) + Log.i(TAG, "onActivityCreated: ") + val navController = navController(R.id.playerFragmentContainer) + updateNowPlaying(navController) + } + + private fun updateNowPlaying(navController: NavController) { + Log.i(TAG, "updateNowPlaying: ${PreferenceUtil.nowPlayingScreen}") + when (PreferenceUtil.nowPlayingScreen) { + Adaptive -> navController.navigate(R.id.adaptiveFragment) + Blur -> navController.navigate(R.id.blurPlayerFragment) + BlurCard -> navController.navigate(R.id.cardBlurFragment) + Card -> navController.navigate(R.id.cardFragment) + Circle -> navController.navigate(R.id.circlePlayerFragment) + Classic -> navController.navigate(R.id.classicPlayerFragment) + Color -> navController.navigate(R.id.colorFragment) + Fit -> navController.navigate(R.id.fitFragment) + Flat -> navController.navigate(R.id.flatPlayerFragment) + Full -> navController.navigate(R.id.fullPlayerFragment) + Gradient -> navController.navigate(R.id.gradientPlayerFragment) + Material -> navController.navigate(R.id.materialFragment) + Plain -> navController.navigate(R.id.plainPlayerFragment) + Simple -> navController.navigate(R.id.simplePlayerFragment) + Tiny -> navController.navigate(R.id.tinyPlayerFragment) + else -> navController.navigate(R.id.playerFragment) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/PlayerAlbumCoverFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/PlayerAlbumCoverFragment.kt index 13ef1ffd8..c1c55d5dd 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/PlayerAlbumCoverFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/PlayerAlbumCoverFragment.kt @@ -50,7 +50,7 @@ class PlayerAlbumCoverFragment : AbsMusicServiceFragment(), ViewPager.OnPageChan val metrics = resources.displayMetrics val ratio = metrics.heightPixels.toFloat() / metrics.widthPixels.toFloat() - if (nps == Full || nps == Classic || nps == Fit || nps == Gradient || nps == Peak) { + if (nps == Full || nps == Classic || nps == Fit || nps == Gradient ) { viewPager.offscreenPageLimit = 2 } else if (PreferenceUtil.isCarouselEffect) { viewPager.clipToPadding = false diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/adaptive/AdaptiveFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/adaptive/AdaptiveFragment.kt index b50d34f75..eb928e247 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/adaptive/AdaptiveFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/adaptive/AdaptiveFragment.kt @@ -96,7 +96,7 @@ class AdaptiveFragment : AbsPlayerFragment() { override fun onColorChanged(color: MediaNotificationProcessor) { playbackControlsFragment.setColor(color) lastColor = color.primaryTextColor - callbacks?.onPaletteColorChanged() + libraryViewModel.updateColor(color.primaryTextColor) ToolbarContentTintHelper.colorizeToolbar( playerToolbar, ATHUtil.resolveColor(requireContext(), R.attr.colorControlNormal), diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/blur/BlurPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/blur/BlurPlayerFragment.kt index bb167af19..ea7460954 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/blur/BlurPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/blur/BlurPlayerFragment.kt @@ -68,7 +68,7 @@ class BlurPlayerFragment : AbsPlayerFragment(), SharedPreferences.OnSharedPrefer override fun onColorChanged(color: MediaNotificationProcessor) { playbackControlsFragment.setColor(color) lastColor = color.backgroundColor - callbacks?.onPaletteColorChanged() + libraryViewModel.updateColor(color.backgroundColor) ToolbarContentTintHelper.colorizeToolbar(playerToolbar, Color.WHITE, activity) } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/card/CardFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/card/CardFragment.kt index a15633d91..1e3c90955 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/card/CardFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/card/CardFragment.kt @@ -47,7 +47,7 @@ class CardFragment : AbsPlayerFragment() { override fun onColorChanged(color: MediaNotificationProcessor) { playbackControlsFragment.setColor(color) lastColor = color.primaryTextColor - callbacks?.onPaletteColorChanged() + libraryViewModel.updateColor(color.primaryTextColor) ToolbarContentTintHelper.colorizeToolbar(playerToolbar, Color.WHITE, activity) } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/cardblur/CardBlurFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/cardblur/CardBlurFragment.kt index e1b1ab237..d0de12fa2 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/cardblur/CardBlurFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/cardblur/CardBlurFragment.kt @@ -54,7 +54,7 @@ class CardBlurFragment : AbsPlayerFragment(), SharedPreferences.OnSharedPreferen override fun onColorChanged(color: MediaNotificationProcessor) { playbackControlsFragment.setColor(color) lastColor = color.backgroundColor - callbacks!!.onPaletteColorChanged() + libraryViewModel.updateColor(color.backgroundColor) ToolbarContentTintHelper.colorizeToolbar(playerToolbar, Color.WHITE, activity) playerToolbar.setTitleTextColor(Color.WHITE) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/classic/ClassicPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/classic/ClassicPlayerFragment.kt index bdfedfde0..df83285b1 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/classic/ClassicPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/classic/ClassicPlayerFragment.kt @@ -271,7 +271,7 @@ class ClassicPlayerFragment : AbsPlayerFragment(), View.OnLayoutChangeListener, override fun onColorChanged(color: MediaNotificationProcessor) { lastColor = color.backgroundColor - callbacks?.onPaletteColorChanged() + libraryViewModel.updateColor(color.backgroundColor) lastPlaybackControlsColor = color.primaryTextColor lastDisabledPlaybackControlsColor = ColorUtil.withAlpha(color.primaryTextColor, 0.3f) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/color/ColorFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/color/ColorFragment.kt index 8c4674a38..691dc57fd 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/color/ColorFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/color/ColorFragment.kt @@ -33,10 +33,11 @@ class ColorFragment : AbsPlayerFragment() { get() = navigationColor override fun onColorChanged(color: MediaNotificationProcessor) { + libraryViewModel.updateColor(color.backgroundColor) lastColor = color.secondaryTextColor playbackControlsFragment.setColor(color) navigationColor = color.backgroundColor - callbacks?.onPaletteColorChanged() + colorGradientBackground?.setBackgroundColor(color.backgroundColor) playerActivity?.setLightNavigationBar(ColorUtil.isColorLight(color.backgroundColor)) Handler().post { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/fit/FitFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/fit/FitFragment.kt index 9490461dd..1fee1df87 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/fit/FitFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/fit/FitFragment.kt @@ -46,7 +46,7 @@ class FitFragment : AbsPlayerFragment() { override fun onColorChanged(color: MediaNotificationProcessor) { playbackControlsFragment.setColor(color) lastColor = color.primaryTextColor - callbacks?.onPaletteColorChanged() + libraryViewModel.updateColor(color.primaryTextColor) ToolbarContentTintHelper.colorizeToolbar( playerToolbar, ATHUtil.resolveColor(requireContext(), R.attr.colorControlNormal), diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/flat/FlatPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/flat/FlatPlaybackControlsFragment.kt index 3c689e55e..4fee49100 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/flat/FlatPlaybackControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/flat/FlatPlaybackControlsFragment.kt @@ -86,14 +86,14 @@ class FlatPlaybackControlsFragment : AbsPlayerControlsFragment(), Callback { override fun setColor(color: MediaNotificationProcessor) { if (ATHUtil.isWindowBackgroundDark(requireContext())) { lastPlaybackControlsColor = - MaterialValueHelper.getSecondaryTextColor(requireContext(), true) + MaterialValueHelper.getSecondaryTextColor(requireContext(), false) lastDisabledPlaybackControlsColor = - MaterialValueHelper.getSecondaryDisabledTextColor(requireContext(), true) + MaterialValueHelper.getSecondaryDisabledTextColor(requireContext(), false) } else { lastPlaybackControlsColor = - MaterialValueHelper.getPrimaryTextColor(requireContext(), false) + MaterialValueHelper.getPrimaryTextColor(requireContext(), true) lastDisabledPlaybackControlsColor = - MaterialValueHelper.getPrimaryDisabledTextColor(requireContext(), false) + MaterialValueHelper.getPrimaryDisabledTextColor(requireContext(), true) } val colorFinal = if (PreferenceUtil.isAdaptiveColor) { @@ -116,8 +116,8 @@ class FlatPlaybackControlsFragment : AbsPlayerControlsFragment(), Callback { val colorSecondary = MaterialValueHelper.getSecondaryTextColor(context, ColorUtil.isColorLight(darkColor)) - TintHelper.setTintAuto(playPauseButton!!, colorPrimary, false) - TintHelper.setTintAuto(playPauseButton!!, color, true) + TintHelper.setTintAuto(playPauseButton, colorPrimary, false) + TintHelper.setTintAuto(playPauseButton, color, true) title.setBackgroundColor(color) title.setTextColor(colorPrimary) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/flat/FlatPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/flat/FlatPlayerFragment.kt index 35b36c36e..e0eaa94e5 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/flat/FlatPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/flat/FlatPlayerFragment.kt @@ -108,7 +108,7 @@ class FlatPlayerFragment : AbsPlayerFragment() { override fun onColorChanged(color: MediaNotificationProcessor) { lastColor = color.backgroundColor controlsFragment.setColor(color) - callbacks?.onPaletteColorChanged() + libraryViewModel.updateColor(color.backgroundColor) val isLight = ColorUtil.isColorLight(color.backgroundColor) val iconColor = if (PreferenceUtil.isAdaptiveColor) MaterialValueHelper.getPrimaryTextColor(requireContext(), isLight) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlayerFragment.kt index 50685eec0..7538af77d 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlayerFragment.kt @@ -202,7 +202,7 @@ class FullPlayerFragment : AbsPlayerFragment(), MusicProgressViewUpdateHelper.Ca lastColor = color.backgroundColor mask.backgroundTintList = ColorStateList.valueOf(color.backgroundColor) controlsFragment.setColor(color) - callbacks?.onPaletteColorChanged() + libraryViewModel.updateColor(color.backgroundColor) ToolbarContentTintHelper.colorizeToolbar(playerToolbar, Color.WHITE, activity) } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/gradient/GradientPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/gradient/GradientPlayerFragment.kt index edcf4dab0..1d23c7c8b 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/gradient/GradientPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/gradient/GradientPlayerFragment.kt @@ -201,7 +201,7 @@ class GradientPlayerFragment : AbsPlayerFragment(), MusicProgressViewUpdateHelpe override fun onColorChanged(color: MediaNotificationProcessor) { lastColor = color.backgroundColor - callbacks?.onPaletteColorChanged() + libraryViewModel.updateColor(color.backgroundColor) mask.backgroundTintList = ColorStateList.valueOf(color.backgroundColor) colorBackground.setBackgroundColor(color.backgroundColor) playerQueueSheet.setBackgroundColor(ColorUtil.darkenColor(color.backgroundColor)) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/home/HomePlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/home/HomePlayerFragment.kt index 979dc2cec..cd3d16bd0 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/home/HomePlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/home/HomePlayerFragment.kt @@ -93,7 +93,7 @@ class HomePlayerFragment : AbsPlayerFragment(), MusicProgressViewUpdateHelper.Ca override fun onColorChanged(color: MediaNotificationProcessor) { lastColor = color.backgroundColor - callbacks?.onPaletteColorChanged() + libraryViewModel.updateColor(color.backgroundColor) ToolbarContentTintHelper.colorizeToolbar( playerToolbar, Color.WHITE, diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialFragment.kt index 78a69df5d..b2b61d4c2 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialFragment.kt @@ -52,7 +52,7 @@ class MaterialFragment : AbsPlayerFragment() { override fun onColorChanged(color: MediaNotificationProcessor) { playbackControlsFragment.setColor(color) lastColor = color.backgroundColor - callbacks?.onPaletteColorChanged() + libraryViewModel.updateColor(color.backgroundColor) ToolbarContentTintHelper.colorizeToolbar( playerToolbar, diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/normal/PlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/normal/PlayerFragment.kt index 5e550862d..6017e11e5 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/normal/PlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/normal/PlayerFragment.kt @@ -78,7 +78,7 @@ class PlayerFragment : AbsPlayerFragment() { override fun onColorChanged(color: MediaNotificationProcessor) { controlsFragment.setColor(color) lastColor = color.backgroundColor - callbacks?.onPaletteColorChanged() + libraryViewModel.updateColor(color.backgroundColor) ToolbarContentTintHelper.colorizeToolbar( playerToolbar, diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/peak/PeakPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/peak/PeakPlayerFragment.kt index 457de2adb..a47a41b9d 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/peak/PeakPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/peak/PeakPlayerFragment.kt @@ -102,7 +102,7 @@ class PeakPlayerFragment : AbsPlayerFragment() { override fun onColorChanged(color: MediaNotificationProcessor) { lastColor = color.primaryTextColor - callbacks?.onPaletteColorChanged() + libraryViewModel.updateColor(color.primaryTextColor) controlsFragment.setColor(color) } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/plain/PlainPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/plain/PlainPlayerFragment.kt index 6d2b13cf9..76bf1979e 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/plain/PlainPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/plain/PlainPlayerFragment.kt @@ -97,7 +97,7 @@ class PlainPlayerFragment : AbsPlayerFragment() { override fun onColorChanged(color: MediaNotificationProcessor) { plainPlaybackControlsFragment.setColor(color) lastColor = color.primaryTextColor - callbacks!!.onPaletteColorChanged() + libraryViewModel.updateColor(color.primaryTextColor) ToolbarContentTintHelper.colorizeToolbar( playerToolbar, ATHUtil.resolveColor(requireContext(), R.attr.colorControlNormal), diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/simple/SimplePlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/simple/SimplePlayerFragment.kt index de5047150..93a9fdebe 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/simple/SimplePlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/simple/SimplePlayerFragment.kt @@ -71,7 +71,7 @@ class SimplePlayerFragment : AbsPlayerFragment() { override fun onColorChanged(color: MediaNotificationProcessor) { lastColor = color.backgroundColor - callbacks?.onPaletteColorChanged() + libraryViewModel.updateColor(color.backgroundColor) controlsFragment.setColor(color) ToolbarContentTintHelper.colorizeToolbar( playerToolbar, diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/tiny/TinyPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/tiny/TinyPlayerFragment.kt index eb8e59ced..c299e9ca0 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/tiny/TinyPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/tiny/TinyPlayerFragment.kt @@ -57,9 +57,9 @@ class TinyPlayerFragment : AbsPlayerFragment(), MusicProgressViewUpdateHelper.Ca override fun onColorChanged(color: MediaNotificationProcessor) { lastColor = color.backgroundColor + libraryViewModel.updateColor(color.backgroundColor) toolbarColor = color.secondaryTextColor controlsFragment.setColor(color) - callbacks?.onPaletteColorChanged() title.setTextColor(color.primaryTextColor) playerSongTotalTime.setTextColor(color.primaryTextColor) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistsFragment.kt index baaf46c1d..79466307d 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistsFragment.kt @@ -11,7 +11,7 @@ import code.name.monkey.retromusic.adapter.playlist.PlaylistAdapter import code.name.monkey.retromusic.fragments.LibraryViewModel import code.name.monkey.retromusic.fragments.base.AbsLibraryPagerRecyclerViewFragment import code.name.monkey.retromusic.interfaces.MainActivityFragmentCallbacks -import org.koin.android.viewmodel.ext.android.sharedViewModel +import org.koin.androidx.viewmodel.ext.android.sharedViewModel class PlaylistsFragment : AbsLibraryPagerRecyclerViewFragment(), @@ -21,7 +21,7 @@ class PlaylistsFragment : override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - libraryViewModel.allPlaylisits.observe(viewLifecycleOwner, Observer { playlists -> + libraryViewModel.playlisitsLiveData.observe(viewLifecycleOwner, Observer { playlists -> if (playlists.isNotEmpty()) { adapter?.swapDataSet(playlists) } else { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/AbsSettingsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/AbsSettingsFragment.kt index b7d51f06c..7f8105ddb 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/AbsSettingsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/AbsSettingsFragment.kt @@ -23,8 +23,6 @@ import androidx.preference.ListPreference import androidx.preference.Preference import androidx.preference.PreferenceManager import code.name.monkey.appthemehelper.common.prefs.supportv7.ATEPreferenceFragmentCompat -import code.name.monkey.appthemehelper.util.ATHUtil -import code.name.monkey.retromusic.R import code.name.monkey.retromusic.preferences.* import code.name.monkey.retromusic.util.NavigationUtil @@ -65,7 +63,7 @@ abstract class AbsSettingsFragment : ATEPreferenceFragmentCompat() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) setDivider(ColorDrawable(Color.TRANSPARENT)) - listView.setBackgroundColor(ATHUtil.resolveColor(requireContext(), R.attr.colorSurface)) + //listView.setBackgroundColor(ATHUtil.resolveColor(requireContext(), R.attr.colorSurface)) listView.overScrollMode = View.OVER_SCROLL_NEVER listView.setPadding(0, 0, 0, 0) listView.setPaddingRelative(0, 0, 0, 0) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/songs/SongsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/songs/SongsFragment.kt index e6ff5425c..9e08a8035 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/songs/SongsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/songs/SongsFragment.kt @@ -13,7 +13,7 @@ import code.name.monkey.retromusic.fragments.ReloadType import code.name.monkey.retromusic.fragments.base.AbsLibraryPagerRecyclerViewCustomGridSizeFragment import code.name.monkey.retromusic.interfaces.MainActivityFragmentCallbacks import code.name.monkey.retromusic.util.PreferenceUtil -import org.koin.android.viewmodel.ext.android.sharedViewModel +import org.koin.androidx.viewmodel.ext.android.sharedViewModel class SongsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment(), @@ -23,7 +23,7 @@ class SongsFragment : override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - libraryViewModel.allSongs.observe(viewLifecycleOwner, Observer { + libraryViewModel.songsLiveData.observe(viewLifecycleOwner, Observer { if (it.isNotEmpty()) { adapter?.swapDataSet(it) } else { diff --git a/app/src/main/java/code/name/monkey/retromusic/providers/RepositoryImpl.kt b/app/src/main/java/code/name/monkey/retromusic/providers/RepositoryImpl.kt index c1c778e9c..8a1dbf11d 100644 --- a/app/src/main/java/code/name/monkey/retromusic/providers/RepositoryImpl.kt +++ b/app/src/main/java/code/name/monkey/retromusic/providers/RepositoryImpl.kt @@ -63,8 +63,7 @@ class RepositoryImpl( val genres = GenreLoader.getAllGenres(context) .shuffled() - .take(10) - .filter { it.name.length > 4 } + .filter { it.name.length in 5..10 } if (genres.isNotEmpty()) { return Home( diff --git a/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.kt b/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.kt index 86ed7e750..312bea1b9 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.kt +++ b/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.kt @@ -63,16 +63,14 @@ object PreferenceUtil { } fun registerOnSharedPreferenceChangedListener( - changeListener: OnSharedPreferenceChangeListener - ) { - sharedPreferences.registerOnSharedPreferenceChangeListener(changeListener) - } + listener: OnSharedPreferenceChangeListener + ) = sharedPreferences.registerOnSharedPreferenceChangeListener(listener) + fun unregisterOnSharedPreferenceChangedListener( changeListener: OnSharedPreferenceChangeListener - ) { - sharedPreferences.unregisterOnSharedPreferenceChangeListener(changeListener) - } + ) = sharedPreferences.unregisterOnSharedPreferenceChangeListener(changeListener) + val baseTheme get() = sharedPreferences.getStringOrDefault(GENERAL_THEME, "auto") diff --git a/app/src/main/java/code/name/monkey/retromusic/views/ListItemView.kt b/app/src/main/java/code/name/monkey/retromusic/views/ListItemView.kt index 0a0ca03a6..b0f1b7536 100644 --- a/app/src/main/java/code/name/monkey/retromusic/views/ListItemView.kt +++ b/app/src/main/java/code/name/monkey/retromusic/views/ListItemView.kt @@ -46,7 +46,7 @@ class ListItemView : FrameLayout { } private fun init(context: Context, attrs: AttributeSet?) { - View.inflate(context, R.layout.list_item_view, this) + View.inflate(context, R.layout.list_item_view_no_card, this) val typedArray = context.obtainStyledAttributes(attrs, R.styleable.ListItemView) if (typedArray.hasValue(R.styleable.ListItemView_listItemIcon)) { diff --git a/app/src/main/res/layout/activity_main_content.xml b/app/src/main/res/layout/activity_main_content.xml index 4b0a8efb3..fa547b5ca 100644 --- a/app/src/main/res/layout/activity_main_content.xml +++ b/app/src/main/res/layout/activity_main_content.xml @@ -51,7 +51,11 @@ - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_now_playing_player.xml b/app/src/main/res/layout/fragment_now_playing_player.xml new file mode 100644 index 000000000..2b7ec4529 --- /dev/null +++ b/app/src/main/res/layout/fragment_now_playing_player.xml @@ -0,0 +1,13 @@ + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_list.xml b/app/src/main/res/layout/item_list.xml index 1d27814f8..30a61347e 100755 --- a/app/src/main/res/layout/item_list.xml +++ b/app/src/main/res/layout/item_list.xml @@ -46,7 +46,7 @@ android:layout_gravity="center_vertical" android:gravity="center_vertical" android:scaleType="centerCrop" - tools:srcCompat="@tools:sample/backgrounds/scenic[16]" /> + tools:srcCompat="@tools:sample/backgrounds/scenic" /> + tools:text="@tools:sample/full_names" /> + tools:text="@tools:sample/full_names" /> - + app:cardCornerRadius="0dp"> - + tools:ignore="PrivateResource"> - + + + - + - - \ No newline at end of file + + + \ No newline at end of file diff --git a/app/src/main/res/layout/list_item_view.xml b/app/src/main/res/layout/list_item_view.xml index df7a98788..ebfd3737c 100644 --- a/app/src/main/res/layout/list_item_view.xml +++ b/app/src/main/res/layout/list_item_view.xml @@ -11,37 +11,41 @@ ~ without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ~ See the GNU General Public License for more details. --> - - + app:cardCornerRadius="0dp"> - + tools:ignore="PrivateResource"> - + + - + - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout/list_item_view_no_card.xml b/app/src/main/res/layout/list_item_view_no_card.xml new file mode 100644 index 000000000..df7a98788 --- /dev/null +++ b/app/src/main/res/layout/list_item_view_no_card.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/list_item_view_no_title.xml b/app/src/main/res/layout/list_item_view_no_title.xml index 17c8297fe..dd5fb57e7 100644 --- a/app/src/main/res/layout/list_item_view_no_title.xml +++ b/app/src/main/res/layout/list_item_view_no_title.xml @@ -12,29 +12,35 @@ ~ See the GNU General Public License for more details. --> - + app:cardCornerRadius="0dp"> - + + + - + - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout/list_item_view_seekbar.xml b/app/src/main/res/layout/list_item_view_seekbar.xml index b22f4bc9a..d8929a0b9 100644 --- a/app/src/main/res/layout/list_item_view_seekbar.xml +++ b/app/src/main/res/layout/list_item_view_seekbar.xml @@ -12,39 +12,45 @@ ~ See the GNU General Public License for more details. --> - + app:cardCornerRadius="0dp"> - - - + + + + + @@ -93,11 +99,10 @@ android:layout_height="wrap_content" android:layout_marginStart="8dp" android:layout_marginEnd="16dp" - - android:textAppearance="@style/TextViewSubtitle1" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/seekbar" tools:text="20" /> - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout/list_item_view_switch.xml b/app/src/main/res/layout/list_item_view_switch.xml index dba4352ca..e71327918 100644 --- a/app/src/main/res/layout/list_item_view_switch.xml +++ b/app/src/main/res/layout/list_item_view_switch.xml @@ -12,29 +12,36 @@ ~ See the GNU General Public License for more details. --> - + app:cardCornerRadius="0dp"> - + tools:ignore="PrivateResource"> - + + - - \ No newline at end of file + + + \ No newline at end of file diff --git a/app/src/main/res/layout/list_item_view_switch_no_title.xml b/app/src/main/res/layout/list_item_view_switch_no_title.xml index af12be264..a8fe1c507 100644 --- a/app/src/main/res/layout/list_item_view_switch_no_title.xml +++ b/app/src/main/res/layout/list_item_view_switch_no_title.xml @@ -12,60 +12,68 @@ ~ See the GNU General Public License for more details. --> - + app:cardCornerRadius="0dp"> - - - - - - - - - \ No newline at end of file + app:layout_constraintStart_toStartOf="parent" + tools:ignore="PrivateResource"> + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/preference_category_title.xml b/app/src/main/res/layout/preference_category_title.xml index cdbefb6fb..07652d82f 100644 --- a/app/src/main/res/layout/preference_category_title.xml +++ b/app/src/main/res/layout/preference_category_title.xml @@ -24,6 +24,7 @@ android:paddingStart="@dimen/pref_title_padding" android:paddingTop="16dp" android:paddingEnd="16dp" + android:paddingBottom="16dp" android:textAppearance="@style/TextViewOverline" tools:text="@tools:sample/full_names" /> \ No newline at end of file diff --git a/app/src/main/res/layout/sliding_music_panel_layout.xml b/app/src/main/res/layout/sliding_music_panel_layout.xml index b0c54814c..810d401c8 100644 --- a/app/src/main/res/layout/sliding_music_panel_layout.xml +++ b/app/src/main/res/layout/sliding_music_panel_layout.xml @@ -22,7 +22,7 @@ + + + + + + + + + + + + + + + + + app:startDestination="@id/action_song"> - + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/navigation/settings_graph.xml b/app/src/main/res/navigation/settings_graph.xml index 2559e9dcb..7f03655b6 100644 --- a/app/src/main/res/navigation/settings_graph.xml +++ b/app/src/main/res/navigation/settings_graph.xml @@ -8,8 +8,9 @@ + + android:label="Audio" /> + + android:label="Image" /> + + android:label="Notification" /> + + android:label="Now Playing" /> + + android:label="Other" /> + + android:label="Personalize" /> + + android:label="Look & Feel" /> + Date: Thu, 30 Jul 2020 19:41:19 +0530 Subject: [PATCH 7/7] Removed navigation in Library Having navigation in Library makes it hard to have options for each fragments we have to add manualy to each fragment --- .editorconfig | 358 ++++++++++++++++++ app/src/main/assets/oldindex.html | 1 + app/src/main/assets/retro-changelog.html | 1 + .../retromusic/activities/MainActivity.kt | 188 ++++++--- .../retromusic/activities/SettingsActivity.kt | 3 +- .../activities/albums/AlbumDetailsFragment.kt | 250 ++++++++++++ .../shortcuttype/SearchShortCutType.kt | 11 +- .../dialogs/BlacklistFolderChooserDialog.java | 25 +- .../fragments/MiniPlayerFragment.kt | 16 +- .../retromusic/fragments/NowPlayingScreen.kt | 1 + .../fragments/albums/AlbumsFragment.kt | 13 +- .../fragments/artists/ArtistsFragment.kt | 17 +- .../fragments/base/AbsLibraryPagerFragment.kt | 15 - .../fragments/base/AbsMainActivityFragment.kt | 3 +- .../fragments/base/AbsMusicServiceFragment.kt | 4 +- .../base/AbsPlayerControlsFragment.kt | 3 +- .../fragments/base/AbsPlayerFragment.kt | 3 +- ... AbsRecyclerViewCustomGridSizeFragment.kt} | 4 +- ...Fragment.kt => AbsRecyclerViewFragment.kt} | 23 +- .../fragments/folder/FoldersFragment.java | 1 + .../fragments/genres/GenresFragment.kt | 13 +- .../fragments/home/BannerHomeFragment.kt | 29 +- .../retromusic/fragments/main/MainFragment.kt | 18 - .../player/NowPlayingPlayerFragment.kt | 3 - .../player/PlayerAlbumCoverFragment.kt | 15 +- .../player/adaptive/AdaptiveFragment.kt | 12 +- .../AdaptivePlaybackControlsFragment.kt | 3 +- .../blur/BlurPlaybackControlsFragment.kt | 13 +- .../player/blur/BlurPlayerFragment.kt | 11 +- .../fragments/player/card/CardFragment.kt | 12 +- .../card/CardPlaybackControlsFragment.kt | 12 +- .../player/cardblur/CardBlurFragment.kt | 13 +- .../CardBlurPlaybackControlsFragment.kt | 18 +- .../player/circle/CirclePlayerFragment.kt | 3 +- .../player/classic/ClassicPlayerFragment.kt | 14 +- .../fragments/player/color/ColorFragment.kt | 12 +- .../color/ColorPlaybackControlsFragment.kt | 3 +- .../fragments/player/fit/FitFragment.kt | 12 +- .../player/fit/FitPlaybackControlsFragment.kt | 10 +- .../flat/FlatPlaybackControlsFragment.kt | 13 +- .../player/flat/FlatPlayerFragment.kt | 12 +- .../full/FullPlaybackControlsFragment.kt | 14 +- .../player/full/FullPlayerFragment.kt | 12 +- .../player/gradient/GradientPlayerFragment.kt | 54 ++- .../player/home/HomePlayerFragment.kt | 13 +- .../LockScreenPlayerControlsFragment.kt | 14 +- .../material/MaterialControlsFragment.kt | 13 +- .../player/material/MaterialFragment.kt | 11 +- .../fragments/player/normal/PlayerFragment.kt | 13 +- .../normal/PlayerPlaybackControlsFragment.kt | 13 +- .../player/peak/PeakPlayerControlFragment.kt | 13 +- .../player/peak/PeakPlayerFragment.kt | 13 +- .../plain/PlainPlaybackControlsFragment.kt | 14 +- .../player/plain/PlainPlayerFragment.kt | 11 +- .../simple/SimplePlaybackControlsFragment.kt | 14 +- .../player/simple/SimplePlayerFragment.kt | 11 +- .../tiny/TinyPlaybackControlsFragment.kt | 12 +- .../player/tiny/TinyPlayerFragment.kt | 13 +- .../fragments/playlists/PlaylistsFragment.kt | 14 +- .../fragments/queue/PlayingQueueFragment.kt | 4 +- .../fragments/songs/SongsFragment.kt | 77 +++- .../MainActivityFragmentCallbacks.kt | 7 +- .../preferences/BlacklistPreferenceDialog.kt | 11 +- .../res/anim/retro_fragment_close_enter.xml | 7 +- .../res/anim/retro_fragment_close_exit.xml | 7 +- .../res/anim/retro_fragment_fade_enter.xml | 6 +- .../res/anim/retro_fragment_fade_exit.xml | 6 +- .../retro_fragment_fast_out_extra_slow_in.xml | 5 +- .../res/anim/retro_fragment_open_exit.xml | 7 +- app/src/main/res/drawable/avd_album.xml | 9 +- app/src/main/res/drawable/avd_home.xml | 19 +- app/src/main/res/drawable/avd_music_note.xml | 23 +- app/src/main/res/drawable/ic_history.xml | 13 +- .../res/layout-land/activity_drive_mode.xml | 4 +- .../layout-land/fragment_circle_player.xml | 4 +- app/src/main/res/layout-land/pager_item.xml | 3 +- .../res/layout-xlarge-land/pager_item.xml | 3 +- .../main/res/layout/activity_drive_mode.xml | 4 +- .../main/res/layout/activity_main_content.xml | 7 +- ...ment_adaptive_player_playback_controls.xml | 4 +- .../res/layout/fragment_album_details.xml | 102 +++++ .../res/layout/fragment_circle_player.xml | 4 +- .../layout/fragment_fit_playback_controls.xml | 4 +- .../layout/fragment_full_player_controls.xml | 4 +- .../res/layout/fragment_gradient_controls.xml | 4 +- ...fragment_lock_screen_playback_controls.xml | 4 +- .../fragment_material_playback_controls.xml | 4 +- .../layout/fragment_peak_control_player.xml | 4 +- .../fragment_plain_controls_fragment.xml | 4 +- .../main/res/layout/list_item_color_view.xml | 90 ++--- app/src/main/res/layout/list_item_view.xml | 67 ++-- .../res/layout/list_item_view_no_title.xml | 54 ++- .../res/layout/list_item_view_seekbar.xml | 67 ++-- .../main/res/layout/list_item_view_switch.xml | 65 ++-- .../layout/list_item_view_switch_no_title.xml | 102 +++-- .../res/layout/list_setting_item_view.xml | 4 +- .../res/layout/preference_category_title.xml | 1 - app/src/main/res/layout/preference_screen.xml | 8 + app/src/main/res/navigation/retro_graph.xml | 8 + app/src/main/res/transition/change_bounds.xml | 3 + app/src/main/res/values/colors.xml | 5 - app/src/main/res/values/ids.xml | 1 - app/src/main/res/values/seekarc_attrs.xml | 2 +- 103 files changed, 1387 insertions(+), 917 deletions(-) create mode 100644 .editorconfig create mode 100644 app/src/main/java/code/name/monkey/retromusic/activities/albums/AlbumDetailsFragment.kt delete mode 100644 app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsLibraryPagerFragment.kt rename app/src/main/java/code/name/monkey/retromusic/fragments/base/{AbsLibraryPagerRecyclerViewCustomGridSizeFragment.kt => AbsRecyclerViewCustomGridSizeFragment.kt} (95%) rename app/src/main/java/code/name/monkey/retromusic/fragments/base/{AbsLibraryPagerRecyclerViewFragment.kt => AbsRecyclerViewFragment.kt} (86%) delete mode 100644 app/src/main/java/code/name/monkey/retromusic/fragments/main/MainFragment.kt create mode 100644 app/src/main/res/layout/fragment_album_details.xml create mode 100644 app/src/main/res/layout/preference_screen.xml create mode 100644 app/src/main/res/transition/change_bounds.xml diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..09135068f --- /dev/null +++ b/.editorconfig @@ -0,0 +1,358 @@ +root = true + +[*] +# charset = utf-8 +# end_of_line = lf +# indent_size = 4 +# indent_style = space +# insert_final_newline = false +# max_line_length = 100 +# tab_width = 4 +# ij_continuation_indent_size = 8 +# ij_formatter_off_tag = @formatter:off +# ij_formatter_on_tag = @formatter:on +# ij_formatter_tags_enabled = false +# ij_smart_tabs = false +# ij_wrap_on_typing = false + +[*.java] +# ij_java_align_consecutive_assignments = false +# ij_java_align_consecutive_variable_declarations = false +# ij_java_align_group_field_declarations = false +# ij_java_align_multiline_annotation_parameters = false +# ij_java_align_multiline_array_initializer_expression = false +# ij_java_align_multiline_assignment = false +# ij_java_align_multiline_binary_operation = false +# ij_java_align_multiline_chained_methods = false +# ij_java_align_multiline_extends_list = false +# ij_java_align_multiline_for = true +# ij_java_align_multiline_method_parentheses = false +# ij_java_align_multiline_parameters = true +# ij_java_align_multiline_parameters_in_calls = false +# ij_java_align_multiline_parenthesized_expression = false +# ij_java_align_multiline_resources = true +# ij_java_align_multiline_ternary_operation = false +# ij_java_align_multiline_text_blocks = false +# ij_java_align_multiline_throws_list = false +# ij_java_align_subsequent_simple_methods = false +# ij_java_align_throws_keyword = false +# ij_java_annotation_parameter_wrap = off +# ij_java_array_initializer_new_line_after_left_brace = false +# ij_java_array_initializer_right_brace_on_new_line = false +# ij_java_array_initializer_wrap = off +# ij_java_assert_statement_colon_on_next_line = false +# ij_java_assert_statement_wrap = off +# ij_java_assignment_wrap = off +# ij_java_binary_operation_sign_on_next_line = false +# ij_java_binary_operation_wrap = off +# ij_java_blank_lines_after_anonymous_class_header = 0 +# ij_java_blank_lines_after_class_header = 0 +# ij_java_blank_lines_after_imports = 1 +# ij_java_blank_lines_after_package = 1 +# ij_java_blank_lines_around_class = 1 +# ij_java_blank_lines_around_field = 0 +# ij_java_blank_lines_around_field_in_interface = 0 +# ij_java_blank_lines_around_initializer = 1 +# ij_java_blank_lines_around_method = 1 +# ij_java_blank_lines_around_method_in_interface = 1 +# ij_java_blank_lines_before_class_end = 0 +# ij_java_blank_lines_before_imports = 1 +# ij_java_blank_lines_before_method_body = 0 +# ij_java_blank_lines_before_package = 0 +# ij_java_block_brace_style = end_of_line +# ij_java_block_comment_at_first_column = true +# ij_java_call_parameters_new_line_after_left_paren = false +# ij_java_call_parameters_right_paren_on_new_line = false +# ij_java_call_parameters_wrap = off +# ij_java_case_statement_on_separate_line = true +# ij_java_catch_on_new_line = false +# ij_java_class_annotation_wrap = split_into_lines +# ij_java_class_brace_style = end_of_line +# ij_java_class_count_to_use_import_on_demand = 99 +# ij_java_class_names_in_javadoc = 1 +# ij_java_do_not_indent_top_level_class_members = false +# ij_java_do_not_wrap_after_single_annotation = false +# ij_java_do_while_brace_force = never +# ij_java_doc_add_blank_line_after_description = true +# ij_java_doc_add_blank_line_after_param_comments = false +# ij_java_doc_add_blank_line_after_return = false +# ij_java_doc_add_p_tag_on_empty_lines = true +# ij_java_doc_align_exception_comments = true +# ij_java_doc_align_param_comments = true +# ij_java_doc_do_not_wrap_if_one_line = false +# ij_java_doc_enable_formatting = true +# ij_java_doc_enable_leading_asterisks = true +# ij_java_doc_indent_on_continuation = false +# ij_java_doc_keep_empty_lines = true +# ij_java_doc_keep_empty_parameter_tag = true +# ij_java_doc_keep_empty_return_tag = true +# ij_java_doc_keep_empty_throws_tag = true +# ij_java_doc_keep_invalid_tags = true +# ij_java_doc_param_description_on_new_line = false +# ij_java_doc_preserve_line_breaks = false +# ij_java_doc_use_throws_not_exception_tag = true +# ij_java_else_on_new_line = false +# ij_java_enum_constants_wrap = off +# ij_java_extends_keyword_wrap = off +# ij_java_extends_list_wrap = off +# ij_java_field_annotation_wrap = split_into_lines +# ij_java_finally_on_new_line = false +# ij_java_for_brace_force = never +# ij_java_for_statement_new_line_after_left_paren = false +# ij_java_for_statement_right_paren_on_new_line = false +# ij_java_for_statement_wrap = off +# ij_java_generate_final_locals = false +# ij_java_generate_final_parameters = false +# ij_java_if_brace_force = never +# ij_java_imports_layout = android.**,|,androidx.**,|,com.**,|,junit.**,|,net.**,|,org.**,|,java.**,|,javax.**,|,*,|,$*,| +# ij_java_indent_case_from_switch = true +# ij_java_insert_inner_class_imports = false +# ij_java_insert_override_annotation = true +# ij_java_keep_blank_lines_before_right_brace = 2 +# ij_java_keep_blank_lines_between_package_declaration_and_header = 2 +# ij_java_keep_blank_lines_in_code = 2 +# ij_java_keep_blank_lines_in_declarations = 2 +# ij_java_keep_control_statement_in_one_line = true +# ij_java_keep_first_column_comment = true +# ij_java_keep_indents_on_empty_lines = false +# ij_java_keep_line_breaks = true +# ij_java_keep_multiple_expressions_in_one_line = false +# ij_java_keep_simple_blocks_in_one_line = false +# ij_java_keep_simple_classes_in_one_line = false +# ij_java_keep_simple_lambdas_in_one_line = false +# ij_java_keep_simple_methods_in_one_line = false +# ij_java_label_indent_absolute = false +# ij_java_label_indent_size = 0 +# ij_java_lambda_brace_style = end_of_line +# ij_java_layout_static_imports_separately = true +# ij_java_line_comment_add_space = false +# ij_java_line_comment_at_first_column = true +# ij_java_method_annotation_wrap = split_into_lines +# ij_java_method_brace_style = end_of_line +# ij_java_method_call_chain_wrap = off +# ij_java_method_parameters_new_line_after_left_paren = false +# ij_java_method_parameters_right_paren_on_new_line = false +# ij_java_method_parameters_wrap = off +# ij_java_modifier_list_wrap = false +# ij_java_names_count_to_use_import_on_demand = 99 +# ij_java_parameter_annotation_wrap = off +# ij_java_parentheses_expression_new_line_after_left_paren = false +# ij_java_parentheses_expression_right_paren_on_new_line = false +# ij_java_place_assignment_sign_on_next_line = false +# ij_java_prefer_longer_names = true +# ij_java_prefer_parameters_wrap = false +# ij_java_repeat_synchronized = true +# ij_java_replace_instanceof_and_cast = false +# ij_java_replace_null_check = true +# ij_java_replace_sum_lambda_with_method_ref = true +# ij_java_resource_list_new_line_after_left_paren = false +# ij_java_resource_list_right_paren_on_new_line = false +# ij_java_resource_list_wrap = off +# ij_java_space_after_closing_angle_bracket_in_type_argument = false +# ij_java_space_after_colon = true +# ij_java_space_after_comma = true +# ij_java_space_after_comma_in_type_arguments = true +# ij_java_space_after_for_semicolon = true +# ij_java_space_after_quest = true +# ij_java_space_after_type_cast = true +# ij_java_space_before_annotation_array_initializer_left_brace = false +# ij_java_space_before_annotation_parameter_list = false +# ij_java_space_before_array_initializer_left_brace = false +# ij_java_space_before_catch_keyword = true +# ij_java_space_before_catch_left_brace = true +# ij_java_space_before_catch_parentheses = true +# ij_java_space_before_class_left_brace = true +# ij_java_space_before_colon = true +# ij_java_space_before_colon_in_foreach = true +# ij_java_space_before_comma = false +# ij_java_space_before_do_left_brace = true +# ij_java_space_before_else_keyword = true +# ij_java_space_before_else_left_brace = true +# ij_java_space_before_finally_keyword = true +# ij_java_space_before_finally_left_brace = true +# ij_java_space_before_for_left_brace = true +# ij_java_space_before_for_parentheses = true +# ij_java_space_before_for_semicolon = false +# ij_java_space_before_if_left_brace = true +# ij_java_space_before_if_parentheses = true +# ij_java_space_before_method_call_parentheses = false +# ij_java_space_before_method_left_brace = true +# ij_java_space_before_method_parentheses = false +# ij_java_space_before_opening_angle_bracket_in_type_parameter = false +# ij_java_space_before_quest = true +# ij_java_space_before_switch_left_brace = true +# ij_java_space_before_switch_parentheses = true +# ij_java_space_before_synchronized_left_brace = true +# ij_java_space_before_synchronized_parentheses = true +# ij_java_space_before_try_left_brace = true +# ij_java_space_before_try_parentheses = true +# ij_java_space_before_type_parameter_list = false +# ij_java_space_before_while_keyword = true +# ij_java_space_before_while_left_brace = true +# ij_java_space_before_while_parentheses = true +# ij_java_space_inside_one_line_enum_braces = false +# ij_java_space_within_empty_array_initializer_braces = false +# ij_java_space_within_empty_method_call_parentheses = false +# ij_java_space_within_empty_method_parentheses = false +# ij_java_spaces_around_additive_operators = true +# ij_java_spaces_around_assignment_operators = true +# ij_java_spaces_around_bitwise_operators = true +# ij_java_spaces_around_equality_operators = true +# ij_java_spaces_around_lambda_arrow = true +# ij_java_spaces_around_logical_operators = true +# ij_java_spaces_around_method_ref_dbl_colon = false +# ij_java_spaces_around_multiplicative_operators = true +# ij_java_spaces_around_relational_operators = true +# ij_java_spaces_around_shift_operators = true +# ij_java_spaces_around_type_bounds_in_type_parameters = true +# ij_java_spaces_around_unary_operator = false +# ij_java_spaces_within_angle_brackets = false +# ij_java_spaces_within_annotation_parentheses = false +# ij_java_spaces_within_array_initializer_braces = false +# ij_java_spaces_within_braces = false +# ij_java_spaces_within_brackets = false +# ij_java_spaces_within_cast_parentheses = false +# ij_java_spaces_within_catch_parentheses = false +# ij_java_spaces_within_for_parentheses = false +# ij_java_spaces_within_if_parentheses = false +# ij_java_spaces_within_method_call_parentheses = false +# ij_java_spaces_within_method_parentheses = false +# ij_java_spaces_within_parentheses = false +# ij_java_spaces_within_switch_parentheses = false +# ij_java_spaces_within_synchronized_parentheses = false +# ij_java_spaces_within_try_parentheses = false +# ij_java_spaces_within_while_parentheses = false +# ij_java_special_else_if_treatment = true +# ij_java_subclass_name_suffix = Impl +# ij_java_ternary_operation_signs_on_next_line = false +# ij_java_ternary_operation_wrap = off +# ij_java_test_name_suffix = Test +# ij_java_throws_keyword_wrap = off +# ij_java_throws_list_wrap = off +# ij_java_use_external_annotations = false +# ij_java_use_fq_class_names = false +# ij_java_use_relative_indents = false +# ij_java_use_single_class_imports = true +# ij_java_variable_annotation_wrap = off +# ij_java_visibility = public +# ij_java_while_brace_force = never +# ij_java_while_on_new_line = false +# ij_java_wrap_comments = false +# ij_java_wrap_first_method_in_call_chain = false +# ij_java_wrap_long_lines = false + +[{*.htm,*.shtm,*.sht,*.shtml,*.html}] +# ij_html_add_new_line_before_tags = body,div,p,form,h1,h2,h3 +# ij_html_align_attributes = true +# ij_html_align_text = false +# ij_html_attribute_wrap = normal +# ij_html_block_comment_at_first_column = true +# ij_html_do_not_align_children_of_min_lines = 0 +# ij_html_do_not_break_if_inline_tags = title,h1,h2,h3,h4,h5,h6,p +# ij_html_do_not_indent_children_of_tags = html,body,thead,tbody,tfoot +# ij_html_enforce_quotes = false +# ij_html_inline_tags = a,abbr,acronym,b,basefont,bdo,big,br,cite,cite,code,dfn,em,font,i,img,input,kbd,label,q,s,samp,select,small,span,strike,strong,sub,sup,textarea,tt,u,var +# ij_html_keep_blank_lines = 2 +# ij_html_keep_indents_on_empty_lines = false +# ij_html_keep_line_breaks = true +# ij_html_keep_line_breaks_in_text = true +# ij_html_keep_whitespaces = false +# ij_html_keep_whitespaces_inside = span,pre,textarea +# ij_html_line_comment_at_first_column = true +# ij_html_new_line_after_last_attribute = never +# ij_html_new_line_before_first_attribute = never +# ij_html_quote_style = double +# ij_html_remove_new_line_before_tags = br +# ij_html_space_after_tag_name = false +# ij_html_space_around_equality_in_attribute = false +# ij_html_space_inside_empty_tag = false +# ij_html_text_wrap = normal + +[{*.jhm,*.xslt,*.rng,*.xsl,*.xsd,*.ant,*.tld,*.fxml,*.wsdl,*.jrxml,*.xml,*.jnlp,*.xul}] +# ij_continuation_indent_size = 4 +# ij_xml_block_comment_at_first_column = true +# ij_xml_keep_indents_on_empty_lines = false +# ij_xml_line_comment_at_first_column = true +# ij_xml_use_custom_settings = true +# ij_continuation_indent_size = 4 +# ij_xml_block_comment_at_first_column = true +# ij_xml_keep_indents_on_empty_lines = false +# ij_xml_line_comment_at_first_column = true +# ij_xml_use_custom_settings = true + +[{*.kt,*.kts}] +# ij_kotlin_align_in_columns_case_branch = false +# ij_kotlin_align_multiline_binary_operation = false +# ij_kotlin_align_multiline_extends_list = false +# ij_kotlin_align_multiline_method_parentheses = false +# ij_kotlin_align_multiline_parameters = true +# ij_kotlin_align_multiline_parameters_in_calls = false +# ij_kotlin_assignment_wrap = normal +# ij_kotlin_blank_lines_after_class_header = 0 +# ij_kotlin_blank_lines_around_block_when_branches = 0 +# ij_kotlin_block_comment_at_first_column = true +# ij_kotlin_call_parameters_new_line_after_left_paren = true +# ij_kotlin_call_parameters_right_paren_on_new_line = true +# ij_kotlin_call_parameters_wrap = on_every_item +# ij_kotlin_catch_on_new_line = false +# ij_kotlin_class_annotation_wrap = split_into_lines +# ij_kotlin_code_style_defaults = KOTLIN_OFFICIAL +# ij_kotlin_continuation_indent_for_chained_calls = false +# ij_kotlin_continuation_indent_for_expression_bodies = false +# ij_kotlin_continuation_indent_in_argument_lists = false +# ij_kotlin_continuation_indent_in_elvis = false +# ij_kotlin_continuation_indent_in_if_conditions = false +# ij_kotlin_continuation_indent_in_parameter_lists = false +# ij_kotlin_continuation_indent_in_supertype_lists = false +# ij_kotlin_else_on_new_line = false +# ij_kotlin_enum_constants_wrap = off +# ij_kotlin_extends_list_wrap = normal +# ij_kotlin_field_annotation_wrap = split_into_lines +# ij_kotlin_finally_on_new_line = false +# ij_kotlin_if_rparen_on_new_line = true +# ij_kotlin_import_nested_classes = false +# ij_kotlin_insert_whitespaces_in_simple_one_line_method = true +# ij_kotlin_keep_blank_lines_before_right_brace = 2 +# ij_kotlin_keep_blank_lines_in_code = 2 +# ij_kotlin_keep_blank_lines_in_declarations = 2 +# ij_kotlin_keep_first_column_comment = true +# ij_kotlin_keep_indents_on_empty_lines = false +# ij_kotlin_keep_line_breaks = true +# ij_kotlin_lbrace_on_next_line = false +# ij_kotlin_line_comment_add_space = false +# ij_kotlin_line_comment_at_first_column = true +# ij_kotlin_method_annotation_wrap = split_into_lines +# ij_kotlin_method_call_chain_wrap = normal +# ij_kotlin_method_parameters_new_line_after_left_paren = true +# ij_kotlin_method_parameters_right_paren_on_new_line = true +# ij_kotlin_method_parameters_wrap = on_every_item +# ij_kotlin_name_count_to_use_star_import = 5 +# ij_kotlin_name_count_to_use_star_import_for_members = 3 +# ij_kotlin_parameter_annotation_wrap = off +# ij_kotlin_space_after_comma = true +# ij_kotlin_space_after_extend_colon = true +# ij_kotlin_space_after_type_colon = true +# ij_kotlin_space_before_catch_parentheses = true +# ij_kotlin_space_before_comma = false +# ij_kotlin_space_before_extend_colon = true +# ij_kotlin_space_before_for_parentheses = true +# ij_kotlin_space_before_if_parentheses = true +# ij_kotlin_space_before_lambda_arrow = true +# ij_kotlin_space_before_type_colon = false +# ij_kotlin_space_before_when_parentheses = true +# ij_kotlin_space_before_while_parentheses = true +# ij_kotlin_spaces_around_additive_operators = true +# ij_kotlin_spaces_around_assignment_operators = true +# ij_kotlin_spaces_around_equality_operators = true +# ij_kotlin_spaces_around_function_type_arrow = true +# ij_kotlin_spaces_around_logical_operators = true +# ij_kotlin_spaces_around_multiplicative_operators = true +# ij_kotlin_spaces_around_range = false +# ij_kotlin_spaces_around_relational_operators = true +# ij_kotlin_spaces_around_unary_operator = false +# ij_kotlin_spaces_around_when_arrow = true +# ij_kotlin_variable_annotation_wrap = off +# ij_kotlin_while_on_new_line = false +# ij_kotlin_wrap_elvis_expressions = 1 +# ij_kotlin_wrap_expression_body_functions = 1 +# ij_kotlin_wrap_first_method_in_call_chain = false diff --git a/app/src/main/assets/oldindex.html b/app/src/main/assets/oldindex.html index a6ce8895f..367da632a 100644 --- a/app/src/main/assets/oldindex.html +++ b/app/src/main/assets/oldindex.html @@ -26,6 +26,7 @@ + diff --git a/app/src/main/assets/retro-changelog.html b/app/src/main/assets/retro-changelog.html index 04dcc205e..aa3c01e7f 100644 --- a/app/src/main/assets/retro-changelog.html +++ b/app/src/main/assets/retro-changelog.html @@ -54,6 +54,7 @@ } {style-placeholder} + diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt index 3b9ea1eb9..c2a515dc3 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt @@ -12,22 +12,23 @@ import android.view.SubMenu import android.view.View import androidx.core.app.ActivityCompat import androidx.fragment.app.Fragment -import androidx.navigation.NavOptions +import androidx.fragment.app.commit import code.name.monkey.appthemehelper.ThemeStore.Companion.accentColor import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ATHUtil.resolveColor import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper import code.name.monkey.retromusic.* import code.name.monkey.retromusic.activities.base.AbsSlidingMusicPanelActivity -import code.name.monkey.retromusic.dialogs.CreatePlaylistDialog -import code.name.monkey.retromusic.extensions.navController +import code.name.monkey.retromusic.dialogs.CreatePlaylistDialog.Companion.create +import code.name.monkey.retromusic.fragments.LibraryViewModel import code.name.monkey.retromusic.fragments.albums.AlbumsFragment import code.name.monkey.retromusic.fragments.artists.ArtistsFragment -import code.name.monkey.retromusic.fragments.base.AbsLibraryPagerRecyclerViewCustomGridSizeFragment +import code.name.monkey.retromusic.fragments.base.AbsRecyclerViewCustomGridSizeFragment import code.name.monkey.retromusic.fragments.folder.FoldersFragment -import code.name.monkey.retromusic.fragments.folder.FoldersFragment.PATH +import code.name.monkey.retromusic.fragments.genres.GenresFragment import code.name.monkey.retromusic.fragments.home.BannerHomeFragment import code.name.monkey.retromusic.fragments.playlists.PlaylistsFragment +import code.name.monkey.retromusic.fragments.queue.PlayingQueueFragment import code.name.monkey.retromusic.fragments.songs.SongsFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote.isPlaying import code.name.monkey.retromusic.helper.MusicPlayerRemote.openAndShuffleQueue @@ -37,6 +38,7 @@ import code.name.monkey.retromusic.helper.MusicPlayerRemote.shuffleMode import code.name.monkey.retromusic.helper.SearchQueryHelper.getSongs import code.name.monkey.retromusic.helper.SortOrder.* import code.name.monkey.retromusic.interfaces.CabHolder +import code.name.monkey.retromusic.interfaces.MainActivityFragmentCallbacks import code.name.monkey.retromusic.loaders.AlbumLoader.getAlbum import code.name.monkey.retromusic.loaders.ArtistLoader.getArtist import code.name.monkey.retromusic.loaders.PlaylistSongsLoader.getPlaylistSongList @@ -61,6 +63,7 @@ import com.google.android.play.core.install.model.InstallStatus.INSTALLED import com.google.android.play.core.install.model.UpdateAvailability import com.google.android.play.core.tasks.Task import kotlinx.android.synthetic.main.activity_main_content.* +import org.koin.android.ext.android.inject import java.util.* class MainActivity : AbsSlidingMusicPanelActivity(), @@ -71,8 +74,10 @@ class MainActivity : AbsSlidingMusicPanelActivity(), const val APP_UPDATE_REQUEST_CODE = 9002 } + private val libraryViewModel: LibraryViewModel by inject() private var cab: MaterialCab? = null private val intentFilter = IntentFilter(Intent.ACTION_SCREEN_OFF) + private lateinit var currentFragment: MainActivityFragmentCallbacks private var appUpdateManager: AppUpdateManager? = null private var blockRequestPermissions = false private val listener = object : InstallStateUpdatedListener { @@ -118,33 +123,22 @@ class MainActivity : AbsSlidingMusicPanelActivity(), hideStatusBar() setBottomBarVisibility(View.VISIBLE) + addMusicServiceEventListener(libraryViewModel) + if (savedInstanceState == null) { + selectedFragment(PreferenceUtil.lastPage) + } else { + restoreCurrentFragment() + } + appLaunched(this) setupToolbar() checkUpdate() updateTabs() - - val navController = navController(R.id.fragment_container) - val navOptions: NavOptions = NavOptions.Builder() - .setLaunchSingleTop(true) - .setEnterAnim(R.anim.retro_fragment_open_enter) - .setExitAnim(R.anim.retro_fragment_open_exit) - .setPopEnterAnim(R.anim.retro_fragment_close_enter) - .setPopExitAnim(R.anim.retro_fragment_close_exit) - .setPopUpTo(navController.graph.startDestination, false) - .build() + getBottomNavigationView().selectedItemId = PreferenceUtil.lastPage getBottomNavigationView().setOnNavigationItemSelectedListener { - var handled = false - when (it.itemId) { - R.id.action_folder -> navController.navigate(it.itemId, Bundle().apply { - putSerializable(PATH, PreferenceUtil.startDirectory) - }, navOptions) - else -> if (navController.graph.findNode(it.itemId) != null) { - navController.navigate(it.itemId, null, navOptions) - handled = true; - } - } - return@setOnNavigationItemSelectedListener handled - + PreferenceUtil.lastPage = it.itemId + selectedFragment(it.itemId) + true } } @@ -167,7 +161,7 @@ class MainActivity : AbsSlidingMusicPanelActivity(), } try { if (appUpdateInfo.updateAvailability() == UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS) { - appUpdateManager?.startUpdateFlowForResult( + appUpdateManager!!.startUpdateFlowForResult( appUpdateInfo, AppUpdateType.IMMEDIATE, this, @@ -213,7 +207,7 @@ class MainActivity : AbsSlidingMusicPanelActivity(), .setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM) } val fragment: Fragment? = getCurrentFragment() - if (fragment != null && fragment is AbsLibraryPagerRecyclerViewCustomGridSizeFragment<*, *>) { + if (fragment != null && fragment is AbsRecyclerViewCustomGridSizeFragment<*, *>) { val gridSizeItem: MenuItem = menu.findItem(R.id.action_grid_size) if (RetroUtil.isLandscape()) { gridSizeItem.setTitle(R.string.action_grid_size_land) @@ -243,15 +237,21 @@ class MainActivity : AbsSlidingMusicPanelActivity(), override fun onOptionsItemSelected(item: MenuItem): Boolean { val fragment = getCurrentFragment() - if (fragment is AbsLibraryPagerRecyclerViewCustomGridSizeFragment<*, *>) { - if (handleGridSizeMenuItem(fragment, item)) return true - if (handleLayoutResType(fragment, item)) return true - if (handleSortOrderMenuItem(fragment, item)) return true + if (fragment is AbsRecyclerViewCustomGridSizeFragment<*, *>) { + if (handleGridSizeMenuItem(fragment, item)) { + return true + } + if (handleLayoutResType(fragment, item)) { + return true + } + if (handleSortOrderMenuItem(fragment, item)) { + return true + } } when (item.itemId) { R.id.action_search -> NavigationUtil.goToSearch(this) R.id.action_new_playlist -> { - CreatePlaylistDialog.create().show(supportFragmentManager, "CREATE_PLAYLIST") + create().show(supportFragmentManager, "CREATE_PLAYLIST") return true } R.id.action_mic -> { @@ -271,31 +271,37 @@ class MainActivity : AbsSlidingMusicPanelActivity(), } private fun handleSortOrderMenuItem( - fragment: AbsLibraryPagerRecyclerViewCustomGridSizeFragment<*, *>, + fragment: AbsRecyclerViewCustomGridSizeFragment<*, *>, item: MenuItem ): Boolean { var sortOrder: String? = null when (fragment) { - is AlbumsFragment -> when (item.itemId) { - R.id.action_album_sort_order_asc -> sortOrder = AlbumSortOrder.ALBUM_A_Z - R.id.action_album_sort_order_desc -> sortOrder = AlbumSortOrder.ALBUM_Z_A - R.id.action_album_sort_order_artist -> sortOrder = AlbumSortOrder.ALBUM_ARTIST - R.id.action_album_sort_order_year -> sortOrder = AlbumSortOrder.ALBUM_YEAR + is AlbumsFragment -> { + when (item.itemId) { + R.id.action_album_sort_order_asc -> sortOrder = AlbumSortOrder.ALBUM_A_Z + R.id.action_album_sort_order_desc -> sortOrder = AlbumSortOrder.ALBUM_Z_A + R.id.action_album_sort_order_artist -> sortOrder = AlbumSortOrder.ALBUM_ARTIST + R.id.action_album_sort_order_year -> sortOrder = AlbumSortOrder.ALBUM_YEAR + } } - is ArtistsFragment -> when (item.itemId) { - R.id.action_artist_sort_order_asc -> sortOrder = ArtistSortOrder.ARTIST_A_Z - R.id.action_artist_sort_order_desc -> sortOrder = ArtistSortOrder.ARTIST_Z_A + is ArtistsFragment -> { + when (item.itemId) { + R.id.action_artist_sort_order_asc -> sortOrder = ArtistSortOrder.ARTIST_A_Z + R.id.action_artist_sort_order_desc -> sortOrder = ArtistSortOrder.ARTIST_Z_A + } } - is SongsFragment -> when (item.itemId) { - R.id.action_song_sort_order_asc -> sortOrder = SongSortOrder.SONG_A_Z - R.id.action_song_sort_order_desc -> sortOrder = SongSortOrder.SONG_Z_A - R.id.action_song_sort_order_artist -> sortOrder = SongSortOrder.SONG_ARTIST - R.id.action_song_sort_order_album -> sortOrder = SongSortOrder.SONG_ALBUM - R.id.action_song_sort_order_year -> sortOrder = SongSortOrder.SONG_YEAR - R.id.action_song_sort_order_date -> sortOrder = SongSortOrder.SONG_DATE - R.id.action_song_sort_order_composer -> sortOrder = SongSortOrder.COMPOSER - R.id.action_song_sort_order_date_modified -> - sortOrder = SongSortOrder.SONG_DATE_MODIFIED + is SongsFragment -> { + when (item.itemId) { + R.id.action_song_sort_order_asc -> sortOrder = SongSortOrder.SONG_A_Z + R.id.action_song_sort_order_desc -> sortOrder = SongSortOrder.SONG_Z_A + R.id.action_song_sort_order_artist -> sortOrder = SongSortOrder.SONG_ARTIST + R.id.action_song_sort_order_album -> sortOrder = SongSortOrder.SONG_ALBUM + R.id.action_song_sort_order_year -> sortOrder = SongSortOrder.SONG_YEAR + R.id.action_song_sort_order_date -> sortOrder = SongSortOrder.SONG_DATE + R.id.action_song_sort_order_composer -> sortOrder = SongSortOrder.COMPOSER + R.id.action_song_sort_order_date_modified -> + sortOrder = SongSortOrder.SONG_DATE_MODIFIED + } } } @@ -309,7 +315,7 @@ class MainActivity : AbsSlidingMusicPanelActivity(), } private fun handleLayoutResType( - fragment: AbsLibraryPagerRecyclerViewCustomGridSizeFragment<*, *>, + fragment: AbsRecyclerViewCustomGridSizeFragment<*, *>, item: MenuItem ): Boolean { var layoutRes = -1 @@ -330,7 +336,7 @@ class MainActivity : AbsSlidingMusicPanelActivity(), } private fun handleGridSizeMenuItem( - fragment: AbsLibraryPagerRecyclerViewCustomGridSizeFragment<*, *>, + fragment: AbsRecyclerViewCustomGridSizeFragment<*, *>, item: MenuItem ): Boolean { var gridSize = 0 @@ -353,7 +359,7 @@ class MainActivity : AbsSlidingMusicPanelActivity(), } private fun setUpGridSizeMenu( - fragment: AbsLibraryPagerRecyclerViewCustomGridSizeFragment<*, *>, + fragment: AbsRecyclerViewCustomGridSizeFragment<*, *>, gridSizeMenu: SubMenu ) { when (fragment.getGridSize()) { @@ -388,7 +394,7 @@ class MainActivity : AbsSlidingMusicPanelActivity(), } private fun setupLayoutMenu( - fragment: AbsLibraryPagerRecyclerViewCustomGridSizeFragment<*, *>, + fragment: AbsRecyclerViewCustomGridSizeFragment<*, *>, subMenu: SubMenu ) { when (fragment.itemLayoutRes()) { @@ -410,7 +416,7 @@ class MainActivity : AbsSlidingMusicPanelActivity(), } private fun setUpSortOrderMenu( - fragment: AbsLibraryPagerRecyclerViewCustomGridSizeFragment<*, *>, + fragment: AbsRecyclerViewCustomGridSizeFragment<*, *>, sortOrderMenu: SubMenu ) { val currentSortOrder = fragment.getSortOrder() @@ -611,6 +617,70 @@ class MainActivity : AbsSlidingMusicPanelActivity(), snackBar.show() } + private fun setCurrentFragment( + fragment: Fragment, + tag: String + ) { + supportFragmentManager.commit { + setCustomAnimations( + R.anim.retro_fragment_open_enter, + R.anim.retro_fragment_open_exit, + R.anim.retro_fragment_fade_enter, + R.anim.retro_fragment_fade_exit + ) + replace(R.id.fragment_container, fragment, tag) + } + currentFragment = fragment as MainActivityFragmentCallbacks + } + + private fun selectedFragment(itemId: Int) { + when (itemId) { + R.id.action_album -> setCurrentFragment( + AlbumsFragment.newInstance(), + AlbumsFragment.TAG + ) + R.id.action_artist -> setCurrentFragment( + ArtistsFragment.newInstance(), + ArtistsFragment.TAG + ) + R.id.action_playlist -> setCurrentFragment( + PlaylistsFragment.newInstance(), + PlaylistsFragment.TAG + ) + R.id.action_genre -> setCurrentFragment( + GenresFragment.newInstance(), + GenresFragment.TAG + ) + R.id.action_playing_queue -> setCurrentFragment( + PlayingQueueFragment.newInstance(), + PlayingQueueFragment.TAG + ) + R.id.action_song -> setCurrentFragment( + SongsFragment.newInstance(), + SongsFragment.TAG + ) + R.id.action_folder -> setCurrentFragment( + FoldersFragment.newInstance(this), + FoldersFragment.TAG + ) + R.id.action_home -> setCurrentFragment( + BannerHomeFragment.newInstance(), + BannerHomeFragment.TAG + ) + else -> setCurrentFragment( + BannerHomeFragment.newInstance(), + BannerHomeFragment.TAG + ) + } + } + + private fun restoreCurrentFragment() { + val fragment = supportFragmentManager.findFragmentById(R.id.fragment_container) + if (fragment != null) { + currentFragment = fragment as MainActivityFragmentCallbacks + } + } + override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) { if (key == GENERAL_THEME || key == BLACK_THEME || key == ADAPTIVE_COLOR_APP || key == USER_NAME || key == TOGGLE_FULL_SCREEN || key == TOGGLE_VOLUME || key == ROUND_CORNERS || key == CAROUSEL_EFFECT || key == NOW_PLAYING_SCREEN_ID || key == TOGGLE_GENRE || key == BANNER_IMAGE_PATH || key == PROFILE_IMAGE_PATH || key == CIRCULAR_ALBUM_ART || key == KEEP_SCREEN_ON || key == TOGGLE_SEPARATE_LINE || key == TOGGLE_HOME_BANNER || key == TOGGLE_ADD_CONTROLS || key == ALBUM_COVER_STYLE || key == HOME_ARTIST_GRID_STYLE || key == ALBUM_COVER_TRANSFORM || key == DESATURATED_COLOR || key == EXTRA_SONG_INFO || key == TAB_TEXT_MODE || key == LANGUAGE_NAME || key == LIBRARY_CATEGORIES ) { @@ -696,7 +766,7 @@ class MainActivity : AbsSlidingMusicPanelActivity(), cab?.finish() return true } - return super.handleBackPress() + return super.handleBackPress() || currentFragment.handleBackPress() } override fun openCab(menuRes: Int, callback: MaterialCab.Callback): MaterialCab { diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/SettingsActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/SettingsActivity.kt index c741d870c..7f728214f 100755 --- a/app/src/main/java/code/name/monkey/retromusic/activities/SettingsActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/SettingsActivity.kt @@ -35,7 +35,8 @@ class SettingsActivity : AbsBaseActivity(), ColorChooserDialog.ColorCallback { private fun setupToolbar() { setTitle(R.string.action_settings) applyToolbar(toolbar) - val navHostFragment = supportFragmentManager.findFragmentById(R.id.contentFrame) as NavHostFragment + val navHostFragment = + supportFragmentManager.findFragmentById(R.id.contentFrame) as NavHostFragment val navController: NavController = navHostFragment.navController navController.addOnDestinationChangedListener { _, _, _ -> toolbar.title = navController.currentDestination?.label diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/albums/AlbumDetailsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/activities/albums/AlbumDetailsFragment.kt new file mode 100644 index 000000000..8140f4a6b --- /dev/null +++ b/app/src/main/java/code/name/monkey/retromusic/activities/albums/AlbumDetailsFragment.kt @@ -0,0 +1,250 @@ +package code.name.monkey.retromusic.activities.albums + +import android.app.ActivityOptions +import android.os.Bundle +import android.transition.TransitionInflater +import android.util.Pair +import android.view.MenuItem +import android.view.View +import androidx.appcompat.app.AppCompatActivity +import androidx.navigation.fragment.findNavController +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.LinearLayoutManager +import code.name.monkey.appthemehelper.util.MaterialUtil +import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.adapter.album.HorizontalAlbumAdapter +import code.name.monkey.retromusic.adapter.song.SimpleSongAdapter +import code.name.monkey.retromusic.extensions.extraNotNull +import code.name.monkey.retromusic.extensions.show +import code.name.monkey.retromusic.fragments.base.AbsMusicServiceFragment +import code.name.monkey.retromusic.glide.AlbumGlideRequest +import code.name.monkey.retromusic.glide.ArtistGlideRequest +import code.name.monkey.retromusic.glide.RetroMusicColoredTarget +import code.name.monkey.retromusic.helper.MusicPlayerRemote +import code.name.monkey.retromusic.model.Album +import code.name.monkey.retromusic.model.Artist +import code.name.monkey.retromusic.network.model.LastFmAlbum +import code.name.monkey.retromusic.util.MusicUtil +import code.name.monkey.retromusic.util.NavigationUtil +import code.name.monkey.retromusic.util.PreferenceUtil +import code.name.monkey.retromusic.util.RetroUtil +import code.name.monkey.retromusic.util.color.MediaNotificationProcessor +import com.bumptech.glide.Glide +import kotlinx.android.synthetic.main.activity_album.* +import kotlinx.android.synthetic.main.activity_album_content.* +import org.koin.androidx.viewmodel.ext.android.viewModel +import org.koin.core.parameter.parametersOf +import java.util.* + +class AlbumDetailsFragment : AbsMusicServiceFragment(R.layout.fragment_album_details) { + private lateinit var simpleSongAdapter: SimpleSongAdapter + private lateinit var album: Album + private val savedSortOrder: String + get() = PreferenceUtil.albumDetailSongSortOrder + private val detailsViewModel by viewModel { + parametersOf(extraNotNull(AlbumDetailsActivity.EXTRA_ALBUM_ID).value) + } + + private fun setSharedElementTransitionOnEnter() { + sharedElementEnterTransition = TransitionInflater.from(context) + .inflateTransition(R.transition.change_bounds) + } + + override fun onActivityCreated(savedInstanceState: Bundle?) { + super.onActivityCreated(savedInstanceState) + setSharedElementTransitionOnEnter() + postponeEnterTransition() + playerActivity?.addMusicServiceEventListener(detailsViewModel) + + detailsViewModel.getAlbum().observe(viewLifecycleOwner, androidx.lifecycle.Observer { + startPostponedEnterTransition() + showAlbum(it) + }) + detailsViewModel.getArtist().observe(viewLifecycleOwner, androidx.lifecycle.Observer { + loadArtistImage(it) + }) + detailsViewModel.getMoreAlbums().observe(viewLifecycleOwner, androidx.lifecycle.Observer { + moreAlbums(it) + }) + detailsViewModel.getAlbumInfo().observe(viewLifecycleOwner, androidx.lifecycle.Observer { + aboutAlbum(it) + }) + setupRecyclerView() + artistImage.setOnClickListener { + val artistPairs = ActivityOptions.makeSceneTransitionAnimation( + requireActivity(), + Pair.create( + artistImage, + getString(R.string.transition_artist_image) + ) + ) + NavigationUtil.goToArtistOptions(requireActivity(), album.artistId, artistPairs) + } + playAction.setOnClickListener { MusicPlayerRemote.openQueue(album.songs!!, 0, true) } + + shuffleAction.setOnClickListener { + MusicPlayerRemote.openAndShuffleQueue( + album.songs!!, + true + ) + } + + aboutAlbumText.setOnClickListener { + if (aboutAlbumText.maxLines == 4) { + aboutAlbumText.maxLines = Integer.MAX_VALUE + } else { + aboutAlbumText.maxLines = 4 + } + } + image.apply { + transitionName = getString(R.string.transition_album_art) + } + } + + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + val activity = activity as AppCompatActivity + activity.supportActionBar?.setDisplayHomeAsUpEnabled(true) + } + + override fun onDestroy() { + super.onDestroy() + playerActivity?.removeMusicServiceEventListener(detailsViewModel) + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + when (item.itemId) { + android.R.id.home -> findNavController().navigateUp() + } + return super.onOptionsItemSelected(item) + } + + private fun setupRecyclerView() { + simpleSongAdapter = SimpleSongAdapter( + requireActivity() as AppCompatActivity, + ArrayList(), + R.layout.item_song, + null + ) + recyclerView.apply { + layoutManager = LinearLayoutManager(requireContext()) + itemAnimator = DefaultItemAnimator() + isNestedScrollingEnabled = false + adapter = simpleSongAdapter + } + } + + private fun showAlbum(album: Album) { + if (album.songs!!.isEmpty()) { + return + } + this.album = album + + albumTitle.text = album.title + val songText = + resources.getQuantityString( + R.plurals.albumSongs, + album.songCount, + album.songCount + ) + songTitle.text = songText + + if (MusicUtil.getYearString(album.year) == "-") { + albumText.text = String.format( + "%s • %s", + album.artistName, + MusicUtil.getReadableDurationString(MusicUtil.getTotalDuration(album.songs)) + ) + } else { + albumText.text = String.format( + "%s • %s • %s", + album.artistName, + MusicUtil.getYearString(album.year), + MusicUtil.getReadableDurationString(MusicUtil.getTotalDuration(album.songs)) + ) + } + loadAlbumCover() + simpleSongAdapter.swapDataSet(album.songs) + detailsViewModel.loadArtist(album.artistId) + detailsViewModel.loadAlbumInfo(album) + } + + private fun moreAlbums(albums: List) { + moreTitle.show() + moreRecyclerView.show() + moreTitle.text = String.format(getString(R.string.label_more_from), album.artistName) + + val albumAdapter = + HorizontalAlbumAdapter(requireActivity() as AppCompatActivity, albums, null) + moreRecyclerView.layoutManager = GridLayoutManager( + requireContext(), + 1, + GridLayoutManager.HORIZONTAL, + false + ) + moreRecyclerView.adapter = albumAdapter + } + + private fun aboutAlbum(lastFmAlbum: LastFmAlbum) { + if (lastFmAlbum.album != null) { + if (lastFmAlbum.album.wiki != null) { + aboutAlbumText.show() + aboutAlbumTitle.show() + aboutAlbumTitle.text = + String.format(getString(R.string.about_album_label), lastFmAlbum.album.name) + aboutAlbumText.text = lastFmAlbum.album.wiki.content + } + if (lastFmAlbum.album.listeners.isNotEmpty()) { + listeners.show() + listenersLabel.show() + scrobbles.show() + scrobblesLabel.show() + + listeners.text = RetroUtil.formatValue(lastFmAlbum.album.listeners.toFloat()) + scrobbles.text = RetroUtil.formatValue(lastFmAlbum.album.playcount.toFloat()) + } + } + } + + private fun loadArtistImage(artist: Artist) { + ArtistGlideRequest.Builder.from(Glide.with(requireContext()), artist) + .generatePalette(requireContext()) + .build() + .dontAnimate() + .dontTransform() + .into(object : RetroMusicColoredTarget(artistImage) { + override fun onColorReady(colors: MediaNotificationProcessor) { + } + }) + } + + private fun loadAlbumCover() { + AlbumGlideRequest.Builder.from(Glide.with(requireContext()), album.safeGetFirstSong()) + .checkIgnoreMediaStore(requireContext()) + .ignoreMediaStore(PreferenceUtil.isIgnoreMediaStoreArtwork) + .generatePalette(requireContext()) + .build() + .dontAnimate() + .dontTransform() + .into(object : RetroMusicColoredTarget(image) { + override fun onColorReady(colors: MediaNotificationProcessor) { + setColors(colors) + } + }) + } + + private fun setColors(color: MediaNotificationProcessor) { + MaterialUtil.tintColor( + button = shuffleAction, + textColor = color.primaryTextColor, + backgroundColor = color.backgroundColor + ) + MaterialUtil.tintColor( + button = playAction, + textColor = color.primaryTextColor, + backgroundColor = color.backgroundColor + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/SearchShortCutType.kt b/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/SearchShortCutType.kt index dfcd55d03..a025688ec 100644 --- a/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/SearchShortCutType.kt +++ b/app/src/main/java/code/name/monkey/retromusic/appshortcuts/shortcuttype/SearchShortCutType.kt @@ -36,9 +36,10 @@ class SearchShortCutType(context: Context) : BaseShortcutType(context) { id ).setShortLabel(context.getString(R.string.action_search)) .setLongLabel(context.getString(R.string.search_hint)).setIcon( - AppShortcutIconGenerator.generateThemedIcon( - context, - R.drawable.ic_app_shortcut_search - ) - ).setIntent(getPlaySongsIntent(AppShortcutLauncherActivity.SHORTCUT_TYPE_SEARCH)).build() + AppShortcutIconGenerator.generateThemedIcon( + context, + R.drawable.ic_app_shortcut_search + ) + ).setIntent(getPlaySongsIntent(AppShortcutLauncherActivity.SHORTCUT_TYPE_SEARCH)) + .build() } \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/dialogs/BlacklistFolderChooserDialog.java b/app/src/main/java/code/name/monkey/retromusic/dialogs/BlacklistFolderChooserDialog.java index 49cc1e0e5..1e2099cc1 100644 --- a/app/src/main/java/code/name/monkey/retromusic/dialogs/BlacklistFolderChooserDialog.java +++ b/app/src/main/java/code/name/monkey/retromusic/dialogs/BlacklistFolderChooserDialog.java @@ -88,19 +88,18 @@ public class BlacklistFolderChooserDialog extends DialogFragment implements Mate parentFolder = new File(savedInstanceState.getString("current_path", File.pathSeparator)); checkIfCanGoUp(); parentContents = listFiles(); - MaterialDialog.Builder builder = - new MaterialDialog.Builder(requireActivity()) - .title(parentFolder.getAbsolutePath()) - .items((CharSequence[]) getContentsArray()) - .itemsCallback(this) - .autoDismiss(false) - .onPositive((dialog, which) -> { - dismiss(); - callback.onFolderSelection(BlacklistFolderChooserDialog.this, parentFolder); - }) - .onNegative((materialDialog, dialogAction) -> dismiss()) - .positiveText(R.string.add_action) - .negativeText(android.R.string.cancel); + MaterialDialog.Builder builder = new MaterialDialog.Builder(requireContext()) + .title(parentFolder.getAbsolutePath()) + .items((CharSequence[]) getContentsArray()) + .itemsCallback(this) + .autoDismiss(false) + .onPositive((dialog, which) -> { + callback.onFolderSelection(BlacklistFolderChooserDialog.this, parentFolder); + dismiss(); + }) + .onNegative((materialDialog, dialogAction) -> dismiss()) + .positiveText(R.string.add_action) + .negativeText(android.R.string.cancel); return builder.build(); } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/MiniPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/MiniPlayerFragment.kt index abfd4ba00..9f05dc434 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/MiniPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/MiniPlayerFragment.kt @@ -7,7 +7,9 @@ import android.os.Bundle import android.text.SpannableString import android.text.SpannableStringBuilder import android.text.style.ForegroundColorSpan -import android.view.* +import android.view.GestureDetector +import android.view.MotionEvent +import android.view.View import android.view.animation.DecelerateInterpolator import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.retromusic.R @@ -24,8 +26,8 @@ import code.name.monkey.retromusic.util.ViewUtil import kotlinx.android.synthetic.main.fragment_mini_player.* import kotlin.math.abs -open class MiniPlayerFragment : AbsMusicServiceFragment(), MusicProgressViewUpdateHelper.Callback, - View.OnClickListener { +open class MiniPlayerFragment : AbsMusicServiceFragment(R.layout.fragment_mini_player), + MusicProgressViewUpdateHelper.Callback, View.OnClickListener { private lateinit var progressViewUpdateHelper: MusicProgressViewUpdateHelper @@ -34,14 +36,6 @@ open class MiniPlayerFragment : AbsMusicServiceFragment(), MusicProgressViewUpda progressViewUpdateHelper = MusicProgressViewUpdateHelper(this) } - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - return inflater.inflate(R.layout.fragment_mini_player, container, false) - } - override fun onClick(view: View) { when (view.id) { R.id.actionNext -> MusicPlayerRemote.playNextSong() diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/NowPlayingScreen.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/NowPlayingScreen.kt index 19e085222..dacaff2d8 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/NowPlayingScreen.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/NowPlayingScreen.kt @@ -24,6 +24,7 @@ enum class NowPlayingScreen constructor( Gradient(R.string.gradient, R.drawable.np_gradient, 17), Material(R.string.material, R.drawable.np_material, 11), Normal(R.string.normal, R.drawable.np_normal, 0), + //Peak(R.string.peak, R.drawable.np_peak, 14), Plain(R.string.plain, R.drawable.np_plain, 3), Simple(R.string.simple, R.drawable.np_simple, 8), diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumsFragment.kt index 159844088..3c0759724 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumsFragment.kt @@ -6,18 +6,18 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.GridLayoutManager import code.name.monkey.retromusic.R import code.name.monkey.retromusic.adapter.album.AlbumAdapter -import code.name.monkey.retromusic.fragments.LibraryViewModel import code.name.monkey.retromusic.fragments.ReloadType -import code.name.monkey.retromusic.fragments.base.AbsLibraryPagerRecyclerViewCustomGridSizeFragment +import code.name.monkey.retromusic.fragments.base.AbsRecyclerViewCustomGridSizeFragment import code.name.monkey.retromusic.interfaces.MainActivityFragmentCallbacks import code.name.monkey.retromusic.util.PreferenceUtil -import org.koin.androidx.viewmodel.ext.android.sharedViewModel class AlbumsFragment : - AbsLibraryPagerRecyclerViewCustomGridSizeFragment(), + AbsRecyclerViewCustomGridSizeFragment(), MainActivityFragmentCallbacks { - private val libraryViewModel: LibraryViewModel by sharedViewModel() + override fun handleBackPress(): Boolean { + return false + } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) @@ -88,9 +88,6 @@ class AlbumsFragment : PreferenceUtil.albumGridStyle = layoutRes } - override fun handleBackPress(): Boolean { - return false - } companion object { @JvmField diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/artists/ArtistsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/artists/ArtistsFragment.kt index 64aa49448..111010d37 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/artists/ArtistsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/artists/ArtistsFragment.kt @@ -6,18 +6,19 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.GridLayoutManager import code.name.monkey.retromusic.R import code.name.monkey.retromusic.adapter.artist.ArtistAdapter -import code.name.monkey.retromusic.fragments.LibraryViewModel import code.name.monkey.retromusic.fragments.ReloadType -import code.name.monkey.retromusic.fragments.base.AbsLibraryPagerRecyclerViewCustomGridSizeFragment +import code.name.monkey.retromusic.fragments.base.AbsRecyclerViewCustomGridSizeFragment import code.name.monkey.retromusic.interfaces.MainActivityFragmentCallbacks import code.name.monkey.retromusic.util.PreferenceUtil -import org.koin.androidx.viewmodel.ext.android.sharedViewModel class ArtistsFragment : - AbsLibraryPagerRecyclerViewCustomGridSizeFragment(), + AbsRecyclerViewCustomGridSizeFragment(), MainActivityFragmentCallbacks { - private val libraryViewModel: LibraryViewModel by sharedViewModel() + override fun handleBackPress(): Boolean { + return false + } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) @@ -31,15 +32,11 @@ class ArtistsFragment : }) } - override fun handleBackPress(): Boolean { - return false - } - override val emptyMessage: Int get() = R.string.no_artists override fun setSortOrder(sortOrder: String) { - libraryViewModel.forceReload(ReloadType.Artists) + libraryViewModel.forceReload(ReloadType.Artists) } override fun createLayoutManager(): GridLayoutManager { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsLibraryPagerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsLibraryPagerFragment.kt deleted file mode 100644 index d725202e5..000000000 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsLibraryPagerFragment.kt +++ /dev/null @@ -1,15 +0,0 @@ -package code.name.monkey.retromusic.fragments.base - -import android.os.Bundle -import code.name.monkey.retromusic.activities.MainActivity - -open class AbsLibraryPagerFragment : AbsMusicServiceFragment() { - - val mainActivity: MainActivity - get() = requireActivity() as MainActivity - - override fun onActivityCreated(savedInstanceState: Bundle?) { - super.onActivityCreated(savedInstanceState) - setHasOptionsMenu(true) - } -} diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsMainActivityFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsMainActivityFragment.kt index 86be7db06..22e373d5d 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsMainActivityFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsMainActivityFragment.kt @@ -2,13 +2,14 @@ package code.name.monkey.retromusic.fragments.base import android.os.Bundle import android.view.View +import androidx.annotation.LayoutRes import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.VersionUtils import code.name.monkey.retromusic.R import code.name.monkey.retromusic.activities.MainActivity -abstract class AbsMainActivityFragment : AbsMusicServiceFragment() { +abstract class AbsMainActivityFragment(@LayoutRes layout: Int) : AbsMusicServiceFragment(layout) { val mainActivity: MainActivity get() = activity as MainActivity diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsMusicServiceFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsMusicServiceFragment.kt index 3ec3fbad2..b5d666f1f 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsMusicServiceFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsMusicServiceFragment.kt @@ -5,6 +5,7 @@ import android.net.Uri import android.os.Bundle import android.view.View import android.webkit.MimeTypeMap +import androidx.annotation.LayoutRes import androidx.fragment.app.Fragment import code.name.monkey.retromusic.activities.base.AbsMusicServiceActivity import code.name.monkey.retromusic.interfaces.MusicServiceEventListener @@ -19,7 +20,8 @@ import java.util.* * Created by hemanths on 18/08/17. */ -open class AbsMusicServiceFragment : Fragment(), MusicServiceEventListener { +open class AbsMusicServiceFragment(@LayoutRes layout: Int) : Fragment(layout), + MusicServiceEventListener { var playerActivity: AbsMusicServiceActivity? = null private set diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerControlsFragment.kt index ff2a61baf..fae417ab8 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerControlsFragment.kt @@ -4,6 +4,7 @@ import android.os.Bundle import android.view.View import android.view.animation.AccelerateInterpolator import android.view.animation.DecelerateInterpolator +import androidx.annotation.LayoutRes import code.name.monkey.retromusic.R import code.name.monkey.retromusic.fragments.VolumeFragment import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper @@ -15,7 +16,7 @@ import code.name.monkey.retromusic.util.color.MediaNotificationProcessor * Created by hemanths on 24/09/17. */ -abstract class AbsPlayerControlsFragment : AbsMusicServiceFragment(), +abstract class AbsPlayerControlsFragment(@LayoutRes layout: Int) : AbsMusicServiceFragment(layout), MusicProgressViewUpdateHelper.Callback { protected abstract fun show() diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt index 301ef80c8..b12e778f6 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt @@ -12,6 +12,7 @@ import android.text.TextUtils import android.view.MenuItem import android.view.View import android.widget.Toast +import androidx.annotation.LayoutRes import androidx.appcompat.widget.Toolbar import code.name.monkey.retromusic.R import code.name.monkey.retromusic.activities.tageditor.AbsTagEditorActivity @@ -29,7 +30,7 @@ import kotlinx.android.synthetic.main.shadow_statusbar_toolbar.* import org.koin.androidx.viewmodel.ext.android.sharedViewModel import java.io.FileNotFoundException -abstract class AbsPlayerFragment : AbsMusicServiceFragment(), +abstract class AbsPlayerFragment(@LayoutRes layout: Int) : AbsMusicServiceFragment(layout), Toolbar.OnMenuItemClickListener, PaletteColorHolder, PlayerAlbumCoverFragment.Callbacks { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsLibraryPagerRecyclerViewCustomGridSizeFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsRecyclerViewCustomGridSizeFragment.kt similarity index 95% rename from app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsLibraryPagerRecyclerViewCustomGridSizeFragment.kt rename to app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsRecyclerViewCustomGridSizeFragment.kt index 7b1b060d0..dba5c2fc9 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsLibraryPagerRecyclerViewCustomGridSizeFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsRecyclerViewCustomGridSizeFragment.kt @@ -7,8 +7,8 @@ import androidx.recyclerview.widget.RecyclerView import code.name.monkey.retromusic.R import code.name.monkey.retromusic.util.RetroUtil -abstract class AbsLibraryPagerRecyclerViewCustomGridSizeFragment, LM : RecyclerView.LayoutManager> : - AbsLibraryPagerRecyclerViewFragment() { +abstract class AbsRecyclerViewCustomGridSizeFragment, LM : RecyclerView.LayoutManager> : + AbsRecyclerViewFragment() { private var gridSize: Int = 0 private var sortOrder: String? = null diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsLibraryPagerRecyclerViewFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsRecyclerViewFragment.kt similarity index 86% rename from app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsLibraryPagerRecyclerViewFragment.kt rename to app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsRecyclerViewFragment.kt index 2060cef58..de144f961 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsLibraryPagerRecyclerViewFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsRecyclerViewFragment.kt @@ -1,14 +1,13 @@ package code.name.monkey.retromusic.fragments.base import android.os.Bundle -import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.annotation.NonNull import androidx.annotation.StringRes -import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.RecyclerView import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.activities.MainActivity import code.name.monkey.retromusic.fragments.LibraryViewModel import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.util.DensityUtil @@ -18,19 +17,24 @@ import com.google.android.material.appbar.AppBarLayout import kotlinx.android.synthetic.main.fragment_main_activity_recycler_view.* import me.zhanghai.android.fastscroll.FastScroller import me.zhanghai.android.fastscroll.FastScrollerBuilder +import org.koin.androidx.viewmodel.ext.android.sharedViewModel -abstract class AbsLibraryPagerRecyclerViewFragment, LM : RecyclerView.LayoutManager> : - AbsLibraryPagerFragment(), AppBarLayout.OnOffsetChangedListener { +abstract class AbsRecyclerViewFragment, LM : RecyclerView.LayoutManager> : + AbsMusicServiceFragment(R.layout.fragment_main_activity_recycler_view), + AppBarLayout.OnOffsetChangedListener { + val libraryViewModel: LibraryViewModel by sharedViewModel() + val mainActivity: MainActivity + get() = requireActivity() as MainActivity + + override fun onActivityCreated(savedInstanceState: Bundle?) { + super.onActivityCreated(savedInstanceState) + setHasOptionsMenu(true) + } protected var adapter: A? = null protected var layoutManager: LM? = null - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - return inflater.inflate(R.layout.fragment_main_activity_recycler_view, container, false) - } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) @@ -94,7 +98,6 @@ abstract class AbsLibraryPagerRecyclerViewFragment, } - private fun initLayoutManager() { layoutManager = createLayoutManager() } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.java b/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.java index 9a81800e5..6c3ae3338 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.java +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.java @@ -106,6 +106,7 @@ public class FoldersFragment extends AbsMainActivityFragment implements private RecyclerView recyclerView; public FoldersFragment() { + super(R.layout.fragment_folder); } public static File getDefaultStartDirectory() { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenresFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenresFragment.kt index fb524a699..6f7f32445 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenresFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenresFragment.kt @@ -20,15 +20,15 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import code.name.monkey.retromusic.R import code.name.monkey.retromusic.adapter.GenreAdapter -import code.name.monkey.retromusic.fragments.LibraryViewModel -import code.name.monkey.retromusic.fragments.base.AbsLibraryPagerRecyclerViewFragment +import code.name.monkey.retromusic.fragments.base.AbsRecyclerViewFragment import code.name.monkey.retromusic.interfaces.MainActivityFragmentCallbacks -import org.koin.androidx.viewmodel.ext.android.sharedViewModel -class GenresFragment : AbsLibraryPagerRecyclerViewFragment(), +class GenresFragment : AbsRecyclerViewFragment(), MainActivityFragmentCallbacks { - private val libraryViewModel: LibraryViewModel by sharedViewModel() + override fun handleBackPress(): Boolean { + return false + } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) @@ -42,9 +42,6 @@ class GenresFragment : AbsLibraryPagerRecyclerViewFragment navController.navigate(R.id.adaptiveFragment) Blur -> navController.navigate(R.id.blurPlayerFragment) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/PlayerAlbumCoverFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/PlayerAlbumCoverFragment.kt index c1c55d5dd..9caeb6997 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/PlayerAlbumCoverFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/PlayerAlbumCoverFragment.kt @@ -1,9 +1,7 @@ package code.name.monkey.retromusic.fragments.player import android.os.Bundle -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import androidx.viewpager.widget.ViewPager import code.name.monkey.retromusic.R import code.name.monkey.retromusic.adapter.album.AlbumCoverPagerAdapter @@ -13,13 +11,13 @@ import code.name.monkey.retromusic.fragments.base.AbsMusicServiceFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.transform.CarousalPagerTransformer import code.name.monkey.retromusic.transform.ParallaxPagerTransformer - import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_player_album_cover.* -class PlayerAlbumCoverFragment : AbsMusicServiceFragment(), ViewPager.OnPageChangeListener { +class PlayerAlbumCoverFragment : AbsMusicServiceFragment(R.layout.fragment_player_album_cover), + ViewPager.OnPageChangeListener { private var callbacks: Callbacks? = null private var currentPosition: Int = 0 private val colorReceiver = object : AlbumCoverFragment.ColorReceiver { @@ -35,13 +33,6 @@ class PlayerAlbumCoverFragment : AbsMusicServiceFragment(), ViewPager.OnPageChan transformer.setSpeed(0.3f) } - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - return inflater.inflate(R.layout.fragment_player_album_cover, container, false) - } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) viewPager.addOnPageChangeListener(this) @@ -50,7 +41,7 @@ class PlayerAlbumCoverFragment : AbsMusicServiceFragment(), ViewPager.OnPageChan val metrics = resources.displayMetrics val ratio = metrics.heightPixels.toFloat() / metrics.widthPixels.toFloat() - if (nps == Full || nps == Classic || nps == Fit || nps == Gradient ) { + if (nps == Full || nps == Classic || nps == Fit || nps == Gradient) { viewPager.offscreenPageLimit = 2 } else if (PreferenceUtil.isCarouselEffect) { viewPager.clipToPadding = false diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/adaptive/AdaptiveFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/adaptive/AdaptiveFragment.kt index eb928e247..bec1a0960 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/adaptive/AdaptiveFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/adaptive/AdaptiveFragment.kt @@ -1,9 +1,7 @@ package code.name.monkey.retromusic.fragments.player.adaptive import android.os.Bundle -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import androidx.appcompat.widget.Toolbar import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper @@ -18,7 +16,7 @@ import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_adaptive_player.* -class AdaptiveFragment : AbsPlayerFragment() { +class AdaptiveFragment : AbsPlayerFragment(R.layout.fragment_adaptive_player) { override fun playerToolbar(): Toolbar { return playerToolbar @@ -27,14 +25,6 @@ class AdaptiveFragment : AbsPlayerFragment() { private var lastColor: Int = 0 private lateinit var playbackControlsFragment: AdaptivePlaybackControlsFragment - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - return inflater.inflate(R.layout.fragment_adaptive_player, container, false) - } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) setUpSubFragments() diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/adaptive/AdaptivePlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/adaptive/AdaptivePlaybackControlsFragment.kt index ded0daf8c..9b5ccd5d3 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/adaptive/AdaptivePlaybackControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/adaptive/AdaptivePlaybackControlsFragment.kt @@ -30,7 +30,8 @@ import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_adaptive_player_playback_controls.* -class AdaptivePlaybackControlsFragment : AbsPlayerControlsFragment() { +class AdaptivePlaybackControlsFragment : + AbsPlayerControlsFragment(R.layout.fragment_adaptive_player_playback_controls) { private var lastPlaybackControlsColor: Int = 0 private var lastDisabledPlaybackControlsColor: Int = 0 diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/blur/BlurPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/blur/BlurPlaybackControlsFragment.kt index d15a6d61b..0a291a45b 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/blur/BlurPlaybackControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/blur/BlurPlaybackControlsFragment.kt @@ -4,9 +4,7 @@ import android.animation.ObjectAnimator import android.graphics.Color import android.graphics.PorterDuff import android.os.Bundle -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import android.view.animation.AccelerateInterpolator import android.view.animation.DecelerateInterpolator import android.view.animation.LinearInterpolator @@ -29,7 +27,8 @@ import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_blur_player_playback_controls.* -class BlurPlaybackControlsFragment : AbsPlayerControlsFragment() { +class BlurPlaybackControlsFragment : + AbsPlayerControlsFragment(R.layout.fragment_blur_player_playback_controls) { private var lastPlaybackControlsColor: Int = 0 private var lastDisabledPlaybackControlsColor: Int = 0 @@ -40,14 +39,6 @@ class BlurPlaybackControlsFragment : AbsPlayerControlsFragment() { progressViewUpdateHelper = MusicProgressViewUpdateHelper(this) } - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - return inflater.inflate(R.layout.fragment_blur_player_playback_controls, container, false) - } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) setUpMusicControllers() diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/blur/BlurPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/blur/BlurPlayerFragment.kt index ea7460954..5e7a80717 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/blur/BlurPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/blur/BlurPlayerFragment.kt @@ -3,9 +3,7 @@ package code.name.monkey.retromusic.fragments.player.blur import android.content.SharedPreferences import android.graphics.Color import android.os.Bundle -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import androidx.appcompat.widget.Toolbar import androidx.preference.PreferenceManager import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper @@ -22,7 +20,8 @@ import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import com.bumptech.glide.Glide import kotlinx.android.synthetic.main.fragment_blur.* -class BlurPlayerFragment : AbsPlayerFragment(), SharedPreferences.OnSharedPreferenceChangeListener { +class BlurPlayerFragment : AbsPlayerFragment(R.layout.fragment_blur), + SharedPreferences.OnSharedPreferenceChangeListener { override fun playerToolbar(): Toolbar { return playerToolbar @@ -32,12 +31,6 @@ class BlurPlayerFragment : AbsPlayerFragment(), SharedPreferences.OnSharedPrefer private var lastColor: Int = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - return inflater.inflate(R.layout.fragment_blur, container, false) - } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/card/CardFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/card/CardFragment.kt index 1e3c90955..e1cba98c4 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/card/CardFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/card/CardFragment.kt @@ -2,9 +2,7 @@ package code.name.monkey.retromusic.fragments.player.card import android.graphics.Color import android.os.Bundle -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import androidx.appcompat.widget.Toolbar import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper import code.name.monkey.retromusic.R @@ -16,7 +14,7 @@ import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_card_player.* -class CardFragment : AbsPlayerFragment() { +class CardFragment : AbsPlayerFragment(R.layout.fragment_card_player) { override fun playerToolbar(): Toolbar { return playerToolbar } @@ -62,14 +60,6 @@ class CardFragment : AbsPlayerFragment() { toggleFavorite(MusicPlayerRemote.currentSong) } - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - - return inflater.inflate(R.layout.fragment_card_player, container, false) - } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) setUpSubFragments() diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/card/CardPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/card/CardPlaybackControlsFragment.kt index 3a433ce06..f813b9e94 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/card/CardPlaybackControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/card/CardPlaybackControlsFragment.kt @@ -3,9 +3,7 @@ package code.name.monkey.retromusic.fragments.player.card import android.animation.ObjectAnimator import android.graphics.PorterDuff import android.os.Bundle -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import android.view.animation.LinearInterpolator import android.widget.SeekBar import code.name.monkey.appthemehelper.ThemeStore @@ -24,13 +22,13 @@ import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.util.MusicUtil - import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_card_player_playback_controls.* import kotlinx.android.synthetic.main.media_button.* -class CardPlaybackControlsFragment : AbsPlayerControlsFragment() { +class CardPlaybackControlsFragment : + AbsPlayerControlsFragment(R.layout.fragment_card_player_playback_controls) { private var lastPlaybackControlsColor: Int = 0 private var lastDisabledPlaybackControlsColor: Int = 0 @@ -41,12 +39,6 @@ class CardPlaybackControlsFragment : AbsPlayerControlsFragment() { progressViewUpdateHelper = MusicProgressViewUpdateHelper(this) } - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - return inflater.inflate(R.layout.fragment_card_player_playback_controls, container, false) - } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/cardblur/CardBlurFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/cardblur/CardBlurFragment.kt index d0de12fa2..c47b4cf37 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/cardblur/CardBlurFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/cardblur/CardBlurFragment.kt @@ -3,9 +3,7 @@ package code.name.monkey.retromusic.fragments.player.cardblur import android.content.SharedPreferences import android.graphics.Color import android.os.Bundle -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import androidx.appcompat.widget.Toolbar import androidx.preference.PreferenceManager import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper @@ -19,12 +17,12 @@ import code.name.monkey.retromusic.glide.RetroMusicColoredTarget import code.name.monkey.retromusic.glide.SongGlideRequest import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.model.Song - import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import com.bumptech.glide.Glide import kotlinx.android.synthetic.main.fragment_card_blur_player.* -class CardBlurFragment : AbsPlayerFragment(), SharedPreferences.OnSharedPreferenceChangeListener { +class CardBlurFragment : AbsPlayerFragment(R.layout.fragment_card_blur_player), + SharedPreferences.OnSharedPreferenceChangeListener { override fun playerToolbar(): Toolbar { return playerToolbar } @@ -72,13 +70,6 @@ class CardBlurFragment : AbsPlayerFragment(), SharedPreferences.OnSharedPreferen toggleFavorite(MusicPlayerRemote.currentSong) } - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - - return inflater.inflate(R.layout.fragment_card_blur_player, container, false) - } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/cardblur/CardBlurPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/cardblur/CardBlurPlaybackControlsFragment.kt index c52dc3c5a..f49c490f7 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/cardblur/CardBlurPlaybackControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/cardblur/CardBlurPlaybackControlsFragment.kt @@ -4,9 +4,7 @@ import android.animation.ObjectAnimator import android.graphics.Color import android.graphics.PorterDuff import android.os.Bundle -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import android.view.animation.DecelerateInterpolator import android.view.animation.LinearInterpolator import android.widget.SeekBar @@ -24,12 +22,12 @@ import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.PreferenceUtil - import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_card_blur_player_playback_controls.* import kotlinx.android.synthetic.main.media_button.* -class CardBlurPlaybackControlsFragment : AbsPlayerControlsFragment() { +class CardBlurPlaybackControlsFragment : + AbsPlayerControlsFragment(R.layout.fragment_card_blur_player_playback_controls) { private var lastPlaybackControlsColor: Int = 0 private var lastDisabledPlaybackControlsColor: Int = 0 @@ -40,18 +38,6 @@ class CardBlurPlaybackControlsFragment : AbsPlayerControlsFragment() { progressViewUpdateHelper = MusicProgressViewUpdateHelper(this) } - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - - return inflater.inflate( - R.layout.fragment_card_blur_player_playback_controls, - container, - false - ) - } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) setUpMusicControllers() diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/circle/CirclePlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/circle/CirclePlayerFragment.kt index 451076c67..507c799fe 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/circle/CirclePlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/circle/CirclePlayerFragment.kt @@ -58,7 +58,8 @@ import kotlinx.android.synthetic.main.fragment_circle_player.* * Created by hemanths on 2020-01-06. */ -class CirclePlayerFragment : AbsPlayerFragment(), Callback, OnAudioVolumeChangedListener, +class CirclePlayerFragment : AbsPlayerFragment(R.layout.fragment_circle_player), Callback, + OnAudioVolumeChangedListener, OnSeekArcChangeListener { private lateinit var progressViewUpdateHelper: MusicProgressViewUpdateHelper diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/classic/ClassicPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/classic/ClassicPlayerFragment.kt index df83285b1..323c89b4e 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/classic/ClassicPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/classic/ClassicPlayerFragment.kt @@ -6,9 +6,7 @@ import android.content.res.ColorStateList import android.graphics.Color import android.graphics.PorterDuff import android.os.Bundle -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import android.view.animation.LinearInterpolator import android.widget.SeekBar import androidx.appcompat.app.AppCompatActivity @@ -37,7 +35,6 @@ import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.util.MusicUtil - import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.ViewUtil import code.name.monkey.retromusic.util.color.MediaNotificationProcessor @@ -53,7 +50,8 @@ import com.h6ah4i.android.widget.advrecyclerview.utils.WrapperAdapterUtils import kotlinx.android.synthetic.main.fragment_classic_controls.* import kotlinx.android.synthetic.main.fragment_classic_player.* -class ClassicPlayerFragment : AbsPlayerFragment(), View.OnLayoutChangeListener, +class ClassicPlayerFragment : AbsPlayerFragment(R.layout.fragment_classic_player), + View.OnLayoutChangeListener, MusicProgressViewUpdateHelper.Callback { private var lastColor: Int = 0 @@ -107,14 +105,6 @@ class ClassicPlayerFragment : AbsPlayerFragment(), View.OnLayoutChangeListener, progressViewUpdateHelper = MusicProgressViewUpdateHelper(this) } - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - return inflater.inflate(R.layout.fragment_classic_player, container, false) - } - @SuppressLint("ClickableViewAccessibility") override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/color/ColorFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/color/ColorFragment.kt index 691dc57fd..ef3b3b5c4 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/color/ColorFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/color/ColorFragment.kt @@ -3,9 +3,7 @@ package code.name.monkey.retromusic.fragments.player.color import android.animation.ValueAnimator import android.os.Bundle import android.os.Handler -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import androidx.appcompat.widget.Toolbar import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ColorUtil @@ -18,7 +16,7 @@ import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_color_player.* -class ColorFragment : AbsPlayerFragment() { +class ColorFragment : AbsPlayerFragment(R.layout.fragment_color_player) { private var lastColor: Int = 0 private var navigationColor: Int = 0 @@ -85,14 +83,6 @@ class ColorFragment : AbsPlayerFragment() { } } - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - return inflater.inflate(R.layout.fragment_color_player, container, false) - } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) setUpSubFragments() diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/color/ColorPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/color/ColorPlaybackControlsFragment.kt index f8ccbdb81..15518f90d 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/color/ColorPlaybackControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/color/ColorPlaybackControlsFragment.kt @@ -28,7 +28,8 @@ import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_color_player_playback_controls.* -class ColorPlaybackControlsFragment : AbsPlayerControlsFragment() { +class ColorPlaybackControlsFragment : + AbsPlayerControlsFragment(R.layout.fragment_adaptive_player_playback_controls) { private var lastPlaybackControlsColor: Int = 0 private var lastDisabledPlaybackControlsColor: Int = 0 diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/fit/FitFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/fit/FitFragment.kt index 1fee1df87..f700121e8 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/fit/FitFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/fit/FitFragment.kt @@ -1,9 +1,7 @@ package code.name.monkey.retromusic.fragments.player.fit import android.os.Bundle -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import androidx.appcompat.widget.Toolbar import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper @@ -15,7 +13,7 @@ import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_fit.* -class FitFragment : AbsPlayerFragment() { +class FitFragment : AbsPlayerFragment(R.layout.fragment_fit) { override fun playerToolbar(): Toolbar { return playerToolbar } @@ -65,14 +63,6 @@ class FitFragment : AbsPlayerFragment() { toggleFavorite(MusicPlayerRemote.currentSong) } - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - - return inflater.inflate(R.layout.fragment_fit, container, false) - } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) setUpSubFragments() diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/fit/FitPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/fit/FitPlaybackControlsFragment.kt index e7a5cb9b1..cf3bb2f63 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/fit/FitPlaybackControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/fit/FitPlaybackControlsFragment.kt @@ -31,7 +31,8 @@ import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_fit_playback_controls.* -class FitPlaybackControlsFragment : AbsPlayerControlsFragment() { +class FitPlaybackControlsFragment : + AbsPlayerControlsFragment(R.layout.fragment_fit_playback_controls) { private var lastPlaybackControlsColor: Int = 0 @@ -43,13 +44,6 @@ class FitPlaybackControlsFragment : AbsPlayerControlsFragment() { progressViewUpdateHelper = MusicProgressViewUpdateHelper(this) } - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - - return inflater.inflate(R.layout.fragment_fit_playback_controls, container, false) - } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/flat/FlatPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/flat/FlatPlaybackControlsFragment.kt index 4fee49100..0ace50012 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/flat/FlatPlaybackControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/flat/FlatPlaybackControlsFragment.kt @@ -3,9 +3,7 @@ package code.name.monkey.retromusic.fragments.player.flat import android.animation.ObjectAnimator import android.graphics.PorterDuff import android.os.Bundle -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import android.view.animation.DecelerateInterpolator import android.view.animation.LinearInterpolator import android.widget.SeekBar @@ -27,12 +25,12 @@ import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.util.MusicUtil - import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_flat_player_playback_controls.* -class FlatPlaybackControlsFragment : AbsPlayerControlsFragment(), Callback { +class FlatPlaybackControlsFragment : + AbsPlayerControlsFragment(R.layout.fragment_flat_player_playback_controls), Callback { private var lastPlaybackControlsColor: Int = 0 private var lastDisabledPlaybackControlsColor: Int = 0 @@ -43,13 +41,6 @@ class FlatPlaybackControlsFragment : AbsPlayerControlsFragment(), Callback { progressViewUpdateHelper = MusicProgressViewUpdateHelper(this) } - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - return inflater.inflate(R.layout.fragment_flat_player_playback_controls, container, false) - } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) setUpMusicControllers() diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/flat/FlatPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/flat/FlatPlayerFragment.kt index e0eaa94e5..e1c90eb03 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/flat/FlatPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/flat/FlatPlayerFragment.kt @@ -4,9 +4,7 @@ import android.animation.ArgbEvaluator import android.animation.ValueAnimator import android.graphics.drawable.GradientDrawable import android.os.Bundle -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import androidx.appcompat.widget.Toolbar import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ColorUtil @@ -17,14 +15,13 @@ import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.model.Song - import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.ViewUtil import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import code.name.monkey.retromusic.views.DrawableGradient import kotlinx.android.synthetic.main.fragment_flat_player.* -class FlatPlayerFragment : AbsPlayerFragment() { +class FlatPlayerFragment : AbsPlayerFragment(R.layout.fragment_flat_player) { override fun playerToolbar(): Toolbar { return playerToolbar } @@ -71,13 +68,6 @@ class FlatPlayerFragment : AbsPlayerFragment() { valueAnimator?.setDuration(ViewUtil.RETRO_MUSIC_ANIM_TIME.toLong())?.start() } - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - return inflater.inflate(R.layout.fragment_flat_player, container, false) - } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) setUpPlayerToolbar() diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlaybackControlsFragment.kt index 882a4d02b..e6fa24de8 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlaybackControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlaybackControlsFragment.kt @@ -7,10 +7,8 @@ import android.graphics.Color import android.graphics.PorterDuff import android.os.AsyncTask import android.os.Bundle -import android.view.LayoutInflater import android.view.MenuItem import android.view.View -import android.view.ViewGroup import android.view.animation.DecelerateInterpolator import android.view.animation.LinearInterpolator import android.widget.PopupMenu @@ -30,7 +28,6 @@ import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.PreferenceUtil - import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_full_player_controls.* @@ -38,7 +35,8 @@ import kotlinx.android.synthetic.main.fragment_full_player_controls.* * Created by hemanths on 20/09/17. */ -class FullPlaybackControlsFragment : AbsPlayerControlsFragment(), +class FullPlaybackControlsFragment : + AbsPlayerControlsFragment(R.layout.fragment_full_player_controls), PopupMenu.OnMenuItemClickListener { private var lastPlaybackControlsColor: Int = 0 @@ -50,14 +48,6 @@ class FullPlaybackControlsFragment : AbsPlayerControlsFragment(), progressViewUpdateHelper = MusicProgressViewUpdateHelper(this) } - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - return inflater.inflate(R.layout.fragment_full_player_controls, container, false) - } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) setUpMusicControllers() diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlayerFragment.kt index 7538af77d..f2141bfbc 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlayerFragment.kt @@ -4,9 +4,7 @@ import android.app.ActivityOptions import android.content.res.ColorStateList import android.graphics.Color import android.os.Bundle -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import android.widget.FrameLayout import android.widget.TextView import androidx.appcompat.widget.Toolbar @@ -33,7 +31,8 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -class FullPlayerFragment : AbsPlayerFragment(), MusicProgressViewUpdateHelper.Callback { +class FullPlayerFragment : AbsPlayerFragment(R.layout.fragment_full), + MusicProgressViewUpdateHelper.Callback { private lateinit var lyricsLayout: FrameLayout private lateinit var lyricsLine1: TextView private lateinit var lyricsLine2: TextView @@ -134,13 +133,6 @@ class FullPlayerFragment : AbsPlayerFragment(), MusicProgressViewUpdateHelper.Ca } } - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - return inflater.inflate(R.layout.fragment_full, container, false) - } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) lyricsLayout = view.findViewById(R.id.playerLyrics) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/gradient/GradientPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/gradient/GradientPlayerFragment.kt index 1d23c7c8b..f51b1c75d 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/gradient/GradientPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/gradient/GradientPlayerFragment.kt @@ -7,9 +7,7 @@ import android.graphics.Color import android.graphics.PorterDuff import android.os.AsyncTask import android.os.Bundle -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import android.view.animation.LinearInterpolator import android.widget.PopupMenu import android.widget.SeekBar @@ -51,7 +49,8 @@ import kotlinx.android.synthetic.main.fragment_gradient_controls.* import kotlinx.android.synthetic.main.fragment_gradient_player.* import kotlinx.android.synthetic.main.status_bar.* -class GradientPlayerFragment : AbsPlayerFragment(), MusicProgressViewUpdateHelper.Callback, +class GradientPlayerFragment : AbsPlayerFragment(R.layout.fragment_gradient_player), + MusicProgressViewUpdateHelper.Callback, View.OnLayoutChangeListener, PopupMenu.OnMenuItemClickListener { private var lastColor: Int = 0 private var lastPlaybackControlsColor: Int = 0 @@ -124,13 +123,6 @@ class GradientPlayerFragment : AbsPlayerFragment(), MusicProgressViewUpdateHelpe progressViewUpdateHelper = MusicProgressViewUpdateHelper(this) } - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - return inflater.inflate(R.layout.fragment_gradient_player, container, false) - } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) @@ -283,6 +275,7 @@ class GradientPlayerFragment : AbsPlayerFragment(), MusicProgressViewUpdateHelpe super.onQueueChanged() updateLabel() } + private fun updateSong() { val song = MusicPlayerRemote.currentSong title.text = song.title @@ -485,35 +478,36 @@ class GradientPlayerFragment : AbsPlayerFragment(), MusicProgressViewUpdateHelpe songTotalTime.text = MusicUtil.getReadableDurationString(total.toLong()) songCurrentProgress.text = MusicUtil.getReadableDurationString(progress.toLong()) } + @SuppressLint("StaticFieldLeak") private fun updateFavorite() { if (updateIsFavoriteTask != null) { updateIsFavoriteTask?.cancel(false) } updateIsFavoriteTask = - object : AsyncTask() { - override fun doInBackground(vararg params: Song): Boolean? { - val activity = activity - return if (activity != null) { - MusicUtil.isFavorite(requireActivity(), params[0]) - } else { - cancel(false) - null + object : AsyncTask() { + override fun doInBackground(vararg params: Song): Boolean? { + val activity = activity + return if (activity != null) { + MusicUtil.isFavorite(requireActivity(), params[0]) + } else { + cancel(false) + null + } } - } - override fun onPostExecute(isFavorite: Boolean?) { - val activity = activity - if (activity != null) { - val res = if (isFavorite!!) - R.drawable.ic_favorite - else - R.drawable.ic_favorite_border + override fun onPostExecute(isFavorite: Boolean?) { + val activity = activity + if (activity != null) { + val res = if (isFavorite!!) + R.drawable.ic_favorite + else + R.drawable.ic_favorite_border - val drawable = TintHelper.createTintedDrawable(activity, res, Color.WHITE) - songFavourite?.setImageDrawable(drawable) + val drawable = TintHelper.createTintedDrawable(activity, res, Color.WHITE) + songFavourite?.setImageDrawable(drawable) + } } - } - }.execute(MusicPlayerRemote.currentSong) + }.execute(MusicPlayerRemote.currentSong) } } \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/home/HomePlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/home/HomePlayerFragment.kt index cd3d16bd0..248b82823 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/home/HomePlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/home/HomePlayerFragment.kt @@ -2,9 +2,7 @@ package code.name.monkey.retromusic.fragments.player.home import android.graphics.Color import android.os.Bundle -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import androidx.appcompat.widget.Toolbar import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper @@ -18,7 +16,8 @@ import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_home_player.* -class HomePlayerFragment : AbsPlayerFragment(), MusicProgressViewUpdateHelper.Callback { +class HomePlayerFragment : AbsPlayerFragment(R.layout.fragment_home_player), + MusicProgressViewUpdateHelper.Callback { private var lastColor: Int = 0 private lateinit var progressViewUpdateHelper: MusicProgressViewUpdateHelper @@ -27,14 +26,6 @@ class HomePlayerFragment : AbsPlayerFragment(), MusicProgressViewUpdateHelper.Ca progressViewUpdateHelper = MusicProgressViewUpdateHelper(this) } - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - return inflater.inflate(R.layout.fragment_home_player, container, false) - } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) setUpPlayerToolbar() diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/lockscreen/LockScreenPlayerControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/lockscreen/LockScreenPlayerControlsFragment.kt index f3f4d9e9a..51556b8a3 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/lockscreen/LockScreenPlayerControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/lockscreen/LockScreenPlayerControlsFragment.kt @@ -17,9 +17,7 @@ package code.name.monkey.retromusic.fragments.player.lockscreen import android.animation.ObjectAnimator import android.graphics.PorterDuff import android.os.Bundle -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import android.view.animation.DecelerateInterpolator import android.view.animation.LinearInterpolator import android.widget.SeekBar @@ -38,7 +36,6 @@ import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.util.MusicUtil - import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_lock_screen_playback_controls.* @@ -46,7 +43,8 @@ import kotlinx.android.synthetic.main.fragment_lock_screen_playback_controls.* /** * @author Hemanth S (h4h13). */ -class LockScreenPlayerControlsFragment : AbsPlayerControlsFragment() { +class LockScreenPlayerControlsFragment : + AbsPlayerControlsFragment(R.layout.fragment_lock_screen_playback_controls) { private var progressViewUpdateHelper: MusicProgressViewUpdateHelper? = null private var lastPlaybackControlsColor: Int = 0 @@ -57,14 +55,6 @@ class LockScreenPlayerControlsFragment : AbsPlayerControlsFragment() { progressViewUpdateHelper = MusicProgressViewUpdateHelper(this) } - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - - return inflater.inflate(R.layout.fragment_lock_screen_playback_controls, container, false) - } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) setUpMusicControllers() diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialControlsFragment.kt index 485b1e1d9..5747bd0b9 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialControlsFragment.kt @@ -3,9 +3,7 @@ package code.name.monkey.retromusic.fragments.player.material import android.animation.ObjectAnimator import android.graphics.PorterDuff import android.os.Bundle -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import android.view.animation.LinearInterpolator import android.widget.SeekBar import code.name.monkey.appthemehelper.util.ATHUtil @@ -19,7 +17,6 @@ import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.util.MusicUtil - import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_material_playback_controls.* @@ -27,7 +24,8 @@ import kotlinx.android.synthetic.main.fragment_material_playback_controls.* /** * @author Hemanth S (h4h13). */ -class MaterialControlsFragment : AbsPlayerControlsFragment() { +class MaterialControlsFragment : + AbsPlayerControlsFragment(R.layout.fragment_material_playback_controls) { private var lastPlaybackControlsColor: Int = 0 private var lastDisabledPlaybackControlsColor: Int = 0 @@ -38,13 +36,6 @@ class MaterialControlsFragment : AbsPlayerControlsFragment() { progressViewUpdateHelper = MusicProgressViewUpdateHelper(this) } - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - return inflater.inflate(R.layout.fragment_material_playback_controls, container, false) - } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) setUpMusicControllers() diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialFragment.kt index b2b61d4c2..117e9cb8d 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialFragment.kt @@ -1,9 +1,7 @@ package code.name.monkey.retromusic.fragments.player.material import android.os.Bundle -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import androidx.appcompat.widget.Toolbar import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper @@ -19,7 +17,7 @@ import kotlinx.android.synthetic.main.fragment_material.* /** * @author Hemanth S (h4h13). */ -class MaterialFragment : AbsPlayerFragment() { +class MaterialFragment : AbsPlayerFragment(R.layout.fragment_material) { override fun playerToolbar(): Toolbar { return playerToolbar @@ -72,13 +70,6 @@ class MaterialFragment : AbsPlayerFragment() { toggleFavorite(MusicPlayerRemote.currentSong) } - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - return inflater.inflate(R.layout.fragment_material, container, false) - } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) setUpSubFragments() diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/normal/PlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/normal/PlayerFragment.kt index 6017e11e5..783f4020d 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/normal/PlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/normal/PlayerFragment.kt @@ -4,9 +4,7 @@ import android.animation.ArgbEvaluator import android.animation.ValueAnimator import android.graphics.drawable.GradientDrawable import android.os.Bundle -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import androidx.appcompat.widget.Toolbar import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper @@ -15,7 +13,6 @@ import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.model.Song - import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.ViewUtil import code.name.monkey.retromusic.util.color.MediaNotificationProcessor @@ -23,7 +20,7 @@ import code.name.monkey.retromusic.views.DrawableGradient import kotlinx.android.synthetic.main.fragment_player.* -class PlayerFragment : AbsPlayerFragment() { +class PlayerFragment : AbsPlayerFragment(R.layout.fragment_player) { private var lastColor: Int = 0 override val paletteColor: Int @@ -103,14 +100,6 @@ class PlayerFragment : AbsPlayerFragment() { } - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - - return inflater.inflate(R.layout.fragment_player, container, false) - } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) setUpSubFragments() diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/normal/PlayerPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/normal/PlayerPlaybackControlsFragment.kt index 8173aa17e..6e8760dc6 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/normal/PlayerPlaybackControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/normal/PlayerPlaybackControlsFragment.kt @@ -3,9 +3,7 @@ package code.name.monkey.retromusic.fragments.player.normal import android.animation.ObjectAnimator import android.graphics.PorterDuff import android.os.Bundle -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import android.view.animation.DecelerateInterpolator import android.view.animation.LinearInterpolator import android.widget.SeekBar @@ -26,12 +24,12 @@ import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.util.MusicUtil - import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_player_playback_controls.* -class PlayerPlaybackControlsFragment : AbsPlayerControlsFragment() { +class PlayerPlaybackControlsFragment : + AbsPlayerControlsFragment(R.layout.fragment_player_playback_controls) { private var lastPlaybackControlsColor: Int = 0 private var lastDisabledPlaybackControlsColor: Int = 0 @@ -42,13 +40,6 @@ class PlayerPlaybackControlsFragment : AbsPlayerControlsFragment() { progressViewUpdateHelper = MusicProgressViewUpdateHelper(this) } - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - return inflater.inflate(R.layout.fragment_player_playback_controls, container, false) - } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) setUpMusicControllers() diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/peak/PeakPlayerControlFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/peak/PeakPlayerControlFragment.kt index c4df24725..9dab88805 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/peak/PeakPlayerControlFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/peak/PeakPlayerControlFragment.kt @@ -18,9 +18,7 @@ import android.animation.ObjectAnimator import android.graphics.Color import android.graphics.PorterDuff import android.os.Bundle -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import android.view.animation.LinearInterpolator import android.widget.SeekBar import code.name.monkey.appthemehelper.ThemeStore @@ -36,7 +34,6 @@ import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.util.MusicUtil - import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_peak_control_player.* @@ -45,7 +42,7 @@ import kotlinx.android.synthetic.main.fragment_peak_control_player.* * Created by hemanths on 2019-10-04. */ -class PeakPlayerControlFragment : AbsPlayerControlsFragment() { +class PeakPlayerControlFragment : AbsPlayerControlsFragment(R.layout.fragment_peak_control_player) { private lateinit var progressViewUpdateHelper: MusicProgressViewUpdateHelper private var lastPlaybackControlsColor: Int = 0 @@ -66,14 +63,6 @@ class PeakPlayerControlFragment : AbsPlayerControlsFragment() { progressViewUpdateHelper.stop() } - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - return inflater.inflate(R.layout.fragment_peak_control_player, container, false) - } - override fun onViewCreated( view: View, savedInstanceState: Bundle? diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/peak/PeakPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/peak/PeakPlayerFragment.kt index a47a41b9d..247e9ac7a 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/peak/PeakPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/peak/PeakPlayerFragment.kt @@ -15,9 +15,7 @@ package code.name.monkey.retromusic.fragments.player.peak import android.os.Bundle -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import androidx.appcompat.widget.Toolbar import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper @@ -28,7 +26,6 @@ import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.util.PreferenceUtil - import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_peak_player.* @@ -36,19 +33,11 @@ import kotlinx.android.synthetic.main.fragment_peak_player.* * Created by hemanths on 2019-10-03. */ -class PeakPlayerFragment : AbsPlayerFragment() { +class PeakPlayerFragment : AbsPlayerFragment(R.layout.fragment_peak_player) { private lateinit var controlsFragment: PeakPlayerControlFragment private var lastColor: Int = 0 - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - return inflater.inflate(R.layout.fragment_peak_player, container, false) - } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) setUpPlayerToolbar() diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/plain/PlainPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/plain/PlainPlaybackControlsFragment.kt index 3b81446d8..7d691b73e 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/plain/PlainPlaybackControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/plain/PlainPlaybackControlsFragment.kt @@ -3,9 +3,7 @@ package code.name.monkey.retromusic.fragments.player.plain import android.animation.ObjectAnimator import android.graphics.PorterDuff import android.os.Bundle -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import android.view.animation.AccelerateInterpolator import android.view.animation.DecelerateInterpolator import android.view.animation.LinearInterpolator @@ -26,7 +24,6 @@ import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.util.MusicUtil - import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_adaptive_player_playback_controls.* @@ -43,7 +40,8 @@ import kotlinx.android.synthetic.main.fragment_plain_controls_fragment.songTotal * @author Hemanth S (h4h13). */ -class PlainPlaybackControlsFragment : AbsPlayerControlsFragment() { +class PlainPlaybackControlsFragment : + AbsPlayerControlsFragment(R.layout.fragment_plain_controls_fragment) { private var lastPlaybackControlsColor: Int = 0 private var lastDisabledPlaybackControlsColor: Int = 0 @@ -87,14 +85,6 @@ class PlainPlaybackControlsFragment : AbsPlayerControlsFragment() { progressViewUpdateHelper = MusicProgressViewUpdateHelper(this) } - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - - return inflater.inflate(R.layout.fragment_plain_controls_fragment, container, false) - } override fun onResume() { super.onResume() diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/plain/PlainPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/plain/PlainPlayerFragment.kt index 76bf1979e..7b91b3ff4 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/plain/PlainPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/plain/PlainPlayerFragment.kt @@ -1,9 +1,7 @@ package code.name.monkey.retromusic.fragments.player.plain import android.os.Bundle -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import androidx.appcompat.widget.Toolbar import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper @@ -15,7 +13,7 @@ import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_plain_player.* -class PlainPlayerFragment : AbsPlayerFragment() { +class PlainPlayerFragment : AbsPlayerFragment(R.layout.fragment_plain_player) { override fun playerToolbar(): Toolbar { return playerToolbar } @@ -41,13 +39,6 @@ class PlainPlayerFragment : AbsPlayerFragment() { updateSong() } - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - return inflater.inflate(R.layout.fragment_plain_player, container, false) - } - private fun setUpPlayerToolbar() { playerToolbar.apply { inflateMenu(R.menu.menu_player) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/simple/SimplePlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/simple/SimplePlaybackControlsFragment.kt index 06b9c5157..692dea0c0 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/simple/SimplePlaybackControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/simple/SimplePlaybackControlsFragment.kt @@ -2,9 +2,7 @@ package code.name.monkey.retromusic.fragments.player.simple import android.graphics.PorterDuff import android.os.Bundle -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import android.view.animation.DecelerateInterpolator import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.util.ATHUtil @@ -20,7 +18,6 @@ import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.util.MusicUtil - import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_simple_controls_fragment.* @@ -29,7 +26,8 @@ import kotlinx.android.synthetic.main.fragment_simple_controls_fragment.* * @author Hemanth S (h4h13). */ -class SimplePlaybackControlsFragment : AbsPlayerControlsFragment() { +class SimplePlaybackControlsFragment : + AbsPlayerControlsFragment(R.layout.fragment_simple_controls_fragment) { private var lastPlaybackControlsColor: Int = 0 private var lastDisabledPlaybackControlsColor: Int = 0 @@ -59,14 +57,6 @@ class SimplePlaybackControlsFragment : AbsPlayerControlsFragment() { progressViewUpdateHelper = MusicProgressViewUpdateHelper(this) } - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - return inflater.inflate(R.layout.fragment_simple_controls_fragment, container, false) - } - override fun onResume() { super.onResume() progressViewUpdateHelper.start() diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/simple/SimplePlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/simple/SimplePlayerFragment.kt index 93a9fdebe..1e8136a79 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/simple/SimplePlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/simple/SimplePlayerFragment.kt @@ -1,9 +1,7 @@ package code.name.monkey.retromusic.fragments.player.simple import android.os.Bundle -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import androidx.appcompat.widget.Toolbar import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper @@ -19,7 +17,7 @@ import kotlinx.android.synthetic.main.fragment_simple_player.* * @author Hemanth S (h4h13). */ -class SimplePlayerFragment : AbsPlayerFragment() { +class SimplePlayerFragment : AbsPlayerFragment(R.layout.fragment_simple_player) { override fun playerToolbar(): Toolbar { return playerToolbar @@ -31,13 +29,6 @@ class SimplePlayerFragment : AbsPlayerFragment() { private lateinit var controlsFragment: SimplePlaybackControlsFragment - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - - return inflater.inflate(R.layout.fragment_simple_player, container, false) - } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/tiny/TinyPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/tiny/TinyPlaybackControlsFragment.kt index b8158deab..19b4bc6a6 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/tiny/TinyPlaybackControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/tiny/TinyPlaybackControlsFragment.kt @@ -2,9 +2,7 @@ package code.name.monkey.retromusic.fragments.player.tiny import android.graphics.PorterDuff import android.os.Bundle -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.retromusic.R import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment @@ -13,7 +11,8 @@ import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_tiny_controls_fragment.* -class TinyPlaybackControlsFragment : AbsPlayerControlsFragment() { +class TinyPlaybackControlsFragment : + AbsPlayerControlsFragment(R.layout.fragment_tiny_controls_fragment) { override fun show() { } @@ -38,13 +37,6 @@ class TinyPlaybackControlsFragment : AbsPlayerControlsFragment() { private var lastPlaybackControlsColor: Int = 0 private var lastDisabledPlaybackControlsColor: Int = 0 - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - return inflater.inflate(R.layout.fragment_tiny_controls_fragment, container, false) - } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/tiny/TinyPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/tiny/TinyPlayerFragment.kt index c299e9ca0..a00022406 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/tiny/TinyPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/tiny/TinyPlayerFragment.kt @@ -4,9 +4,7 @@ import android.animation.AnimatorSet import android.animation.ObjectAnimator import android.os.Bundle import android.os.Handler -import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import android.view.animation.LinearInterpolator import androidx.appcompat.widget.Toolbar import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper @@ -22,12 +20,12 @@ import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.PreferenceUtil - import code.name.monkey.retromusic.util.ViewUtil import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_tiny_player.* -class TinyPlayerFragment : AbsPlayerFragment(), MusicProgressViewUpdateHelper.Callback { +class TinyPlayerFragment : AbsPlayerFragment(R.layout.fragment_tiny_player), + MusicProgressViewUpdateHelper.Callback { private var lastColor: Int = 0 private var toolbarColor: Int = 0 @@ -111,13 +109,6 @@ class TinyPlayerFragment : AbsPlayerFragment(), MusicProgressViewUpdateHelper.Ca } } - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - return inflater.inflate(R.layout.fragment_tiny_player, container, false) - } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistsFragment.kt index 79466307d..26b197f75 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistsFragment.kt @@ -8,16 +8,16 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.GridLayoutManager import code.name.monkey.retromusic.R import code.name.monkey.retromusic.adapter.playlist.PlaylistAdapter -import code.name.monkey.retromusic.fragments.LibraryViewModel -import code.name.monkey.retromusic.fragments.base.AbsLibraryPagerRecyclerViewFragment +import code.name.monkey.retromusic.fragments.base.AbsRecyclerViewFragment import code.name.monkey.retromusic.interfaces.MainActivityFragmentCallbacks -import org.koin.androidx.viewmodel.ext.android.sharedViewModel class PlaylistsFragment : - AbsLibraryPagerRecyclerViewFragment(), + AbsRecyclerViewFragment() , MainActivityFragmentCallbacks { - private val libraryViewModel: LibraryViewModel by sharedViewModel() + override fun handleBackPress(): Boolean { + return false + } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) @@ -30,10 +30,6 @@ class PlaylistsFragment : }) } - override fun handleBackPress(): Boolean { - return false - } - override val emptyMessage: Int get() = R.string.no_playlists diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/queue/PlayingQueueFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/queue/PlayingQueueFragment.kt index a618c66e8..f829f985c 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/queue/PlayingQueueFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/queue/PlayingQueueFragment.kt @@ -20,7 +20,7 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import code.name.monkey.retromusic.R import code.name.monkey.retromusic.adapter.song.PlayingQueueAdapter -import code.name.monkey.retromusic.fragments.base.AbsLibraryPagerRecyclerViewFragment +import code.name.monkey.retromusic.fragments.base.AbsRecyclerViewFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.interfaces.MainActivityFragmentCallbacks import com.h6ah4i.android.widget.advrecyclerview.animator.DraggableItemAnimator @@ -34,7 +34,7 @@ import kotlinx.android.synthetic.main.activity_playing_queue.* * Created by hemanths on 2019-12-08. */ class PlayingQueueFragment : - AbsLibraryPagerRecyclerViewFragment(), + AbsRecyclerViewFragment(), MainActivityFragmentCallbacks { override fun handleBackPress(): Boolean { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/songs/SongsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/songs/SongsFragment.kt index 9e08a8035..d2b62bb17 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/songs/SongsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/songs/SongsFragment.kt @@ -1,25 +1,25 @@ package code.name.monkey.retromusic.fragments.songs import android.os.Bundle -import android.view.View +import android.view.* import androidx.annotation.LayoutRes import androidx.lifecycle.Observer import androidx.recyclerview.widget.GridLayoutManager import code.name.monkey.retromusic.R import code.name.monkey.retromusic.adapter.song.ShuffleButtonSongAdapter import code.name.monkey.retromusic.adapter.song.SongAdapter -import code.name.monkey.retromusic.fragments.LibraryViewModel import code.name.monkey.retromusic.fragments.ReloadType -import code.name.monkey.retromusic.fragments.base.AbsLibraryPagerRecyclerViewCustomGridSizeFragment +import code.name.monkey.retromusic.fragments.base.AbsRecyclerViewCustomGridSizeFragment import code.name.monkey.retromusic.interfaces.MainActivityFragmentCallbacks import code.name.monkey.retromusic.util.PreferenceUtil -import org.koin.androidx.viewmodel.ext.android.sharedViewModel class SongsFragment : - AbsLibraryPagerRecyclerViewCustomGridSizeFragment(), + AbsRecyclerViewCustomGridSizeFragment(), MainActivityFragmentCallbacks { - private val libraryViewModel: LibraryViewModel by sharedViewModel() + override fun handleBackPress(): Boolean { + return false + } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) @@ -110,8 +110,71 @@ class SongsFragment : } } + override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { + super.onCreateOptionsMenu(menu, inflater) + setUpGridSizeMenu(menu.findItem(R.id.action_grid_size).subMenu) + } - override fun handleBackPress(): Boolean { + private fun setUpGridSizeMenu( + + gridSizeMenu: SubMenu + ) { + println(getGridSize()) + when (getGridSize()) { + 1 -> gridSizeMenu.findItem(R.id.action_grid_size_1).isChecked = true + 2 -> gridSizeMenu.findItem(R.id.action_grid_size_2).isChecked = true + 3 -> gridSizeMenu.findItem(R.id.action_grid_size_3).isChecked = true + 4 -> gridSizeMenu.findItem(R.id.action_grid_size_4).isChecked = true + 5 -> gridSizeMenu.findItem(R.id.action_grid_size_5).isChecked = true + 6 -> gridSizeMenu.findItem(R.id.action_grid_size_6).isChecked = true + 7 -> gridSizeMenu.findItem(R.id.action_grid_size_7).isChecked = true + 8 -> gridSizeMenu.findItem(R.id.action_grid_size_8).isChecked = true + } + val maxGridSize = maxGridSize + if (maxGridSize < 8) { + gridSizeMenu.findItem(R.id.action_grid_size_8).isVisible = false + } + if (maxGridSize < 7) { + gridSizeMenu.findItem(R.id.action_grid_size_7).isVisible = false + } + if (maxGridSize < 6) { + gridSizeMenu.findItem(R.id.action_grid_size_6).isVisible = false + } + if (maxGridSize < 5) { + gridSizeMenu.findItem(R.id.action_grid_size_5).isVisible = false + } + if (maxGridSize < 4) { + gridSizeMenu.findItem(R.id.action_grid_size_4).isVisible = false + } + if (maxGridSize < 3) { + gridSizeMenu.findItem(R.id.action_grid_size_3).isVisible = false + } + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + if (handleGridSizeMenuItem(item)) return true + return super.onOptionsItemSelected(item) + } + + fun handleGridSizeMenuItem( + item: MenuItem + ): Boolean { + var gridSize = 0 + when (item.itemId) { + R.id.action_grid_size_1 -> gridSize = 1 + R.id.action_grid_size_2 -> gridSize = 2 + R.id.action_grid_size_3 -> gridSize = 3 + R.id.action_grid_size_4 -> gridSize = 4 + R.id.action_grid_size_5 -> gridSize = 5 + R.id.action_grid_size_6 -> gridSize = 6 + R.id.action_grid_size_7 -> gridSize = 7 + R.id.action_grid_size_8 -> gridSize = 8 + } + if (gridSize > 0) { + item.isChecked = true + setAndSaveGridSize(gridSize) + return true + } return false } } diff --git a/app/src/main/java/code/name/monkey/retromusic/interfaces/MainActivityFragmentCallbacks.kt b/app/src/main/java/code/name/monkey/retromusic/interfaces/MainActivityFragmentCallbacks.kt index 3e07dc696..454d36087 100644 --- a/app/src/main/java/code/name/monkey/retromusic/interfaces/MainActivityFragmentCallbacks.kt +++ b/app/src/main/java/code/name/monkey/retromusic/interfaces/MainActivityFragmentCallbacks.kt @@ -11,14 +11,11 @@ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. */ - package code.name.monkey.retromusic.interfaces /** * Created by hemanths on 14/08/17. */ - -interface MainActivityFragmentCallbacks { - +internal interface MainActivityFragmentCallbacks { fun handleBackPress(): Boolean -} +} \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/preferences/BlacklistPreferenceDialog.kt b/app/src/main/java/code/name/monkey/retromusic/preferences/BlacklistPreferenceDialog.kt index ab4a2de89..61e20ab91 100644 --- a/app/src/main/java/code/name/monkey/retromusic/preferences/BlacklistPreferenceDialog.kt +++ b/app/src/main/java/code/name/monkey/retromusic/preferences/BlacklistPreferenceDialog.kt @@ -23,6 +23,7 @@ import androidx.core.graphics.BlendModeCompat.SRC_IN import androidx.core.text.HtmlCompat import androidx.fragment.app.DialogFragment import code.name.monkey.appthemehelper.common.prefs.supportv7.ATEDialogPreference +import code.name.monkey.retromusic.App import code.name.monkey.retromusic.R import code.name.monkey.retromusic.dialogs.BlacklistFolderChooserDialog import code.name.monkey.retromusic.extensions.colorButtons @@ -97,12 +98,14 @@ class BlacklistPreferenceDialog : DialogFragment(), BlacklistFolderChooserDialog ) ) .setPositiveButton(R.string.remove_action) { _, _ -> - BlacklistStore.getInstance(requireContext()) + BlacklistStore.getInstance(App.getContext()) .removePath(File(paths[which])) refreshBlacklistData() } .setNegativeButton(android.R.string.cancel, null) - .show().colorButtons() + .create() + .colorButtons() + .show() } .create().colorButtons() } @@ -110,13 +113,13 @@ class BlacklistPreferenceDialog : DialogFragment(), BlacklistFolderChooserDialog private lateinit var paths: ArrayList private fun refreshBlacklistData() { - this.paths = BlacklistStore.getInstance(requireContext()).paths + this.paths = BlacklistStore.getInstance(App.getContext()).paths val dialog = dialog as MaterialAlertDialogBuilder? dialog?.setItems(paths.toTypedArray(), null) } override fun onFolderSelection(dialog: BlacklistFolderChooserDialog, folder: File) { - BlacklistStore.getInstance(requireContext()).addPath(folder) + BlacklistStore.getInstance(App.getContext()).addPath(folder) refreshBlacklistData() } } diff --git a/app/src/main/res/anim/retro_fragment_close_enter.xml b/app/src/main/res/anim/retro_fragment_close_enter.xml index 72ea35a8d..645b3fd36 100644 --- a/app/src/main/res/anim/retro_fragment_close_enter.xml +++ b/app/src/main/res/anim/retro_fragment_close_enter.xml @@ -1,5 +1,4 @@ - - \ No newline at end of file diff --git a/app/src/main/res/anim/retro_fragment_fade_exit.xml b/app/src/main/res/anim/retro_fragment_fade_exit.xml index 3b4d7ae8a..52b95e860 100644 --- a/app/src/main/res/anim/retro_fragment_fade_exit.xml +++ b/app/src/main/res/anim/retro_fragment_fade_exit.xml @@ -1,5 +1,4 @@ - - - + diff --git a/app/src/main/res/anim/retro_fragment_open_exit.xml b/app/src/main/res/anim/retro_fragment_open_exit.xml index 3727f66f7..897b5e50b 100644 --- a/app/src/main/res/anim/retro_fragment_open_exit.xml +++ b/app/src/main/res/anim/retro_fragment_open_exit.xml @@ -1,5 +1,4 @@ - - - + android:background="?attr/rectSelector" + android:minHeight="?attr/listPreferredItemHeight" + android:paddingStart="?attr/listPreferredItemPaddingStart" + android:paddingTop="16dp" + android:paddingEnd="?attr/listPreferredItemPaddingEnd" + android:paddingBottom="16dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + tools:ignore="PrivateResource"> - + app:layout_constraintTop_toTopOf="parent" + app:tint="?attr/colorControlNormal" + tools:srcCompat="@drawable/ic_telegram_white" /> - - - + - + - - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout/list_item_view.xml b/app/src/main/res/layout/list_item_view.xml index ebfd3737c..f7ab4c2e2 100644 --- a/app/src/main/res/layout/list_item_view.xml +++ b/app/src/main/res/layout/list_item_view.xml @@ -11,41 +11,37 @@ ~ without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ~ See the GNU General Public License for more details. --> - + android:background="?attr/rectSelector" + android:minHeight="?attr/listPreferredItemHeight" + android:paddingStart="?attr/listPreferredItemPaddingStart" + android:paddingTop="16dp" + android:paddingEnd="?attr/listPreferredItemPaddingEnd" + android:paddingBottom="16dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + tools:ignore="PrivateResource"> - + app:layout_constraintTop_toTopOf="@android:id/title" + app:tint="?attr/colorControlNormal" + tools:srcCompat="@drawable/ic_telegram_white" /> - - - - + - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/list_item_view_no_title.xml b/app/src/main/res/layout/list_item_view_no_title.xml index dd5fb57e7..ff94c615d 100644 --- a/app/src/main/res/layout/list_item_view_no_title.xml +++ b/app/src/main/res/layout/list_item_view_no_title.xml @@ -12,35 +12,30 @@ ~ See the GNU General Public License for more details. --> - + android:background="?attr/rectSelector" + android:minHeight="?attr/listPreferredItemHeight" + android:paddingStart="?attr/listPreferredItemPaddingStart" + android:paddingTop="16dp" + android:paddingEnd="?attr/listPreferredItemPaddingEnd" + android:paddingBottom="16dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + tools:ignore="PrivateResource"> - - - - - + - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/list_item_view_seekbar.xml b/app/src/main/res/layout/list_item_view_seekbar.xml index d8929a0b9..2dda3f488 100644 --- a/app/src/main/res/layout/list_item_view_seekbar.xml +++ b/app/src/main/res/layout/list_item_view_seekbar.xml @@ -12,45 +12,41 @@ ~ See the GNU General Public License for more details. --> - + android:background="?attr/rectSelector" + android:minHeight="?attr/listPreferredItemHeight" + android:paddingStart="?attr/listPreferredItemPaddingStart" + android:paddingTop="16dp" + android:paddingEnd="?attr/listPreferredItemPaddingEnd" + android:paddingBottom="16dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + tools:ignore="PrivateResource"> - + app:layout_constraintTop_toTopOf="parent" + app:tint="?attr/colorControlNormal" + tools:srcCompat="@drawable/ic_telegram_white" /> - - - - @@ -59,12 +55,12 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginTop="2dp" + android:textAppearance="@style/TextViewNormal" android:textColor="?android:attr/textColorSecondary" app:layout_constrainedWidth="true" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="@+id/guideline_front_margin" app:layout_constraintTop_toBottomOf="@android:id/title" - android:textAppearance="@style/TextViewNormal" tools:maxLines="2" tools:text="@tools:sample/lorem/random" /> @@ -77,8 +73,6 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/list_item_view_switch.xml b/app/src/main/res/layout/list_item_view_switch.xml index e71327918..bf08f6051 100644 --- a/app/src/main/res/layout/list_item_view_switch.xml +++ b/app/src/main/res/layout/list_item_view_switch.xml @@ -11,37 +11,31 @@ ~ without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ~ See the GNU General Public License for more details. --> - - + android:background="?attr/rectSelector" + android:minHeight="?attr/listPreferredItemHeight" + android:paddingStart="?attr/listPreferredItemPaddingStart" + android:paddingTop="16dp" + android:paddingEnd="?attr/listPreferredItemPaddingEnd" + android:paddingBottom="16dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + tools:ignore="PrivateResource"> - + app:layout_constraintTop_toTopOf="parent" + app:tint="?attr/colorControlNormal" + tools:srcCompat="@drawable/ic_telegram_white" /> - - - @@ -78,15 +72,14 @@ android:orientation="vertical" app:layout_constraintGuide_begin="@dimen/list_pref_guideline_begin" /> - - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout/list_item_view_switch_no_title.xml b/app/src/main/res/layout/list_item_view_switch_no_title.xml index a8fe1c507..2eeb6a18c 100644 --- a/app/src/main/res/layout/list_item_view_switch_no_title.xml +++ b/app/src/main/res/layout/list_item_view_switch_no_title.xml @@ -12,68 +12,62 @@ ~ See the GNU General Public License for more details. --> - + android:background="?attr/rectSelector" + android:minHeight="?attr/listPreferredItemHeight" + android:paddingStart="?attr/listPreferredItemPaddingStart" + android:paddingTop="16dp" + android:paddingEnd="?attr/listPreferredItemPaddingEnd" + android:paddingBottom="16dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + tools:ignore="PrivateResource"> - + app:layout_constraintTop_toTopOf="parent" + app:tint="?attr/colorControlNormal" + tools:srcCompat="@drawable/ic_telegram_white" /> - - - + - + - - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout/list_setting_item_view.xml b/app/src/main/res/layout/list_setting_item_view.xml index c6518651d..8dc5e2f98 100644 --- a/app/src/main/res/layout/list_setting_item_view.xml +++ b/app/src/main/res/layout/list_setting_item_view.xml @@ -50,7 +50,7 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@id/icon" app:layout_constraintTop_toTopOf="parent" - tools:text="@tools:sample/lorem/random" /> + tools:text="@tools:sample/full_names" /> + tools:text="@tools:sample/full_names" /> \ No newline at end of file diff --git a/app/src/main/res/layout/preference_category_title.xml b/app/src/main/res/layout/preference_category_title.xml index 07652d82f..cdbefb6fb 100644 --- a/app/src/main/res/layout/preference_category_title.xml +++ b/app/src/main/res/layout/preference_category_title.xml @@ -24,7 +24,6 @@ android:paddingStart="@dimen/pref_title_padding" android:paddingTop="16dp" android:paddingEnd="16dp" - android:paddingBottom="16dp" android:textAppearance="@style/TextViewOverline" tools:text="@tools:sample/full_names" /> \ No newline at end of file diff --git a/app/src/main/res/layout/preference_screen.xml b/app/src/main/res/layout/preference_screen.xml new file mode 100644 index 000000000..feadb6004 --- /dev/null +++ b/app/src/main/res/layout/preference_screen.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/navigation/retro_graph.xml b/app/src/main/res/navigation/retro_graph.xml index 9d26c2ec8..fa8ee86ba 100644 --- a/app/src/main/res/navigation/retro_graph.xml +++ b/app/src/main/res/navigation/retro_graph.xml @@ -28,16 +28,24 @@ android:id="@+id/action_playlist" android:name="code.name.monkey.retromusic.fragments.playlists.PlaylistsFragment" android:label="PlaylistsFragment" /> + + + + + \ No newline at end of file diff --git a/app/src/main/res/transition/change_bounds.xml b/app/src/main/res/transition/change_bounds.xml new file mode 100644 index 000000000..8595f5a97 --- /dev/null +++ b/app/src/main/res/transition/change_bounds.xml @@ -0,0 +1,3 @@ + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 1d4a23c85..5f4a2fa78 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -46,9 +46,4 @@ #ff33b5e5 - - - - - diff --git a/app/src/main/res/values/ids.xml b/app/src/main/res/values/ids.xml index aadf72000..86719ffbf 100644 --- a/app/src/main/res/values/ids.xml +++ b/app/src/main/res/values/ids.xml @@ -22,5 +22,4 @@ - \ No newline at end of file diff --git a/app/src/main/res/values/seekarc_attrs.xml b/app/src/main/res/values/seekarc_attrs.xml index 22e021aca..2526d7b8c 100644 --- a/app/src/main/res/values/seekarc_attrs.xml +++ b/app/src/main/res/values/seekarc_attrs.xml @@ -42,7 +42,7 @@ - + \ No newline at end of file