feat: add prompt when open local book

pull/1864/head
Xwite 3 years ago
parent cc5bdd151c
commit ed459f19d4
  1. 50
      app/src/main/java/io/legado/app/ui/association/FileAssociationActivity.kt
  2. 14
      app/src/main/java/io/legado/app/ui/association/FileAssociationViewModel.kt
  3. 1
      app/src/main/res/values-es-rES/strings.xml
  4. 1
      app/src/main/res/values-ja-rJP/strings.xml
  5. 1
      app/src/main/res/values-pt-rBR/strings.xml
  6. 1
      app/src/main/res/values-zh-rHK/strings.xml
  7. 1
      app/src/main/res/values-zh-rTW/strings.xml
  8. 1
      app/src/main/res/values-zh/strings.xml
  9. 3
      app/src/main/res/values/strings.xml

@ -44,24 +44,21 @@ class FileAssociationActivity :
override fun onActivityCreated(savedInstanceState: Bundle?) {
binding.rotateLoading.show()
viewModel.importBookLiveData.observe(this) { uri ->
if (uri.isContentScheme()) {
val treeUriStr = AppConfig.defaultBookTreeUri
if (treeUriStr.isNullOrEmpty()) {
localBookTreeSelect.launch {
title = "选择保存书籍的文件夹"
mode = HandleFileContract.DIR_SYS
viewModel.importBookLiveData.observe(this) {
val uri = it.first
val extraMessage = it.second
if (extraMessage == null) {
importBook(uri)
} else {
binding.rotateLoading.hide()
alert(title = getString(R.string.draw), message = extraMessage) {
okButton {
importBook(uri)
}
cancelButton {
finish()
}
} else {
importBook(Uri.parse(treeUriStr), uri)
}
} else {
PermissionsCompat.Builder(this)
.addPermissions(*Permissions.Group.STORAGE)
.rationale(R.string.tip_perm_request_storage)
.onGranted {
viewModel.importBook(uri)
}.request()
}
}
viewModel.onLineImportLive.observe(this) {
@ -161,4 +158,25 @@ class FileAssociationActivity :
}
}
private fun importBook(uri: Uri) {
if (uri.isContentScheme()) {
val treeUriStr = AppConfig.defaultBookTreeUri
if (treeUriStr.isNullOrEmpty()) {
localBookTreeSelect.launch {
title = "选择保存书籍的文件夹"
mode = HandleFileContract.DIR_SYS
}
} else {
importBook(Uri.parse(treeUriStr), uri)
}
} else {
PermissionsCompat.Builder(this)
.addPermissions(*Permissions.Group.STORAGE)
.rationale(R.string.tip_perm_request_storage)
.onGranted {
viewModel.importBook(uri)
}.request()
}
}
}

@ -4,6 +4,7 @@ import android.app.Application
import android.net.Uri
import androidx.documentfile.provider.DocumentFile
import androidx.lifecycle.MutableLiveData
import io.legado.app.R
import io.legado.app.constant.AppPattern.bookFileRegex
import io.legado.app.exception.NoStackTraceException
import io.legado.app.model.localBook.LocalBook
@ -11,9 +12,11 @@ import io.legado.app.utils.isJson
import io.legado.app.utils.printOnDebug
import io.legado.app.utils.readText
import java.io.File
import splitties.init.appCtx
class FileAssociationViewModel(application: Application) : BaseAssociationViewModel(application) {
val importBookLiveData = MutableLiveData<Uri>()
val importBookLiveData = MutableLiveData<Pair<Uri, String?>>()
val onLineImportLive = MutableLiveData<Uri>()
val importBookSourceLive = MutableLiveData<String>()
val importRssSourceLive = MutableLiveData<String>()
@ -53,14 +56,15 @@ class FileAssociationViewModel(application: Application) : BaseAssociationViewMo
importTextTocRule(content, finally)
content.contains("name") && content.contains("url") ->
importHttpTTS(content, finally)
else -> errorLiveData.postValue("格式不对")
else -> errorLiveData.postValue(appCtx.getString(R.string.wrong_format))
}
}
fileName.matches(bookFileRegex) -> {
importBookLiveData.postValue(uri)
!fileName.matches(bookFileRegex) -> {
val extraMessage = appCtx.getString(R.string.file_not_supported, fileName)
importBookLiveData.postValue(Pai(uri, extraMessage))
}
else -> {
throw NoStackTraceException("$fileName 暂未支持的本地书籍格式(TXT/UMD/EPUB)")
importBookLiveData.postValue(Pair(uri, null))
}
}
} else {

@ -974,5 +974,6 @@
<string name="input_verification_code">输入验证码</string>
<string name="verification_code">验证码</string>
<string name="timeout_millisecond">超时毫秒数</string>
<string name="file_not_supported">Continue to open although %1$s is not supported ?</string>
<!-- string end -->
</resources>

@ -977,5 +977,6 @@
<string name="input_verification_code">输入验证码</string>
<string name="verification_code">验证码</string>
<string name="timeout_millisecond">超时毫秒数</string>
<string name="file_not_supported">Continue to open although %1$s is not supported ?</string>
<!-- string end -->
</resources>

@ -977,5 +977,6 @@
<string name="input_verification_code">输入验证码</string>
<string name="verification_code">验证码</string>
<string name="timeout_millisecond">超时毫秒数</string>
<string name="file_not_supported">Continue to open although %1$s is not supported ?</string>
<!-- string end -->
</resources>

@ -974,5 +974,6 @@
<string name="input_verification_code">输入验证码</string>
<string name="verification_code">验证码</string>
<string name="timeout_millisecond">超时毫秒数</string>
<string name="file_not_supported">文件%1$s 不受支持,是否继续打开?</string>
<!-- string end -->
</resources>

@ -976,5 +976,6 @@
<string name="input_verification_code">输入验证码</string>
<string name="verification_code">验证码</string>
<string name="timeout_millisecond">超时毫秒数</string>
<string name="file_not_supported">文件%1$s 不受支持,是否继续打开?</string>
<!-- string end -->
</resources>

@ -976,5 +976,6 @@
<string name="input_verification_code">输入验证码</string>
<string name="verification_code">验证码</string>
<string name="timeout_millisecond">超时毫秒数</string>
<string name="file_not_supported">文件%1$s 不受支持,是否继续打开?</string>
<!-- string end -->
</resources>

@ -977,7 +977,6 @@
<string name="input_verification_code">输入验证码</string>
<string name="verification_code">验证码</string>
<string name="timeout_millisecond">超时毫秒数</string>
<string name="file_not_supported">Continue to open although %1$s is not supported ?</string>
<!-- string end -->
</resources>

Loading…
Cancel
Save