diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 49da26a4..b2c18527 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -30,7 +30,7 @@ + android:theme="@style/Theme.RetroMusic.FollowSystem"> diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/AlbumDetailsActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/AlbumDetailsActivity.kt index 87e15ffc..84c7178a 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/AlbumDetailsActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/AlbumDetailsActivity.kt @@ -16,7 +16,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ColorUtil -import code.name.monkey.appthemehelper.util.MaterialUtil import code.name.monkey.retromusic.App import code.name.monkey.retromusic.R import code.name.monkey.retromusic.activities.base.AbsSlidingMusicPanelActivity @@ -192,14 +191,16 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), AlbumDetailsView, C val themeColor = if (PreferenceUtil.getInstance(this).adaptiveColor) color else ThemeStore.accentColor(this) - songTitle.setTextColor(themeColor) - moreTitle.setTextColor(themeColor) + songTitle.setTextColor(ThemeStore.accentColor(this)) + moreTitle.setTextColor(ThemeStore.accentColor(this)) - val buttonColor = if (PreferenceUtil.getInstance(this).adaptiveColor) color - else ATHUtil.resolveColor(this, R.attr.cardBackgroundColor) + val buttonColor = if (PreferenceUtil.getInstance(this).adaptiveColor) + color + else + ATHUtil.resolveColor(this, R.attr.cardBackgroundColor) - MaterialUtil.setTint(button = shuffleAction, color = buttonColor) - MaterialUtil.setTint(button = playAction, color = buttonColor) + //MaterialUtil.setTint(button = shuffleAction, color = buttonColor) + //MaterialUtil.setTint(button = playAction, color = buttonColor) toolbar.setBackgroundColor(ATHUtil.resolveColor(this, R.attr.colorPrimary)) setSupportActionBar(toolbar) 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 5efe882d..235fef2e 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 @@ -2,15 +2,22 @@ package code.name.monkey.retromusic.activities.base import android.animation.ValueAnimator import android.annotation.SuppressLint -import android.graphics.* +import android.graphics.Color +import android.graphics.Rect import android.os.Bundle -import android.view.* +import android.view.MotionEvent +import android.view.View +import android.view.ViewGroup +import android.view.ViewTreeObserver import androidx.annotation.LayoutRes import androidx.fragment.app.Fragment -import code.name.monkey.appthemehelper.util.* +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.extensions.* -import code.name.monkey.retromusic.fragments.* +import code.name.monkey.retromusic.extensions.hide +import code.name.monkey.retromusic.extensions.show +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 @@ -28,330 +35,331 @@ 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.util.* +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.card.MaterialCardView import kotlinx.android.synthetic.main.sliding_music_panel_layout.* abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(), AbsPlayerFragment.Callbacks { - companion object { - val TAG: String = AbsSlidingMusicPanelActivity::class.java.simpleName - } + companion object { + val TAG: String = AbsSlidingMusicPanelActivity::class.java.simpleName + } - private lateinit var bottomSheetBehavior: BottomSheetBehavior - private var miniPlayerFragment: MiniPlayerFragment? = null - private var playerFragment: AbsPlayerFragment? = null - private var currentNowPlayingScreen: 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 - protected abstract fun createContentView(): View - private val panelState: Int - get() = bottomSheetBehavior.state + private lateinit var bottomSheetBehavior: BottomSheetBehavior + private var miniPlayerFragment: MiniPlayerFragment? = null + private var playerFragment: AbsPlayerFragment? = null + private var currentNowPlayingScreen: 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 + protected abstract fun createContentView(): View + private val panelState: Int + get() = bottomSheetBehavior.state - private val bottomSheetCallbackList = object : BottomSheetBehavior.BottomSheetCallback() { + private val bottomSheetCallbackList = object : BottomSheetBehavior.BottomSheetCallback() { - override fun onSlide(bottomSheet: View, slideOffset: Float) { - setMiniPlayerAlphaProgress(slideOffset) - dimBackground.show() - dimBackground.alpha = slideOffset - } + override fun onSlide(bottomSheet: View, slideOffset: Float) { + setMiniPlayerAlphaProgress(slideOffset) + dimBackground.show() + dimBackground.alpha = slideOffset + } - override fun onStateChanged(bottomSheet: View, newState: Int) { - when (newState) { - BottomSheetBehavior.STATE_EXPANDED -> { - onPanelExpanded() - } - BottomSheetBehavior.STATE_COLLAPSED -> { - onPanelCollapsed() - dimBackground.hide() - } - else -> { + override fun onStateChanged(bottomSheet: View, newState: Int) { + when (newState) { + BottomSheetBehavior.STATE_EXPANDED -> { + onPanelExpanded() + } + BottomSheetBehavior.STATE_COLLAPSED -> { + onPanelCollapsed() + dimBackground.hide() + } + else -> { - } - } - } - } + } + } + } + } - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(createContentView()) + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(createContentView()) - chooseFragmentForTheme() - setupSlidingUpPanel() + chooseFragmentForTheme() + setupSlidingUpPanel() - updateTabs() + updateTabs() - bottomSheetBehavior = BottomSheetBehavior.from(slidingPanel) + bottomSheetBehavior = BottomSheetBehavior.from(slidingPanel) - val themeColor = ATHUtil.resolveColor(this, R.attr.colorPrimary, Color.GRAY) - dimBackground.setBackgroundColor(ColorUtil.withAlpha(themeColor, 0.5f)) - } + val themeColor = ATHUtil.resolveColor(this, android.R.attr.windowBackground, Color.GRAY) + dimBackground.setBackgroundColor(ColorUtil.withAlpha(themeColor, 0.5f)) + } - override fun onResume() { - super.onResume() - if (currentNowPlayingScreen != PreferenceUtil.getInstance(this).nowPlayingScreen) { - postRecreate() - } - bottomSheetBehavior.addBottomSheetCallback(bottomSheetCallbackList) + override fun onResume() { + super.onResume() + if (currentNowPlayingScreen != PreferenceUtil.getInstance(this).nowPlayingScreen) { + postRecreate() + } + bottomSheetBehavior.addBottomSheetCallback(bottomSheetCallbackList) - if (bottomSheetBehavior.state == BottomSheetBehavior.STATE_EXPANDED) { - setMiniPlayerAlphaProgress(1f) - } - } + if (bottomSheetBehavior.state == BottomSheetBehavior.STATE_EXPANDED) { + setMiniPlayerAlphaProgress(1f) + } + } - override fun onDestroy() { - super.onDestroy() - bottomSheetBehavior.removeBottomSheetCallback(bottomSheetCallbackList) - if (navigationBarColorAnimator != null) navigationBarColorAnimator!!.cancel() // just in case - } + override fun onDestroy() { + super.onDestroy() + bottomSheetBehavior.removeBottomSheetCallback(bottomSheetCallbackList) + if (navigationBarColorAnimator != null) navigationBarColorAnimator!!.cancel() // just in case + } - protected fun wrapSlidingMusicPanel(@LayoutRes resId: Int): View { - @SuppressLint("InflateParams") val slidingMusicPanelLayout = layoutInflater.inflate( - R.layout.sliding_music_panel_layout, null - ) - val contentContainer = slidingMusicPanelLayout.findViewById(R.id.mainContentFrame) - layoutInflater.inflate(resId, contentContainer) - return slidingMusicPanelLayout - } + protected fun wrapSlidingMusicPanel(@LayoutRes resId: Int): View { + @SuppressLint("InflateParams") val slidingMusicPanelLayout = layoutInflater.inflate( + R.layout.sliding_music_panel_layout, null + ) + val contentContainer = slidingMusicPanelLayout.findViewById(R.id.mainContentFrame) + layoutInflater.inflate(resId, contentContainer) + return slidingMusicPanelLayout + } - private fun collapsePanel() { - bottomSheetBehavior.state = BottomSheetBehavior.STATE_COLLAPSED - } + private fun collapsePanel() { + bottomSheetBehavior.state = BottomSheetBehavior.STATE_COLLAPSED + } - fun expandPanel() { - bottomSheetBehavior.state = BottomSheetBehavior.STATE_EXPANDED - setMiniPlayerAlphaProgress(1f) - } + fun expandPanel() { + bottomSheetBehavior.state = BottomSheetBehavior.STATE_EXPANDED + setMiniPlayerAlphaProgress(1f) + } - private fun setMiniPlayerAlphaProgress(progress: Float) { - if (miniPlayerFragment?.view == null) return - val alpha = 1 - progress - miniPlayerFragment?.view?.alpha = alpha - // necessary to make the views below clickable - miniPlayerFragment?.view?.visibility = if (alpha == 0f) View.GONE else View.VISIBLE + private fun setMiniPlayerAlphaProgress(progress: Float) { + if (miniPlayerFragment?.view == null) return + val alpha = 1 - progress + miniPlayerFragment?.view?.alpha = alpha + // necessary to make the views below clickable + miniPlayerFragment?.view?.visibility = if (alpha == 0f) View.GONE else View.VISIBLE - bottomNavigationView.translationY = progress * 500 - bottomNavigationView.alpha = alpha - } + bottomNavigationView.translationY = progress * 500 + bottomNavigationView.alpha = alpha + } - open fun onPanelCollapsed() { - // restore values - super.setLightStatusbar(lightStatusBar) - super.setTaskDescriptionColor(taskColor) - super.setNavigationbarColor(navigationBarColor) - super.setLightNavigationBar(lightNavigationBar) + open fun onPanelCollapsed() { + // restore values + super.setLightStatusbar(lightStatusBar) + super.setTaskDescriptionColor(taskColor) + super.setNavigationbarColor(navigationBarColor) + super.setLightNavigationBar(lightNavigationBar) - playerFragment?.setMenuVisibility(false) - playerFragment?.userVisibleHint = false - playerFragment?.onHide() - } + playerFragment?.setMenuVisibility(false) + playerFragment?.userVisibleHint = false + playerFragment?.onHide() + } - open fun onPanelExpanded() { - val playerFragmentColor = playerFragment!!.paletteColor - super.setTaskDescriptionColor(playerFragmentColor) + open fun onPanelExpanded() { + val playerFragmentColor = playerFragment!!.paletteColor + super.setTaskDescriptionColor(playerFragmentColor) - playerFragment?.setMenuVisibility(true) - playerFragment?.userVisibleHint = true - playerFragment?.onShow() - onPaletteColorChanged() - } + playerFragment?.setMenuVisibility(true) + playerFragment?.userVisibleHint = true + playerFragment?.onShow() + onPaletteColorChanged() + } - private fun setupSlidingUpPanel() { - slidingPanel.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener { - override fun onGlobalLayout() { - slidingPanel.viewTreeObserver.removeOnGlobalLayoutListener(this) - if (currentNowPlayingScreen != 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() - } - } - }) - } + private fun setupSlidingUpPanel() { + slidingPanel.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener { + override fun onGlobalLayout() { + slidingPanel.viewTreeObserver.removeOnGlobalLayoutListener(this) + if (currentNowPlayingScreen != 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() + } + } + }) + } - fun toggleBottomNavigationView(toggle: Boolean) { - bottomNavigationView.visibility = if (toggle) View.GONE else View.VISIBLE - } + fun toggleBottomNavigationView(toggle: Boolean) { + bottomNavigationView.visibility = if (toggle) View.GONE else View.VISIBLE + } - fun getBottomNavigationView(): BottomNavigationBarTinted { - return bottomNavigationView - } + fun getBottomNavigationView(): BottomNavigationBarTinted { + return bottomNavigationView + } - private fun hideBottomBar(hide: Boolean) { - val heightOfBar = resources.getDimensionPixelSize(R.dimen.mini_player_height) - val heightOfBarWithTabs = resources.getDimensionPixelSize(R.dimen.mini_player_height_expanded) + private fun hideBottomBar(hide: Boolean) { + val heightOfBar = resources.getDimensionPixelSize(R.dimen.mini_player_height) + val heightOfBarWithTabs = resources.getDimensionPixelSize(R.dimen.mini_player_height_expanded) - if (hide) { - bottomSheetBehavior.isHideable = true - bottomSheetBehavior.peekHeight = 0 - collapsePanel() - bottomNavigationView.elevation = DensityUtil.dip2px(this, 10f).toFloat() - } else { - if (MusicPlayerRemote.playingQueue.isNotEmpty()) { - slidingPanel.cardElevation = DensityUtil.dip2px(this, 10f).toFloat() - bottomNavigationView.elevation = DensityUtil.dip2px(this, 10f).toFloat() - bottomSheetBehavior.isHideable = false - bottomSheetBehavior.peekHeight = if (bottomNavigationView.visibility == View.VISIBLE) heightOfBarWithTabs else heightOfBar - } - } - } + if (hide) { + bottomSheetBehavior.isHideable = true + bottomSheetBehavior.peekHeight = 0 + collapsePanel() + bottomNavigationView.elevation = DensityUtil.dip2px(this, 10f).toFloat() + } else { + if (MusicPlayerRemote.playingQueue.isNotEmpty()) { + slidingPanel.cardElevation = DensityUtil.dip2px(this, 10f).toFloat() + bottomNavigationView.elevation = DensityUtil.dip2px(this, 10f).toFloat() + bottomSheetBehavior.isHideable = false + bottomSheetBehavior.peekHeight = if (bottomNavigationView.visibility == View.VISIBLE) heightOfBarWithTabs else heightOfBar + } + } + } - fun setBottomBarVisibility(gone: Int) { - bottomNavigationView.visibility = gone - hideBottomBar(false) - } + fun setBottomBarVisibility(gone: Int) { + bottomNavigationView.visibility = gone + hideBottomBar(false) + } - private fun chooseFragmentForTheme() { - currentNowPlayingScreen = PreferenceUtil.getInstance(this).nowPlayingScreen + private fun chooseFragmentForTheme() { + currentNowPlayingScreen = PreferenceUtil.getInstance(this).nowPlayingScreen - val fragment: Fragment = when (currentNowPlayingScreen) { - BLUR -> BlurPlayerFragment() - ADAPTIVE -> AdaptiveFragment() - NORMAL -> PlayerFragment() - CARD -> CardFragment() - BLUR_CARD -> CardBlurFragment() - FIT -> FitFragment() - FLAT -> FlatPlayerFragment() - FULL -> FullPlayerFragment() - PLAIN -> PlainPlayerFragment() - SIMPLE -> SimplePlayerFragment() - MATERIAL -> MaterialFragment() - COLOR -> ColorFragment() - TINY -> TinyPlayerFragment() - PEAK -> PeakPlayerFragment() - else -> PlayerFragment() - } // must implement AbsPlayerFragment - supportFragmentManager.beginTransaction().replace(R.id.playerFragmentContainer, fragment) - .commit() - supportFragmentManager.executePendingTransactions() + val fragment: Fragment = when (currentNowPlayingScreen) { + BLUR -> BlurPlayerFragment() + ADAPTIVE -> AdaptiveFragment() + NORMAL -> PlayerFragment() + CARD -> CardFragment() + BLUR_CARD -> CardBlurFragment() + FIT -> FitFragment() + FLAT -> FlatPlayerFragment() + FULL -> FullPlayerFragment() + PLAIN -> PlainPlayerFragment() + SIMPLE -> SimplePlayerFragment() + MATERIAL -> MaterialFragment() + COLOR -> ColorFragment() + TINY -> TinyPlayerFragment() + PEAK -> PeakPlayerFragment() + 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() } - } + playerFragment = supportFragmentManager.findFragmentById(R.id.playerFragmentContainer) as AbsPlayerFragment + miniPlayerFragment = supportFragmentManager.findFragmentById(R.id.miniPlayerFragment) as MiniPlayerFragment + miniPlayerFragment?.view?.setOnClickListener { expandPanel() } + } - override fun onServiceConnected() { - super.onServiceConnected() - if (MusicPlayerRemote.playingQueue.isNotEmpty()) { - slidingPanel.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener { - override fun onGlobalLayout() { - slidingPanel.viewTreeObserver.removeOnGlobalLayoutListener(this) - hideBottomBar(false) - } - }) - } // don't call hideBottomBar(true) here as it causes a bug with the SlidingUpPanelLayout - } + override fun onServiceConnected() { + super.onServiceConnected() + if (MusicPlayerRemote.playingQueue.isNotEmpty()) { + slidingPanel.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener { + override fun onGlobalLayout() { + slidingPanel.viewTreeObserver.removeOnGlobalLayoutListener(this) + hideBottomBar(false) + } + }) + } // don't call hideBottomBar(true) here as it causes a bug with the SlidingUpPanelLayout + } - override fun onQueueChanged() { - super.onQueueChanged() - hideBottomBar(MusicPlayerRemote.playingQueue.isEmpty()) - } + override fun onQueueChanged() { + super.onQueueChanged() + hideBottomBar(MusicPlayerRemote.playingQueue.isEmpty()) + } - override fun onBackPressed() { - if (!handleBackPress()) super.onBackPressed() - } + override fun onBackPressed() { + if (!handleBackPress()) super.onBackPressed() + } - open fun handleBackPress(): Boolean { - if (bottomSheetBehavior.peekHeight != 0 && playerFragment!!.onBackPressed()) return true - if (panelState == BottomSheetBehavior.STATE_EXPANDED) { - collapsePanel() - return true - } - return false - } + open fun handleBackPress(): Boolean { + if (bottomSheetBehavior.peekHeight != 0 && playerFragment!!.onBackPressed()) return true + if (panelState == BottomSheetBehavior.STATE_EXPANDED) { + collapsePanel() + return true + } + return false + } - override fun onPaletteColorChanged() { - if (panelState == BottomSheetBehavior.STATE_EXPANDED) { - val paletteColor = playerFragment!!.paletteColor - super.setTaskDescriptionColor(paletteColor) + override fun onPaletteColorChanged() { + if (panelState == BottomSheetBehavior.STATE_EXPANDED) { + val paletteColor = playerFragment!!.paletteColor + super.setTaskDescriptionColor(paletteColor) - val isColorLight = ColorUtil.isColorLight(paletteColor) + val isColorLight = ColorUtil.isColorLight(paletteColor) - if (PreferenceUtil.getInstance(this).adaptiveColor && (currentNowPlayingScreen == NORMAL || currentNowPlayingScreen == FLAT)) { - super.setLightNavigationBar(true) - super.setLightStatusbar(isColorLight) - } else if (currentNowPlayingScreen == FULL || currentNowPlayingScreen == CARD || currentNowPlayingScreen == FIT || currentNowPlayingScreen == BLUR || currentNowPlayingScreen == BLUR_CARD) { - super.setLightStatusbar(false) - super.setLightNavigationBar(true) - } else if (currentNowPlayingScreen == COLOR || currentNowPlayingScreen == TINY) { - super.setNavigationbarColor(paletteColor) - super.setLightNavigationBar(isColorLight) - super.setLightStatusbar(isColorLight) - } else { - super.setLightStatusbar( - ColorUtil.isColorLight( - ATHUtil.resolveColor( - this, R.attr.colorPrimary - ) - ) - ) - super.setLightNavigationBar(true) - } - } - } + if (PreferenceUtil.getInstance(this).adaptiveColor && (currentNowPlayingScreen == NORMAL || currentNowPlayingScreen == FLAT)) { + super.setLightNavigationBar(true) + super.setLightStatusbar(isColorLight) + } else if (currentNowPlayingScreen == FULL || currentNowPlayingScreen == CARD || currentNowPlayingScreen == FIT || currentNowPlayingScreen == BLUR || currentNowPlayingScreen == BLUR_CARD) { + super.setLightStatusbar(false) + super.setLightNavigationBar(true) + } else if (currentNowPlayingScreen == COLOR || currentNowPlayingScreen == TINY) { + super.setNavigationbarColor(paletteColor) + super.setLightNavigationBar(isColorLight) + super.setLightStatusbar(isColorLight) + } else { + super.setLightStatusbar( + ColorUtil.isColorLight( + ATHUtil.resolveColor( + this, R.attr.colorPrimary + ) + ) + ) + super.setLightNavigationBar(true) + } + } + } - override fun setLightStatusbar(enabled: Boolean) { - lightStatusBar = enabled - if (panelState == BottomSheetBehavior.STATE_COLLAPSED) { - super.setLightStatusbar(enabled) - } - } + override fun setLightStatusbar(enabled: Boolean) { + lightStatusBar = enabled + if (panelState == BottomSheetBehavior.STATE_COLLAPSED) { + super.setLightStatusbar(enabled) + } + } - override fun setLightNavigationBar(enabled: Boolean) { - lightNavigationBar = enabled - if (panelState == BottomSheetBehavior.STATE_COLLAPSED) { - super.setLightNavigationBar(enabled) - } - } + override fun setLightNavigationBar(enabled: Boolean) { + lightNavigationBar = enabled + if (panelState == BottomSheetBehavior.STATE_COLLAPSED) { + super.setLightNavigationBar(enabled) + } + } - override fun setNavigationbarColor(color: Int) { - navigationBarColor = color - if (panelState == BottomSheetBehavior.STATE_COLLAPSED) { - if (navigationBarColorAnimator != null) navigationBarColorAnimator!!.cancel() - super.setNavigationbarColor(color) - } - } + override fun setNavigationbarColor(color: Int) { + navigationBarColor = color + if (panelState == BottomSheetBehavior.STATE_COLLAPSED) { + if (navigationBarColorAnimator != null) navigationBarColorAnimator!!.cancel() + super.setNavigationbarColor(color) + } + } - override fun setTaskDescriptionColor(color: Int) { - taskColor = color - if (panelState == BottomSheetBehavior.STATE_COLLAPSED) { - super.setTaskDescriptionColor(color) - } - } + override fun setTaskDescriptionColor(color: Int) { + taskColor = color + if (panelState == BottomSheetBehavior.STATE_COLLAPSED) { + super.setTaskDescriptionColor(color) + } + } - private fun updateTabs() { - bottomNavigationView.menu.clear() - val currentTabs = PreferenceUtil.getInstance(this).libraryCategoryInfos - for (tab in currentTabs) { - if (tab.visible) { - val menu = tab.category - bottomNavigationView.menu.add( - 0, menu.id, 0, menu.stringRes - ).setIcon(menu.icon) - } - } - } + private fun updateTabs() { + bottomNavigationView.menu.clear() + val currentTabs = PreferenceUtil.getInstance(this).libraryCategoryInfos + for (tab in currentTabs) { + if (tab.visible) { + val menu = tab.category + bottomNavigationView.menu.add( + 0, menu.id, 0, menu.stringRes + ).setIcon(menu.icon) + } + } + } - override fun dispatchTouchEvent(ev: MotionEvent?): Boolean { - if (ev?.action == MotionEvent.ACTION_DOWN) { - if (panelState == BottomSheetBehavior.STATE_EXPANDED) { - val outRect = Rect() - slidingPanel.getGlobalVisibleRect(outRect) - if (!outRect.contains(ev.rawX.toInt(), ev.rawY.toInt())) { - bottomSheetBehavior.state = BottomSheetBehavior.STATE_COLLAPSED - } - } - } - return super.dispatchTouchEvent(ev) - } + override fun dispatchTouchEvent(ev: MotionEvent?): Boolean { + if (ev?.action == MotionEvent.ACTION_DOWN) { + if (panelState == BottomSheetBehavior.STATE_EXPANDED) { + val outRect = Rect() + slidingPanel.getGlobalVisibleRect(outRect) + if (!outRect.contains(ev.rawX.toInt(), ev.rawY.toInt())) { + bottomSheetBehavior.state = BottomSheetBehavior.STATE_COLLAPSED + } + } + } + return super.dispatchTouchEvent(ev) + } } \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsThemeActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsThemeActivity.kt index 26f76387..bb4dd5cf 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsThemeActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsThemeActivity.kt @@ -2,199 +2,201 @@ package code.name.monkey.retromusic.activities.base import android.graphics.Color import android.graphics.drawable.Drawable -import android.os.* -import android.view.* +import android.os.Bundle +import android.os.Handler +import android.view.KeyEvent +import android.view.View +import android.view.WindowManager import androidx.annotation.ColorInt import androidx.core.content.ContextCompat -import code.name.monkey.appthemehelper.* +import code.name.monkey.appthemehelper.ATH +import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.common.ATHToolbarActivity -import code.name.monkey.appthemehelper.util.* +import code.name.monkey.appthemehelper.util.ATHUtil +import code.name.monkey.appthemehelper.util.ColorUtil +import code.name.monkey.appthemehelper.util.TintHelper +import code.name.monkey.appthemehelper.util.VersionUtils import code.name.monkey.retromusic.R -import code.name.monkey.retromusic.util.* +import code.name.monkey.retromusic.util.PreferenceUtil +import code.name.monkey.retromusic.util.RetroUtil +import code.name.monkey.retromusic.util.ThemeManager abstract class AbsThemeActivity : ATHToolbarActivity(), Runnable { - private val handler = Handler() + private val handler = Handler() - override fun onCreate(savedInstanceState: Bundle?) { - setTheme(ThemeManager.getThemeResValue(this)) - hideStatusBar() - super.onCreate(savedInstanceState) + override fun onCreate(savedInstanceState: Bundle?) { + setTheme(ThemeManager.getThemeResValue(this)) + hideStatusBar() + super.onCreate(savedInstanceState) + setImmersiveFullscreen() + registerSystemUiVisibility() + toggleScreenOn() + } - changeBackgroundShape() - setImmersiveFullscreen() - registerSystemUiVisibility() - toggleScreenOn() - } + private fun toggleScreenOn() { + if (PreferenceUtil.getInstance(this).isScreenOnEnabled) { + window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + } else { + window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + } + } - private fun toggleScreenOn() { - if (PreferenceUtil.getInstance(this).isScreenOnEnabled) { - window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) - } else { - window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) - } - } + override fun onWindowFocusChanged(hasFocus: Boolean) { + super.onWindowFocusChanged(hasFocus) + if (hasFocus) { + hideStatusBar() + handler.removeCallbacks(this) + handler.postDelayed(this, 300) + } else { + handler.removeCallbacks(this) + } + } - override fun onWindowFocusChanged(hasFocus: Boolean) { - super.onWindowFocusChanged(hasFocus) - if (hasFocus) { - hideStatusBar() - handler.removeCallbacks(this) - handler.postDelayed(this, 300) - } else { - handler.removeCallbacks(this) - } - } + fun hideStatusBar() { + hideStatusBar(PreferenceUtil.getInstance(this).fullScreenMode) + } - fun hideStatusBar() { - hideStatusBar(PreferenceUtil.getInstance(this).fullScreenMode) - } + private fun hideStatusBar(fullscreen: Boolean) { + val statusBar = window.decorView.rootView.findViewById(R.id.status_bar) + if (statusBar != null) { + statusBar.visibility = if (fullscreen) View.GONE else View.VISIBLE + } + } - private fun hideStatusBar(fullscreen: Boolean) { - val statusBar = window.decorView.rootView.findViewById(R.id.status_bar) - if (statusBar != null) { - statusBar.visibility = if (fullscreen) View.GONE else View.VISIBLE - } - } + private fun changeBackgroundShape() { + var background: Drawable? = if (PreferenceUtil.getInstance(this).isRoundCorners) + ContextCompat.getDrawable(this, R.drawable.round_window) + else ContextCompat.getDrawable(this, R.drawable.square_window) + background = TintHelper.createTintedDrawable(background, ATHUtil.resolveColor(this, android.R.attr.windowBackground)) + window.setBackgroundDrawable(background) + } - private fun changeBackgroundShape() { - var background: Drawable? = if (PreferenceUtil.getInstance(this).isRoundCorners) ContextCompat.getDrawable( - this, - R.drawable.round_window - ) - else ContextCompat.getDrawable(this, R.drawable.square_window) - background = TintHelper.createTintedDrawable( - background, - ATHUtil.resolveColor(this, R.attr.colorPrimary) - ) - window.setBackgroundDrawable(background) - } + fun setDrawUnderStatusBar() { + RetroUtil.setAllowDrawUnderStatusBar(window) + } - fun setDrawUnderStatusBar() { - RetroUtil.setAllowDrawUnderStatusBar(window) - } + fun setDrawUnderNavigationBar() { + RetroUtil.setAllowDrawUnderNavigationBar(window) + } - fun setDrawUnderNavigationBar() { - RetroUtil.setAllowDrawUnderNavigationBar(window) - } + /** + * This will set the color of the view with the id "status_bar" on KitKat and Lollipop. On + * Lollipop if no such view is found it will set the statusbar color using the native method. + * + * @param color the new statusbar color (will be shifted down on Lollipop and above) + */ + fun setStatusbarColor(color: Int) { + val statusBar = window.decorView.rootView.findViewById(R.id.status_bar) + if (statusBar != null) { + when { + VersionUtils.hasMarshmallow() -> window.statusBarColor = color + VersionUtils.hasLollipop() -> statusBar.setBackgroundColor( + ColorUtil.darkenColor( + color + ) + ) + else -> statusBar.setBackgroundColor(color) + } + } else { + when { + VersionUtils.hasMarshmallow() -> window.statusBarColor = color + else -> window.statusBarColor = ColorUtil.darkenColor(color) + } + } + setLightStatusbarAuto(color) + } - /** - * This will set the color of the view with the id "status_bar" on KitKat and Lollipop. On - * Lollipop if no such view is found it will set the statusbar color using the native method. - * - * @param color the new statusbar color (will be shifted down on Lollipop and above) - */ - fun setStatusbarColor(color: Int) { - val statusBar = window.decorView.rootView.findViewById(R.id.status_bar) - if (statusBar != null) { - when { - VersionUtils.hasMarshmallow() -> window.statusBarColor = color - VersionUtils.hasLollipop() -> statusBar.setBackgroundColor( - ColorUtil.darkenColor( - color - ) - ) - else -> statusBar.setBackgroundColor(color) - } - } else { - when { - VersionUtils.hasMarshmallow() -> window.statusBarColor = color - else -> window.statusBarColor = ColorUtil.darkenColor(color) - } - } - setLightStatusbarAuto(color) - } + fun setStatusbarColorAuto() { + // we don't want to use statusbar color because we are doing the color darkening on our own to support KitKat + //setStatusbarColor(ATHUtil.resolveColor(this, android.R.attr.windowBackground)) + } - fun setStatusbarColorAuto() { - // we don't want to use statusbar color because we are doing the color darkening on our own to support KitKat - setStatusbarColor(ATHUtil.resolveColor(this, R.attr.colorPrimary)) - } + open fun setTaskDescriptionColor(@ColorInt color: Int) { + ATH.setTaskDescriptionColor(this, color) + } - open fun setTaskDescriptionColor(@ColorInt color: Int) { - ATH.setTaskDescriptionColor(this, color) - } + fun setTaskDescriptionColorAuto() { + setTaskDescriptionColor(ATHUtil.resolveColor(this, R.attr.colorPrimary)) + } - fun setTaskDescriptionColorAuto() { - setTaskDescriptionColor(ATHUtil.resolveColor(this, R.attr.colorPrimary)) - } + open fun setNavigationbarColor(color: Int) { + if (ThemeStore.coloredNavigationBar(this)) { + ATH.setNavigationbarColor(this, color) + } else { + ATH.setNavigationbarColor(this, Color.BLACK) + } + } - open fun setNavigationbarColor(color: Int) { - if (ThemeStore.coloredNavigationBar(this)) { - ATH.setNavigationbarColor(this, color) - } else { - ATH.setNavigationbarColor(this, Color.BLACK) - } - } + open fun setNavigationBarColorPrimary() { + ATH.setNavigationbarColor(this, ATHUtil.resolveColor(this, R.attr.colorPrimary)) + } - open fun setNavigationBarColorPrimary() { - ATH.setNavigationbarColor(this, ATHUtil.resolveColor(this, R.attr.colorPrimary)) - } + fun setNavigationbarColorAuto() { + setNavigationbarColor(ATHUtil.resolveColor(this, R.attr.colorSecondary)) + } - fun setNavigationbarColorAuto() { - setNavigationbarColor(ATHUtil.resolveColor(this, R.attr.colorSecondary)) - } + open fun setLightStatusbar(enabled: Boolean) { + ATH.setLightStatusbar(this, enabled) + } - open fun setLightStatusbar(enabled: Boolean) { - ATH.setLightStatusbar(this, enabled) - } + fun setLightStatusbarAuto(bgColor: Int) { + setLightStatusbar(ColorUtil.isColorLight(bgColor)) + } - fun setLightStatusbarAuto(bgColor: Int) { - setLightStatusbar(ColorUtil.isColorLight(bgColor)) - } + open fun setLightNavigationBar(enabled: Boolean) { + if (!ATHUtil.isWindowBackgroundDark(this) and ThemeStore.coloredNavigationBar(this)) { + ATH.setLightNavigationbar(this, enabled) + } + } - open fun setLightNavigationBar(enabled: Boolean) { - if (!ATHUtil.isWindowBackgroundDark(this) and ThemeStore.coloredNavigationBar(this)) { - ATH.setLightNavigationbar(this, enabled) - } - } + private fun registerSystemUiVisibility() { + val decorView = window.decorView + decorView.setOnSystemUiVisibilityChangeListener { visibility -> + if (visibility and View.SYSTEM_UI_FLAG_FULLSCREEN == 0) { + setImmersiveFullscreen() + } + } + } - private fun registerSystemUiVisibility() { - val decorView = window.decorView - decorView.setOnSystemUiVisibilityChangeListener { visibility -> - if (visibility and View.SYSTEM_UI_FLAG_FULLSCREEN == 0) { - setImmersiveFullscreen() - } - } - } + private fun unregisterSystemUiVisibility() { + val decorView = window.decorView + decorView.setOnSystemUiVisibilityChangeListener(null) + } - private fun unregisterSystemUiVisibility() { - val decorView = window.decorView - decorView.setOnSystemUiVisibilityChangeListener(null) - } + private fun setImmersiveFullscreen() { + val flags = (View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY) - private fun setImmersiveFullscreen() { - val flags = (View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY) + if (PreferenceUtil.getInstance(this).fullScreenMode) { + window.decorView.systemUiVisibility = flags + } + } - if (PreferenceUtil.getInstance(this).fullScreenMode) { - window.decorView.systemUiVisibility = flags - } - } + private fun exitFullscreen() { + window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_VISIBLE + } - private fun exitFullscreen() { - window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_VISIBLE - } + override fun run() { + setImmersiveFullscreen() + } - override fun run() { - setImmersiveFullscreen() - } + override fun onStop() { + handler.removeCallbacks(this) + super.onStop() + } - override fun onStop() { - handler.removeCallbacks(this) - super.onStop() - } + public override fun onDestroy() { + super.onDestroy() + unregisterSystemUiVisibility() + exitFullscreen() + } - public override fun onDestroy() { - super.onDestroy() - unregisterSystemUiVisibility() - exitFullscreen() - } + override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean { + if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN || keyCode == KeyEvent.KEYCODE_VOLUME_UP) { + handler.removeCallbacks(this) + handler.postDelayed(this, 500) + } + return super.onKeyDown(keyCode, event) - override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean { - if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN || keyCode == KeyEvent.KEYCODE_VOLUME_UP) { - handler.removeCallbacks(this) - handler.postDelayed(this, 500) - } - return super.onKeyDown(keyCode, event) - - } + } } \ No newline at end of file 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 0db544e6..ad5e767b 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 @@ -1,210 +1,201 @@ package code.name.monkey.retromusic.adapter import android.util.DisplayMetrics -import android.view.* +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup import androidx.annotation.IntDef import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.widget.AppCompatTextView -import androidx.recyclerview.widget.* +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.RecyclerView import code.name.monkey.retromusic.R import code.name.monkey.retromusic.adapter.album.AlbumFullWidthAdapter import code.name.monkey.retromusic.adapter.artist.ArtistAdapter import code.name.monkey.retromusic.adapter.song.SongAdapter import code.name.monkey.retromusic.extensions.show import code.name.monkey.retromusic.loaders.PlaylistSongsLoader -import code.name.monkey.retromusic.model.* +import code.name.monkey.retromusic.model.Album +import code.name.monkey.retromusic.model.Artist +import code.name.monkey.retromusic.model.Home +import code.name.monkey.retromusic.model.Playlist import code.name.monkey.retromusic.util.PreferenceUtil -import com.google.android.material.textview.MaterialTextView class HomeAdapter( - private val activity: AppCompatActivity, private val displayMetrics: DisplayMetrics + private val activity: AppCompatActivity, private val displayMetrics: DisplayMetrics ) : RecyclerView.Adapter() { - private var list = ArrayList() + private var list = ArrayList() - override fun getItemViewType(position: Int): Int { - return list[position].homeSection - } + override fun getItemViewType(position: Int): Int { + return list[position].homeSection + } - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { - val layout = LayoutInflater.from(activity) - .inflate(R.layout.section_recycler_view, parent, false) - return when (viewType) { - RECENT_ARTISTS, TOP_ARTISTS -> ArtistViewHolder(layout) - PLAYLISTS -> PlaylistViewHolder(layout) - else -> { - AlbumViewHolder( - LayoutInflater.from(activity).inflate( - R.layout.metal_section_recycler_view, parent, false - ) - ) - } - } - } + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { + val layout = LayoutInflater.from(activity) + .inflate(R.layout.section_recycler_view, parent, false) + return when (viewType) { + RECENT_ARTISTS, TOP_ARTISTS -> ArtistViewHolder(layout) + PLAYLISTS -> PlaylistViewHolder(layout) + else -> { + AlbumViewHolder(LayoutInflater.from(activity).inflate(R.layout.metal_section_recycler_view, parent, false)) + } + } + } - override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { - println("ViewType ${getItemViewType(position)}") - when (getItemViewType(position)) { - RECENT_ALBUMS -> { - val viewHolder = holder as AlbumViewHolder - viewHolder.bindView( - list[position].arrayList.toAlbums(), - R.string.recent_albums, - R.string.recent_added_albums - ) - } - TOP_ALBUMS -> { - val viewHolder = holder as AlbumViewHolder - viewHolder.bindView( - list[position].arrayList.toAlbums(), - R.string.top_albums, - R.string.most_played_albums - ) - } - RECENT_ARTISTS -> { - val viewHolder = holder as ArtistViewHolder - viewHolder.bindView( - list[position].arrayList.toArtists(), - R.string.recent_artists, - R.string.recent_added_artists - ) - } - TOP_ARTISTS -> { - val viewHolder = holder as ArtistViewHolder + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { + println("ViewType ${getItemViewType(position)}") + when (getItemViewType(position)) { + RECENT_ALBUMS -> { + val viewHolder = holder as AlbumViewHolder + viewHolder.bindView( + list[position].arrayList.toAlbums(), + R.string.recent_albums, + R.string.recent_added_albums + ) + } + TOP_ALBUMS -> { + val viewHolder = holder as AlbumViewHolder + viewHolder.bindView( + list[position].arrayList.toAlbums(), + R.string.top_albums, + R.string.most_played_albums + ) + } + RECENT_ARTISTS -> { + val viewHolder = holder as ArtistViewHolder + viewHolder.bindView( + list[position].arrayList.toArtists(), + R.string.recent_artists, + R.string.recent_added_artists + ) + } + TOP_ARTISTS -> { + val viewHolder = holder as ArtistViewHolder - viewHolder.bindView( - list[position].arrayList.toArtists(), - R.string.top_artists, - R.string.most_played_artists - ) - } - PLAYLISTS -> { - val viewHolder = holder as PlaylistViewHolder - viewHolder.bindView( - list[position].arrayList.toPlaylist(), - R.string.favorites, - R.string.favorites_songs - ) - } - } - } + viewHolder.bindView( + list[position].arrayList.toArtists(), + R.string.top_artists, + R.string.most_played_artists + ) + } + PLAYLISTS -> { + val viewHolder = holder as PlaylistViewHolder + viewHolder.bindView( + list[position].arrayList.toPlaylist(), + R.string.favorites, + R.string.favorites_songs + ) + } + } + } - override fun getItemCount(): Int { - return list.size - } + override fun getItemCount(): Int { + return list.size + } - fun swapData(sections: ArrayList) { - list = sections - notifyDataSetChanged() - } + fun swapData(sections: ArrayList) { + list = sections + notifyDataSetChanged() + } - companion object { + companion object { - @IntDef(RECENT_ALBUMS, TOP_ALBUMS, RECENT_ARTISTS, TOP_ARTISTS, PLAYLISTS) - @Retention(AnnotationRetention.SOURCE) - annotation class HomeSection + @IntDef(RECENT_ALBUMS, TOP_ALBUMS, RECENT_ARTISTS, TOP_ARTISTS, PLAYLISTS) + @Retention(AnnotationRetention.SOURCE) + annotation class HomeSection - const val RECENT_ALBUMS = 3 - const val TOP_ALBUMS = 1 - const val RECENT_ARTISTS = 2 - const val TOP_ARTISTS = 0 - const val PLAYLISTS = 4 + const val RECENT_ALBUMS = 3 + const val TOP_ALBUMS = 1 + const val RECENT_ARTISTS = 2 + const val TOP_ARTISTS = 0 + const val PLAYLISTS = 4 - } + } - private inner class AlbumViewHolder(view: View) : AbsHomeViewItem(view) { - fun bindView(list: ArrayList, titleRes: Int, subtitleRes: Int) { - if (list.isNotEmpty()) { - recyclerView.apply { - show() - adapter = AlbumFullWidthAdapter(activity, list, displayMetrics) - } - titleContainer.show() - title.text = activity.getString(titleRes) - text.text = activity.getString(subtitleRes) - } - } + private inner class AlbumViewHolder(view: View) : AbsHomeViewItem(view) { + fun bindView(list: ArrayList, titleRes: Int, subtitleRes: Int) { + if (list.isNotEmpty()) { + recyclerView.apply { + show() + adapter = AlbumFullWidthAdapter(activity, list, displayMetrics) + } + title.text = activity.getString(titleRes) + } + } + } + inner class ArtistViewHolder(view: View) : AbsHomeViewItem(view) { + fun bindView(list: ArrayList, titleRes: Int, subtitleRes: Int) { + if (list.isNotEmpty()) { + recyclerView.apply { + show() + layoutManager = GridLayoutManager( + activity, 1, GridLayoutManager.HORIZONTAL, false + ) + val artistAdapter = ArtistAdapter( + activity, + list, + PreferenceUtil.getInstance(activity).getHomeGridStyle(activity), + false, + null + ) + adapter = artistAdapter + } + title.text = activity.getString(titleRes) + } + } + } - } + private inner class PlaylistViewHolder(view: View) : AbsHomeViewItem(view) { + fun bindView(arrayList: ArrayList, titleRes: Int, subtitleRes: Int) { + if (arrayList.isNotEmpty()) { + val songs = PlaylistSongsLoader.getPlaylistSongList(activity, arrayList[0]) + if (songs.isNotEmpty()) { + recyclerView.apply { + show() + val songAdapter = SongAdapter( + activity, songs, R.layout.item_album_card, false, null + ) + layoutManager = GridLayoutManager( + activity, 1, GridLayoutManager.HORIZONTAL, false + ) + adapter = songAdapter - inner class ArtistViewHolder(view: View) : AbsHomeViewItem(view) { - fun bindView(list: ArrayList, titleRes: Int, subtitleRes: Int) { - if (list.isNotEmpty()) { - recyclerView.apply { - show() - layoutManager = GridLayoutManager( - activity, 1, GridLayoutManager.HORIZONTAL, false - ) - val artistAdapter = ArtistAdapter( - activity, - list, - PreferenceUtil.getInstance(activity).getHomeGridStyle(activity), - false, - null - ) - adapter = artistAdapter - } - titleContainer.show() - title.text = activity.getString(titleRes) - text.text = activity.getString(subtitleRes) - } - } - } + } + title.text = activity.getString(titleRes) + } + } + } + } - private inner class PlaylistViewHolder(view: View) : AbsHomeViewItem(view) { - fun bindView(arrayList: ArrayList, titleRes: Int, subtitleRes: Int) { - if (arrayList.isNotEmpty()) { - val songs = PlaylistSongsLoader.getPlaylistSongList(activity, arrayList[0]) - if (songs.isNotEmpty()) { - recyclerView.apply { - show() - val songAdapter = SongAdapter( - activity, songs, R.layout.item_album_card, false, null - ) - layoutManager = GridLayoutManager( - activity, 1, GridLayoutManager.HORIZONTAL, false - ) - adapter = songAdapter - - } - titleContainer.show() - title.text = activity.getString(titleRes) - text.text = activity.getString(subtitleRes) - } - } - } - } - - open inner class AbsHomeViewItem(itemView: View) : RecyclerView.ViewHolder(itemView) { - val recyclerView: RecyclerView = itemView.findViewById(R.id.recyclerView) - val titleContainer: View = itemView.findViewById(R.id.titleContainer) - val title: AppCompatTextView = itemView.findViewById(R.id.title) - val text: MaterialTextView = itemView.findViewById(R.id.text) - } + 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) + } } private fun ArrayList.toAlbums(): ArrayList { - val arrayList = ArrayList() - for (x in this) { - arrayList.add(x as Album) - } - return arrayList; + val arrayList = ArrayList() + for (x in this) { + arrayList.add(x as Album) + } + return arrayList; } private fun ArrayList.toArtists(): ArrayList { - val arrayList = ArrayList() - for (x in this) { - arrayList.add(x as Artist) - } - return arrayList; + val arrayList = ArrayList() + for (x in this) { + arrayList.add(x as Artist) + } + return arrayList; } private fun ArrayList.toPlaylist(): ArrayList { - val arrayList = ArrayList() - for (x in this) { - arrayList.add(x as Playlist) - } - return arrayList; + val arrayList = ArrayList() + for (x in this) { + arrayList.add(x as Playlist) + } + return arrayList; } diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/song/PlaylistSongAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/song/PlaylistSongAdapter.kt index 0dde0b58..57f530c4 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/song/PlaylistSongAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/song/PlaylistSongAdapter.kt @@ -2,95 +2,94 @@ package code.name.monkey.retromusic.adapter.song import android.app.ActivityOptions import android.content.res.ColorStateList -import android.view.* +import android.view.MenuItem +import android.view.View import androidx.appcompat.app.AppCompatActivity -import code.name.monkey.appthemehelper.util.* +import code.name.monkey.appthemehelper.util.ColorUtil +import code.name.monkey.appthemehelper.util.MaterialValueHelper import code.name.monkey.retromusic.R import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.interfaces.CabHolder import code.name.monkey.retromusic.model.Song -import code.name.monkey.retromusic.util.* +import code.name.monkey.retromusic.util.NavigationUtil +import code.name.monkey.retromusic.util.RetroColorUtil import com.google.android.material.button.MaterialButton import java.util.* open class PlaylistSongAdapter( - activity: AppCompatActivity, - dataSet: ArrayList, - itemLayoutRes: Int, - usePalette: Boolean, - cabHolder: CabHolder? + activity: AppCompatActivity, + dataSet: ArrayList, + itemLayoutRes: Int, + usePalette: Boolean, + cabHolder: CabHolder? ) : AbsOffsetSongAdapter(activity, dataSet, itemLayoutRes, usePalette, cabHolder, false) { - init { - this.setMultiSelectMenuRes(R.menu.menu_cannot_delete_single_songs_playlist_songs_selection) - } + init { + this.setMultiSelectMenuRes(R.menu.menu_cannot_delete_single_songs_playlist_songs_selection) + } - override fun createViewHolder(view: View): SongAdapter.ViewHolder { - return ViewHolder(view) - } + override fun createViewHolder(view: View): SongAdapter.ViewHolder { + return ViewHolder(view) + } - override fun onBindViewHolder(holder: SongAdapter.ViewHolder, position: Int) { + override fun onBindViewHolder(holder: SongAdapter.ViewHolder, position: Int) { - if (holder.itemViewType == OFFSET_ITEM) { + if (holder.itemViewType == OFFSET_ITEM) { - val buttonColor = RetroColorUtil.toolbarColor(activity) - val textColor = MaterialValueHelper.getPrimaryTextColor( - activity, ColorUtil.isColorLight( - buttonColor - ) - ) - val viewHolder = holder as ViewHolder + val buttonColor = RetroColorUtil.toolbarColor(activity) + val textColor = MaterialValueHelper.getPrimaryTextColor(activity, ColorUtil.isColorLight(buttonColor)) + val viewHolder = holder as ViewHolder - viewHolder.playAction?.let { - it.backgroundTintList = ColorStateList.valueOf(buttonColor) - it.setTextColor(textColor) - it.iconTint = ColorStateList.valueOf(textColor) - it.setOnClickListener { - MusicPlayerRemote.openQueue(dataSet, 0, true) - } - } - viewHolder.shuffleAction?.let { - it.backgroundTintList = ColorStateList.valueOf(buttonColor) - it.setTextColor(textColor) - it.iconTint = ColorStateList.valueOf(textColor) - it.setOnClickListener { - MusicPlayerRemote.openAndShuffleQueue(dataSet, true) - } - } + viewHolder.playAction?.let { + it.backgroundTintList = ColorStateList.valueOf(buttonColor) + it.setTextColor(textColor) + it.iconTint = ColorStateList.valueOf(textColor) + it.setOnClickListener { + MusicPlayerRemote.openQueue(dataSet, 0, true) + } + } + viewHolder.shuffleAction?.let { + it.backgroundTintList = ColorStateList.valueOf(buttonColor) + it.setTextColor(textColor) + it.iconTint = ColorStateList.valueOf(textColor) + it.setOnClickListener { + MusicPlayerRemote.openAndShuffleQueue(dataSet, true) + } + } - } else { - super.onBindViewHolder(holder, position - 1) - } - } + } else { + super.onBindViewHolder(holder, position - 1) + } + } - open inner class ViewHolder(itemView: View) : AbsOffsetSongAdapter.ViewHolder(itemView) { + open inner class ViewHolder(itemView: View) : AbsOffsetSongAdapter.ViewHolder(itemView) { - val playAction: MaterialButton? = itemView.findViewById(R.id.playAction) - val shuffleAction: MaterialButton? = itemView.findViewById(R.id.shuffleAction) + val playAction: MaterialButton? = itemView.findViewById(R.id.playAction) + val shuffleAction: MaterialButton? = itemView.findViewById(R.id.shuffleAction) - override var songMenuRes: Int - get() = R.menu.menu_item_cannot_delete_single_songs_playlist_song - set(value) { - super.songMenuRes = value - } + override var songMenuRes: Int + get() = R.menu.menu_item_cannot_delete_single_songs_playlist_song + set(value) { + super.songMenuRes = value + } - override fun onSongMenuItemClick(item: MenuItem): Boolean { - if (item.itemId == R.id.action_go_to_album) { - val activityOptions = ActivityOptions.makeSceneTransitionAnimation( - activity, image, activity.getString( - R.string.transition_album_art - ) - ) - NavigationUtil.goToAlbumOptions( - activity, dataSet[adapterPosition - 1].albumId, activityOptions - ) - return true - } - return super.onSongMenuItemClick(item) - } - } + override fun onSongMenuItemClick(item: MenuItem): Boolean { + if (item.itemId == R.id.action_go_to_album) { + val activityOptions = ActivityOptions.makeSceneTransitionAnimation( + activity, image, activity.getString( + R.string.transition_album_art + ) + ) + NavigationUtil.goToAlbumOptions( + activity, dataSet[adapterPosition - 1].albumId, activityOptions + ) + return true + } + return super.onSongMenuItemClick(item) + } + } - companion object { - val TAG: String = PlaylistSongAdapter::class.java.simpleName - } + companion object { + val TAG: String = PlaylistSongAdapter::class.java.simpleName + } } \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/song/SongAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/song/SongAdapter.kt index f185b912..325cbb3b 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/song/SongAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/song/SongAdapter.kt @@ -2,17 +2,25 @@ package code.name.monkey.retromusic.adapter.song import android.app.ActivityOptions import android.graphics.drawable.Drawable -import android.view.* +import android.view.LayoutInflater +import android.view.MenuItem +import android.view.View +import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity -import code.name.monkey.appthemehelper.util.* import code.name.monkey.retromusic.R -import code.name.monkey.retromusic.adapter.base.* -import code.name.monkey.retromusic.glide.* -import code.name.monkey.retromusic.helper.* -import code.name.monkey.retromusic.helper.menu.* +import code.name.monkey.retromusic.adapter.base.AbsMultiSelectAdapter +import code.name.monkey.retromusic.adapter.base.MediaEntryViewHolder +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.helper.SortOrder +import code.name.monkey.retromusic.helper.menu.SongMenuHelper +import code.name.monkey.retromusic.helper.menu.SongsMenuHelper import code.name.monkey.retromusic.interfaces.CabHolder import code.name.monkey.retromusic.model.Song -import code.name.monkey.retromusic.util.* +import code.name.monkey.retromusic.util.MusicUtil +import code.name.monkey.retromusic.util.NavigationUtil +import code.name.monkey.retromusic.util.PreferenceUtil import com.afollestad.materialcab.MaterialCab import com.bumptech.glide.Glide import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView @@ -79,20 +87,8 @@ open class SongAdapter( private fun setColors(color: Int, holder: ViewHolder) { if (holder.paletteColorContainer != null) { holder.paletteColorContainer?.setBackgroundColor(color) - holder.title?.setTextColor( - MaterialValueHelper.getPrimaryTextColor( - activity, ColorUtil.isColorLight( - color - ) - ) - ) - holder.text?.setTextColor( - MaterialValueHelper.getSecondaryTextColor( - activity, ColorUtil.isColorLight( - color - ) - ) - ) + //holder.title?.setTextColor(MaterialValueHelper.getPrimaryTextColor(activity, ColorUtil.isColorLight(color))) + //holder.text?.setTextColor(MaterialValueHelper.getSecondaryTextColor(activity, ColorUtil.isColorLight(color))) } } diff --git a/app/src/main/java/code/name/monkey/retromusic/extensions/ActivityEx.kt b/app/src/main/java/code/name/monkey/retromusic/extensions/ActivityEx.kt index 48ab522a..5f81beef 100644 --- a/app/src/main/java/code/name/monkey/retromusic/extensions/ActivityEx.kt +++ b/app/src/main/java/code/name/monkey/retromusic/extensions/ActivityEx.kt @@ -26,7 +26,6 @@ fun AppCompatActivity.applyToolbar(toolbar: Toolbar) { setNavigationIcon(R.drawable.ic_keyboard_backspace_black_24dp) ToolbarContentTintHelper.colorBackButton(toolbar) setBackgroundColor(ATHUtil.resolveColor(this@applyToolbar, R.attr.colorPrimary)) - } setSupportActionBar(toolbar) } \ No newline at end of file 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 3d5501d2..b942717e 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 @@ -49,18 +49,16 @@ open class MiniPlayerFragment : AbsMusicServiceFragment(), MusicProgressViewUpda setUpMiniPlayer() if (RetroUtil.isTablet()) { - actionNext.visibility = View.VISIBLE - actionPrevious.visibility = View.VISIBLE + actionNext?.visibility = View.VISIBLE + actionPrevious?.visibility = View.VISIBLE actionPlayingQueue.visibility = View.VISIBLE } else { - actionNext.visibility = if (PreferenceUtil.getInstance(requireContext()).isExtraControls) View.VISIBLE else View.GONE actionPlayingQueue.visibility = if (PreferenceUtil.getInstance(requireContext()).isExtraControls) View.GONE else View.VISIBLE - actionPrevious.visibility = if (PreferenceUtil.getInstance(requireContext()).isExtraControls) View.VISIBLE else View.GONE } actionPlayingQueue.setOnClickListener(this) - actionNext.setOnClickListener(this) - actionPrevious.setOnClickListener(this) + actionNext?.setOnClickListener(this) + actionPrevious?.setOnClickListener(this) } 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/AbsLibraryPagerRecyclerViewFragment.kt index ffa49ee3..ed5d2c92 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/AbsLibraryPagerRecyclerViewFragment.kt @@ -1,129 +1,127 @@ package code.name.monkey.retromusic.fragments.base import android.os.Bundle -import android.view.* -import androidx.annotation.* +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.annotation.NonNull +import androidx.annotation.StringRes import androidx.recyclerview.widget.RecyclerView import code.name.monkey.retromusic.R import code.name.monkey.retromusic.helper.MusicPlayerRemote -import code.name.monkey.retromusic.util.* +import code.name.monkey.retromusic.util.DensityUtil +import code.name.monkey.retromusic.util.ViewUtil import com.google.android.material.appbar.AppBarLayout import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView import kotlinx.android.synthetic.main.fragment_main_activity_recycler_view.* abstract class AbsLibraryPagerRecyclerViewFragment, LM : RecyclerView.LayoutManager> : AbsLibraryPagerFragment(), AppBarLayout.OnOffsetChangedListener { - protected var adapter: A? = null - protected var layoutManager: LM? = null + protected var adapter: A? = null + protected var layoutManager: LM? = null - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - val view = inflater.inflate( - R.layout.fragment_main_activity_recycler_view, container, false - ); - return view - } + 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) - libraryFragment.addOnAppBarOffsetChangedListener(this) - initLayoutManager() - initAdapter() - setUpRecyclerView() - } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + libraryFragment.addOnAppBarOffsetChangedListener(this) + initLayoutManager() + initAdapter() + setUpRecyclerView() + } - private fun setUpRecyclerView() { - if (recyclerView is FastScrollRecyclerView) { - ViewUtil.setUpFastScrollRecyclerViewColor( - requireActivity(), recyclerView as FastScrollRecyclerView - ) - } - recyclerView.layoutManager = layoutManager - recyclerView.adapter = adapter - } + private fun setUpRecyclerView() { + if (recyclerView is FastScrollRecyclerView) { + ViewUtil.setUpFastScrollRecyclerViewColor(requireActivity(), recyclerView as FastScrollRecyclerView) + } + recyclerView.layoutManager = layoutManager + recyclerView.adapter = adapter + } - private fun initAdapter() { - adapter = createAdapter() - adapter?.registerAdapterDataObserver(object : RecyclerView.AdapterDataObserver() { - override fun onChanged() { - super.onChanged() - checkIsEmpty() - checkForPadding() - } - }) - } + private fun initAdapter() { + adapter = createAdapter() + adapter?.registerAdapterDataObserver(object : RecyclerView.AdapterDataObserver() { + override fun onChanged() { + super.onChanged() + checkIsEmpty() + checkForPadding() + } + }) + } - protected open val emptyMessage: Int - @StringRes get() = R.string.empty + protected open val emptyMessage: Int + @StringRes get() = R.string.empty - private fun getEmojiByUnicode(unicode: Int): String { - return String(Character.toChars(unicode)) - } + private fun getEmojiByUnicode(unicode: Int): String { + return String(Character.toChars(unicode)) + } - private fun checkIsEmpty() { - emptyEmoji.text = getEmojiByUnicode(0x1F631) - emptyText.setText(emptyMessage) - empty.visibility = if (adapter!!.itemCount == 0) View.VISIBLE else View.GONE - } + private fun checkIsEmpty() { + emptyEmoji.text = getEmojiByUnicode(0x1F631) + emptyText.setText(emptyMessage) + empty.visibility = if (adapter!!.itemCount == 0) View.VISIBLE else View.GONE + } - private fun checkForPadding() { - val itemCount: Int = adapter?.itemCount ?: 0 - val params = container.layoutParams as ViewGroup.MarginLayoutParams - if (itemCount > 0 && MusicPlayerRemote.playingQueue.isNotEmpty()) { - val height = DensityUtil.dip2px(requireContext(), 104f) - params.bottomMargin = height - } else { - val height = DensityUtil.dip2px(requireContext(), 52f) - params.bottomMargin = height - } - } + private fun checkForPadding() { + val itemCount: Int = adapter?.itemCount ?: 0 + val params = container.layoutParams as ViewGroup.MarginLayoutParams + if (itemCount > 0 && MusicPlayerRemote.playingQueue.isNotEmpty()) { + val height = DensityUtil.dip2px(requireContext(), 104f) + params.bottomMargin = height + } else { + val height = DensityUtil.dip2px(requireContext(), 52f) + params.bottomMargin = height + } + } - private fun initLayoutManager() { - layoutManager = createLayoutManager() - } + private fun initLayoutManager() { + layoutManager = createLayoutManager() + } - protected abstract fun createLayoutManager(): LM + protected abstract fun createLayoutManager(): LM - @NonNull - protected abstract fun createAdapter(): A + @NonNull + protected abstract fun createAdapter(): A - override fun onOffsetChanged(p0: AppBarLayout?, i: Int) { - container.setPadding( - container.paddingLeft, - container.paddingTop, - container.paddingRight, - libraryFragment.totalAppBarScrollingRange + i - ) - } + override fun onOffsetChanged(p0: AppBarLayout?, i: Int) { + container.setPadding( + container.paddingLeft, + container.paddingTop, + container.paddingRight, + libraryFragment.totalAppBarScrollingRange + i) + } - override fun onQueueChanged() { - super.onQueueChanged() - checkForPadding() - } + override fun onQueueChanged() { + super.onQueueChanged() + checkForPadding() + } - override fun onServiceConnected() { - super.onServiceConnected() - checkForPadding() - } + override fun onServiceConnected() { + super.onServiceConnected() + checkForPadding() + } - protected fun invalidateLayoutManager() { - initLayoutManager() - recyclerView.layoutManager = layoutManager - } + protected fun invalidateLayoutManager() { + initLayoutManager() + recyclerView.layoutManager = layoutManager + } - protected fun invalidateAdapter() { - initAdapter() - checkIsEmpty() - recyclerView.adapter = adapter - } + protected fun invalidateAdapter() { + initAdapter() + checkIsEmpty() + recyclerView.adapter = adapter + } - override fun onDestroyView() { - super.onDestroyView() - libraryFragment.removeOnAppBarOffsetChangedListener(this) - } + override fun onDestroyView() { + super.onDestroyView() + libraryFragment.removeOnAppBarOffsetChangedListener(this) + } - fun recyclerView(): RecyclerView { - return recyclerView - } + fun recyclerView(): RecyclerView { + return recyclerView + } } \ No newline at end of file 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 fa0d0538..54d672fb 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 @@ -26,11 +26,11 @@ abstract class AbsMainActivityFragment : AbsMusicServiceFragment() { mainActivity.setBottomBarVisibility(View.VISIBLE) } - private fun setStatusbarColor(view: View, color: Int) { + private fun setStatusBarColor(view: View, color: Int) { val statusBar = view.findViewById(R.id.status_bar) if (statusBar != null) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - statusBar.setBackgroundColor(color) + //statusBar.setBackgroundColor(color) mainActivity.setLightStatusbarAuto(color) } else { statusBar.setBackgroundColor(color) @@ -38,13 +38,13 @@ abstract class AbsMainActivityFragment : AbsMusicServiceFragment() { } } - fun setStatusbarColorAuto(view: View) { - val colorPrimary = ATHUtil.resolveColor(requireContext(), R.attr.colorPrimary) + fun setStatusBarColorAuto(view: View) { + val colorPrimary = ATHUtil.resolveColor(requireContext(), android.R.attr.windowBackground) // we don't want to use statusbar color because we are doing the color darkening on our own to support KitKat if (VersionUtils.hasMarshmallow()) { - setStatusbarColor(view, colorPrimary) + setStatusBarColor(view, colorPrimary) } else { - setStatusbarColor(view, ColorUtil.darkenColor(colorPrimary)) + setStatusBarColor(view, ColorUtil.darkenColor(colorPrimary)) } } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/LibraryFragment.java b/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/LibraryFragment.java index 911326fd..e394f58b 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/LibraryFragment.java +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/LibraryFragment.java @@ -108,7 +108,7 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - setStatusbarColorAuto(view); + setStatusBarColorAuto(view); setupToolbar(); inflateFragment(); } @@ -149,7 +149,7 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde getMainActivity().setSupportActionBar(toolbar); toolbar.setNavigationOnClickListener(v -> showMainMenu(OptionsSheetDialogFragment.LIBRARY)); ToolbarContentTintHelper.colorBackButton(toolbar); - toolbar.setTitleTextColor(ATHUtil.INSTANCE.resolveColor(requireContext(), R.attr.colorOnSecondary)); + //toolbar.setTitleTextColor(ATHUtil.INSTANCE.resolveColor(requireContext(), R.attr.colorOnSecondary)); } private Fragment getCurrentFragment() { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/SongsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/SongsFragment.kt index 4ea7ff35..6551f194 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/SongsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/SongsFragment.kt @@ -131,4 +131,4 @@ class SongsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment 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(PersonaizeSettingsFragment(), R.string.personalize) + 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) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/PersonaizeSettingsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/PersonalizeSettingsFragment.kt similarity index 77% rename from app/src/main/java/code/name/monkey/retromusic/fragments/settings/PersonaizeSettingsFragment.kt rename to app/src/main/java/code/name/monkey/retromusic/fragments/settings/PersonalizeSettingsFragment.kt index d76e5a09..499c0a69 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/settings/PersonaizeSettingsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/settings/PersonalizeSettingsFragment.kt @@ -19,23 +19,14 @@ import android.os.Bundle import android.view.View import androidx.preference.Preference import androidx.preference.TwoStatePreference -import code.name.monkey.retromusic.App import code.name.monkey.retromusic.R import code.name.monkey.retromusic.util.PreferenceUtil -class PersonaizeSettingsFragment : AbsSettingsFragment(), SharedPreferences.OnSharedPreferenceChangeListener { +class PersonalizeSettingsFragment : AbsSettingsFragment(), SharedPreferences.OnSharedPreferenceChangeListener { override fun invalidateSettings() { - val cornerWindow: TwoStatePreference = findPreference("corner_window")!! - cornerWindow.setOnPreferenceChangeListener { _, newValue -> - if (newValue as Boolean && !App.isProVersion()) { - showProToastAndNavigate(activity!!.getString(R.string.pref_title_round_corners)) - return@setOnPreferenceChangeListener false - } - requireActivity().recreate() - return@setOnPreferenceChangeListener true - } + val toggleFullScreen: TwoStatePreference = findPreference("toggle_full_screen")!! toggleFullScreen.setOnPreferenceChangeListener { _, _ -> requireActivity().recreate() @@ -45,7 +36,6 @@ class PersonaizeSettingsFragment : AbsSettingsFragment(), SharedPreferences.OnSh override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { addPreferencesFromResource(R.xml.pref_ui) - addPreferencesFromResource(R.xml.pref_window) addPreferencesFromResource(R.xml.pref_lockscreen) } diff --git a/app/src/main/java/code/name/monkey/retromusic/util/ThemeManager.kt b/app/src/main/java/code/name/monkey/retromusic/util/ThemeManager.kt index 4c0aa8e8..3b3921d9 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/ThemeManager.kt +++ b/app/src/main/java/code/name/monkey/retromusic/util/ThemeManager.kt @@ -15,7 +15,7 @@ object ThemeManager { @StyleRes fun getThemeResValue(context: Context): Int = when (PreferenceUtil.getInstance(context).generalThemeValue) { "light" -> R.style.Theme_RetroMusic_Light - "auto" -> if (isSystemDarkModeEnabled(context)) R.style.Theme_RetroMusic else R.style.Theme_RetroMusic_Light + "auto" -> R.style.Theme_RetroMusic_FollowSystem "black" -> R.style.Theme_RetroMusic_Black else -> R.style.Theme_RetroMusic /** diff --git a/app/src/main/java/code/name/monkey/retromusic/util/ViewUtil.kt b/app/src/main/java/code/name/monkey/retromusic/util/ViewUtil.kt index fd72748a..3ad324b6 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/ViewUtil.kt +++ b/app/src/main/java/code/name/monkey/retromusic/util/ViewUtil.kt @@ -14,119 +14,107 @@ package code.name.monkey.retromusic.util -import android.animation.* +import android.animation.Animator +import android.animation.ArgbEvaluator +import android.animation.ObjectAnimator import android.content.Context -import android.content.res.* -import android.graphics.* +import android.content.res.ColorStateList +import android.content.res.Resources +import android.graphics.Color +import android.graphics.PorterDuff import android.graphics.drawable.LayerDrawable import android.os.Build import android.view.View import android.view.animation.PathInterpolator -import android.widget.* +import android.widget.ProgressBar +import android.widget.SeekBar import androidx.annotation.ColorInt import androidx.core.view.ViewCompat import code.name.monkey.appthemehelper.ThemeStore -import code.name.monkey.appthemehelper.util.* +import code.name.monkey.appthemehelper.util.ATHUtil +import code.name.monkey.appthemehelper.util.ColorUtil +import code.name.monkey.appthemehelper.util.MaterialValueHelper import code.name.monkey.retromusic.R import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView object ViewUtil { - const val RETRO_MUSIC_ANIM_TIME = 1000 + const val RETRO_MUSIC_ANIM_TIME = 1000 - fun setProgressDrawable(progressSlider: SeekBar, newColor: Int, thumbTint: Boolean = false) { + fun setProgressDrawable(progressSlider: SeekBar, newColor: Int, thumbTint: Boolean = false) { - if (thumbTint) { - progressSlider.thumbTintList = ColorStateList.valueOf(newColor) - } - if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.LOLLIPOP_MR1) { - val layerDrawable = progressSlider.progressDrawable as LayerDrawable - val progressDrawable = layerDrawable.findDrawableByLayerId(android.R.id.progress) - progressDrawable.setColorFilter(newColor, PorterDuff.Mode.SRC_IN) - } else { - progressSlider.progressTintList = ColorStateList.valueOf(newColor) - } - } + if (thumbTint) { + progressSlider.thumbTintList = ColorStateList.valueOf(newColor) + } + if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.LOLLIPOP_MR1) { + val layerDrawable = progressSlider.progressDrawable as LayerDrawable + val progressDrawable = layerDrawable.findDrawableByLayerId(android.R.id.progress) + progressDrawable.setColorFilter(newColor, PorterDuff.Mode.SRC_IN) + } else { + progressSlider.progressTintList = ColorStateList.valueOf(newColor) + } + } - fun setProgressDrawable(progressSlider: ProgressBar, newColor: Int) { + fun setProgressDrawable(progressSlider: ProgressBar, newColor: Int) { - val ld = progressSlider.progressDrawable as LayerDrawable + val ld = progressSlider.progressDrawable as LayerDrawable - val progress = ld.findDrawableByLayerId(android.R.id.progress) - progress.setColorFilter(newColor, PorterDuff.Mode.SRC_IN) + val progress = ld.findDrawableByLayerId(android.R.id.progress) + progress.setColorFilter(newColor, PorterDuff.Mode.SRC_IN) - val background = ld.findDrawableByLayerId(android.R.id.background) - val primaryColor = ATHUtil.resolveColor(progressSlider.context, R.attr.colorPrimary) - background.setColorFilter( - MaterialValueHelper.getPrimaryDisabledTextColor( - progressSlider.context, ColorUtil.isColorLight( - primaryColor - ) - ), PorterDuff.Mode.SRC_IN - ) + val background = ld.findDrawableByLayerId(android.R.id.background) + val primaryColor = ATHUtil.resolveColor(progressSlider.context, android.R.attr.windowBackground) + background.setColorFilter(MaterialValueHelper.getPrimaryDisabledTextColor(progressSlider.context, ColorUtil.isColorLight(primaryColor)), PorterDuff.Mode.SRC_IN) - val secondaryProgress = ld.findDrawableByLayerId(android.R.id.secondaryProgress) - secondaryProgress?.setColorFilter( - ColorUtil.withAlpha(newColor, 0.65f), PorterDuff.Mode.SRC_IN - ) - } + val secondaryProgress = ld.findDrawableByLayerId(android.R.id.secondaryProgress) + secondaryProgress?.setColorFilter( + ColorUtil.withAlpha(newColor, 0.65f), PorterDuff.Mode.SRC_IN + ) + } - private fun createColorAnimator( - target: Any, propertyName: String, @ColorInt startColor: Int, @ColorInt endColor: Int - ): Animator { - val animator: ObjectAnimator - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - animator = ObjectAnimator.ofArgb(target, propertyName, startColor, endColor) - } else { - animator = ObjectAnimator.ofInt(target, propertyName, startColor, endColor) - animator.setEvaluator(ArgbEvaluator()) - } + private fun createColorAnimator( + target: Any, propertyName: String, @ColorInt startColor: Int, @ColorInt endColor: Int + ): Animator { + val animator: ObjectAnimator + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + animator = ObjectAnimator.ofArgb(target, propertyName, startColor, endColor) + } else { + animator = ObjectAnimator.ofInt(target, propertyName, startColor, endColor) + animator.setEvaluator(ArgbEvaluator()) + } - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - animator.interpolator = PathInterpolator(0.4f, 0f, 1f, 1f) - } - animator.duration = RETRO_MUSIC_ANIM_TIME.toLong() - return animator - } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + animator.interpolator = PathInterpolator(0.4f, 0f, 1f, 1f) + } + animator.duration = RETRO_MUSIC_ANIM_TIME.toLong() + return animator + } - fun hitTest(v: View, x: Int, y: Int): Boolean { - val tx = (ViewCompat.getTranslationX(v) + 0.5f).toInt() - val ty = (ViewCompat.getTranslationY(v) + 0.5f).toInt() - val left = v.left + tx - val right = v.right + tx - val top = v.top + ty - val bottom = v.bottom + ty + fun hitTest(v: View, x: Int, y: Int): Boolean { + val tx = (ViewCompat.getTranslationX(v) + 0.5f).toInt() + val ty = (ViewCompat.getTranslationY(v) + 0.5f).toInt() + val left = v.left + tx + val right = v.right + tx + val top = v.top + ty + val bottom = v.bottom + ty - return x in left..right && y >= top && y <= bottom - } + return x in left..right && y >= top && y <= bottom + } - fun setUpFastScrollRecyclerViewColor( - context: Context, - recyclerView: FastScrollRecyclerView, - accentColor: Int = ThemeStore.accentColor(context) - ) { - recyclerView.setPopupBgColor(accentColor) - recyclerView.setPopupTextColor( - MaterialValueHelper.getPrimaryTextColor( - context, ColorUtil.isColorLight( - accentColor - ) - ) - ) - recyclerView.setThumbColor(accentColor) - recyclerView.setTrackColor(Color.TRANSPARENT) - recyclerView.setTrackColor( - ColorUtil.withAlpha( - ATHUtil.resolveColor( - context, R.attr.colorControlNormal - ), 0.12f - ) - ) + fun setUpFastScrollRecyclerViewColor( + context: Context, + recyclerView: FastScrollRecyclerView, + accentColor: Int = ThemeStore.accentColor(context) + ) { + recyclerView.setPopupBgColor(accentColor) + recyclerView.setPopupTextColor(MaterialValueHelper.getPrimaryTextColor(context, ColorUtil.isColorLight(accentColor))) + recyclerView.setThumbColor(accentColor) + recyclerView.setTrackColor(Color.TRANSPARENT) + recyclerView.setTrackColor(ColorUtil.withAlpha(ATHUtil.resolveColor(context, R.attr.colorControlNormal), 0.12f)) + } - } - - fun convertDpToPixel(dp: Float, resources: Resources): Float { - val metrics = resources.displayMetrics - return dp * metrics.density - } + fun convertDpToPixel(dp: Float, resources: Resources): Float { + val metrics = resources.displayMetrics + return dp * metrics.density + } } \ No newline at end of file diff --git a/app/src/main/res/drawable-v21/rect_selector.xml b/app/src/main/res/drawable-v21/rect_selector.xml index 08954384..4263a760 100644 --- a/app/src/main/res/drawable-v21/rect_selector.xml +++ b/app/src/main/res/drawable-v21/rect_selector.xml @@ -1,5 +1,5 @@ + android:color="?attr/colorOnSecondary"> + android:color="?attr/colorOnSecondary"> + android:color="?attr/colorOnSecondary"> + android:color="?attr/colorOnSecondary"> - + \ No newline at end of file diff --git a/app/src/main/res/drawable/circle_progress.xml b/app/src/main/res/drawable/circle_progress.xml index b7629944..6bb95595 100644 --- a/app/src/main/res/drawable/circle_progress.xml +++ b/app/src/main/res/drawable/circle_progress.xml @@ -19,7 +19,7 @@ android:thickness="3dp" android:type="sweep" android:useLevel="false"> - + @@ -28,7 +28,7 @@ android:thickness="3dp" android:type="sweep" android:useLevel="true"> - + diff --git a/app/src/main/res/layout-land/pager_item.xml b/app/src/main/res/layout-land/pager_item.xml index d2228454..e11370d3 100644 --- a/app/src/main/res/layout-land/pager_item.xml +++ b/app/src/main/res/layout-land/pager_item.xml @@ -11,7 +11,7 @@ android:id="@+id/imageContainer" android:layout_width="match_parent" android:layout_height="156dp" - app:cardCornerRadius="12dp" + app:cardCornerRadius="16dp" app:cardUseCompatPadding="true"> \ No newline at end of file diff --git a/app/src/main/res/layout-xlarge/pager_item.xml b/app/src/main/res/layout-xlarge/pager_item.xml index af262680..4b387616 100644 --- a/app/src/main/res/layout-xlarge/pager_item.xml +++ b/app/src/main/res/layout-xlarge/pager_item.xml @@ -11,7 +11,7 @@ android:id="@+id/imageContainer" android:layout_width="match_parent" android:layout_height="196dp" - app:cardCornerRadius="12dp" + app:cardCornerRadius="16dp" app:cardUseCompatPadding="true"> @@ -32,6 +33,7 @@ diff --git a/app/src/main/res/layout/activity_song_tag_editor.xml b/app/src/main/res/layout/activity_song_tag_editor.xml index dec046ef..0d4fa5e5 100755 --- a/app/src/main/res/layout/activity_song_tag_editor.xml +++ b/app/src/main/res/layout/activity_song_tag_editor.xml @@ -240,8 +240,7 @@ android:text="@string/save" app:cornerRadius="25dp" app:icon="@drawable/ic_save_white_24dp" - app:iconGravity="textStart" - tools:backgroundTint="@color/md_red_400" /> + app:iconGravity="textStart" /> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_adaptive_player_playback_controls.xml b/app/src/main/res/layout/fragment_adaptive_player_playback_controls.xml index 79aac91f..3521fa9b 100644 --- a/app/src/main/res/layout/fragment_adaptive_player_playback_controls.xml +++ b/app/src/main/res/layout/fragment_adaptive_player_playback_controls.xml @@ -145,6 +145,12 @@ - + diff --git a/app/src/main/res/layout/fragment_card_blur_player_playback_controls.xml b/app/src/main/res/layout/fragment_card_blur_player_playback_controls.xml index 9a2906e2..8fce1b37 100644 --- a/app/src/main/res/layout/fragment_card_blur_player_playback_controls.xml +++ b/app/src/main/res/layout/fragment_card_blur_player_playback_controls.xml @@ -15,11 +15,48 @@ android:orientation="vertical" tools:ignore="MissingPrefix"> - + - + + + + + + + + - + diff --git a/app/src/main/res/layout/fragment_library.xml b/app/src/main/res/layout/fragment_library.xml index e97e1af2..8ef7f9e4 100644 --- a/app/src/main/res/layout/fragment_library.xml +++ b/app/src/main/res/layout/fragment_library.xml @@ -37,7 +37,7 @@ android:id="@+id/appBarLayout" android:layout_width="match_parent" android:layout_height="wrap_content" - android:background="?colorPrimary" + android:background="@android:color/transparent" app:liftOnScroll="true"> 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 42e18c2a..5999cd3b 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 @@ -40,7 +40,7 @@ android:layout_gravity="center" android:text="@string/empty" android:textAppearance="@style/TextViewHeadline5" - android:textColor="?colorOnSecondary" + android:textColor="?attr/colorOnSecondary" tools:visibility="visible" /> diff --git a/app/src/main/res/layout/fragment_mini_player.xml b/app/src/main/res/layout/fragment_mini_player.xml index 41dcf84d..c04062d9 100644 --- a/app/src/main/res/layout/fragment_mini_player.xml +++ b/app/src/main/res/layout/fragment_mini_player.xml @@ -5,7 +5,7 @@ android:id="@+id/miniPlayerContent" android:layout_width="match_parent" android:layout_height="48dp" - android:background="?colorSecondary" + android:background="?attr/colorSurface" android:clickable="true" android:focusable="true" tools:ignore="UnusedAttribute"> @@ -26,9 +26,8 @@ android:layout_margin="16dp" android:scaleType="centerCrop" app:srcCompat="@drawable/ic_keyboard_arrow_up_24dp" - app:tint="?colorOnSecondary" - tools:ignore="ContentDescription" - tools:tint="?colorOnSurface" /> + app:tint="?attr/colorControlNormal" + tools:ignore="ContentDescription" /> - - + android:layout_height="wrap_content" + android:layout_gravity="center_vertical"> - - - + app:tint="?attr/colorControlNormal" /> - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_peak_player.xml b/app/src/main/res/layout/fragment_peak_player.xml index e2808689..c32a0521 100644 --- a/app/src/main/res/layout/fragment_peak_player.xml +++ b/app/src/main/res/layout/fragment_peak_player.xml @@ -91,7 +91,7 @@ android:ellipsize="end" android:maxLines="2" android:textAppearance="@style/TextViewBody2" - android:textColor="?colorOnSecondary" + android:textColor="?attr/colorOnSecondary" app:layout_constraintBottom_toBottomOf="@+id/imageContainer" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/imageContainer" diff --git a/app/src/main/res/layout/fragment_volume.xml b/app/src/main/res/layout/fragment_volume.xml index 4e0cd2c0..11de39e6 100755 --- a/app/src/main/res/layout/fragment_volume.xml +++ b/app/src/main/res/layout/fragment_volume.xml @@ -19,7 +19,7 @@ android:background="?roundSelector" android:padding="8dp" app:srcCompat="@drawable/ic_volume_down_white_24dp" - app:tint="?colorOnBackground" /> + app:tint="?attr/colorControlNormal" /> + tools:progressTint="?attr/colorControlNormal" /> + app:tint="?attr/colorControlNormal" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_album_card.xml b/app/src/main/res/layout/item_album_card.xml index 03e04e5e..be41699f 100644 --- a/app/src/main/res/layout/item_album_card.xml +++ b/app/src/main/res/layout/item_album_card.xml @@ -33,7 +33,7 @@ android:paddingEnd="8dp" android:paddingBottom="4dp" android:textAppearance="@style/TextViewNormal" - android:textColor="?colorOnPrimary" + android:textColor="?attr/colorOnPrimary" tools:ignore="MissingPrefix" tools:text="My top tracks" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_artist.xml b/app/src/main/res/layout/item_artist.xml index f82bdb05..1a7f7c64 100644 --- a/app/src/main/res/layout/item_artist.xml +++ b/app/src/main/res/layout/item_artist.xml @@ -28,6 +28,6 @@ android:gravity="center" android:maxLines="1" android:paddingTop="12dp" - android:textColor="?colorOnPrimary" + android:textColor="?attr/colorOnPrimary" tools:text="Name" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_artist_square.xml b/app/src/main/res/layout/item_artist_square.xml index 9afb5525..48028680 100644 --- a/app/src/main/res/layout/item_artist_square.xml +++ b/app/src/main/res/layout/item_artist_square.xml @@ -33,7 +33,6 @@ android:maxLines="1" android:padding="8dp" android:textAppearance="@style/TextViewNormal" - android:textColor="?colorOnPrimary" tools:text="@string/home" /> diff --git a/app/src/main/res/layout/item_grid.xml b/app/src/main/res/layout/item_grid.xml index 470cc9ce..0e0737ee 100644 --- a/app/src/main/res/layout/item_grid.xml +++ b/app/src/main/res/layout/item_grid.xml @@ -52,6 +52,7 @@ android:layout_height="wrap_content" android:singleLine="true" android:textAppearance="@style/TextViewSubtitle1" + android:textColor="?android:attr/textColorPrimary" android:textStyle="bold" tools:text="@string/bug_report_summary" /> @@ -61,7 +62,7 @@ android:layout_height="wrap_content" android:paddingTop="4dp" android:singleLine="true" - android:textAppearance="@style/TextViewBody2" + android:textColor="?android:attr/textColorSecondary" tools:text="@string/bug_report_summary" /> diff --git a/app/src/main/res/layout/item_list.xml b/app/src/main/res/layout/item_list.xml index 1792fa40..3b574a26 100755 --- a/app/src/main/res/layout/item_list.xml +++ b/app/src/main/res/layout/item_list.xml @@ -19,7 +19,7 @@ android:layout_gravity="center_vertical|start" android:visibility="gone" app:srcCompat="@drawable/ic_drag_vertical_white_24dp" - app:tint="?colorOnBackground" + app:tint="?attr/colorControlNormal" tools:ignore="ContentDescription" tools:visibility="visible" /> @@ -80,7 +80,7 @@ android:ellipsize="end" android:maxLines="1" android:textAppearance="@style/TextViewSubtitle1" - android:textColor="?colorOnPrimary" + android:textColor="?android:attr/textColorPrimary" tools:text="Song name" /> @@ -98,6 +98,6 @@ style="@style/OverFlowButton" android:layout_gravity="center_vertical" android:layout_weight="0" - app:tint="?colorOnBackground" /> + app:tint="?attr/colorControlNormal" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_option_menu.xml b/app/src/main/res/layout/item_option_menu.xml index 66a6cbdc..6b26c2e6 100644 --- a/app/src/main/res/layout/item_option_menu.xml +++ b/app/src/main/res/layout/item_option_menu.xml @@ -31,7 +31,7 @@ android:layout_height="wrap_content" android:layout_weight="0" android:padding="14dp" - app:tint="?colorOnBackground" + app:tint="?attr/colorControlNormal" tools:srcCompat="@drawable/ic_folder_white_24dp" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_queue.xml b/app/src/main/res/layout/item_queue.xml index e4255f9a..d7fc8188 100644 --- a/app/src/main/res/layout/item_queue.xml +++ b/app/src/main/res/layout/item_queue.xml @@ -85,7 +85,7 @@ style="@style/OverFlowButton" android:layout_gravity="center_vertical" android:layout_weight="0" - app:tint="?colorOnBackground" /> + app:tint="?attr/colorControlNormal" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_song.xml b/app/src/main/res/layout/item_song.xml index 24b39e27..3638a1c9 100755 --- a/app/src/main/res/layout/item_song.xml +++ b/app/src/main/res/layout/item_song.xml @@ -14,8 +14,8 @@ android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="0" - android:paddingEnd="8dp" android:paddingStart="8dp" + android:paddingEnd="8dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> @@ -27,10 +27,10 @@ android:fontFeatureSettings="onum" android:gravity="center" android:maxLines="1" - tools:text="@tools:sample/date/hhmm" android:minHeight="40dp" android:textAppearance="@style/TextViewNormal" - android:textColor="?colorOnSecondary" /> + android:textColor="?attr/colorOnSecondary" + tools:text="@tools:sample/date/hhmm" /> @@ -55,7 +55,7 @@ android:layout_weight="0" android:fontFeatureSettings="onum" android:padding="4dp" - android:textColor="?colorOnSecondary" + android:textColor="?attr/colorOnSecondary" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@+id/menu" app:layout_constraintTop_toTopOf="parent" @@ -72,6 +72,6 @@ app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" - app:tint="?colorOnSecondary" + app:tint="?attr/colorControlNormal" tools:visibility="visible" /> \ 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 a0bece90..8f44627e 100644 --- a/app/src/main/res/layout/list_item_view.xml +++ b/app/src/main/res/layout/list_item_view.xml @@ -31,7 +31,7 @@ android:layout_height="wrap_content" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" - app:tint="?colorOnSurface" + app:tint="?attr/colorControlNormal" tools:srcCompat="@drawable/ic_telegram_white" /> + tools:ignore="ContentDescription,UnusedAttribute"> - - - - - - - - - - - + tools:text="@tools:sample/full_names" /> \ No newline at end of file diff --git a/app/src/main/res/layout/pager_item.xml b/app/src/main/res/layout/pager_item.xml index 56d06b80..b7881fbc 100644 --- a/app/src/main/res/layout/pager_item.xml +++ b/app/src/main/res/layout/pager_item.xml @@ -12,7 +12,7 @@ android:layout_width="match_parent" android:layout_height="172dp" android:layout_margin="8dp" - app:cardCornerRadius="12dp"> + app:cardCornerRadius="16dp"> - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/preference_dialog_library_categories_listitem.xml b/app/src/main/res/layout/preference_dialog_library_categories_listitem.xml index e99e445d..41673f6d 100644 --- a/app/src/main/res/layout/preference_dialog_library_categories_listitem.xml +++ b/app/src/main/res/layout/preference_dialog_library_categories_listitem.xml @@ -19,19 +19,16 @@ android:layout_height="wrap_content" android:descendantFocusability="blocksDescendants" android:focusable="true" - android:foreground="?attr/rectSelector" - android:minHeight="@dimen/md_listitem_height" + android:foreground="?rectSelector" android:orientation="horizontal" android:paddingStart="16dp" - android:paddingLeft="16dp" - android:paddingEnd="16dp" - android:paddingRight="16dp" + android:paddingEnd="0dp" tools:gravity="start|center_vertical"> diff --git a/app/src/main/res/layout/section_recycler_view.xml b/app/src/main/res/layout/section_recycler_view.xml index b5381f08..64157ca8 100644 --- a/app/src/main/res/layout/section_recycler_view.xml +++ b/app/src/main/res/layout/section_recycler_view.xml @@ -7,57 +7,19 @@ android:layout_height="wrap_content" android:orientation="vertical"> - + 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 6cb3e136..7736e2ff 100644 --- a/app/src/main/res/layout/sliding_music_panel_layout.xml +++ b/app/src/main/res/layout/sliding_music_panel_layout.xml @@ -25,7 +25,7 @@ android:layout_height="wrap_content" app:behavior_hideable="false" app:behavior_peekHeight="0dp" - app:cardBackgroundColor="?colorSecondary" + app:cardBackgroundColor="?attr/colorSurface" app:cardCornerRadius="0dp" app:cardUseCompatPadding="false" app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior" @@ -51,7 +51,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" - android:background="?colorSecondary" + android:background="?attr/colorSurface" android:elevation="0dp" android:visibility="gone" app:itemBackground="@drawable/bottom_navigation_item_background" diff --git a/app/src/main/res/layout/volume_controls.xml b/app/src/main/res/layout/volume_controls.xml deleted file mode 100644 index c200200b..00000000 --- a/app/src/main/res/layout/volume_controls.xml +++ /dev/null @@ -1,8 +0,0 @@ - - \ No newline at end of file diff --git a/app/src/main/res/values-v21/styles.xml b/app/src/main/res/values-v21/styles.xml index 73188393..e512f372 100644 --- a/app/src/main/res/values-v21/styles.xml +++ b/app/src/main/res/values-v21/styles.xml @@ -18,6 +18,12 @@ @style/TextViewStyleIm + + \ No newline at end of file diff --git a/app/src/main/res/xml/pref_lockscreen.xml b/app/src/main/res/xml/pref_lockscreen.xml index 19e6caae..2b9901dd 100755 --- a/app/src/main/res/xml/pref_lockscreen.xml +++ b/app/src/main/res/xml/pref_lockscreen.xml @@ -1,32 +1,5 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/xml/pref_ui.xml b/app/src/main/res/xml/pref_ui.xml index 0fea6911..40538306 100644 --- a/app/src/main/res/xml/pref_ui.xml +++ b/app/src/main/res/xml/pref_ui.xml @@ -1,7 +1,6 @@ - @@ -49,30 +48,70 @@ android:summary="@string/pref_summary_home_banner" android:title="@string/pref_title_home_banner" /> - + - + - - + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/xml/pref_window.xml b/app/src/main/res/xml/pref_window.xml index 618d1753..2b9901dd 100644 --- a/app/src/main/res/xml/pref_window.xml +++ b/app/src/main/res/xml/pref_window.xml @@ -1,25 +1,5 @@ - - - - - \ No newline at end of file diff --git a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/ATHToolbarActivity.java b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/ATHToolbarActivity.java index 61a9f713..d98d623f 100755 --- a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/ATHToolbarActivity.java +++ b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/ATHToolbarActivity.java @@ -7,6 +7,8 @@ import androidx.annotation.Nullable; import androidx.appcompat.widget.Toolbar; import code.name.monkey.appthemehelper.ATHActivity; +import code.name.monkey.appthemehelper.R; +import code.name.monkey.appthemehelper.util.ATHUtil; import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper; diff --git a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/ToolbarContentTintHelper.java b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/ToolbarContentTintHelper.java index 7b1c70b8..df57fb0f 100755 --- a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/ToolbarContentTintHelper.java +++ b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/util/ToolbarContentTintHelper.java @@ -84,7 +84,7 @@ public final class ToolbarContentTintHelper { } public static void colorBackButton(@NonNull Toolbar toolbar) { - int color = ATHUtil.INSTANCE.resolveColor(toolbar.getContext(), R.attr.colorOnPrimary); + int color = ATHUtil.INSTANCE.resolveColor(toolbar.getContext(), R.attr.colorControlNormal); final PorterDuffColorFilter colorFilter = new PorterDuffColorFilter(color, PorterDuff.Mode.MULTIPLY); for (int i = 0; i < toolbar.getChildCount(); i++) { final View backButton = toolbar.getChildAt(i);