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" /> +