This commit is contained in:
Horis 2023-04-18 11:46:16 +08:00
parent 0cdaaecacf
commit 7bf0a00b14
10 changed files with 76 additions and 1 deletions

View File

@ -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)

View File

@ -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)
}

View File

@ -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"

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>