From 7bf0a00b14eb6507549a04981d22666915deb9f6 Mon Sep 17 00:00:00 2001 From: Horis <821938089@qq.com> Date: Tue, 18 Apr 2023 11:46:16 +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/association/ImportBookSourceDialog.kt | 25 ++++++++++++++++- .../association/ImportBookSourceViewModel.kt | 28 +++++++++++++++++++ app/src/main/res/menu/import_source.xml | 10 +++++++ app/src/main/res/values-es-rES/strings.xml | 2 ++ app/src/main/res/values-ja-rJP/strings.xml | 2 ++ app/src/main/res/values-pt-rBR/strings.xml | 2 ++ app/src/main/res/values-zh-rHK/strings.xml | 2 ++ app/src/main/res/values-zh-rTW/strings.xml | 2 ++ app/src/main/res/values-zh/strings.xml | 2 ++ app/src/main/res/values/strings.xml | 2 ++ 10 files changed, 76 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/io/legado/app/ui/association/ImportBookSourceDialog.kt b/app/src/main/java/io/legado/app/ui/association/ImportBookSourceDialog.kt index 3e148a97c..2ca11d809 100644 --- a/app/src/main/java/io/legado/app/ui/association/ImportBookSourceDialog.kt +++ b/app/src/main/java/io/legado/app/ui/association/ImportBookSourceDialog.kt @@ -144,14 +144,37 @@ class ImportBookSourceDialog() : BaseDialogFragment(R.layout.dialog_recycler_vie ?.isChecked = AppConfig.importKeepGroup } - @SuppressLint("InflateParams") + @SuppressLint("InflateParams", "NotifyDataSetChanged") override fun onMenuItemClick(item: MenuItem): Boolean { when (item.itemId) { R.id.menu_new_group -> alertCustomGroup(item) + R.id.menu_select_new_source -> { + val selectAllNew = viewModel.isSelectAllNew + viewModel.newSourceStatus.forEachIndexed { index, b -> + if (b) { + viewModel.selectStatus[index] = !selectAllNew + } + } + adapter.notifyDataSetChanged() + upSelectText() + } + + R.id.menu_select_update_source -> { + val selectAllUpdate = viewModel.isSelectAllUpdate + viewModel.updateSourceStatus.forEachIndexed { index, b -> + if (b) { + viewModel.selectStatus[index] = !selectAllUpdate + } + } + adapter.notifyDataSetChanged() + upSelectText() + } + R.id.menu_keep_original_name -> { item.isChecked = !item.isChecked putPrefBoolean(PreferKey.importKeepName, item.isChecked) } + R.id.menu_keep_group -> { item.isChecked = !item.isChecked putPrefBoolean(PreferKey.importKeepGroup, item.isChecked) diff --git a/app/src/main/java/io/legado/app/ui/association/ImportBookSourceViewModel.kt b/app/src/main/java/io/legado/app/ui/association/ImportBookSourceViewModel.kt index 67963babb..49f14bbc1 100644 --- a/app/src/main/java/io/legado/app/ui/association/ImportBookSourceViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/association/ImportBookSourceViewModel.kt @@ -29,6 +29,8 @@ class ImportBookSourceViewModel(app: Application) : BaseViewModel(app) { val allSources = arrayListOf() val checkSources = arrayListOf() val selectStatus = arrayListOf() + val newSourceStatus = arrayListOf() + val updateSourceStatus = arrayListOf() val isSelectAll: Boolean get() { @@ -40,6 +42,26 @@ class ImportBookSourceViewModel(app: Application) : BaseViewModel(app) { return true } + val isSelectAllNew: Boolean + get() { + newSourceStatus.forEachIndexed { index, b -> + if (b && !selectStatus[index]) { + return false + } + } + return true + } + + val isSelectAllUpdate: Boolean + get() { + updateSourceStatus.forEachIndexed { index, b -> + if (b && !selectStatus[index]) { + return false + } + } + return true + } + val selectCount: Int get() { var count = 0 @@ -109,19 +131,23 @@ class ImportBookSourceViewModel(app: Application) : BaseViewModel(app) { } } } + mText.isJsonArray() -> GSON.fromJsonArray(mText).getOrThrow() .let { items -> allSources.addAll(items) } + mText.isAbsUrl() -> { importSourceUrl(mText) } + mText.isUri() -> { val uri = Uri.parse(mText) uri.inputStream(context).getOrThrow().let { allSources.addAll(GSON.fromJsonArray(it).getOrThrow()) } } + else -> throw NoStackTraceException(context.getString(R.string.wrong_format)) } }.onError { @@ -151,6 +177,8 @@ class ImportBookSourceViewModel(app: Application) : BaseViewModel(app) { val source = appDb.bookSourceDao.getBookSource(it.bookSourceUrl) checkSources.add(source) selectStatus.add(source == null || source.lastUpdateTime < it.lastUpdateTime) + newSourceStatus.add(source == null) + updateSourceStatus.add(source != null && source.lastUpdateTime < it.lastUpdateTime) } successLiveData.postValue(allSources.size) } diff --git a/app/src/main/res/menu/import_source.xml b/app/src/main/res/menu/import_source.xml index adc3f3d52..dae1d41a4 100644 --- a/app/src/main/res/menu/import_source.xml +++ b/app/src/main/res/menu/import_source.xml @@ -9,6 +9,16 @@ app:showAsAction="always" tools:ignore="AlwaysShowAction" /> + + + + 创建文件夹 允许下拉刷新 文字下划线 + 选中新增源 + 选中更新源 diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml index 3083b0f1c..27c5ea43d 100644 --- a/app/src/main/res/values-ja-rJP/strings.xml +++ b/app/src/main/res/values-ja-rJP/strings.xml @@ -1095,4 +1095,6 @@ 创建文件夹 允许下拉刷新 文字下划线 + 选中新增源 + 选中更新源 diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 76c6c0211..cdcfed3c0 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -1095,4 +1095,6 @@ 创建文件夹 允许下拉刷新 文字下划线 + 选中新增源 + 选中更新源 diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index e0b25b807..599d6fb7f 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -1092,4 +1092,6 @@ 创建文件夹 允许下拉刷新 文字下划线 + 选中新增源 + 选中更新源 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 2e9b75b58..3086b5ee0 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -1094,4 +1094,6 @@ 创建文件夹 允许下拉刷新 文字下划线 + 选中新增源 + 选中更新源 diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index 38118e3b9..f84b1d662 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -1094,4 +1094,6 @@ 创建文件夹 允许下拉刷新 文字下划线 + 选中新增源 + 选中更新源 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 912521f5e..fc058abe5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1095,4 +1095,6 @@ 创建文件夹 允许下拉刷新 文字下划线 + 选中新增源 + 选中更新源