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

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

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

* 文件夹选择添加手动输入目录路径-统一样式
This commit is contained in:
LanRhyme
2025-05-01 11:02:19 +08:00
committed by GitHub
parent bc67256ac0
commit b86d2cb6fe
7 changed files with 65 additions and 3 deletions
@@ -11,6 +11,7 @@ import io.legado.app.R
import io.legado.app.base.VMBaseActivity
import io.legado.app.constant.AppLog
import io.legado.app.databinding.ActivityTranslucenceBinding
import io.legado.app.databinding.DialogEditTextBinding
import io.legado.app.help.IntentData
import io.legado.app.lib.dialogs.SelectItem
import io.legado.app.lib.dialogs.alert
@@ -140,6 +141,10 @@ class HandleFileActivity :
}
}
112 -> { // 手动输入目录路径
showInputDirectoryDialog()
}
else -> {
val path = item.title
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>? {
val fileName = intent.getStringExtra("fileName")
val file = intent.getStringExtra("fileKey")?.let {
@@ -171,11 +200,15 @@ class HandleFileActivity :
private fun getDirActions(onlySys: Boolean = false): ArrayList<SelectItem<Int>> {
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 {
arrayListOf(
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()
}
}
}