feat: 变更文本显示为 string value,删除一些无用的代码引用

This commit is contained in:
谢意帆
2022-05-17 21:42:40 +08:00
parent a2b6fc2b21
commit de8acc873b
8 changed files with 29 additions and 41 deletions
@@ -204,12 +204,11 @@ class BookInfoActivity :
R.id.menu_upload -> {
launch {
val uri = Uri.parse(viewModel.bookData.value?.bookUrl.toString())
// val doc = DocumentFile.fromTreeUri(appCtx,uri)
if (RemoteBookWebDav.upload(uri))
toastOnUi(getString(R.string.upload_book_success))
else
toastOnUi(getString(R.string.upload_book_fail))
// if (uri.isContentScheme()){
// uri.path
// }
RemoteBookWebDav.upload(uri)
}
}
}
@@ -4,12 +4,15 @@ import android.annotation.SuppressLint
import android.os.Bundle
import androidx.activity.viewModels
import androidx.recyclerview.widget.LinearLayoutManager
import io.legado.app.R
import io.legado.app.base.VMBaseActivity
import io.legado.app.databinding.ActivityRemoteBookBinding
import io.legado.app.utils.toastOnUi
import io.legado.app.utils.viewbindingdelegate.viewBinding
import kotlinx.coroutines.flow.conflate
import kotlinx.coroutines.launch
/**
@@ -28,42 +31,34 @@ class RemoteBookActivity : VMBaseActivity<ActivityRemoteBookBinding,RemoteBookVi
// initEvent()
initData()
// toastOnUi("远程书籍")
onFinally()
}
private fun initView() {
binding.recyclerView.layoutManager = LinearLayoutManager(this)
binding.recyclerView.adapter = adapter
// binding.layTop.setBackgroundColor(backgroundColor)
// binding.recyclerView.layoutManager = LinearLayoutManager(this)
// binding.recyclerView.adapter = adapter
// binding.selectActionBar.setMainActionText(R.string.add_to_shelf)
// binding.selectActionBar.inflateMenu(R.menu.import_book_sel)
// binding.selectActionBar.setOnMenuItemClickListener(this)
// binding.selectActionBar.setCallBack(this)
}
private fun initData() {
// viewModel.getRemoteBooks().observe(this, {
// adapter.submitList(it)
// })
binding.refreshProgressBar.isAutoLoading = true
viewModel.loadRemoteBookList()
launch {
viewModel.dataFlow.collect { remoteBooks ->
viewModel.dataFlow.conflate().collect { remoteBooks ->
adapter.setItems(remoteBooks)
}
binding.refreshProgressBar.isAutoLoading = false
}
// toastOnUi("1")
}
private fun onFinally() {
}
@SuppressLint("NotifyDataSetChanged")
override fun addToBookshelf(remoteBook: RemoteBook) {
viewModel.addToBookshelf(remoteBook){
toastOnUi(getString(R.string.download_book_fail))
adapter.notifyDataSetChanged()
}
}
@@ -5,12 +5,8 @@ import android.view.ViewGroup
import cn.hutool.core.date.LocalDateTimeUtil
import io.legado.app.base.adapter.ItemViewHolder
import io.legado.app.base.adapter.RecyclerAdapter
import io.legado.app.data.entities.Book
import io.legado.app.databinding.ItemRemoteBookBinding
import io.legado.app.utils.ConvertUtils
import io.legado.app.utils.FileUtils
import io.legado.app.utils.toastOnUi
import splitties.init.appCtx
/**
@@ -38,6 +34,7 @@ class RemoteBookAdapter (context: Context, val callBack: CallBack) :
payloads: MutableList<Any>
) {
binding.run {
//Todo:需要判断书籍是否已经加入书架,来改变“下载”按钮的文本,暂时还没有比较好的方案
tvName.text = item.filename.substringBeforeLast(".")
tvContentType.text = item.contentType
tvSize.text = ConvertUtils.formatFileSize(item.size)
@@ -48,9 +45,7 @@ class RemoteBookAdapter (context: Context, val callBack: CallBack) :
override fun registerListener(holder: ItemViewHolder, binding: ItemRemoteBookBinding) {
binding.btnDownload.setOnClickListener {
getItem(holder.layoutPosition)?.let {
context.toastOnUi("开始加入")
callBack.addToBookshelf(it)
context.toastOnUi("加入成功")
}
}
@@ -2,30 +2,21 @@ package io.legado.app.ui.book.remote
import android.app.Application
import android.net.Uri
import android.util.Log
import androidx.lifecycle.MutableLiveData
import io.legado.app.base.BaseViewModel
import io.legado.app.constant.PreferKey
import io.legado.app.lib.webdav.Authorization
import io.legado.app.lib.webdav.WebDav
import io.legado.app.model.localBook.LocalBook
import io.legado.app.ui.book.remote.manager.RemoteBookWebDav
import io.legado.app.utils.FileUtils
import io.legado.app.utils.externalFiles
import io.legado.app.utils.getPrefString
import kotlinx.coroutines.*
import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.flow.callbackFlow
import kotlinx.coroutines.flow.flowOn
import splitties.init.appCtx
import java.io.File
import java.nio.charset.Charset
import java.util.*
class RemoteBookViewModel(application: Application): BaseViewModel(application){
private val remoteBookFolderName = "book_remote"
private var dataCallback : DataCallback? = null
var isRemoteBookLiveData = MutableLiveData<Boolean>()
var dataFlowStart: (() -> Unit)? = null
private var authorization: Authorization? = null
val dataFlow = callbackFlow<List<RemoteBook>> {