From 08cbe844e0f1c89ac1cce437ae5b32d4498fbd71 Mon Sep 17 00:00:00 2001 From: kunfei Date: Mon, 20 Feb 2023 22:52:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/book/read/config/SpeakEngineDialog.kt | 2 +- .../book/source/manage/BookSourceActivity.kt | 6 ++- .../app/ui/dict/rule/DictRuleActivity.kt | 43 +++++++++++++++++-- .../app/ui/dict/rule/DictRuleViewModel.kt | 18 ++++++++ .../app/ui/document/HandleFileContract.kt | 14 ++++-- .../main/bookshelf/BaseBookshelfFragment.kt | 2 +- .../app/ui/replace/ReplaceRuleActivity.kt | 2 +- .../ui/rss/source/manage/RssSourceActivity.kt | 2 +- app/src/main/res/menu/dict_rule_sel.xml | 20 +++++++++ 9 files changed, 96 insertions(+), 13 deletions(-) create mode 100644 app/src/main/res/menu/dict_rule_sel.xml diff --git a/app/src/main/java/io/legado/app/ui/book/read/config/SpeakEngineDialog.kt b/app/src/main/java/io/legado/app/ui/book/read/config/SpeakEngineDialog.kt index 722563a4a..5b57c7431 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/config/SpeakEngineDialog.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/config/SpeakEngineDialog.kt @@ -152,7 +152,7 @@ class SpeakEngineDialog(val callBack: CallBack) : BaseDialogFragment(R.layout.di R.id.menu_import_onLine -> importAlert() R.id.menu_export -> exportDirResult.launch { mode = HandleFileContract.EXPORT - fileData = Triple( + fileData = HandleFileContract.FileData( "httpTts.json", GSON.toJson(adapter.getItems()).toByteArray(), "application/json" diff --git a/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceActivity.kt b/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceActivity.kt index 69d8b5f75..95ec3096c 100644 --- a/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceActivity.kt @@ -347,7 +347,11 @@ class BookSourceActivity : VMBaseActivity viewModel.saveToFile(adapter.selection) { file -> exportDir.launch { mode = HandleFileContract.EXPORT - fileData = Triple("bookSource.json", file, "application/json") + fileData = HandleFileContract.FileData( + "bookSource.json", + file, + "application/json" + ) } } R.id.menu_share_source -> viewModel.saveToFile(adapter.selection) { diff --git a/app/src/main/java/io/legado/app/ui/dict/rule/DictRuleActivity.kt b/app/src/main/java/io/legado/app/ui/dict/rule/DictRuleActivity.kt index 491eb2c94..19e5a9ae9 100644 --- a/app/src/main/java/io/legado/app/ui/dict/rule/DictRuleActivity.kt +++ b/app/src/main/java/io/legado/app/ui/dict/rule/DictRuleActivity.kt @@ -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 + 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 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() diff --git a/app/src/main/java/io/legado/app/ui/dict/rule/DictRuleViewModel.kt b/app/src/main/java/io/legado/app/ui/dict/rule/DictRuleViewModel.kt index af6760c59..bd6965edd 100644 --- a/app/src/main/java/io/legado/app/ui/dict/rule/DictRuleViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/dict/rule/DictRuleViewModel.kt @@ -31,6 +31,24 @@ class DictRuleViewModel(application: Application) : BaseViewModel(application) { } } + fun enableSelection(vararg dictRule: DictRule) { + execute { + dictRule.forEach { + it.enabled = true + } + appDb.dictRuleDao.upsert(*dictRule) + } + } + + fun disableSelection(vararg dictRule: DictRule) { + execute { + dictRule.forEach { + it.enabled = false + } + appDb.dictRuleDao.upsert(*dictRule) + } + } + fun importDefault() { execute { DefaultData.importDefaultDictRules() diff --git a/app/src/main/java/io/legado/app/ui/document/HandleFileContract.kt b/app/src/main/java/io/legado/app/ui/document/HandleFileContract.kt index 665f2c765..557c27f31 100644 --- a/app/src/main/java/io/legado/app/ui/document/HandleFileContract.kt +++ b/app/src/main/java/io/legado/app/ui/document/HandleFileContract.kt @@ -28,9 +28,9 @@ class HandleFileContract : intent.putExtra("allowExtensions", it.allowExtensions) intent.putJson("otherActions", it.otherActions) it.fileData?.let { fileData -> - intent.putExtra("fileName", fileData.first) - intent.putExtra("fileKey", IntentData.put(fileData.second)) - intent.putExtra("contentType", fileData.third) + intent.putExtra("fileName", fileData.name) + intent.putExtra("fileKey", IntentData.put(fileData.data)) + intent.putExtra("contentType", fileData.type) } intent.putExtra("value", it.value) } @@ -57,7 +57,7 @@ class HandleFileContract : var title: String? = null, var allowExtensions: Array = arrayOf(), var otherActions: ArrayList>? = null, - var fileData: Triple? = null, + var fileData: FileData? = null, var requestCode: Int = 0, var value: String? = null ) @@ -68,4 +68,10 @@ class HandleFileContract : val value: String? ) + data class FileData( + val name: String, + val data: Any, + val type: String + ) + } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/BaseBookshelfFragment.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/BaseBookshelfFragment.kt index 745bc238b..47102dfd0 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/BaseBookshelfFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/BaseBookshelfFragment.kt @@ -91,7 +91,7 @@ abstract class BaseBookshelfFragment(layoutId: Int) : VMBaseFragment viewModel.exportBookshelf(books) { file -> exportResult.launch { mode = HandleFileContract.EXPORT - fileData = Triple("bookshelf.json", file, "application/json") + fileData = HandleFileContract.FileData("bookshelf.json", file, "application/json") } } R.id.menu_import_bookshelf -> importBookshelfAlert(groupId) diff --git a/app/src/main/java/io/legado/app/ui/replace/ReplaceRuleActivity.kt b/app/src/main/java/io/legado/app/ui/replace/ReplaceRuleActivity.kt index 5be269c7d..57ccf7c32 100644 --- a/app/src/main/java/io/legado/app/ui/replace/ReplaceRuleActivity.kt +++ b/app/src/main/java/io/legado/app/ui/replace/ReplaceRuleActivity.kt @@ -246,7 +246,7 @@ class ReplaceRuleActivity : VMBaseActivity viewModel.bottomSelect(adapter.selection) R.id.menu_export_selection -> exportResult.launch { mode = HandleFileContract.EXPORT - fileData = Triple( + fileData = HandleFileContract.FileData( "exportReplaceRule.json", GSON.toJson(adapter.selection).toByteArray(), "application/json" diff --git a/app/src/main/java/io/legado/app/ui/rss/source/manage/RssSourceActivity.kt b/app/src/main/java/io/legado/app/ui/rss/source/manage/RssSourceActivity.kt index c546110ac..5db6cdd3e 100644 --- a/app/src/main/java/io/legado/app/ui/rss/source/manage/RssSourceActivity.kt +++ b/app/src/main/java/io/legado/app/ui/rss/source/manage/RssSourceActivity.kt @@ -153,7 +153,7 @@ class RssSourceActivity : VMBaseActivity viewModel.saveToFile(adapter.selection) { file -> exportResult.launch { mode = HandleFileContract.EXPORT - fileData = Triple("exportRssSource.json", file, "application/json") + fileData = HandleFileContract.FileData("exportRssSource.json", file, "application/json") } } diff --git a/app/src/main/res/menu/dict_rule_sel.xml b/app/src/main/res/menu/dict_rule_sel.xml new file mode 100644 index 000000000..000686775 --- /dev/null +++ b/app/src/main/res/menu/dict_rule_sel.xml @@ -0,0 +1,20 @@ + + + + + + + + + +