mirror of
https://github.com/gedoor/legado.git
synced 2025-08-10 00:52:30 +00:00
优化
This commit is contained in:
@@ -24,6 +24,9 @@ import kotlinx.coroutines.Dispatchers.Main
|
||||
import kotlinx.coroutines.launch
|
||||
import java.io.File
|
||||
|
||||
/**
|
||||
* 字体选择对话框
|
||||
*/
|
||||
class FontSelectDialog : BaseDialogFragment(R.layout.dialog_font_select),
|
||||
Toolbar.OnMenuItemClickListener,
|
||||
FontAdapter.CallBack {
|
||||
@@ -35,11 +38,11 @@ class FontSelectDialog : BaseDialogFragment(R.layout.dialog_font_select),
|
||||
}
|
||||
private val selectFontDir = registerForActivityResult(HandleFileContract()) {
|
||||
it.uri?.let { uri ->
|
||||
if (uri.toString().isContentScheme()) {
|
||||
if (uri.isContentScheme()) {
|
||||
putPrefString(PreferKey.fontFolder, uri.toString())
|
||||
val doc = DocumentFile.fromTreeUri(requireContext(), uri)
|
||||
if (doc != null) {
|
||||
loadFontFiles(doc)
|
||||
loadFontFiles(FileDoc.fromDocumentFile(doc))
|
||||
} else {
|
||||
RealPathUtil.getPath(requireContext(), uri)?.let { path ->
|
||||
loadFontFilesByPermission(path)
|
||||
@@ -75,7 +78,7 @@ class FontSelectDialog : BaseDialogFragment(R.layout.dialog_font_select),
|
||||
if (fontPath.isContentScheme()) {
|
||||
val doc = DocumentFile.fromTreeUri(requireContext(), Uri.parse(fontPath))
|
||||
if (doc?.canRead() == true) {
|
||||
loadFontFiles(doc)
|
||||
loadFontFiles(FileDoc.fromDocumentFile(doc))
|
||||
} else {
|
||||
openFolder()
|
||||
}
|
||||
@@ -122,35 +125,24 @@ class FontSelectDialog : BaseDialogFragment(R.layout.dialog_font_select),
|
||||
}
|
||||
}
|
||||
|
||||
private fun loadFontFiles(doc: DocumentFile) {
|
||||
execute {
|
||||
val fontItems = doc.listFileDocs {
|
||||
it.name.matches(fontRegex)
|
||||
}!!
|
||||
mergeFontItems(fontItems, getLocalFonts())
|
||||
}.onSuccess {
|
||||
adapter.setItems(it)
|
||||
}.onError {
|
||||
toastOnUi("getFontFiles:${it.localizedMessage}")
|
||||
}
|
||||
}
|
||||
|
||||
private fun loadFontFilesByPermission(path: String) {
|
||||
PermissionsCompat.Builder(this@FontSelectDialog)
|
||||
.addPermissions(*Permissions.Group.STORAGE)
|
||||
.rationale(R.string.tip_perm_request_storage)
|
||||
.onGranted {
|
||||
loadFontFiles(path)
|
||||
loadFontFiles(
|
||||
FileDoc.fromFile(File(path))
|
||||
)
|
||||
}
|
||||
.request()
|
||||
}
|
||||
|
||||
private fun loadFontFiles(path: String) {
|
||||
private fun loadFontFiles(fileDoc: FileDoc) {
|
||||
execute {
|
||||
val fontItems = File(path).listFileDocs {
|
||||
val fontItems = fileDoc.list {
|
||||
it.name.matches(fontRegex)
|
||||
}
|
||||
mergeFontItems(fontItems, getLocalFonts())
|
||||
mergeFontItems(fontItems!!, getLocalFonts())
|
||||
}.onSuccess {
|
||||
adapter.setItems(it)
|
||||
}.onError {
|
||||
|
||||
Reference in New Issue
Block a user