Code Cleanup

This commit is contained in:
Prathamesh More 2022-01-14 23:36:49 +05:30
parent 061c0a8a3c
commit f769740d17
27 changed files with 127 additions and 170 deletions

View file

@ -140,7 +140,7 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() {
insets insets
} }
if (RetroUtil.isLandscape()) { if (RetroUtil.isLandscape()) {
binding.slidingPanel.drawAboveSystemBarsWithPadding(true) binding.slidingPanel.drawAboveSystemBarsWithPadding()
} }
chooseFragmentForTheme() chooseFragmentForTheme()
setupSlidingUpPanel() setupSlidingUpPanel()

View file

@ -35,11 +35,10 @@ abstract class AbsThemeActivity : ATHToolbarActivity(), Runnable {
private val handler = Handler() private val handler = Handler()
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
setDrawBehindSystemBars() setEdgeToEdgeOrImmersive()
updateTheme() updateTheme()
hideStatusBar() hideStatusBar()
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setImmersiveFullscreen()
registerSystemUiVisibility() registerSystemUiVisibility()
toggleScreenOn() toggleScreenOn()
setLightNavigationBarAuto() setLightNavigationBarAuto()

View file

@ -150,13 +150,13 @@ class SearchAdapter(
imageTextContainer?.isInvisible = true imageTextContainer?.isInvisible = true
if (itemViewType == SONG) { if (itemViewType == SONG) {
imageTextContainer?.isGone = true imageTextContainer?.isGone = true
menu?.visibility = View.VISIBLE menu?.isVisible = true
menu?.setOnClickListener(object : SongMenuHelper.OnClickSongMenu(activity) { menu?.setOnClickListener(object : SongMenuHelper.OnClickSongMenu(activity) {
override val song: Song override val song: Song
get() = dataSet[layoutPosition] as Song get() = dataSet[layoutPosition] as Song
}) })
} else { } else {
menu?.visibility = View.GONE menu?.isVisible = false
} }
when (itemViewType) { when (itemViewType) {
@ -164,7 +164,7 @@ class SearchAdapter(
ARTIST -> setImageTransitionName(activity.getString(R.string.transition_artist_image)) ARTIST -> setImageTransitionName(activity.getString(R.string.transition_artist_image))
else -> { else -> {
val container = itemView.findViewById<View>(R.id.imageContainer) val container = itemView.findViewById<View>(R.id.imageContainer)
container?.visibility = View.GONE container?.isVisible = false
} }
} }
} }

View file

@ -20,6 +20,7 @@ import android.view.MenuItem
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.isVisible
import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ATHUtil
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.adapter.base.AbsMultiSelectAdapter import code.name.monkey.retromusic.adapter.base.AbsMultiSelectAdapter
@ -78,7 +79,7 @@ class SongFileAdapter(
if (holder.itemViewType == FILE) { if (holder.itemViewType == FILE) {
holder.text?.text = getFileText(file) holder.text?.text = getFileText(file)
} else { } else {
holder.text?.visibility = View.GONE holder.text?.isVisible = false
} }
} }

View file

@ -20,6 +20,7 @@ import android.view.MenuItem
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.core.view.ViewCompat import androidx.core.view.ViewCompat
import androidx.core.view.isVisible
import androidx.fragment.app.FragmentActivity import androidx.fragment.app.FragmentActivity
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.adapter.base.AbsMultiSelectAdapter import code.name.monkey.retromusic.adapter.base.AbsMultiSelectAdapter
@ -174,7 +175,7 @@ open class AlbumAdapter(
inner class ViewHolder(itemView: View) : MediaEntryViewHolder(itemView) { inner class ViewHolder(itemView: View) : MediaEntryViewHolder(itemView) {
init { init {
menu?.visibility = View.GONE menu?.isVisible = false
} }
override fun onClick(v: View?) { override fun onClick(v: View?) {

View file

@ -21,6 +21,7 @@ import android.view.MenuItem
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.core.view.ViewCompat import androidx.core.view.ViewCompat
import androidx.core.view.isVisible
import androidx.fragment.app.FragmentActivity import androidx.fragment.app.FragmentActivity
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.adapter.base.AbsMultiSelectAdapter import code.name.monkey.retromusic.adapter.base.AbsMultiSelectAdapter
@ -158,7 +159,7 @@ class ArtistAdapter(
inner class ViewHolder(itemView: View) : MediaEntryViewHolder(itemView) { inner class ViewHolder(itemView: View) : MediaEntryViewHolder(itemView) {
init { init {
menu?.visibility = View.GONE menu?.isVisible = false
} }
override fun onClick(v: View?) { override fun onClick(v: View?) {

View file

@ -16,6 +16,7 @@ package code.name.monkey.retromusic.adapter.song
import android.view.MenuItem import android.view.MenuItem
import android.view.View import android.view.View
import androidx.core.view.isVisible
import androidx.fragment.app.FragmentActivity import androidx.fragment.app.FragmentActivity
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.ThemeStore
@ -129,7 +130,7 @@ class OrderablePlaylistSongAdapter(
} }
init { init {
dragView?.visibility = View.VISIBLE dragView?.isVisible = true
} }
override fun onClick(v: View?) { override fun onClick(v: View?) {

View file

@ -16,6 +16,7 @@ package code.name.monkey.retromusic.adapter.song
import android.view.MenuItem import android.view.MenuItem
import android.view.View import android.view.View
import androidx.core.view.isVisible
import androidx.fragment.app.FragmentActivity import androidx.fragment.app.FragmentActivity
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.glide.GlideApp import code.name.monkey.retromusic.glide.GlideApp
@ -154,7 +155,7 @@ class PlayingQueueAdapter(
} }
init { init {
dragView?.visibility = View.VISIBLE dragView?.isVisible = true
} }
override fun onSongMenuItemClick(item: MenuItem): Boolean { override fun onSongMenuItemClick(item: MenuItem): Boolean {

View file

@ -15,6 +15,7 @@
package code.name.monkey.retromusic.adapter.song package code.name.monkey.retromusic.adapter.song
import android.view.View import android.view.View
import androidx.core.view.isVisible
import androidx.fragment.app.FragmentActivity import androidx.fragment.app.FragmentActivity
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.extensions.accentColor import code.name.monkey.retromusic.extensions.accentColor
@ -61,7 +62,7 @@ class ShuffleButtonSongAdapter(
super.onBindViewHolder(holder, position - 1) super.onBindViewHolder(holder, position - 1)
val landscape = RetroUtil.isLandscape() val landscape = RetroUtil.isLandscape()
if ((PreferenceUtil.songGridSize > 2 && !landscape) || (PreferenceUtil.songGridSizeLand > 5 && landscape)) { if ((PreferenceUtil.songGridSize > 2 && !landscape) || (PreferenceUtil.songGridSizeLand > 5 && landscape)) {
holder.menu?.visibility = View.GONE holder.menu?.isVisible = false
} }
} }
} }

View file

@ -22,6 +22,14 @@ fun AppCompatActivity.toggleScreenOn() {
} }
} }
fun AppCompatActivity.setEdgeToEdgeOrImmersive() {
if (PreferenceUtil.isFullScreenMode) {
setImmersiveFullscreen()
} else {
setDrawBehindSystemBars()
}
}
fun AppCompatActivity.setImmersiveFullscreen() { fun AppCompatActivity.setImmersiveFullscreen() {
if (PreferenceUtil.isFullScreenMode) { if (PreferenceUtil.isFullScreenMode) {
WindowInsetsControllerCompat(window, window.decorView).apply { WindowInsetsControllerCompat(window, window.decorView).apply {

View file

@ -20,11 +20,11 @@ import android.content.Context
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.view.ViewGroup.MarginLayoutParams
import android.view.ViewTreeObserver import android.view.ViewTreeObserver
import android.view.inputmethod.InputMethodManager import android.view.inputmethod.InputMethodManager
import android.widget.EditText import android.widget.EditText
import androidx.annotation.LayoutRes import androidx.annotation.LayoutRes
import androidx.annotation.Px
import androidx.core.animation.doOnEnd import androidx.core.animation.doOnEnd
import androidx.core.animation.doOnStart import androidx.core.animation.doOnStart
import androidx.core.view.* import androidx.core.view.*
@ -32,11 +32,8 @@ import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.appthemehelper.util.TintHelper import code.name.monkey.appthemehelper.util.TintHelper
import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.RetroUtil import code.name.monkey.retromusic.util.RetroUtil
import com.afollestad.materialdialogs.utils.MDUtil.updatePadding
import com.google.android.material.bottomsheet.BottomSheetBehavior import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.imageview.ShapeableImageView import dev.chrisbanes.insetter.applyInsetter
import com.google.android.material.shape.ShapeAppearanceModel
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
fun <T : View> ViewGroup.inflate(@LayoutRes layout: Int): T { fun <T : View> ViewGroup.inflate(@LayoutRes layout: Int): T {
@ -44,19 +41,17 @@ fun <T : View> ViewGroup.inflate(@LayoutRes layout: Int): T {
} }
fun View.show() { fun View.show() {
visibility = View.VISIBLE isVisible = true
} }
fun View.hide() { fun View.hide() {
visibility = View.GONE isVisible = false
} }
fun View.hidden() { fun View.hidden() {
visibility = View.INVISIBLE isInvisible = true
} }
fun View.showOrHide(show: Boolean) = if (show) show() else hide()
fun EditText.appHandleColor(): EditText { fun EditText.appHandleColor(): EditText {
if (PreferenceUtil.materialYou) return this if (PreferenceUtil.materialYou) return this
TintHelper.colorHandles(this, ThemeStore.accentColor(context)) TintHelper.colorHandles(this, ThemeStore.accentColor(context))
@ -126,121 +121,45 @@ fun View.focusAndShowKeyboard() {
} }
} }
fun ShapeableImageView.setCircleShape(boolean: Boolean) {
addOnLayoutChangeListener { _, _, _, _, _, _, _, _, _ ->
val radius = width / 2f
shapeAppearanceModel = ShapeAppearanceModel().withCornerSize(radius)
}
}
/** /**
* This will draw our view above the navigation bar instead of behind it by adding margins. * This will draw our view above the navigation bar instead of behind it by adding margins.
*/ */
fun View.drawAboveSystemBars(onlyPortrait: Boolean = true) { fun View.drawAboveSystemBars(onlyPortrait: Boolean = true) {
if (PreferenceUtil.isFullScreenMode) return if (PreferenceUtil.isFullScreenMode) return
if (onlyPortrait && RetroUtil.isLandscape()) return if (onlyPortrait && RetroUtil.isLandscape()) return
// Create a snapshot of the view's margin state applyInsetter {
val initialMargin = recordInitialMarginForView(this) type(navigationBars = true) {
ViewCompat.setOnApplyWindowInsetsListener( margin()
(this)
) { _: View, windowInsets: WindowInsetsCompat ->
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
// Apply the insets as a margin to the view.
updateLayoutParams<MarginLayoutParams> {
leftMargin = initialMargin.left + insets.left
bottomMargin = initialMargin.bottom + insets.bottom
rightMargin = initialMargin.right + insets.right
} }
windowInsets
} }
} }
/** /**
* This will draw our view above the navigation bar instead of behind it by adding padding. * This will draw our view above the navigation bar instead of behind it by adding padding.
*/ */
fun View.drawAboveSystemBarsWithPadding(consume: Boolean = false) { fun View.drawAboveSystemBarsWithPadding() {
if (PreferenceUtil.isFullScreenMode) return if (PreferenceUtil.isFullScreenMode) return
val initialPadding = recordInitialPaddingForView(this) applyInsetter {
type(navigationBars = true) {
ViewCompat.setOnApplyWindowInsetsListener( padding()
(this)
) { v: View, windowInsets: WindowInsetsCompat ->
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
v.updatePadding(
left = initialPadding.left + insets.left,
bottom = initialPadding.bottom + insets.bottom,
right = initialPadding.right + insets.right
)
if (consume) WindowInsetsCompat.CONSUMED else windowInsets
} }
requestApplyInsetsWhenAttached()
}
fun View.requestApplyInsetsWhenAttached() {
if (isAttachedToWindow) {
// We're already attached, just request as normal
requestApplyInsets()
} else {
// We're not attached to the hierarchy, add a listener to
// request when we are
addOnAttachStateChangeListener(object : View.OnAttachStateChangeListener {
override fun onViewAttachedToWindow(v: View) {
v.removeOnAttachStateChangeListener(this)
v.requestApplyInsets()
}
override fun onViewDetachedFromWindow(v: View) = Unit
})
} }
} }
fun View.drawNextToNavbar() { fun View.drawNextToNavbar() {
val initialPadding = recordInitialPaddingForView(this) if (PreferenceUtil.isFullScreenMode) return
applyInsetter {
ViewCompat.setOnApplyWindowInsetsListener( type(statusBars = true, navigationBars = true) {
(this) padding(horizontal = true)
) { v: View, windowInsets: WindowInsetsCompat ->
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
v.updatePadding(
left = initialPadding.left + insets.left,
right = initialPadding.right + insets.right
)
windowInsets
} }
requestApplyInsetsWhenAttached()
}
fun View.addBottomInsets() {
// Create a snapshot of the view's margin state
val initialMargin = recordInitialMarginForView(this)
ViewCompat.setOnApplyWindowInsetsListener(
(this)
) { _: View, windowInsets: WindowInsetsCompat ->
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
// Apply the insets as a margin to the view.
updateLayoutParams<MarginLayoutParams> {
bottomMargin = initialMargin.bottom + insets.bottom
}
windowInsets
} }
} }
data class InitialMargin( fun View.updateMargin(
val left: Int, val top: Int, @Px left: Int = marginLeft,
val right: Int, val bottom: Int @Px top: Int = marginTop,
) @Px right: Int = marginRight,
@Px bottom: Int = marginBottom
fun recordInitialMarginForView(view: View) = InitialMargin( ) {
view.marginLeft, view.marginTop, view.marginRight, view.marginBottom (layoutParams as ViewGroup.MarginLayoutParams).updateMargins(left, top, right, bottom)
) }
data class InitialPadding(
val left: Int, val top: Int,
val right: Int, val bottom: Int
)
fun recordInitialPaddingForView(view: View) = InitialPadding(
view.paddingLeft, view.paddingTop, view.paddingRight, view.paddingBottom
)

View file

@ -12,6 +12,7 @@ import androidx.core.os.bundleOf
import androidx.core.text.HtmlCompat import androidx.core.text.HtmlCompat
import androidx.core.view.ViewCompat import androidx.core.view.ViewCompat
import androidx.core.view.doOnPreDraw import androidx.core.view.doOnPreDraw
import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.FragmentNavigatorExtras import androidx.navigation.fragment.FragmentNavigatorExtras
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
@ -192,22 +193,24 @@ abstract class AbsArtistDetailsFragment : AbsMainActivityFragment(R.layout.fragm
if (lastFmArtist != null && lastFmArtist.artist != null && lastFmArtist.artist.bio != null) { if (lastFmArtist != null && lastFmArtist.artist != null && lastFmArtist.artist.bio != null) {
val bioContent = lastFmArtist.artist.bio.content val bioContent = lastFmArtist.artist.bio.content
if (bioContent != null && bioContent.trim { it <= ' ' }.isNotEmpty()) { if (bioContent != null && bioContent.trim { it <= ' ' }.isNotEmpty()) {
binding.fragmentArtistContent.biographyText.visibility = View.VISIBLE binding.fragmentArtistContent.run {
binding.fragmentArtistContent.biographyTitle.visibility = View.VISIBLE biographyText.isVisible = true
biographyTitle.isVisible = true
biography = HtmlCompat.fromHtml(bioContent, HtmlCompat.FROM_HTML_MODE_LEGACY) biography = HtmlCompat.fromHtml(bioContent, HtmlCompat.FROM_HTML_MODE_LEGACY)
binding.fragmentArtistContent.biographyText.text = biography biographyText.text = biography
if (lastFmArtist.artist.stats.listeners.isNotEmpty()) { if (lastFmArtist.artist.stats.listeners.isNotEmpty()) {
binding.fragmentArtistContent.listeners.show() listeners.show()
binding.fragmentArtistContent.listenersLabel.show() listenersLabel.show()
binding.fragmentArtistContent.scrobbles.show() scrobbles.show()
binding.fragmentArtistContent.scrobblesLabel.show() scrobblesLabel.show()
binding.fragmentArtistContent.listeners.text = listeners.text =
RetroUtil.formatValue(lastFmArtist.artist.stats.listeners.toFloat()) RetroUtil.formatValue(lastFmArtist.artist.stats.listeners.toFloat())
binding.fragmentArtistContent.scrobbles.text = scrobbles.text =
RetroUtil.formatValue(lastFmArtist.artist.stats.playcount.toFloat()) RetroUtil.formatValue(lastFmArtist.artist.stats.playcount.toFloat())
} }
} }
} }
}
// If the "lang" parameter is set and no biography is given, retry with default language // If the "lang" parameter is set and no biography is given, retry with default language
if (biography == null && lang != null) { if (biography == null && lang != null) {

View file

@ -19,6 +19,7 @@ import android.view.View
import android.view.animation.AccelerateInterpolator import android.view.animation.AccelerateInterpolator
import android.view.animation.DecelerateInterpolator import android.view.animation.DecelerateInterpolator
import androidx.annotation.LayoutRes import androidx.annotation.LayoutRes
import androidx.core.view.isVisible
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.fragments.other.VolumeFragment import code.name.monkey.retromusic.fragments.other.VolumeFragment
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
@ -49,7 +50,7 @@ abstract class AbsPlayerControlsFragment(@LayoutRes layout: Int) : AbsMusicServi
clearAnimation() clearAnimation()
scaleX = 0.9f scaleX = 0.9f
scaleY = 0.9f scaleY = 0.9f
visibility = View.VISIBLE isVisible = true
pivotX = (view.width / 2).toFloat() pivotX = (view.width / 2).toFloat()
pivotY = (view.height / 2).toFloat() pivotY = (view.height / 2).toFloat()

View file

@ -35,6 +35,7 @@ import androidx.annotation.LayoutRes
import androidx.appcompat.graphics.drawable.DrawableWrapper import androidx.appcompat.graphics.drawable.DrawableWrapper
import androidx.appcompat.widget.Toolbar import androidx.appcompat.widget.Toolbar
import androidx.core.os.bundleOf import androidx.core.os.bundleOf
import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.navigation.findNavController import androidx.navigation.findNavController
import androidx.navigation.navOptions import androidx.navigation.navOptions
@ -275,7 +276,7 @@ abstract class AbsPlayerFragment(@LayoutRes layout: Int) : AbsMainActivityFragme
if (PreferenceUtil.isFullScreenMode && if (PreferenceUtil.isFullScreenMode &&
view.findViewById<View>(R.id.status_bar) != null view.findViewById<View>(R.id.status_bar) != null
) { ) {
view.findViewById<View>(R.id.status_bar).visibility = View.GONE view.findViewById<View>(R.id.status_bar).isVisible = false
} }
playerAlbumCoverFragment = whichFragment(R.id.playerAlbumCoverFragment) playerAlbumCoverFragment = whichFragment(R.id.playerAlbumCoverFragment)
playerAlbumCoverFragment?.setCallbacks(this) playerAlbumCoverFragment?.setCallbacks(this)

View file

@ -155,17 +155,19 @@ abstract class AbsRecyclerViewFragment<A : RecyclerView.Adapter<*>, LM : Recycle
private fun checkIsEmpty() { private fun checkIsEmpty() {
binding.emptyText.setText(emptyMessage) binding.emptyText.setText(emptyMessage)
binding.empty.visibility = if (adapter!!.itemCount == 0) View.VISIBLE else View.GONE binding.empty.isVisible = adapter!!.itemCount == 0
} }
private fun checkForPadding() { private fun checkForPadding() {
val itemCount: Int = adapter?.itemCount ?: 0 val itemCount: Int = adapter?.itemCount ?: 0
if (itemCount > 0 && MusicPlayerRemote.playingQueue.isNotEmpty()) { binding.recyclerView.updatePadding(
binding.recyclerView.updatePadding(bottom = dip(R.dimen.mini_player_height_expanded)) bottom = if (itemCount > 0 && MusicPlayerRemote.playingQueue.isNotEmpty()) {
dip(R.dimen.mini_player_height_expanded)
} else { } else {
binding.recyclerView.updatePadding(bottom = dip(R.dimen.bottom_nav_height)) dip(R.dimen.bottom_nav_height)
} }
)
} }
private fun initLayoutManager() { private fun initLayoutManager() {

View file

@ -120,7 +120,7 @@ class CoverLyricsFragment : AbsMusicServiceFragment(R.layout.fragment_cover_lyri
if (lyrics !is AbsSynchronizedLyrics) return if (lyrics !is AbsSynchronizedLyrics) return
val synchronizedLyrics = lyrics as AbsSynchronizedLyrics val synchronizedLyrics = lyrics as AbsSynchronizedLyrics
lyricsLayout.visibility = View.VISIBLE lyricsLayout.isVisible = true
lyricsLayout.alpha = 1f lyricsLayout.alpha = 1f
val oldLine = lyricsLine2.text.toString() val oldLine = lyricsLine2.text.toString()

View file

@ -285,11 +285,7 @@ class LyricsFragment : AbsMusicServiceFragment(R.layout.fragment_lyrics) {
} catch (e: Exception) { } catch (e: Exception) {
e.printStackTrace() e.printStackTrace()
} }
if (lyrics.isNullOrEmpty()) { binding.noLyricsFound.isVisible = lyrics.isNullOrEmpty()
binding.noLyricsFound.visibility = View.VISIBLE
} else {
binding.noLyricsFound.visibility = View.GONE
}
binding.normalLyrics.text = lyrics binding.normalLyrics.text = lyrics
} }

View file

@ -25,6 +25,7 @@ import android.view.animation.DecelerateInterpolator
import android.view.animation.LinearInterpolator import android.view.animation.LinearInterpolator
import android.widget.SeekBar import android.widget.SeekBar
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.ColorUtil
import code.name.monkey.appthemehelper.util.MaterialValueHelper import code.name.monkey.appthemehelper.util.MaterialValueHelper
import code.name.monkey.appthemehelper.util.TintHelper import code.name.monkey.appthemehelper.util.TintHelper
@ -261,7 +262,7 @@ class BlurPlaybackControlsFragment :
clearAnimation() clearAnimation()
scaleX = 0.9f scaleX = 0.9f
scaleY = 0.9f scaleY = 0.9f
visibility = View.VISIBLE isVisible = true
pivotX = (width / 2).toFloat() pivotX = (width / 2).toFloat()
pivotY = (height / 2).toFloat() pivotY = (height / 2).toFloat()

View file

@ -23,6 +23,7 @@ import android.view.animation.AccelerateInterpolator
import android.view.animation.DecelerateInterpolator import android.view.animation.DecelerateInterpolator
import android.view.animation.LinearInterpolator import android.view.animation.LinearInterpolator
import android.widget.SeekBar import android.widget.SeekBar
import androidx.core.view.isVisible
import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.ColorUtil
import code.name.monkey.appthemehelper.util.MaterialValueHelper import code.name.monkey.appthemehelper.util.MaterialValueHelper
@ -265,7 +266,7 @@ class FitPlaybackControlsFragment :
clearAnimation() clearAnimation()
scaleX = 0.9f scaleX = 0.9f
scaleY = 0.9f scaleY = 0.9f
visibility = View.VISIBLE isVisible = true
pivotX = (width / 2).toFloat() pivotX = (width / 2).toFloat()
pivotY = (height / 2).toFloat() pivotY = (height / 2).toFloat()

View file

@ -23,6 +23,7 @@ import android.view.animation.AccelerateInterpolator
import android.view.animation.DecelerateInterpolator import android.view.animation.DecelerateInterpolator
import android.view.animation.LinearInterpolator import android.view.animation.LinearInterpolator
import android.widget.SeekBar import android.widget.SeekBar
import androidx.core.view.isVisible
import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ATHUtil
import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.ColorUtil
@ -251,7 +252,7 @@ class PlainPlaybackControlsFragment :
clearAnimation() clearAnimation()
scaleX = 0.9f scaleX = 0.9f
scaleY = 0.9f scaleY = 0.9f
visibility = View.VISIBLE isVisible = true
pivotX = (width / 2).toFloat() pivotX = (width / 2).toFloat()
pivotY = (height / 2).toFloat() pivotY = (height / 2).toFloat()

View file

@ -20,6 +20,7 @@ import code.name.monkey.retromusic.db.PlaylistWithSongs
import code.name.monkey.retromusic.db.toSongs import code.name.monkey.retromusic.db.toSongs
import code.name.monkey.retromusic.extensions.dip import code.name.monkey.retromusic.extensions.dip
import code.name.monkey.retromusic.extensions.surfaceColor import code.name.monkey.retromusic.extensions.surfaceColor
import code.name.monkey.retromusic.extensions.updateMargin
import code.name.monkey.retromusic.fragments.base.AbsMainActivityFragment import code.name.monkey.retromusic.fragments.base.AbsMainActivityFragment
import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.helper.menu.PlaylistMenuHelper import code.name.monkey.retromusic.helper.menu.PlaylistMenuHelper
@ -149,8 +150,8 @@ class PlaylistDetailsFragment : AbsMainActivityFragment(R.layout.fragment_playli
} }
private fun showEmptyView() { private fun showEmptyView() {
binding.empty.visibility = View.VISIBLE binding.empty.isVisible = true
binding.emptyText.visibility = View.VISIBLE binding.emptyText.isVisible = true
} }
fun songs(songs: List<Song>) { fun songs(songs: List<Song>) {

View file

@ -37,17 +37,20 @@ class MainSettingsFragment : Fragment(), View.OnClickListener {
override fun onClick(view: View) { override fun onClick(view: View) {
findNavController().navigate(
when (view.id) { when (view.id) {
R.id.generalSettings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_themeSettingsFragment) R.id.generalSettings -> R.id.action_mainSettingsFragment_to_themeSettingsFragment
R.id.audioSettings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_audioSettings) R.id.audioSettings -> R.id.action_mainSettingsFragment_to_audioSettings
R.id.personalizeSettings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_personalizeSettingsFragment) R.id.personalizeSettings -> R.id.action_mainSettingsFragment_to_personalizeSettingsFragment
R.id.imageSettings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_imageSettingFragment) R.id.imageSettings -> R.id.action_mainSettingsFragment_to_imageSettingFragment
R.id.notificationSettings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_notificationSettingsFragment) R.id.notificationSettings -> R.id.action_mainSettingsFragment_to_notificationSettingsFragment
R.id.otherSettings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_otherSettingsFragment) R.id.otherSettings -> R.id.action_mainSettingsFragment_to_otherSettingsFragment
R.id.aboutSettings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_aboutActivity) R.id.aboutSettings -> R.id.action_mainSettingsFragment_to_aboutActivity
R.id.nowPlayingSettings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_nowPlayingSettingsFragment) R.id.nowPlayingSettings -> R.id.action_mainSettingsFragment_to_nowPlayingSettingsFragment
R.id.backup_restore_settings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_backupFragment) R.id.backup_restore_settings -> R.id.action_mainSettingsFragment_to_backupFragment
else -> R.id.action_mainSettingsFragment_to_themeSettingsFragment
} }
)
} }
override fun onCreateView( override fun onCreateView(

View file

@ -15,6 +15,7 @@
package code.name.monkey.retromusic.transform package code.name.monkey.retromusic.transform
import android.view.View import android.view.View
import androidx.core.view.isVisible
import androidx.viewpager.widget.ViewPager import androidx.viewpager.widget.ViewPager
import kotlin.math.abs import kotlin.math.abs
@ -33,22 +34,22 @@ class HingeTransformation : ViewPager.PageTransformer {
// The Page is off-screen but it may still interfere with // The Page is off-screen but it may still interfere with
// click events of current page if // click events of current page if
// it's visibility is not set to Gone // it's visibility is not set to Gone
page.visibility = View.GONE page.isVisible = false
} }
position <= 0 -> { // [-1,0] position <= 0 -> { // [-1,0]
page.rotation = 90 * abs(position) page.rotation = 90 * abs(position)
page.alpha = 1 - abs(position) page.alpha = 1 - abs(position)
page.visibility = View.VISIBLE page.isVisible = true
} }
position <= 1 -> { // (0,1] position <= 1 -> { // (0,1]
page.rotation = 0f page.rotation = 0f
page.alpha = 1f page.alpha = 1f
page.visibility = View.VISIBLE page.isVisible = true
} }
else -> { // (1,+Infinity] else -> { // (1,+Infinity]
// This page is way off-screen to the right. // This page is way off-screen to the right.
page.alpha = 0f page.alpha = 0f
page.visibility = View.GONE page.isVisible = false
} }
} }
} }

View file

@ -15,6 +15,8 @@
package code.name.monkey.retromusic.transform package code.name.monkey.retromusic.transform
import android.view.View import android.view.View
import androidx.core.view.isInvisible
import androidx.core.view.isVisible
import androidx.viewpager.widget.ViewPager import androidx.viewpager.widget.ViewPager
import kotlin.math.abs import kotlin.math.abs
@ -25,9 +27,9 @@ class HorizontalFlipTransformation : ViewPager.PageTransformer {
page.cameraDistance = 20000f page.cameraDistance = 20000f
if (position < 0.5 && position > -0.5) { if (position < 0.5 && position > -0.5) {
page.visibility = View.VISIBLE page.isVisible = true
} else { } else {
page.visibility = View.INVISIBLE page.isInvisible = true
} }

View file

@ -15,6 +15,8 @@
package code.name.monkey.retromusic.transform package code.name.monkey.retromusic.transform
import android.view.View import android.view.View
import androidx.core.view.isInvisible
import androidx.core.view.isVisible
import androidx.viewpager.widget.ViewPager import androidx.viewpager.widget.ViewPager
import kotlin.math.abs import kotlin.math.abs
@ -25,9 +27,9 @@ class VerticalFlipTransformation : ViewPager.PageTransformer {
page.cameraDistance = 100000f page.cameraDistance = 100000f
if (position < 0.5 && position > -0.5) { if (position < 0.5 && position > -0.5) {
page.visibility = View.VISIBLE page.isVisible = true
} else { } else {
page.visibility = View.INVISIBLE page.isInvisible = true
} }

View file

@ -23,7 +23,7 @@ import code.name.monkey.appthemehelper.util.ColorUtil
import code.name.monkey.appthemehelper.util.NavigationViewUtil import code.name.monkey.appthemehelper.util.NavigationViewUtil
import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.PreferenceUtil
import com.google.android.material.bottomnavigation.BottomNavigationView import com.google.android.material.bottomnavigation.BottomNavigationView
import java.lang.RuntimeException import dev.chrisbanes.insetter.applyInsetter
class BottomNavigationBarTinted @JvmOverloads constructor( class BottomNavigationBarTinted @JvmOverloads constructor(
context: Context, context: Context,
@ -39,6 +39,12 @@ class BottomNavigationBarTinted @JvmOverloads constructor(
setOnApplyWindowInsetsListener { _, insets -> setOnApplyWindowInsetsListener { _, insets ->
insets insets
} }
} else {
applyInsetter {
type(navigationBars = true) {
padding()
}
}
} }
labelVisibilityMode = PreferenceUtil.tabTitleMode labelVisibilityMode = PreferenceUtil.tabTitleMode

View file

@ -4,6 +4,7 @@ import android.content.Context
import android.util.AttributeSet import android.util.AttributeSet
import androidx.annotation.Px import androidx.annotation.Px
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.extensions.drawAboveSystemBarsWithPadding import code.name.monkey.retromusic.extensions.drawAboveSystemBarsWithPadding
import code.name.monkey.retromusic.util.RetroUtil import code.name.monkey.retromusic.util.RetroUtil
@ -24,6 +25,9 @@ class InsetsRecyclerView @JvmOverloads constructor(
@Px bottom: Int = paddingBottom @Px bottom: Int = paddingBottom
) { ) {
setPadding(left, top, right, bottom) setPadding(left, top, right, bottom)
// Insetter saves initial state i.e. initial padding/margin of the view,
// we just clear it for now
setTag(R.id.insetter_initial_state, null)
if (!RetroUtil.isLandscape()) if (!RetroUtil.isLandscape())
drawAboveSystemBarsWithPadding() drawAboveSystemBarsWithPadding()
} }