This commit is contained in:
gedoor 2021-10-23 21:05:10 +08:00
parent f37a9ad879
commit 03287e563f
3 changed files with 17 additions and 20 deletions

View File

@ -215,7 +215,7 @@ class ImportBookActivity : VMBaseActivity<ActivityImportBookBinding, ImportBookV
val docList = DocumentUtils.listFiles(path) {
when {
it.name.startsWith(".") -> false
it.isDirectory -> true
it.isDir -> true
else -> it.name.matches(bookFileRegex)
}
}

View File

@ -22,7 +22,6 @@ import io.legado.app.utils.*
import io.legado.app.utils.viewbindingdelegate.viewBinding
import kotlinx.coroutines.Dispatchers.Main
import kotlinx.coroutines.launch
import splitties.init.appCtx
import java.io.File
import java.util.*
import kotlin.collections.ArrayList
@ -31,9 +30,6 @@ class FontSelectDialog : BaseDialogFragment(R.layout.dialog_font_select),
Toolbar.OnMenuItemClickListener,
FontAdapter.CallBack {
private val fontRegex = Regex("(?i).*\\.[ot]tf")
private val fontFolder by lazy {
FileUtils.createFolderIfNotExist(appCtx.filesDir, "Fonts")
}
private val binding by viewBinding(DialogFontSelectBinding::bind)
private val adapter by lazy {
val curFontPath = callBack?.curFontPath ?: ""
@ -188,7 +184,6 @@ class FontSelectDialog : BaseDialogFragment(R.layout.dialog_font_select),
override fun onClick(docItem: FileDoc) {
execute {
FileUtils.deleteFile(fontFolder.absolutePath)
callBack?.selectFont(docItem.uri.toString())
}.onSuccess {
dismissAllowingStateLoss()

View File

@ -96,6 +96,9 @@ object DocumentUtils {
@Throws(Exception::class)
fun listFiles(uri: Uri, filter: ((file: FileDoc) -> Boolean)? = null): ArrayList<FileDoc> {
if (!uri.isContentScheme()) {
return listFiles(uri.path!!, filter)
}
val docList = arrayListOf<FileDoc>()
var cursor: Cursor? = null
try {
@ -139,23 +142,22 @@ object DocumentUtils {
}
@Throws(Exception::class)
fun listFiles(path: String, filter: ((file: File) -> Boolean)? = null): ArrayList<FileDoc> {
val docItems = arrayListOf<FileDoc>()
fun listFiles(path: String, filter: ((file: FileDoc) -> Boolean)? = null): ArrayList<FileDoc> {
val docList = arrayListOf<FileDoc>()
val file = File(path)
file.listFiles { pathName ->
filter?.invoke(pathName) ?: true
}?.forEach {
docItems.add(
FileDoc(
it.name,
it.isDirectory,
it.length(),
Date(it.lastModified()),
Uri.parse(it.absolutePath)
)
file.listFiles()?.forEach {
val item = FileDoc(
it.name,
it.isDirectory,
it.length(),
Date(it.lastModified()),
Uri.parse(it.absolutePath)
)
if (filter == null || filter.invoke(item)) {
docList.add(item)
}
}
return docItems
return docList
}
}