Add select all menu option for library category

Based on ae5ad2a9a6
This commit is contained in:
arkon 2020-01-18 20:33:43 -05:00
parent 09e7d56ff2
commit f30622424a
3 changed files with 27 additions and 1 deletions

View File

@ -124,6 +124,15 @@ class LibraryCategoryView @JvmOverloads constructor(context: Context, attrs: Att
subscriptions += controller.selectionRelay
.subscribe { onSelectionChanged(it) }
subscriptions += controller.selectAllRelay
.filter { it == category.id }
.subscribe {
adapter.currentItems.forEach { item ->
controller.setSelection(item.manga, true)
}
controller.invalidateActionMode()
}
}
fun onRecycle() {

View File

@ -94,6 +94,11 @@ class LibraryController(
*/
val libraryMangaRelay: BehaviorRelay<LibraryMangaEvent> = BehaviorRelay.create()
/**
* Relay to notify the library's viewpager to select all manga
*/
val selectAllRelay: PublishRelay<Int> = PublishRelay.create()
/**
* Number of manga per row in grid mode.
*/
@ -409,6 +414,7 @@ class LibraryController(
}
R.id.action_move_to_category -> showChangeMangaCategoriesDialog()
R.id.action_delete -> showDeleteMangaDialog()
R.id.action_select_all -> selectAllCategoryManga()
else -> return false
}
return true
@ -496,6 +502,12 @@ class LibraryController(
}
}
private fun selectAllCategoryManga() {
adapter?.categories?.getOrNull(library_pager.currentItem)?.id?.let {
selectAllRelay.call(it)
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (requestCode == REQUEST_IMAGE_OPEN) {
if (data == null || resultCode != Activity.RESULT_OK) return

View File

@ -18,4 +18,9 @@
android:icon="@drawable/ic_delete_white_24dp"
app:showAsAction="ifRoom"/>
<item android:id="@+id/action_select_all"
android:title="@string/action_select_all"
android:icon="@drawable/ic_select_all_white_24dp"
app:showAsAction="ifRoom"/>
</menu>