Horis 3 gadi atpakaļ
vecāks
revīzija
0a1b12b814

+ 24 - 1
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)

+ 28 - 0
app/src/main/java/io/legado/app/ui/association/ImportBookSourceViewModel.kt

@@ -29,6 +29,8 @@ class ImportBookSourceViewModel(app: Application) : BaseViewModel(app) {
     val allSources = arrayListOf<BookSource>()
     val checkSources = arrayListOf<BookSource?>()
     val selectStatus = arrayListOf<Boolean>()
+    val newSourceStatus = arrayListOf<Boolean>()
+    val updateSourceStatus = arrayListOf<Boolean>()
 
     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<BookSource>(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<BookSource>(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)
         }

+ 10 - 0
app/src/main/res/menu/import_source.xml

@@ -9,6 +9,16 @@
         app:showAsAction="always"
         tools:ignore="AlwaysShowAction" />
 
+    <item
+        android:id="@+id/menu_select_new_source"
+        android:title="@string/select_new_source"
+        app:showAsAction="never" />
+
+    <item
+        android:id="@+id/menu_select_update_source"
+        android:title="@string/select_update_source"
+        app:showAsAction="never" />
+
     <item
         android:id="@+id/menu_keep_original_name"
         android:title="@string/keep_original_name"

+ 2 - 0
app/src/main/res/values-es-rES/strings.xml

@@ -1092,4 +1092,6 @@
     <string name="create_folder">创建文件夹</string>
     <string name="allow_drop_down_refresh">允许下拉刷新</string>
     <string name="text_underline">文字下划线</string>
+    <string name="select_new_source">选中新增源</string>
+    <string name="select_update_source">选中更新源</string>
 </resources>

+ 2 - 0
app/src/main/res/values-ja-rJP/strings.xml

@@ -1095,4 +1095,6 @@
     <string name="create_folder">创建文件夹</string>
     <string name="allow_drop_down_refresh">允许下拉刷新</string>
     <string name="text_underline">文字下划线</string>
+    <string name="select_new_source">选中新增源</string>
+    <string name="select_update_source">选中更新源</string>
 </resources>

+ 2 - 0
app/src/main/res/values-pt-rBR/strings.xml

@@ -1095,4 +1095,6 @@
     <string name="create_folder">创建文件夹</string>
     <string name="allow_drop_down_refresh">允许下拉刷新</string>
     <string name="text_underline">文字下划线</string>
+    <string name="select_new_source">选中新增源</string>
+    <string name="select_update_source">选中更新源</string>
 </resources>

+ 2 - 0
app/src/main/res/values-zh-rHK/strings.xml

@@ -1092,4 +1092,6 @@
     <string name="create_folder">创建文件夹</string>
     <string name="allow_drop_down_refresh">允许下拉刷新</string>
     <string name="text_underline">文字下划线</string>
+    <string name="select_new_source">选中新增源</string>
+    <string name="select_update_source">选中更新源</string>
 </resources>

+ 2 - 0
app/src/main/res/values-zh-rTW/strings.xml

@@ -1094,4 +1094,6 @@
     <string name="create_folder">创建文件夹</string>
     <string name="allow_drop_down_refresh">允许下拉刷新</string>
     <string name="text_underline">文字下划线</string>
+    <string name="select_new_source">选中新增源</string>
+    <string name="select_update_source">选中更新源</string>
 </resources>

+ 2 - 0
app/src/main/res/values-zh/strings.xml

@@ -1094,4 +1094,6 @@
     <string name="create_folder">创建文件夹</string>
     <string name="allow_drop_down_refresh">允许下拉刷新</string>
     <string name="text_underline">文字下划线</string>
+    <string name="select_new_source">选中新增源</string>
+    <string name="select_update_source">选中更新源</string>
 </resources>

+ 2 - 0
app/src/main/res/values/strings.xml

@@ -1095,4 +1095,6 @@
     <string name="create_folder">创建文件夹</string>
     <string name="allow_drop_down_refresh">允许下拉刷新</string>
     <string name="text_underline">文字下划线</string>
+    <string name="select_new_source">选中新增源</string>
+    <string name="select_update_source">选中更新源</string>
 </resources>