Code Cleanup
This commit is contained in:
parent
061c0a8a3c
commit
f769740d17
27 changed files with 127 additions and 170 deletions
|
@ -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()
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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?) {
|
||||||
|
|
|
@ -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?) {
|
||||||
|
|
|
@ -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?) {
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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
|
|
||||||
)
|
|
|
@ -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,19 +193,21 @@ 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
|
||||||
biography = HtmlCompat.fromHtml(bioContent, HtmlCompat.FROM_HTML_MODE_LEGACY)
|
biographyTitle.isVisible = true
|
||||||
binding.fragmentArtistContent.biographyText.text = biography
|
biography = HtmlCompat.fromHtml(bioContent, HtmlCompat.FROM_HTML_MODE_LEGACY)
|
||||||
if (lastFmArtist.artist.stats.listeners.isNotEmpty()) {
|
biographyText.text = biography
|
||||||
binding.fragmentArtistContent.listeners.show()
|
if (lastFmArtist.artist.stats.listeners.isNotEmpty()) {
|
||||||
binding.fragmentArtistContent.listenersLabel.show()
|
listeners.show()
|
||||||
binding.fragmentArtistContent.scrobbles.show()
|
listenersLabel.show()
|
||||||
binding.fragmentArtistContent.scrobblesLabel.show()
|
scrobbles.show()
|
||||||
binding.fragmentArtistContent.listeners.text =
|
scrobblesLabel.show()
|
||||||
RetroUtil.formatValue(lastFmArtist.artist.stats.listeners.toFloat())
|
listeners.text =
|
||||||
binding.fragmentArtistContent.scrobbles.text =
|
RetroUtil.formatValue(lastFmArtist.artist.stats.listeners.toFloat())
|
||||||
RetroUtil.formatValue(lastFmArtist.artist.stats.playcount.toFloat())
|
scrobbles.text =
|
||||||
|
RetroUtil.formatValue(lastFmArtist.artist.stats.playcount.toFloat())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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()
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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()) {
|
||||||
} else {
|
dip(R.dimen.mini_player_height_expanded)
|
||||||
binding.recyclerView.updatePadding(bottom = dip(R.dimen.bottom_nav_height))
|
} else {
|
||||||
}
|
dip(R.dimen.bottom_nav_height)
|
||||||
|
}
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun initLayoutManager() {
|
private fun initLayoutManager() {
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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()
|
||||||
|
|
||||||
|
|
|
@ -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()
|
||||||
|
|
||||||
|
|
|
@ -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()
|
||||||
|
|
||||||
|
|
|
@ -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>) {
|
||||||
|
|
|
@ -37,17 +37,20 @@ class MainSettingsFragment : Fragment(), View.OnClickListener {
|
||||||
|
|
||||||
|
|
||||||
override fun onClick(view: View) {
|
override fun onClick(view: View) {
|
||||||
when (view.id) {
|
findNavController().navigate(
|
||||||
R.id.generalSettings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_themeSettingsFragment)
|
when (view.id) {
|
||||||
R.id.audioSettings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_audioSettings)
|
R.id.generalSettings -> R.id.action_mainSettingsFragment_to_themeSettingsFragment
|
||||||
R.id.personalizeSettings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_personalizeSettingsFragment)
|
R.id.audioSettings -> R.id.action_mainSettingsFragment_to_audioSettings
|
||||||
R.id.imageSettings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_imageSettingFragment)
|
R.id.personalizeSettings -> R.id.action_mainSettingsFragment_to_personalizeSettingsFragment
|
||||||
R.id.notificationSettings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_notificationSettingsFragment)
|
R.id.imageSettings -> R.id.action_mainSettingsFragment_to_imageSettingFragment
|
||||||
R.id.otherSettings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_otherSettingsFragment)
|
R.id.notificationSettings -> R.id.action_mainSettingsFragment_to_notificationSettingsFragment
|
||||||
R.id.aboutSettings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_aboutActivity)
|
R.id.otherSettings -> R.id.action_mainSettingsFragment_to_otherSettingsFragment
|
||||||
R.id.nowPlayingSettings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_nowPlayingSettingsFragment)
|
R.id.aboutSettings -> R.id.action_mainSettingsFragment_to_aboutActivity
|
||||||
R.id.backup_restore_settings -> findNavController().navigate(R.id.action_mainSettingsFragment_to_backupFragment)
|
R.id.nowPlayingSettings -> R.id.action_mainSettingsFragment_to_nowPlayingSettingsFragment
|
||||||
}
|
R.id.backup_restore_settings -> R.id.action_mainSettingsFragment_to_backupFragment
|
||||||
|
else -> R.id.action_mainSettingsFragment_to_themeSettingsFragment
|
||||||
|
}
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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()
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue