Kaynağa Gözat

文件夹选择添加手动输入目录路径 (#5010)

* 文件夹选择添加手动输入目录路径

* 文件夹选择添加手动输入目录路径

* 文件夹选择添加手动输入目录路径-统一样式
LanRhyme 1 yıl önce
ebeveyn
işleme
b86d2cb6fe

+ 35 - 3
app/src/main/java/io/legado/app/ui/file/HandleFileActivity.kt

@@ -11,6 +11,7 @@ import io.legado.app.R
 import io.legado.app.base.VMBaseActivity
 import io.legado.app.base.VMBaseActivity
 import io.legado.app.constant.AppLog
 import io.legado.app.constant.AppLog
 import io.legado.app.databinding.ActivityTranslucenceBinding
 import io.legado.app.databinding.ActivityTranslucenceBinding
+import io.legado.app.databinding.DialogEditTextBinding
 import io.legado.app.help.IntentData
 import io.legado.app.help.IntentData
 import io.legado.app.lib.dialogs.SelectItem
 import io.legado.app.lib.dialogs.SelectItem
 import io.legado.app.lib.dialogs.alert
 import io.legado.app.lib.dialogs.alert
@@ -140,6 +141,10 @@ class HandleFileActivity :
                         }
                         }
                     }
                     }
 
 
+                    112 -> { // 手动输入目录路径
+                        showInputDirectoryDialog()
+                    }
+
                     else -> {
                     else -> {
                         val path = item.title
                         val path = item.title
                         val uri = if (path.isContentScheme()) {
                         val uri = if (path.isContentScheme()) {
@@ -157,6 +162,30 @@ class HandleFileActivity :
         }
         }
     }
     }
 
 
+    private fun showInputDirectoryDialog() {
+        val alertBinding = DialogEditTextBinding.inflate(layoutInflater).apply {
+            editView.hint = getString(R.string.enter_directory_path)
+        }
+
+        alert(getString(R.string.manual_input)) {
+            customView { alertBinding.root }
+            okButton {
+                val inputPath = alertBinding.editView.text.toString()
+                if (inputPath.isNotBlank()) {
+                    val file = File(inputPath)
+                    if (file.exists() && file.isDirectory && file.canRead()) {
+                        onResult(Intent().setData(Uri.fromFile(file)))
+                    } else {
+                        toastOnUi(getString(R.string.invalid_directory))
+                    }
+                } else {
+                    toastOnUi(getString(R.string.empty_directory_input))
+                }
+            }
+            cancelButton()
+        }
+    }
+
     private fun getFileData(): Triple<String, Any, String>? {
     private fun getFileData(): Triple<String, Any, String>? {
         val fileName = intent.getStringExtra("fileName")
         val fileName = intent.getStringExtra("fileName")
         val file = intent.getStringExtra("fileKey")?.let {
         val file = intent.getStringExtra("fileKey")?.let {
@@ -171,11 +200,15 @@ class HandleFileActivity :
 
 
     private fun getDirActions(onlySys: Boolean = false): ArrayList<SelectItem<Int>> {
     private fun getDirActions(onlySys: Boolean = false): ArrayList<SelectItem<Int>> {
         return if (onlySys) {
         return if (onlySys) {
-            arrayListOf(SelectItem(getString(R.string.sys_folder_picker), HandleFileContract.DIR))
+            arrayListOf(
+                SelectItem(getString(R.string.sys_folder_picker), HandleFileContract.DIR),
+                SelectItem(getString(R.string.manual_input), 112) // 添加手动输入选项
+            )
         } else {
         } else {
             arrayListOf(
             arrayListOf(
                 SelectItem(getString(R.string.sys_folder_picker), HandleFileContract.DIR),
                 SelectItem(getString(R.string.sys_folder_picker), HandleFileContract.DIR),
-                SelectItem(getString(R.string.app_folder_picker), 10)
+                SelectItem(getString(R.string.app_folder_picker), 10),
+                SelectItem(getString(R.string.manual_input), 112) // 添加手动输入选项
             )
             )
         }
         }
     }
     }
@@ -243,5 +276,4 @@ class HandleFileActivity :
             finish()
             finish()
         }
         }
     }
     }
-
 }
 }

+ 5 - 0
app/src/main/res/values-es-rES/strings.xml

@@ -25,6 +25,11 @@
     <string name="dialog_setting">Ir a Ajustes</string>
     <string name="dialog_setting">Ir a Ajustes</string>
     <string name="tip_cannot_jump_setting_page">No se puede ir a los ajustes.</string>
     <string name="tip_cannot_jump_setting_page">No se puede ir a los ajustes.</string>
 
 
+    <string name="manual_input">Entrada manual</string>
+    <string name="enter_directory_path">Introduzca la ruta del directorio</string>
+    <string name="invalid_directory">Ruta de directorio no válida</string>
+    <string name="empty_directory_input">La ruta del directorio no puede estar vacía</string>
+
     <string name="dynamic_click_retry">Reintentar</string>
     <string name="dynamic_click_retry">Reintentar</string>
     <string name="dynamic_loading">Cargando</string>
     <string name="dynamic_loading">Cargando</string>
     <string name="draw">Advertencia</string>
     <string name="draw">Advertencia</string>

+ 5 - 0
app/src/main/res/values-ja-rJP/strings.xml

@@ -25,6 +25,11 @@
     <string name="dialog_setting">Go to Settings</string>
     <string name="dialog_setting">Go to Settings</string>
     <string name="tip_cannot_jump_setting_page">Cannot jump to Settings.</string>
     <string name="tip_cannot_jump_setting_page">Cannot jump to Settings.</string>
 
 
+    <string name="manual_input">Manual Input</string>
+    <string name="enter_directory_path">Enter directory path</string>
+    <string name="invalid_directory">Invalid directory path</string>
+    <string name="empty_directory_input">Directory path cannot be empty</string>
+
     <string name="dynamic_click_retry">Retry</string>
     <string name="dynamic_click_retry">Retry</string>
     <string name="dynamic_loading">Loading</string>
     <string name="dynamic_loading">Loading</string>
     <string name="draw">Warning</string>
     <string name="draw">Warning</string>

+ 5 - 0
app/src/main/res/values-pt-rBR/strings.xml

@@ -25,6 +25,11 @@
     <string name="dialog_setting">Vá até às Configurações</string>
     <string name="dialog_setting">Vá até às Configurações</string>
     <string name="tip_cannot_jump_setting_page">Não foi possível abrir Configurações.</string>
     <string name="tip_cannot_jump_setting_page">Não foi possível abrir Configurações.</string>
 
 
+    <string name="manual_input">Entrada manual</string>
+    <string name="enter_directory_path">Digite o caminho do diretório</string>
+    <string name="invalid_directory">Caminho do diretório inválido</string>
+    <string name="empty_directory_input">O caminho do diretório não pode estar vazio</string>
+
     <string name="dynamic_click_retry">Tentar novamente</string>
     <string name="dynamic_click_retry">Tentar novamente</string>
     <string name="dynamic_loading">Carregando</string>
     <string name="dynamic_loading">Carregando</string>
     <string name="draw">Aviso</string>
     <string name="draw">Aviso</string>

+ 5 - 0
app/src/main/res/values-vi/strings.xml

@@ -24,6 +24,11 @@
     <string name="dialog_setting">Đi tới cài đặt</string>
     <string name="dialog_setting">Đi tới cài đặt</string>
     <string name="tip_cannot_jump_setting_page">Không thể chuyển đến cài đặt.</string>
     <string name="tip_cannot_jump_setting_page">Không thể chuyển đến cài đặt.</string>
 
 
+    <string name="manual_input">Nhập thủ công</string>
+    <string name="enter_directory_path">Nhập đường dẫn thư mục</string>
+    <string name="invalid_directory">Đường dẫn thư mục không hợp lệ</string>
+    <string name="empty_directory_input">Đường dẫn thư mục không được để trống</string>
+
     <string name="dynamic_click_retry">Thử lại</string>
     <string name="dynamic_click_retry">Thử lại</string>
     <string name="dynamic_loading">Đang tải</string>
     <string name="dynamic_loading">Đang tải</string>
     <string name="draw">Cảnh báo</string>
     <string name="draw">Cảnh báo</string>

+ 5 - 0
app/src/main/res/values-zh/strings.xml

@@ -24,6 +24,11 @@
     <string name="dialog_setting">去设置</string>
     <string name="dialog_setting">去设置</string>
     <string name="tip_cannot_jump_setting_page">无法跳转至设置界面</string>
     <string name="tip_cannot_jump_setting_page">无法跳转至设置界面</string>
 
 
+    <string name="manual_input">手动输入</string>
+    <string name="enter_directory_path">请输入目录路径</string>
+    <string name="invalid_directory">目录路径无效</string>
+    <string name="empty_directory_input">目录路径不能为空</string>
+
     <string name="dynamic_click_retry">点击重试</string>
     <string name="dynamic_click_retry">点击重试</string>
     <string name="dynamic_loading">正在加载</string>
     <string name="dynamic_loading">正在加载</string>
     <string name="draw">提醒</string>
     <string name="draw">提醒</string>

+ 5 - 0
app/src/main/res/values/strings.xml

@@ -25,6 +25,11 @@
     <string name="dialog_setting">Go to Settings</string>
     <string name="dialog_setting">Go to Settings</string>
     <string name="tip_cannot_jump_setting_page">Cannot jump to Settings.</string>
     <string name="tip_cannot_jump_setting_page">Cannot jump to Settings.</string>
 
 
+    <string name="manual_input">Manual Input</string>
+    <string name="enter_directory_path">Enter directory path</string>
+    <string name="invalid_directory">Invalid directory path</string>
+    <string name="empty_directory_input">Directory path cannot be empty</string>
+
     <string name="dynamic_click_retry">Retry</string>
     <string name="dynamic_click_retry">Retry</string>
     <string name="dynamic_loading">Loading</string>
     <string name="dynamic_loading">Loading</string>
     <string name="draw">Warning</string>
     <string name="draw">Warning</string>