优化
This commit is contained in:
@@ -46,22 +46,19 @@ class ImportBookActivity : BaseImportBookActivity<ActivityImportBookBinding, Imp
|
|||||||
|
|
||||||
private val selectFolder = registerForActivityResult(HandleFileContract()) {
|
private val selectFolder = registerForActivityResult(HandleFileContract()) {
|
||||||
it.uri?.let { uri ->
|
it.uri?.let { uri ->
|
||||||
if (uri.isContentScheme()) {
|
|
||||||
AppConfig.importBookPath = uri.toString()
|
AppConfig.importBookPath = uri.toString()
|
||||||
initRootDoc(true)
|
initRootDoc(true)
|
||||||
} else {
|
|
||||||
AppConfig.importBookPath = uri.path
|
|
||||||
initRootDoc(true)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
binding.titleBar.setTitle(R.string.book_local)
|
binding.titleBar.setTitle(R.string.book_local)
|
||||||
launch {
|
launch {
|
||||||
setBookStorage()
|
|
||||||
initView()
|
initView()
|
||||||
initEvent()
|
initEvent()
|
||||||
|
if (setBookStorage() && AppConfig.importBookPath.isNullOrBlank()) {
|
||||||
|
AppConfig.importBookPath = AppConfig.defaultBookTreeUri
|
||||||
|
}
|
||||||
initData()
|
initData()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -150,15 +147,21 @@ class ImportBookActivity : BaseImportBookActivity<ActivityImportBookBinding, Imp
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun initRootDoc(changedFolder: Boolean = false) {
|
private fun initRootDoc(changedFolder: Boolean = false) {
|
||||||
|
if (viewModel.rootDoc != null && !changedFolder) {
|
||||||
|
upPath()
|
||||||
|
} else {
|
||||||
val lastPath = AppConfig.importBookPath
|
val lastPath = AppConfig.importBookPath
|
||||||
when {
|
if (lastPath.isNullOrBlank()) {
|
||||||
viewModel.rootDoc != null && !changedFolder -> upPath()
|
|
||||||
lastPath.isNullOrEmpty() -> {
|
|
||||||
binding.tvEmptyMsg.visible()
|
binding.tvEmptyMsg.visible()
|
||||||
selectFolder.launch()
|
selectFolder.launch()
|
||||||
|
} else {
|
||||||
|
val rootUri = if (lastPath.isUri()) {
|
||||||
|
Uri.parse(lastPath)
|
||||||
|
} else {
|
||||||
|
Uri.fromFile(File(lastPath))
|
||||||
}
|
}
|
||||||
lastPath.isContentScheme() -> {
|
when {
|
||||||
val rootUri = Uri.parse(lastPath)
|
rootUri.isContentScheme() -> {
|
||||||
kotlin.runCatching {
|
kotlin.runCatching {
|
||||||
val doc = DocumentFile.fromTreeUri(this, rootUri)
|
val doc = DocumentFile.fromTreeUri(this, rootUri)
|
||||||
if (doc == null || doc.name.isNullOrEmpty()) {
|
if (doc == null || doc.name.isNullOrEmpty()) {
|
||||||
@@ -178,7 +181,9 @@ class ImportBookActivity : BaseImportBookActivity<ActivityImportBookBinding, Imp
|
|||||||
binding.tvEmptyMsg.visible()
|
binding.tvEmptyMsg.visible()
|
||||||
selectFolder.launch()
|
selectFolder.launch()
|
||||||
}
|
}
|
||||||
else -> initRootPath(lastPath)
|
else -> initRootPath(rootUri.path!!)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,9 +17,7 @@ fun String?.isContentScheme(): Boolean = this?.startsWith("content://") == true
|
|||||||
fun String.toEditable(): Editable = Editable.Factory.getInstance().newEditable(this)
|
fun String.toEditable(): Editable = Editable.Factory.getInstance().newEditable(this)
|
||||||
|
|
||||||
fun String.parseToUri(): Uri {
|
fun String.parseToUri(): Uri {
|
||||||
return if (isContentScheme()) {
|
return if (isUri()) Uri.parse(this) else {
|
||||||
Uri.parse(this)
|
|
||||||
} else {
|
|
||||||
Uri.fromFile(File(this))
|
Uri.fromFile(File(this))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user