kunfei %!s(int64=4) %!d(string=hai) anos
pai
achega
ca6bfe68db
Modificáronse 1 ficheiros con 12 adicións e 20 borrados
  1. 12 20
      app/src/main/java/io/legado/app/ui/font/FontSelectDialog.kt

+ 12 - 20
app/src/main/java/io/legado/app/ui/font/FontSelectDialog.kt

@@ -24,6 +24,9 @@ import kotlinx.coroutines.Dispatchers.Main
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.launch
 import java.io.File
 import java.io.File
 
 
+/**
+ * 字体选择对话框
+ */
 class FontSelectDialog : BaseDialogFragment(R.layout.dialog_font_select),
 class FontSelectDialog : BaseDialogFragment(R.layout.dialog_font_select),
     Toolbar.OnMenuItemClickListener,
     Toolbar.OnMenuItemClickListener,
     FontAdapter.CallBack {
     FontAdapter.CallBack {
@@ -35,11 +38,11 @@ class FontSelectDialog : BaseDialogFragment(R.layout.dialog_font_select),
     }
     }
     private val selectFontDir = registerForActivityResult(HandleFileContract()) {
     private val selectFontDir = registerForActivityResult(HandleFileContract()) {
         it.uri?.let { uri ->
         it.uri?.let { uri ->
-            if (uri.toString().isContentScheme()) {
+            if (uri.isContentScheme()) {
                 putPrefString(PreferKey.fontFolder, uri.toString())
                 putPrefString(PreferKey.fontFolder, uri.toString())
                 val doc = DocumentFile.fromTreeUri(requireContext(), uri)
                 val doc = DocumentFile.fromTreeUri(requireContext(), uri)
                 if (doc != null) {
                 if (doc != null) {
-                    loadFontFiles(doc)
+                    loadFontFiles(FileDoc.fromDocumentFile(doc))
                 } else {
                 } else {
                     RealPathUtil.getPath(requireContext(), uri)?.let { path ->
                     RealPathUtil.getPath(requireContext(), uri)?.let { path ->
                         loadFontFilesByPermission(path)
                         loadFontFilesByPermission(path)
@@ -75,7 +78,7 @@ class FontSelectDialog : BaseDialogFragment(R.layout.dialog_font_select),
             if (fontPath.isContentScheme()) {
             if (fontPath.isContentScheme()) {
                 val doc = DocumentFile.fromTreeUri(requireContext(), Uri.parse(fontPath))
                 val doc = DocumentFile.fromTreeUri(requireContext(), Uri.parse(fontPath))
                 if (doc?.canRead() == true) {
                 if (doc?.canRead() == true) {
-                    loadFontFiles(doc)
+                    loadFontFiles(FileDoc.fromDocumentFile(doc))
                 } else {
                 } else {
                     openFolder()
                     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) {
     private fun loadFontFilesByPermission(path: String) {
         PermissionsCompat.Builder(this@FontSelectDialog)
         PermissionsCompat.Builder(this@FontSelectDialog)
             .addPermissions(*Permissions.Group.STORAGE)
             .addPermissions(*Permissions.Group.STORAGE)
             .rationale(R.string.tip_perm_request_storage)
             .rationale(R.string.tip_perm_request_storage)
             .onGranted {
             .onGranted {
-                loadFontFiles(path)
+                loadFontFiles(
+                    FileDoc.fromFile(File(path))
+                )
             }
             }
             .request()
             .request()
     }
     }
 
 
-    private fun loadFontFiles(path: String) {
+    private fun loadFontFiles(fileDoc: FileDoc) {
         execute {
         execute {
-            val fontItems = File(path).listFileDocs {
+            val fontItems = fileDoc.list {
                 it.name.matches(fontRegex)
                 it.name.matches(fontRegex)
             }
             }
-            mergeFontItems(fontItems, getLocalFonts())
+            mergeFontItems(fontItems!!, getLocalFonts())
         }.onSuccess {
         }.onSuccess {
             adapter.setItems(it)
             adapter.setItems(it)
         }.onError {
         }.onError {