diff --git a/app/src/main/java/io/legato/kazusa/ui/book/group/GroupEditDialog.kt b/app/src/main/java/io/legato/kazusa/ui/book/group/GroupEditDialog.kt index 0aff0c9d0..635907d4c 100644 --- a/app/src/main/java/io/legato/kazusa/ui/book/group/GroupEditDialog.kt +++ b/app/src/main/java/io/legato/kazusa/ui/book/group/GroupEditDialog.kt @@ -83,22 +83,24 @@ class GroupEditDialog() : BaseBottomSheetDialogFragment(R.layout.dialog_book_gro } binding.cbEnableRefresh.isChecked = group.enableRefresh - selectedSortIndex = if (group.bookSort in sortOptions.indices) { - group.bookSort + selectedSortIndex = group.bookSort + val displayIndex = selectedSortIndex + 1 + if (displayIndex in sortOptions.indices) { + binding.actvSortMenu.setText(sortOptions[displayIndex], false) } else { - 0 + binding.actvSortMenu.setText(sortOptions[0], false) + selectedSortIndex = -1 } - binding.actvSortMenu.setText(sortOptions[selectedSortIndex], false) } ?: run { binding.btnDelete.gone() binding.ivCover.load() - selectedSortIndex = 0 - binding.actvSortMenu.setText(sortOptions[selectedSortIndex], false) + selectedSortIndex = -1 + binding.actvSortMenu.setText(sortOptions[0], false) } binding.actvSortMenu.setOnItemClickListener { _, _, position, _ -> - selectedSortIndex = position + selectedSortIndex = position - 1 } binding.run { diff --git a/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/BooksFragment.kt b/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/BooksFragment.kt index 99ae5cb83..237ca9954 100644 --- a/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/BooksFragment.kt +++ b/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/BooksFragment.kt @@ -167,9 +167,12 @@ class BooksFragment() : BaseFragment(R.layout.fragment_books), } } - fun upBookSort() { - bookSort = AppConfig.bookshelfSort - upRecyclerData() + fun upBookSort(sort: Int) { + binding.root.post { + arguments?.putInt("bookSort", sort) + bookSort = sort + upRecyclerData() + } } fun setEnableRefresh(enable: Boolean) { diff --git a/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/BookshelfFragment1.kt b/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/BookshelfFragment1.kt index 352fcd291..5fc18285e 100644 --- a/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/BookshelfFragment1.kt +++ b/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/BookshelfFragment1.kt @@ -116,7 +116,7 @@ class BookshelfFragment1() : BaseBookshelfFragment(R.layout.fragment_bookshelf1) val position = it.position val group = bookGroups.getOrNull(position) ?: return@forEach it.setEnableRefresh(group.enableRefresh) - it.upBookSort() + it.upBookSort(group.getRealBookSort()) } } } diff --git a/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/BookshelfFragment2.kt b/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/BookshelfFragment2.kt index 59d06db8a..dd232f58f 100644 --- a/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/BookshelfFragment2.kt +++ b/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/BookshelfFragment2.kt @@ -170,11 +170,13 @@ class BookshelfFragment2() : BaseBookshelfFragment(R.layout.fragment_bookshelf2) allBooksFlowJob?.cancel() allBooksFlowJob = viewLifecycleOwner.lifecycleScope.launch { appDb.bookDao.flowAll().map { list -> - when (AppConfig.getBookSortByGroupId(BookGroup.Companion.IdRoot)) { + val sortType = BookGroup(BookGroup.Companion.IdRoot, "").getRealBookSort() + when (sortType) { 1 -> list.sortedByDescending { it.latestChapterTime } 2 -> list.sortedWith { o1, o2 -> o1.name.cnCompare(o2.name) } 3 -> list.sortedBy { it.order } 4 -> list.sortedByDescending { max(it.latestChapterTime, it.durChapterTime) } + 5 -> list.sortedWith { o1, o2 -> o1.author.cnCompare(o2.author) } else -> list.sortedByDescending { it.durChapterTime } } }.flowWithLifecycleAndDatabaseChangeFirst( @@ -213,7 +215,8 @@ class BookshelfFragment2() : BaseBookshelfFragment(R.layout.fragment_bookshelf2) //排序 val isDescending = AppConfig.bookshelfSortOrder == 1 - when (AppConfig.getBookSortByGroupId(groupId)) { + val sortType = AppConfig.getBookSortByGroupId(groupId) + when (sortType) { 1 -> if (isDescending) list.sortedByDescending { it.latestChapterTime } else list.sortedBy { it.latestChapterTime } @@ -226,12 +229,8 @@ class BookshelfFragment2() : BaseBookshelfFragment(R.layout.fragment_bookshelf2) else list.sortedBy { it.order } 4 -> if (isDescending) list.sortedByDescending { - max( - it.latestChapterTime, - it.durChapterTime - ) - } - else list.sortedBy { max(it.latestChapterTime, it.durChapterTime) } + max(it.latestChapterTime, it.durChapterTime) + } else list.sortedBy { max(it.latestChapterTime, it.durChapterTime) } 5 -> if (isDescending) list.sortedWith { o1, o2 -> o2.author.cnCompare(o1.author) } diff --git a/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/BookshelfFragment3.kt b/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/BookshelfFragment3.kt index b5a21dcda..6906f075f 100644 --- a/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/BookshelfFragment3.kt +++ b/app/src/main/java/io/legato/kazusa/ui/main/bookshelf/books/BookshelfFragment3.kt @@ -109,7 +109,7 @@ class BookshelfFragment3() : BaseBookshelfFragment(R.layout.fragment_bookshelf3) val position = it.position val group = bookGroups.getOrNull(position) ?: return@forEach it.setEnableRefresh(group.enableRefresh) - it.upBookSort() + it.upBookSort(group.getRealBookSort()) } } }