|
|
|
@ -2,6 +2,7 @@ package io.legado.app.ui.book.local |
|
|
|
|
|
|
|
|
|
import android.content.Context |
|
|
|
|
import android.net.Uri |
|
|
|
|
import android.view.ViewGroup |
|
|
|
|
import io.legado.app.R |
|
|
|
|
import io.legado.app.base.adapter.ItemViewHolder |
|
|
|
|
import io.legado.app.base.adapter.SimpleRecyclerAdapter |
|
|
|
@ -17,6 +18,64 @@ class ImportBookAdapter(context: Context, val callBack: CallBack) : |
|
|
|
|
var checkableCount = 0 |
|
|
|
|
private var bookFileNames = arrayListOf<String>() |
|
|
|
|
|
|
|
|
|
override fun getViewBinding(parent: ViewGroup): ItemImportBookBinding { |
|
|
|
|
return ItemImportBookBinding.inflate(inflater, parent, false) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun convert( |
|
|
|
|
holder: ItemViewHolder, |
|
|
|
|
binding: ItemImportBookBinding, |
|
|
|
|
item: DocItem, |
|
|
|
|
payloads: MutableList<Any> |
|
|
|
|
) { |
|
|
|
|
with(binding) { |
|
|
|
|
if (payloads.isEmpty()) { |
|
|
|
|
if (item.isDir) { |
|
|
|
|
ivIcon.setImageResource(R.drawable.ic_folder) |
|
|
|
|
ivIcon.visible() |
|
|
|
|
cbSelect.invisible() |
|
|
|
|
llBrief.gone() |
|
|
|
|
cbSelect.isChecked = false |
|
|
|
|
} else { |
|
|
|
|
if (bookFileNames.contains(item.name)) { |
|
|
|
|
ivIcon.setImageResource(R.drawable.ic_book_has) |
|
|
|
|
ivIcon.visible() |
|
|
|
|
cbSelect.invisible() |
|
|
|
|
} else { |
|
|
|
|
ivIcon.invisible() |
|
|
|
|
cbSelect.visible() |
|
|
|
|
} |
|
|
|
|
llBrief.visible() |
|
|
|
|
tvTag.text = item.name.substringAfterLast(".") |
|
|
|
|
tvSize.text = StringUtils.toSize(item.size) |
|
|
|
|
tvDate.text = AppConst.dateFormat.format(item.date) |
|
|
|
|
cbSelect.isChecked = selectedUris.contains(item.uri.toString()) |
|
|
|
|
} |
|
|
|
|
tvName.text = item.name |
|
|
|
|
} else { |
|
|
|
|
cbSelect.isChecked = selectedUris.contains(item.uri.toString()) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun registerListener(holder: ItemViewHolder, binding: ItemImportBookBinding) { |
|
|
|
|
holder.itemView.onClick { |
|
|
|
|
getItem(holder.layoutPosition)?.let { |
|
|
|
|
if (it.isDir) { |
|
|
|
|
callBack.nextDoc(it.uri) |
|
|
|
|
} else if (!bookFileNames.contains(it.name)) { |
|
|
|
|
if (!selectedUris.contains(it.uri.toString())) { |
|
|
|
|
selectedUris.add(it.uri.toString()) |
|
|
|
|
} else { |
|
|
|
|
selectedUris.remove(it.uri.toString()) |
|
|
|
|
} |
|
|
|
|
notifyItemChanged(holder.layoutPosition, true) |
|
|
|
|
callBack.upCountView() |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fun upBookHas(bookUrls: List<String>) { |
|
|
|
|
bookFileNames.clear() |
|
|
|
|
bookUrls.forEach { |
|
|
|
@ -77,60 +136,6 @@ class ImportBookAdapter(context: Context, val callBack: CallBack) : |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun convert( |
|
|
|
|
holder: ItemViewHolder, |
|
|
|
|
binding: ItemImportBookBinding, |
|
|
|
|
item: DocItem, |
|
|
|
|
payloads: MutableList<Any> |
|
|
|
|
) { |
|
|
|
|
with(binding) { |
|
|
|
|
if (payloads.isEmpty()) { |
|
|
|
|
if (item.isDir) { |
|
|
|
|
ivIcon.setImageResource(R.drawable.ic_folder) |
|
|
|
|
ivIcon.visible() |
|
|
|
|
cbSelect.invisible() |
|
|
|
|
llBrief.gone() |
|
|
|
|
cbSelect.isChecked = false |
|
|
|
|
} else { |
|
|
|
|
if (bookFileNames.contains(item.name)) { |
|
|
|
|
ivIcon.setImageResource(R.drawable.ic_book_has) |
|
|
|
|
ivIcon.visible() |
|
|
|
|
cbSelect.invisible() |
|
|
|
|
} else { |
|
|
|
|
ivIcon.invisible() |
|
|
|
|
cbSelect.visible() |
|
|
|
|
} |
|
|
|
|
llBrief.visible() |
|
|
|
|
tvTag.text = item.name.substringAfterLast(".") |
|
|
|
|
tvSize.text = StringUtils.toSize(item.size) |
|
|
|
|
tvDate.text = AppConst.dateFormat.format(item.date) |
|
|
|
|
cbSelect.isChecked = selectedUris.contains(item.uri.toString()) |
|
|
|
|
} |
|
|
|
|
tvName.text = item.name |
|
|
|
|
} else { |
|
|
|
|
cbSelect.isChecked = selectedUris.contains(item.uri.toString()) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun registerListener(holder: ItemViewHolder, binding: ItemImportBookBinding) { |
|
|
|
|
holder.itemView.onClick { |
|
|
|
|
getItem(holder.layoutPosition)?.let { |
|
|
|
|
if (it.isDir) { |
|
|
|
|
callBack.nextDoc(it.uri) |
|
|
|
|
} else if (!bookFileNames.contains(it.name)) { |
|
|
|
|
if (!selectedUris.contains(it.uri.toString())) { |
|
|
|
|
selectedUris.add(it.uri.toString()) |
|
|
|
|
} else { |
|
|
|
|
selectedUris.remove(it.uri.toString()) |
|
|
|
|
} |
|
|
|
|
notifyItemChanged(holder.layoutPosition, true) |
|
|
|
|
callBack.upCountView() |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
interface CallBack { |
|
|
|
|
fun nextDoc(uri: Uri) |
|
|
|
|
fun upCountView() |
|
|
|
|