pull/1463/head^2
gedoor 4 years ago
parent 615946852c
commit 0d3ef30fa5
  1. 12
      app/src/main/java/io/legado/app/ui/book/local/ImportBookActivity.kt
  2. 8
      app/src/main/java/io/legado/app/ui/document/HandleFileContract.kt
  3. 4
      app/src/main/java/io/legado/app/ui/qrcode/QrCodeResult.kt
  4. 12
      app/src/main/java/io/legado/app/utils/ActivityResultContracts.kt

@ -72,7 +72,7 @@ class ImportBookActivity : VMBaseActivity<ActivityImportBookBinding, ImportBookV
override fun onCompatOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.menu_select_folder -> selectFolder.launch {}
R.id.menu_select_folder -> selectFolder.launch(null)
R.id.menu_scan_folder -> scanFolder()
R.id.menu_import_file_name -> alertImportFileName()
}
@ -133,7 +133,7 @@ class ImportBookActivity : VMBaseActivity<ActivityImportBookBinding, ImportBookV
when {
lastPath.isNullOrEmpty() -> {
binding.tvEmptyMsg.visible()
selectFolder.launch {}
selectFolder.launch(null)
}
lastPath.isContentScheme() -> {
val rootUri = Uri.parse(lastPath)
@ -141,7 +141,7 @@ class ImportBookActivity : VMBaseActivity<ActivityImportBookBinding, ImportBookV
val doc = DocumentFile.fromTreeUri(this, rootUri)
if (doc == null || doc.name.isNullOrEmpty()) {
binding.tvEmptyMsg.visible()
selectFolder.launch {}
selectFolder.launch(null)
} else {
subDocs.clear()
rootDoc = FileDoc.fromDocumentFile(doc)
@ -149,12 +149,12 @@ class ImportBookActivity : VMBaseActivity<ActivityImportBookBinding, ImportBookV
}
}.onFailure {
binding.tvEmptyMsg.visible()
selectFolder.launch {}
selectFolder.launch(null)
}
}
Build.VERSION.SDK_INT > Build.VERSION_CODES.Q -> {
binding.tvEmptyMsg.visible()
selectFolder.launch {}
selectFolder.launch(null)
}
else -> initRootPath(lastPath)
}
@ -172,7 +172,7 @@ class ImportBookActivity : VMBaseActivity<ActivityImportBookBinding, ImportBookV
upPath()
}.onFailure {
binding.tvEmptyMsg.visible()
selectFolder.launch {}
selectFolder.launch(null)
}
}
.request()

@ -11,14 +11,16 @@ import io.legado.app.utils.putJson
@Suppress("unused")
class HandleFileContract :
ActivityResultContract<HandleFileContract.HandleFileParam.() -> Unit, HandleFileContract.Result>() {
ActivityResultContract<(HandleFileContract.HandleFileParam.() -> Unit)?, HandleFileContract.Result>() {
private var requestCode: Int = 0
override fun createIntent(context: Context, input: (HandleFileParam.() -> Unit)): Intent {
override fun createIntent(context: Context, input: (HandleFileParam.() -> Unit)?): Intent {
val intent = Intent(context, HandleFileActivity::class.java)
val handleFileParam = HandleFileParam()
handleFileParam.apply(input)
input?.let {
handleFileParam.apply(input)
}
handleFileParam.let {
requestCode = it.requestCode
intent.putExtra("mode", it.mode)

@ -5,9 +5,9 @@ import android.content.Context
import android.content.Intent
import androidx.activity.result.contract.ActivityResultContract
class QrCodeResult : ActivityResultContract<Unit, String?>() {
class QrCodeResult : ActivityResultContract<Unit?, String?>() {
override fun createIntent(context: Context, input: Unit): Intent {
override fun createIntent(context: Context, input: Unit?): Intent {
return Intent(context, QrCodeActivity::class.java)
}

@ -7,11 +7,11 @@ import android.net.Uri
import androidx.activity.result.ActivityResult
import androidx.activity.result.contract.ActivityResultContract
class SelectImageContract : ActivityResultContract<Int, SelectImageContract.Result>() {
class SelectImageContract : ActivityResultContract<Int?, SelectImageContract.Result>() {
var requestCode: Int? = null
override fun createIntent(context: Context, input: Int): Intent {
override fun createIntent(context: Context, input: Int?): Intent {
requestCode = input
return Intent(Intent.ACTION_GET_CONTENT)
.addCategory(Intent.CATEGORY_OPENABLE)
@ -33,11 +33,13 @@ class SelectImageContract : ActivityResultContract<Int, SelectImageContract.Resu
}
class StartActivityContract(private val cls: Class<*>) :
ActivityResultContract<Intent.() -> Unit, ActivityResult>() {
ActivityResultContract<(Intent.() -> Unit)?, ActivityResult>() {
override fun createIntent(context: Context, input: Intent.() -> Unit): Intent {
override fun createIntent(context: Context, input: (Intent.() -> Unit)?): Intent {
val intent = Intent(context, cls)
intent.apply(input)
input?.let {
intent.apply(input)
}
return intent
}

Loading…
Cancel
Save