|
|
@@ -12,13 +12,16 @@ import io.legado.app.base.VMBaseActivity
|
|
|
import io.legado.app.data.appDb
|
|
|
import io.legado.app.data.entities.DictRule
|
|
|
import io.legado.app.databinding.ActivityDictRuleBinding
|
|
|
+import io.legado.app.databinding.DialogEditTextBinding
|
|
|
+import io.legado.app.help.DirectLinkUpload
|
|
|
+import io.legado.app.lib.dialogs.alert
|
|
|
import io.legado.app.lib.theme.primaryColor
|
|
|
+import io.legado.app.ui.document.HandleFileContract
|
|
|
import io.legado.app.ui.widget.SelectActionBar
|
|
|
import io.legado.app.ui.widget.recycler.DragSelectTouchHelper
|
|
|
import io.legado.app.ui.widget.recycler.ItemTouchCallback
|
|
|
import io.legado.app.ui.widget.recycler.VerticalDivider
|
|
|
-import io.legado.app.utils.setEdgeEffectColor
|
|
|
-import io.legado.app.utils.showDialogFragment
|
|
|
+import io.legado.app.utils.*
|
|
|
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
|
|
import kotlinx.coroutines.launch
|
|
|
|
|
|
@@ -31,6 +34,25 @@ class DictRuleActivity : VMBaseActivity<ActivityDictRuleBinding, DictRuleViewMod
|
|
|
override val binding by viewBinding(ActivityDictRuleBinding::inflate)
|
|
|
|
|
|
private val adapter by lazy { DictRuleAdapter(this, this) }
|
|
|
+ private val exportResult = registerForActivityResult(HandleFileContract()) {
|
|
|
+ it.uri?.let { uri ->
|
|
|
+ alert(R.string.export_success) {
|
|
|
+ if (uri.toString().isAbsUrl()) {
|
|
|
+ DirectLinkUpload.getSummary()?.let { summary ->
|
|
|
+ setMessage(summary)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ val alertBinding = DialogEditTextBinding.inflate(layoutInflater).apply {
|
|
|
+ editView.hint = getString(R.string.path)
|
|
|
+ editView.setText(uri.toString())
|
|
|
+ }
|
|
|
+ customView { alertBinding.root }
|
|
|
+ okButton {
|
|
|
+ sendToClip(uri.toString())
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
|
|
initRecyclerView()
|
|
|
@@ -63,7 +85,7 @@ class DictRuleActivity : VMBaseActivity<ActivityDictRuleBinding, DictRuleViewMod
|
|
|
|
|
|
private fun initSelectActionView() {
|
|
|
binding.selectActionBar.setMainActionText(R.string.delete)
|
|
|
- binding.selectActionBar.inflateMenu(R.menu.replace_rule_sel)
|
|
|
+ binding.selectActionBar.inflateMenu(R.menu.dict_rule_sel)
|
|
|
binding.selectActionBar.setOnMenuItemClickListener(this)
|
|
|
binding.selectActionBar.setCallBack(this)
|
|
|
}
|
|
|
@@ -87,11 +109,24 @@ class DictRuleActivity : VMBaseActivity<ActivityDictRuleBinding, DictRuleViewMod
|
|
|
|
|
|
override fun onMenuItemClick(item: MenuItem): Boolean {
|
|
|
when (item.itemId) {
|
|
|
-
|
|
|
+ R.id.menu_enable_selection -> viewModel.enableSelection(*adapter.selection.toTypedArray())
|
|
|
+ R.id.menu_disable_selection -> viewModel.disableSelection(*adapter.selection.toTypedArray())
|
|
|
+ R.id.menu_export_selection -> exportResult.launch {
|
|
|
+ mode = HandleFileContract.EXPORT
|
|
|
+ fileData = HandleFileContract.FileData(
|
|
|
+ "exportDictRule.json",
|
|
|
+ GSON.toJson(adapter.selection).toByteArray(),
|
|
|
+ "application/json"
|
|
|
+ )
|
|
|
+ }
|
|
|
}
|
|
|
return true
|
|
|
}
|
|
|
|
|
|
+ override fun onClickSelectBarMainAction() {
|
|
|
+ viewModel.delete(*adapter.selection.toTypedArray())
|
|
|
+ }
|
|
|
+
|
|
|
override fun selectAll(selectAll: Boolean) {
|
|
|
if (selectAll) {
|
|
|
adapter.selectAll()
|