143 lines
4.1 KiB
Kotlin
143 lines
4.1 KiB
Kotlin
package com.player.musicoo.activity
|
|
|
|
import android.annotation.SuppressLint
|
|
import android.view.View
|
|
import androidx.media3.common.util.UnstableApi
|
|
import androidx.recyclerview.widget.LinearLayoutManager
|
|
import com.bumptech.glide.Glide
|
|
import com.gyf.immersionbar.ktx.immersionBar
|
|
import com.player.musicoo.App
|
|
import com.player.musicoo.adapter.DetailsListAdapter
|
|
import com.player.musicoo.adapter.OfflineSongsAdapter
|
|
import com.player.musicoo.bean.OfflineBean
|
|
import com.player.musicoo.databinding.ActivityDetailsBinding
|
|
import com.player.musicoo.databinding.ActivityOfflineSongsBinding
|
|
import com.player.musicoo.innertube.Innertube
|
|
import com.player.musicoo.innertube.requests.moPlaylistPage
|
|
import com.player.musicoo.util.DownloadUtil
|
|
import com.player.musicoo.util.LogTag.LogD
|
|
import kotlinx.coroutines.channels.Channel
|
|
import kotlinx.coroutines.isActive
|
|
import kotlinx.coroutines.selects.select
|
|
|
|
@UnstableApi
|
|
class MoOfflineSongsActivity : MoBaseActivity() {
|
|
private val requests: Channel<Request> = Channel(Channel.UNLIMITED)
|
|
|
|
enum class Request {
|
|
TryAgain,
|
|
}
|
|
|
|
private lateinit var binding: ActivityOfflineSongsBinding
|
|
private var adapter: OfflineSongsAdapter? = null
|
|
private var offlineList: MutableList<OfflineBean> = mutableListOf()
|
|
|
|
override suspend fun main() {
|
|
binding = ActivityOfflineSongsBinding.inflate(layoutInflater)
|
|
setContentView(binding.root)
|
|
initImmersionBar()
|
|
initView()
|
|
initAdapter()
|
|
initData()
|
|
onReceive()
|
|
}
|
|
|
|
private fun initImmersionBar() {
|
|
immersionBar {
|
|
statusBarDarkFont(false)
|
|
statusBarView(binding.view)
|
|
}
|
|
}
|
|
|
|
@SuppressLint("NotifyDataSetChanged")
|
|
private suspend fun onReceive() {
|
|
while (isActive) {
|
|
select<Unit> {
|
|
requests.onReceive {
|
|
when (it) {
|
|
Request.TryAgain -> {
|
|
initData()
|
|
}
|
|
}
|
|
}
|
|
events.onReceive {
|
|
when (it) {
|
|
Event.ActivityOnResume -> {
|
|
activityOnResume()
|
|
}
|
|
|
|
Event.AutomaticallySwitchSongs -> {
|
|
if (adapter != null) {
|
|
adapter?.notifyDataSetChanged()
|
|
}
|
|
}
|
|
|
|
else -> {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
@SuppressLint("NotifyDataSetChanged")
|
|
private fun activityOnResume() {
|
|
addMusicPlayerViewToLayout(binding.playMusicLayout)
|
|
|
|
if (adapter != null) {
|
|
adapter?.notifyDataSetChanged()
|
|
}
|
|
}
|
|
|
|
private fun initView() {
|
|
binding.backBtn.setOnClickListener {
|
|
finish()
|
|
}
|
|
binding.tryAgainBtn.setOnClickListener {
|
|
requests.trySend(Request.TryAgain)
|
|
}
|
|
}
|
|
|
|
private fun initAdapter() {
|
|
adapter = OfflineSongsAdapter(this, offlineList)
|
|
binding.rv.layoutManager =
|
|
LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
|
|
binding.rv.adapter = adapter
|
|
}
|
|
|
|
@SuppressLint("NotifyDataSetChanged")
|
|
private suspend fun initData() {
|
|
showLoadingUi()
|
|
|
|
offlineList.clear()
|
|
offlineList.addAll(App.appOfflineDBManager.getAllOfflineBeans())
|
|
|
|
for (offline in offlineList){
|
|
LogD(TAG,"offline id->${offline.videoId}")
|
|
}
|
|
|
|
if (offlineList.size > 0) {
|
|
showDataUi()
|
|
} else {
|
|
showNoContentUi()
|
|
}
|
|
if (adapter != null) {
|
|
adapter?.notifyDataSetChanged()
|
|
}
|
|
|
|
}
|
|
|
|
private fun showDataUi() {
|
|
binding.loadingLayout.visibility = View.GONE
|
|
binding.noContentLayout.visibility = View.GONE
|
|
}
|
|
|
|
private fun showLoadingUi() {
|
|
binding.loadingLayout.visibility = View.VISIBLE
|
|
binding.noContentLayout.visibility = View.GONE
|
|
}
|
|
|
|
private fun showNoContentUi() {
|
|
binding.loadingLayout.visibility = View.GONE
|
|
binding.noContentLayout.visibility = View.VISIBLE
|
|
}
|
|
} |