Horis il y a 4 ans
Parent
commit
3f2a9f682e

+ 2 - 1
app/src/main/java/io/legado/app/api/controller/BookController.kt

@@ -12,6 +12,7 @@ import io.legado.app.help.CacheManager
 import io.legado.app.help.book.BookHelp
 import io.legado.app.help.book.BookHelp
 import io.legado.app.help.book.ContentProcessor
 import io.legado.app.help.book.ContentProcessor
 import io.legado.app.help.book.isLocal
 import io.legado.app.help.book.isLocal
+import io.legado.app.help.config.AppConfig
 import io.legado.app.help.glide.ImageLoader
 import io.legado.app.help.glide.ImageLoader
 import io.legado.app.model.BookCover
 import io.legado.app.model.BookCover
 import io.legado.app.model.localBook.LocalBook
 import io.legado.app.model.localBook.LocalBook
@@ -39,7 +40,7 @@ object BookController {
             return if (books.isEmpty()) {
             return if (books.isEmpty()) {
                 returnData.setErrorMsg("还没有添加小说")
                 returnData.setErrorMsg("还没有添加小说")
             } else {
             } else {
-                val data = when (appCtx.getPrefInt(PreferKey.bookshelfSort)) {
+                val data = when (AppConfig.bookshelfSort) {
                     1 -> books.sortedByDescending { it.latestChapterTime }
                     1 -> books.sortedByDescending { it.latestChapterTime }
                     2 -> books.sortedWith { o1, o2 ->
                     2 -> books.sortedWith { o1, o2 ->
                         o1.name.cnCompare(o2.name)
                         o1.name.cnCompare(o2.name)

+ 5 - 1
app/src/main/java/io/legado/app/data/entities/Book.kt

@@ -267,7 +267,10 @@ data class Book(
         this.tocHtml = this@Book.tocHtml
         this.tocHtml = this@Book.tocHtml
     }
     }
 
 
-    fun changeTo(newBook: Book, toc: List<BookChapter>): Book {
+    /**
+     * 迁移旧的书籍的一些信息到新的书籍中
+     */
+    fun migrateTo(newBook: Book, toc: List<BookChapter>): Book {
         newBook.durChapterIndex = BookHelp
         newBook.durChapterIndex = BookHelp
             .getDurChapter(durChapterIndex, durChapterTitle, toc, totalChapterNum)
             .getDurChapter(durChapterIndex, durChapterTitle, toc, totalChapterNum)
         newBook.durChapterTitle = runBlocking {
         newBook.durChapterTitle = runBlocking {
@@ -276,6 +279,7 @@ data class Book(
             )
             )
         }
         }
         newBook.durChapterPos = durChapterPos
         newBook.durChapterPos = durChapterPos
+        newBook.durChapterTime = durChapterTime
         newBook.group = group
         newBook.group = group
         newBook.order = order
         newBook.order = order
         newBook.customCoverUrl = customCoverUrl
         newBook.customCoverUrl = customCoverUrl

+ 6 - 0
app/src/main/java/io/legado/app/help/config/AppConfig.kt

@@ -366,6 +366,12 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
             appCtx.putPrefInt(PreferKey.pageTouchSlop, value)
             appCtx.putPrefInt(PreferKey.pageTouchSlop, value)
         }
         }
 
 
+    var bookshelfSort: Int
+        get() = appCtx.getPrefInt(PreferKey.bookshelfSort, 0)
+        set(value) {
+            appCtx.putPrefInt(PreferKey.bookshelfSort, value)
+        }
+
     private fun getPrefUserAgent(): String {
     private fun getPrefUserAgent(): String {
         val ua = appCtx.getPrefString(PreferKey.userAgent)
         val ua = appCtx.getPrefString(PreferKey.userAgent)
         if (ua.isNullOrBlank()) {
         if (ua.isNullOrBlank()) {

+ 1 - 1
app/src/main/java/io/legado/app/ui/book/audio/AudioPlayActivity.kt

@@ -214,7 +214,7 @@ class AudioPlayActivity :
             AudioPlay.stop(this)
             AudioPlay.stop(this)
             launch {
             launch {
                 withContext(IO) {
                 withContext(IO) {
-                    AudioPlay.book?.changeTo(book, toc)
+                    AudioPlay.book?.migrateTo(book, toc)
                     appDb.bookDao.insert(book)
                     appDb.bookDao.insert(book)
                 }
                 }
                 startActivity<ReadBookActivity> {
                 startActivity<ReadBookActivity> {

+ 1 - 1
app/src/main/java/io/legado/app/ui/book/audio/AudioPlayViewModel.kt

@@ -78,7 +78,7 @@ class AudioPlayViewModel(application: Application) : BaseViewModel(application)
 
 
     fun changeTo(source: BookSource, book: Book, toc: List<BookChapter>) {
     fun changeTo(source: BookSource, book: Book, toc: List<BookChapter>) {
         execute {
         execute {
-            AudioPlay.book?.changeTo(book, toc)
+            AudioPlay.book?.migrateTo(book, toc)
             appDb.bookDao.insert(book)
             appDb.bookDao.insert(book)
             AudioPlay.book = book
             AudioPlay.book = book
             AudioPlay.bookSource = source
             AudioPlay.bookSource = source

+ 1 - 1
app/src/main/java/io/legado/app/ui/book/cache/CacheActivity.kt

@@ -168,7 +168,7 @@ class CacheActivity : VMBaseActivity<ActivityCacheBookBinding, CacheViewModel>()
                 val booksDownload = books.filter {
                 val booksDownload = books.filter {
                     !it.isAudio
                     !it.isAudio
                 }
                 }
-                when (getPrefInt(PreferKey.bookshelfSort)) {
+                when (AppConfig.bookshelfSort) {
                     1 -> booksDownload.sortedByDescending { it.latestChapterTime }
                     1 -> booksDownload.sortedByDescending { it.latestChapterTime }
                     2 -> booksDownload.sortedWith { o1, o2 ->
                     2 -> booksDownload.sortedWith { o1, o2 ->
                         o1.name.cnCompare(o2.name)
                         o1.name.cnCompare(o2.name)

+ 1 - 1
app/src/main/java/io/legado/app/ui/book/info/BookInfoViewModel.kt

@@ -235,7 +235,7 @@ class BookInfoViewModel(application: Application) : BaseViewModel(application) {
         changeSourceCoroutine?.cancel()
         changeSourceCoroutine?.cancel()
         changeSourceCoroutine = execute {
         changeSourceCoroutine = execute {
             bookSource = source
             bookSource = source
-            bookData.value?.changeTo(book, toc)
+            bookData.value?.migrateTo(book, toc)
             if (inBookshelf) {
             if (inBookshelf) {
                 book.removeType(BookType.updateError)
                 book.removeType(BookType.updateError)
                 appDb.bookDao.insert(book)
                 appDb.bookDao.insert(book)

+ 3 - 2
app/src/main/java/io/legado/app/ui/book/manage/BookshelfManageActivity.kt

@@ -18,6 +18,7 @@ import io.legado.app.data.entities.Book
 import io.legado.app.data.entities.BookGroup
 import io.legado.app.data.entities.BookGroup
 import io.legado.app.data.entities.BookSource
 import io.legado.app.data.entities.BookSource
 import io.legado.app.databinding.ActivityArrangeBookBinding
 import io.legado.app.databinding.ActivityArrangeBookBinding
+import io.legado.app.help.config.AppConfig
 import io.legado.app.lib.dialogs.alert
 import io.legado.app.lib.dialogs.alert
 import io.legado.app.lib.theme.primaryColor
 import io.legado.app.lib.theme.primaryColor
 import io.legado.app.ui.book.group.GroupManageDialog
 import io.legado.app.ui.book.group.GroupManageDialog
@@ -134,7 +135,7 @@ class BookshelfManageActivity :
         binding.recyclerView.addItemDecoration(VerticalDivider(this))
         binding.recyclerView.addItemDecoration(VerticalDivider(this))
         binding.recyclerView.adapter = adapter
         binding.recyclerView.adapter = adapter
         val itemTouchCallback = ItemTouchCallback(adapter)
         val itemTouchCallback = ItemTouchCallback(adapter)
-        itemTouchCallback.isCanDrag = getPrefInt(PreferKey.bookshelfSort) == 3
+        itemTouchCallback.isCanDrag = AppConfig.bookshelfSort == 3
         val dragSelectTouchHelper: DragSelectTouchHelper =
         val dragSelectTouchHelper: DragSelectTouchHelper =
             DragSelectTouchHelper(adapter.dragSelectCallback).setSlideArea(16, 50)
             DragSelectTouchHelper(adapter.dragSelectCallback).setSlideArea(16, 50)
         dragSelectTouchHelper.attachToRecyclerView(binding.recyclerView)
         dragSelectTouchHelper.attachToRecyclerView(binding.recyclerView)
@@ -194,7 +195,7 @@ class BookshelfManageActivity :
                         it.name.contains(searchKey) || it.author.contains(searchKey)
                         it.name.contains(searchKey) || it.author.contains(searchKey)
                     }
                     }
                 }
                 }
-                when (getPrefInt(PreferKey.bookshelfSort)) {
+                when (AppConfig.bookshelfSort) {
                     1 -> books.sortedByDescending {
                     1 -> books.sortedByDescending {
                         it.latestChapterTime
                         it.latestChapterTime
                     }
                     }

+ 1 - 1
app/src/main/java/io/legado/app/ui/book/manage/BookshelfManageViewModel.kt

@@ -59,7 +59,7 @@ class BookshelfManageViewModel(application: Application) : BaseViewModel(applica
                             .onFailure {
                             .onFailure {
                                 context.toastOnUi("获取目录出错\n${it.localizedMessage}")
                                 context.toastOnUi("获取目录出错\n${it.localizedMessage}")
                             }.getOrNull()?.let { toc ->
                             }.getOrNull()?.let { toc ->
-                                book.changeTo(newBook, toc)
+                                book.migrateTo(newBook, toc)
                                 book.removeType(BookType.updateError)
                                 book.removeType(BookType.updateError)
                                 appDb.bookDao.insert(newBook)
                                 appDb.bookDao.insert(newBook)
                                 appDb.bookChapterDao.insert(*toc.toTypedArray())
                                 appDb.bookChapterDao.insert(*toc.toTypedArray())

+ 1 - 1
app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt

@@ -822,7 +822,7 @@ class ReadBookActivity : BaseReadBookActivity(),
         } else {
         } else {
             ReadAloud.stop(this)
             ReadAloud.stop(this)
             launch {
             launch {
-                ReadBook.book?.changeTo(book, toc)
+                ReadBook.book?.migrateTo(book, toc)
                 appDb.bookDao.insert(book)
                 appDb.bookDao.insert(book)
             }
             }
             startActivity<AudioPlayActivity> {
             startActivity<AudioPlayActivity> {

+ 1 - 1
app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt

@@ -222,7 +222,7 @@ class ReadBookViewModel(application: Application) : BaseViewModel(application) {
         changeSourceCoroutine?.cancel()
         changeSourceCoroutine?.cancel()
         changeSourceCoroutine = execute {
         changeSourceCoroutine = execute {
             ReadBook.upMsg(context.getString(R.string.loading))
             ReadBook.upMsg(context.getString(R.string.loading))
-            ReadBook.book?.changeTo(book, toc)
+            ReadBook.book?.migrateTo(book, toc)
             book.removeType(BookType.updateError)
             book.removeType(BookType.updateError)
             appDb.bookDao.insert(book)
             appDb.bookDao.insert(book)
             appDb.bookChapterDao.insert(*toc.toTypedArray())
             appDb.bookChapterDao.insert(*toc.toTypedArray())

+ 2 - 2
app/src/main/java/io/legado/app/ui/main/bookshelf/BaseBookshelfFragment.kt

@@ -130,7 +130,7 @@ abstract class BaseBookshelfFragment(layoutId: Int) : VMBaseFragment<BookshelfVi
     fun configBookshelf() {
     fun configBookshelf() {
         alert(titleResource = R.string.bookshelf_layout) {
         alert(titleResource = R.string.bookshelf_layout) {
             val bookshelfLayout = getPrefInt(PreferKey.bookshelfLayout)
             val bookshelfLayout = getPrefInt(PreferKey.bookshelfLayout)
-            val bookshelfSort = getPrefInt(PreferKey.bookshelfSort)
+            val bookshelfSort = AppConfig.bookshelfSort
             val alertBinding =
             val alertBinding =
                 DialogBookshelfConfigBinding.inflate(layoutInflater)
                 DialogBookshelfConfigBinding.inflate(layoutInflater)
                     .apply {
                     .apply {
@@ -156,7 +156,7 @@ abstract class BaseBookshelfFragment(layoutId: Int) : VMBaseFragment<BookshelfVi
                         changed = true
                         changed = true
                     }
                     }
                     if (bookshelfSort != rgSort.getCheckedIndex()) {
                     if (bookshelfSort != rgSort.getCheckedIndex()) {
-                        putPrefInt(PreferKey.bookshelfSort, rgSort.getCheckedIndex())
+                        AppConfig.bookshelfSort = rgSort.getCheckedIndex()
                         changed = true
                         changed = true
                     }
                     }
                     if (changed) {
                     if (changed) {

+ 1 - 1
app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksFragment.kt

@@ -121,7 +121,7 @@ class BooksFragment() : BaseFragment(R.layout.fragment_books),
                 AppConst.bookGroupErrorId -> appDb.bookDao.flowUpdateError()
                 AppConst.bookGroupErrorId -> appDb.bookDao.flowUpdateError()
                 else -> appDb.bookDao.flowByGroup(groupId)
                 else -> appDb.bookDao.flowByGroup(groupId)
             }.conflate().map { list ->
             }.conflate().map { list ->
-                when (getPrefInt(PreferKey.bookshelfSort)) {
+                when (AppConfig.bookshelfSort) {
                     1 -> list.sortedByDescending { it.latestChapterTime }
                     1 -> list.sortedByDescending { it.latestChapterTime }
                     2 -> list.sortedWith { o1, o2 ->
                     2 -> list.sortedWith { o1, o2 ->
                         o1.name.cnCompare(o2.name)
                         o1.name.cnCompare(o2.name)

+ 1 - 1
app/src/main/java/io/legado/app/ui/main/bookshelf/style2/BookshelfFragment2.kt

@@ -133,7 +133,7 @@ class BookshelfFragment2 : BaseBookshelfFragment(R.layout.fragment_bookshelf1),
                 AppConst.bookGroupErrorId -> appDb.bookDao.flowUpdateError()
                 AppConst.bookGroupErrorId -> appDb.bookDao.flowUpdateError()
                 else -> appDb.bookDao.flowByGroup(groupId)
                 else -> appDb.bookDao.flowByGroup(groupId)
             }.conflate().map { list ->
             }.conflate().map { list ->
-                when (getPrefInt(PreferKey.bookshelfSort)) {
+                when (AppConfig.bookshelfSort) {
                     1 -> list.sortedByDescending {
                     1 -> list.sortedByDescending {
                         it.latestChapterTime
                         it.latestChapterTime
                     }
                     }