Migrated to Kotlin version of Material cab
This commit is contained in:
parent
4620c22479
commit
6aedfbc2cb
17 changed files with 823 additions and 877 deletions
|
@ -8,46 +8,38 @@ import androidx.fragment.app.FragmentActivity
|
|||
import androidx.recyclerview.widget.RecyclerView
|
||||
import code.name.monkey.retromusic.R
|
||||
import code.name.monkey.retromusic.extensions.surfaceColor
|
||||
import code.name.monkey.retromusic.interfaces.ICabCallback
|
||||
import code.name.monkey.retromusic.interfaces.ICabHolder
|
||||
import code.name.monkey.retromusic.util.ColorAnimUtil
|
||||
import code.name.monkey.retromusic.util.RetroColorUtil
|
||||
import com.afollestad.materialcab.MaterialCab
|
||||
import com.afollestad.materialcab.attached.AttachedCab
|
||||
import com.afollestad.materialcab.attached.destroy
|
||||
import com.afollestad.materialcab.attached.isActive
|
||||
import java.util.*
|
||||
|
||||
abstract class AbsMultiSelectAdapter<V : RecyclerView.ViewHolder?, I>(
|
||||
open val activity: FragmentActivity, private val ICabHolder: ICabHolder?, @MenuRes menuRes: Int
|
||||
) : RecyclerView.Adapter<V>(), MaterialCab.Callback {
|
||||
private var cab: MaterialCab? = null
|
||||
) : RecyclerView.Adapter<V>(), ICabCallback {
|
||||
private var cab: AttachedCab? = null
|
||||
private val checked: MutableList<I>
|
||||
private var menuRes: Int
|
||||
override fun onCabCreated(materialCab: MaterialCab, menu: Menu): Boolean {
|
||||
// Animate the color change
|
||||
ColorAnimUtil.createColorAnimator(
|
||||
activity.surfaceColor(),
|
||||
RetroColorUtil.shiftBackgroundColor(activity.surfaceColor())
|
||||
).apply {
|
||||
addUpdateListener {
|
||||
// Change color of status bar too
|
||||
activity.window.statusBarColor = animatedValue as Int
|
||||
materialCab.setBackgroundColor(animatedValue as Int)
|
||||
}
|
||||
start()
|
||||
}
|
||||
override fun onCabCreated(cab: AttachedCab, menu: Menu): Boolean {
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
override fun onCabFinished(materialCab: MaterialCab): Boolean {
|
||||
override fun onCabFinished(cab: AttachedCab): Boolean {
|
||||
clearChecked()
|
||||
activity.window.statusBarColor = Color.TRANSPARENT
|
||||
return true
|
||||
}
|
||||
|
||||
override fun onCabItemClicked(menuItem: MenuItem): Boolean {
|
||||
if (menuItem.itemId == R.id.action_multi_select_adapter_check_all) {
|
||||
override fun onCabItemClicked(item: MenuItem): Boolean {
|
||||
if (item.itemId == R.id.action_multi_select_adapter_check_all) {
|
||||
checkAll()
|
||||
} else {
|
||||
onMultipleItemAction(menuItem, ArrayList(checked))
|
||||
cab?.finish()
|
||||
onMultipleItemAction(item, ArrayList(checked))
|
||||
cab?.destroy()
|
||||
clearChecked()
|
||||
}
|
||||
return true
|
||||
|
@ -77,7 +69,7 @@ abstract class AbsMultiSelectAdapter<V : RecyclerView.ViewHolder?, I>(
|
|||
}
|
||||
|
||||
protected val isInQuickSelectMode: Boolean
|
||||
get() = cab != null && cab!!.isActive
|
||||
get() = cab != null && cab!!.isActive()
|
||||
|
||||
protected abstract fun onMultipleItemAction(menuItem: MenuItem, selection: List<I>)
|
||||
protected fun setMultiSelectMenuRes(@MenuRes menuRes: Int) {
|
||||
|
@ -104,19 +96,19 @@ abstract class AbsMultiSelectAdapter<V : RecyclerView.ViewHolder?, I>(
|
|||
|
||||
private fun updateCab() {
|
||||
if (ICabHolder != null) {
|
||||
if (cab == null || !cab!!.isActive) {
|
||||
if (cab == null || !cab!!.isActive()) {
|
||||
cab = ICabHolder.openCab(menuRes, this)
|
||||
}
|
||||
val size = checked.size
|
||||
when {
|
||||
size <= 0 -> {
|
||||
cab?.finish()
|
||||
cab?.destroy()
|
||||
}
|
||||
size == 1 -> {
|
||||
cab?.setTitle(getName(checked[0]))
|
||||
cab?.title(literal = getName(checked[0]))
|
||||
}
|
||||
else -> {
|
||||
cab?.setTitle(activity.getString(R.string.x_selected, size))
|
||||
cab?.title(literal = activity.getString(R.string.x_selected, size))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -37,12 +37,12 @@ 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.ICabCallback
|
||||
import code.name.monkey.retromusic.interfaces.ICabHolder
|
||||
import code.name.monkey.retromusic.model.Song
|
||||
import code.name.monkey.retromusic.util.MusicUtil
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
|
||||
import com.afollestad.materialcab.MaterialCab
|
||||
import me.zhanghai.android.fastscroll.PopupTextProvider
|
||||
|
||||
/**
|
||||
|
@ -59,7 +59,7 @@ open class SongAdapter(
|
|||
activity,
|
||||
ICabHolder,
|
||||
R.menu.menu_media_selection
|
||||
), MaterialCab.Callback, PopupTextProvider {
|
||||
), ICabCallback, PopupTextProvider {
|
||||
|
||||
private var showSectionName = true
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue