优化 #5726
This commit is contained in:
@@ -29,13 +29,11 @@ import io.legado.app.utils.ACache
|
|||||||
import io.legado.app.utils.GSON
|
import io.legado.app.utils.GSON
|
||||||
import io.legado.app.utils.isAbsUrl
|
import io.legado.app.utils.isAbsUrl
|
||||||
import io.legado.app.utils.launch
|
import io.legado.app.utils.launch
|
||||||
import io.legado.app.utils.readText
|
|
||||||
import io.legado.app.utils.sendToClip
|
import io.legado.app.utils.sendToClip
|
||||||
import io.legado.app.utils.setEdgeEffectColor
|
import io.legado.app.utils.setEdgeEffectColor
|
||||||
import io.legado.app.utils.showDialogFragment
|
import io.legado.app.utils.showDialogFragment
|
||||||
import io.legado.app.utils.showHelp
|
import io.legado.app.utils.showHelp
|
||||||
import io.legado.app.utils.splitNotBlank
|
import io.legado.app.utils.splitNotBlank
|
||||||
import io.legado.app.utils.toastOnUi
|
|
||||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||||
import kotlinx.coroutines.Dispatchers.IO
|
import kotlinx.coroutines.Dispatchers.IO
|
||||||
import kotlinx.coroutines.flow.catch
|
import kotlinx.coroutines.flow.catch
|
||||||
@@ -49,8 +47,8 @@ class TxtTocRuleActivity : VMBaseActivity<ActivityTxtTocRuleBinding, TxtTocRuleV
|
|||||||
TxtTocRuleEditDialog.Callback,
|
TxtTocRuleEditDialog.Callback,
|
||||||
PopupMenu.OnMenuItemClickListener {
|
PopupMenu.OnMenuItemClickListener {
|
||||||
|
|
||||||
override val viewModel: TxtTocRuleViewModel by viewModels()
|
override val viewModel by viewModels<TxtTocRuleViewModel>()
|
||||||
override val binding: ActivityTxtTocRuleBinding by viewBinding(ActivityTxtTocRuleBinding::inflate)
|
override val binding by viewBinding(ActivityTxtTocRuleBinding::inflate)
|
||||||
private val adapter: TxtTocRuleAdapter by lazy {
|
private val adapter: TxtTocRuleAdapter by lazy {
|
||||||
TxtTocRuleAdapter(this, this)
|
TxtTocRuleAdapter(this, this)
|
||||||
}
|
}
|
||||||
@@ -60,12 +58,8 @@ class TxtTocRuleActivity : VMBaseActivity<ActivityTxtTocRuleBinding, TxtTocRuleV
|
|||||||
showDialogFragment(ImportTxtTocRuleDialog(it))
|
showDialogFragment(ImportTxtTocRuleDialog(it))
|
||||||
}
|
}
|
||||||
private val importDoc = registerForActivityResult(HandleFileContract()) {
|
private val importDoc = registerForActivityResult(HandleFileContract()) {
|
||||||
kotlin.runCatching {
|
it.uri?.let { uri ->
|
||||||
it.uri?.readText(this)?.let {
|
showDialogFragment(ImportTxtTocRuleDialog(uri.toString()))
|
||||||
showDialogFragment(ImportTxtTocRuleDialog(it))
|
|
||||||
}
|
|
||||||
}.onFailure {
|
|
||||||
toastOnUi("readTextError:${it.localizedMessage}")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private val exportResult = registerForActivityResult(HandleFileContract()) {
|
private val exportResult = registerForActivityResult(HandleFileContract()) {
|
||||||
@@ -136,6 +130,7 @@ class TxtTocRuleActivity : VMBaseActivity<ActivityTxtTocRuleBinding, TxtTocRuleV
|
|||||||
mode = HandleFileContract.FILE
|
mode = HandleFileContract.FILE
|
||||||
allowExtensions = arrayOf("txt", "json")
|
allowExtensions = arrayOf("txt", "json")
|
||||||
}
|
}
|
||||||
|
|
||||||
R.id.menu_import_onLine -> showImportDialog()
|
R.id.menu_import_onLine -> showImportDialog()
|
||||||
R.id.menu_import_qr -> qrCodeResult.launch()
|
R.id.menu_import_qr -> qrCodeResult.launch()
|
||||||
R.id.menu_import_default -> viewModel.importDefault()
|
R.id.menu_import_default -> viewModel.importDefault()
|
||||||
@@ -245,8 +240,14 @@ class TxtTocRuleActivity : VMBaseActivity<ActivityTxtTocRuleBinding, TxtTocRuleV
|
|||||||
|
|
||||||
override fun onMenuItemClick(item: MenuItem): Boolean {
|
override fun onMenuItemClick(item: MenuItem): Boolean {
|
||||||
when (item.itemId) {
|
when (item.itemId) {
|
||||||
R.id.menu_enable_selection -> viewModel.enableSelection(*adapter.selection.toTypedArray())
|
R.id.menu_enable_selection -> viewModel.enableSelection(
|
||||||
R.id.menu_disable_selection -> viewModel.disableSelection(*adapter.selection.toTypedArray())
|
*adapter.selection.toTypedArray()
|
||||||
|
)
|
||||||
|
|
||||||
|
R.id.menu_disable_selection -> viewModel.disableSelection(
|
||||||
|
*adapter.selection.toTypedArray()
|
||||||
|
)
|
||||||
|
|
||||||
R.id.menu_export_selection -> exportResult.launch {
|
R.id.menu_export_selection -> exportResult.launch {
|
||||||
mode = HandleFileContract.EXPORT
|
mode = HandleFileContract.EXPORT
|
||||||
fileData = HandleFileContract.FileData(
|
fileData = HandleFileContract.FileData(
|
||||||
|
|||||||
@@ -35,12 +35,10 @@ import io.legado.app.utils.ACache
|
|||||||
import io.legado.app.utils.applyTint
|
import io.legado.app.utils.applyTint
|
||||||
import io.legado.app.utils.isAbsUrl
|
import io.legado.app.utils.isAbsUrl
|
||||||
import io.legado.app.utils.launch
|
import io.legado.app.utils.launch
|
||||||
import io.legado.app.utils.readText
|
|
||||||
import io.legado.app.utils.setLayout
|
import io.legado.app.utils.setLayout
|
||||||
import io.legado.app.utils.showDialogFragment
|
import io.legado.app.utils.showDialogFragment
|
||||||
import io.legado.app.utils.showHelp
|
import io.legado.app.utils.showHelp
|
||||||
import io.legado.app.utils.splitNotBlank
|
import io.legado.app.utils.splitNotBlank
|
||||||
import io.legado.app.utils.toastOnUi
|
|
||||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||||
import kotlinx.coroutines.Dispatchers.IO
|
import kotlinx.coroutines.Dispatchers.IO
|
||||||
import kotlinx.coroutines.flow.catch
|
import kotlinx.coroutines.flow.catch
|
||||||
@@ -72,12 +70,8 @@ class TxtTocRuleDialog() : BaseDialogFragment(R.layout.dialog_toc_regex),
|
|||||||
showDialogFragment(ImportTxtTocRuleDialog(it))
|
showDialogFragment(ImportTxtTocRuleDialog(it))
|
||||||
}
|
}
|
||||||
private val importDoc = registerForActivityResult(HandleFileContract()) {
|
private val importDoc = registerForActivityResult(HandleFileContract()) {
|
||||||
kotlin.runCatching {
|
it.uri?.let { uri ->
|
||||||
it.uri?.readText(requireContext())?.let {
|
showDialogFragment(ImportTxtTocRuleDialog(uri.toString()))
|
||||||
showDialogFragment(ImportTxtTocRuleDialog(it))
|
|
||||||
}
|
|
||||||
}.onFailure {
|
|
||||||
toastOnUi("readTextError:${it.localizedMessage}")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,13 +30,11 @@ import io.legado.app.utils.ACache
|
|||||||
import io.legado.app.utils.GSON
|
import io.legado.app.utils.GSON
|
||||||
import io.legado.app.utils.isAbsUrl
|
import io.legado.app.utils.isAbsUrl
|
||||||
import io.legado.app.utils.launch
|
import io.legado.app.utils.launch
|
||||||
import io.legado.app.utils.readText
|
|
||||||
import io.legado.app.utils.sendToClip
|
import io.legado.app.utils.sendToClip
|
||||||
import io.legado.app.utils.setEdgeEffectColor
|
import io.legado.app.utils.setEdgeEffectColor
|
||||||
import io.legado.app.utils.showDialogFragment
|
import io.legado.app.utils.showDialogFragment
|
||||||
import io.legado.app.utils.showHelp
|
import io.legado.app.utils.showHelp
|
||||||
import io.legado.app.utils.splitNotBlank
|
import io.legado.app.utils.splitNotBlank
|
||||||
import io.legado.app.utils.toastOnUi
|
|
||||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||||
import kotlinx.coroutines.Dispatchers.IO
|
import kotlinx.coroutines.Dispatchers.IO
|
||||||
import kotlinx.coroutines.flow.catch
|
import kotlinx.coroutines.flow.catch
|
||||||
@@ -54,19 +52,11 @@ class DictRuleActivity : VMBaseActivity<ActivityDictRuleBinding, DictRuleViewMod
|
|||||||
private val adapter by lazy { DictRuleAdapter(this, this) }
|
private val adapter by lazy { DictRuleAdapter(this, this) }
|
||||||
private val qrCodeResult = registerForActivityResult(QrCodeResult()) {
|
private val qrCodeResult = registerForActivityResult(QrCodeResult()) {
|
||||||
it ?: return@registerForActivityResult
|
it ?: return@registerForActivityResult
|
||||||
showDialogFragment(
|
showDialogFragment(ImportDictRuleDialog(it))
|
||||||
ImportDictRuleDialog(it)
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
private val importDoc = registerForActivityResult(HandleFileContract()) {
|
private val importDoc = registerForActivityResult(HandleFileContract()) {
|
||||||
kotlin.runCatching {
|
it.uri?.let { uri ->
|
||||||
it.uri?.readText(this)?.let {
|
showDialogFragment(ImportDictRuleDialog(uri.toString()))
|
||||||
showDialogFragment(
|
|
||||||
ImportDictRuleDialog(it)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}.onFailure {
|
|
||||||
toastOnUi("readTextError:${it.localizedMessage}")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private val exportResult = registerForActivityResult(HandleFileContract()) {
|
private val exportResult = registerForActivityResult(HandleFileContract()) {
|
||||||
|
|||||||
@@ -39,13 +39,11 @@ import io.legado.app.utils.GSON
|
|||||||
import io.legado.app.utils.applyTint
|
import io.legado.app.utils.applyTint
|
||||||
import io.legado.app.utils.isAbsUrl
|
import io.legado.app.utils.isAbsUrl
|
||||||
import io.legado.app.utils.launch
|
import io.legado.app.utils.launch
|
||||||
import io.legado.app.utils.readText
|
|
||||||
import io.legado.app.utils.sendToClip
|
import io.legado.app.utils.sendToClip
|
||||||
import io.legado.app.utils.setEdgeEffectColor
|
import io.legado.app.utils.setEdgeEffectColor
|
||||||
import io.legado.app.utils.showDialogFragment
|
import io.legado.app.utils.showDialogFragment
|
||||||
import io.legado.app.utils.showHelp
|
import io.legado.app.utils.showHelp
|
||||||
import io.legado.app.utils.splitNotBlank
|
import io.legado.app.utils.splitNotBlank
|
||||||
import io.legado.app.utils.toastOnUi
|
|
||||||
import io.legado.app.utils.transaction
|
import io.legado.app.utils.transaction
|
||||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||||
import kotlinx.coroutines.Dispatchers.IO
|
import kotlinx.coroutines.Dispatchers.IO
|
||||||
@@ -77,9 +75,7 @@ class ReplaceRuleActivity : VMBaseActivity<ActivityReplaceRuleBinding, ReplaceRu
|
|||||||
private var dataInit = false
|
private var dataInit = false
|
||||||
private val qrCodeResult = registerForActivityResult(QrCodeResult()) {
|
private val qrCodeResult = registerForActivityResult(QrCodeResult()) {
|
||||||
it ?: return@registerForActivityResult
|
it ?: return@registerForActivityResult
|
||||||
showDialogFragment(
|
showDialogFragment(ImportReplaceRuleDialog(it))
|
||||||
ImportReplaceRuleDialog(it)
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
private val editActivity =
|
private val editActivity =
|
||||||
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
|
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
|
||||||
@@ -88,14 +84,8 @@ class ReplaceRuleActivity : VMBaseActivity<ActivityReplaceRuleBinding, ReplaceRu
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
private val importDoc = registerForActivityResult(HandleFileContract()) {
|
private val importDoc = registerForActivityResult(HandleFileContract()) {
|
||||||
kotlin.runCatching {
|
it.uri?.let { uri ->
|
||||||
it.uri?.readText(this)?.let {
|
showDialogFragment(ImportReplaceRuleDialog(uri.toString()))
|
||||||
showDialogFragment(
|
|
||||||
ImportReplaceRuleDialog(it)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}.onFailure {
|
|
||||||
toastOnUi("readTextError:${it.localizedMessage}")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private val exportResult = registerForActivityResult(HandleFileContract()) {
|
private val exportResult = registerForActivityResult(HandleFileContract()) {
|
||||||
@@ -201,6 +191,7 @@ class ReplaceRuleActivity : VMBaseActivity<ActivityReplaceRuleBinding, ReplaceRu
|
|||||||
val key = searchKey.substringAfter("group:")
|
val key = searchKey.substringAfter("group:")
|
||||||
appDb.replaceRuleDao.flowGroupSearch("%$key%")
|
appDb.replaceRuleDao.flowGroupSearch("%$key%")
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> {
|
else -> {
|
||||||
appDb.replaceRuleDao.flowSearch("%$searchKey%")
|
appDb.replaceRuleDao.flowSearch("%$searchKey%")
|
||||||
}
|
}
|
||||||
@@ -231,6 +222,7 @@ class ReplaceRuleActivity : VMBaseActivity<ActivityReplaceRuleBinding, ReplaceRu
|
|||||||
when (item.itemId) {
|
when (item.itemId) {
|
||||||
R.id.menu_add_replace_rule ->
|
R.id.menu_add_replace_rule ->
|
||||||
editActivity.launch(ReplaceEditActivity.startIntent(this))
|
editActivity.launch(ReplaceEditActivity.startIntent(this))
|
||||||
|
|
||||||
R.id.menu_group_manage -> showDialogFragment<GroupManageDialog>()
|
R.id.menu_group_manage -> showDialogFragment<GroupManageDialog>()
|
||||||
R.id.menu_del_selection -> viewModel.delSelection(adapter.selection)
|
R.id.menu_del_selection -> viewModel.delSelection(adapter.selection)
|
||||||
R.id.menu_import_onLine -> showImportDialog()
|
R.id.menu_import_onLine -> showImportDialog()
|
||||||
@@ -238,11 +230,13 @@ class ReplaceRuleActivity : VMBaseActivity<ActivityReplaceRuleBinding, ReplaceRu
|
|||||||
mode = HandleFileContract.FILE
|
mode = HandleFileContract.FILE
|
||||||
allowExtensions = arrayOf("txt", "json")
|
allowExtensions = arrayOf("txt", "json")
|
||||||
}
|
}
|
||||||
|
|
||||||
R.id.menu_import_qr -> qrCodeResult.launch()
|
R.id.menu_import_qr -> qrCodeResult.launch()
|
||||||
R.id.menu_help -> showHelp("replaceRuleHelp")
|
R.id.menu_help -> showHelp("replaceRuleHelp")
|
||||||
R.id.menu_group_null -> {
|
R.id.menu_group_null -> {
|
||||||
searchView.setQuery(getString(R.string.no_group), true)
|
searchView.setQuery(getString(R.string.no_group), true)
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> if (item.groupId == R.id.replace_group) {
|
else -> if (item.groupId == R.id.replace_group) {
|
||||||
searchView.setQuery("group:${item.title}", true)
|
searchView.setQuery("group:${item.title}", true)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,7 +34,6 @@ import io.legado.app.utils.applyTint
|
|||||||
import io.legado.app.utils.dpToPx
|
import io.legado.app.utils.dpToPx
|
||||||
import io.legado.app.utils.isAbsUrl
|
import io.legado.app.utils.isAbsUrl
|
||||||
import io.legado.app.utils.launch
|
import io.legado.app.utils.launch
|
||||||
import io.legado.app.utils.readText
|
|
||||||
import io.legado.app.utils.sendToClip
|
import io.legado.app.utils.sendToClip
|
||||||
import io.legado.app.utils.setEdgeEffectColor
|
import io.legado.app.utils.setEdgeEffectColor
|
||||||
import io.legado.app.utils.share
|
import io.legado.app.utils.share
|
||||||
@@ -42,7 +41,6 @@ import io.legado.app.utils.showDialogFragment
|
|||||||
import io.legado.app.utils.showHelp
|
import io.legado.app.utils.showHelp
|
||||||
import io.legado.app.utils.splitNotBlank
|
import io.legado.app.utils.splitNotBlank
|
||||||
import io.legado.app.utils.startActivity
|
import io.legado.app.utils.startActivity
|
||||||
import io.legado.app.utils.toastOnUi
|
|
||||||
import io.legado.app.utils.transaction
|
import io.legado.app.utils.transaction
|
||||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||||
import kotlinx.coroutines.Dispatchers.IO
|
import kotlinx.coroutines.Dispatchers.IO
|
||||||
@@ -73,19 +71,11 @@ class RssSourceActivity : VMBaseActivity<ActivityRssSourceBinding, RssSourceView
|
|||||||
private var groupMenu: SubMenu? = null
|
private var groupMenu: SubMenu? = null
|
||||||
private val qrCodeResult = registerForActivityResult(QrCodeResult()) {
|
private val qrCodeResult = registerForActivityResult(QrCodeResult()) {
|
||||||
it ?: return@registerForActivityResult
|
it ?: return@registerForActivityResult
|
||||||
showDialogFragment(
|
showDialogFragment(ImportRssSourceDialog(it))
|
||||||
ImportRssSourceDialog(it)
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
private val importDoc = registerForActivityResult(HandleFileContract()) {
|
private val importDoc = registerForActivityResult(HandleFileContract()) {
|
||||||
kotlin.runCatching {
|
it.uri?.let { uri ->
|
||||||
it.uri?.readText(this)?.let {
|
showDialogFragment(ImportRssSourceDialog(uri.toString()))
|
||||||
showDialogFragment(
|
|
||||||
ImportRssSourceDialog(it)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}.onFailure {
|
|
||||||
toastOnUi("readTextError:${it.localizedMessage}")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private val exportResult = registerForActivityResult(HandleFileContract()) {
|
private val exportResult = registerForActivityResult(HandleFileContract()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user