|
|
@ -21,6 +21,7 @@ import kotlinx.coroutines.launch |
|
|
|
class ReadBookViewModel(application: Application) : BaseViewModel(application) { |
|
|
|
class ReadBookViewModel(application: Application) : BaseViewModel(application) { |
|
|
|
var inBookshelf = false |
|
|
|
var inBookshelf = false |
|
|
|
var bookData = MutableLiveData<Book>() |
|
|
|
var bookData = MutableLiveData<Book>() |
|
|
|
|
|
|
|
val chapterListFinish = MutableLiveData<Boolean>() |
|
|
|
var chapterSize = 0 |
|
|
|
var chapterSize = 0 |
|
|
|
var bookSource: BookSource? = null |
|
|
|
var bookSource: BookSource? = null |
|
|
|
var callBack: CallBack? = null |
|
|
|
var callBack: CallBack? = null |
|
|
@ -60,7 +61,7 @@ class ReadBookViewModel(application: Application) : BaseViewModel(application) { |
|
|
|
durChapterIndex = count - 1 |
|
|
|
durChapterIndex = count - 1 |
|
|
|
} |
|
|
|
} |
|
|
|
chapterSize = count |
|
|
|
chapterSize = count |
|
|
|
loadChapterListFinish() |
|
|
|
chapterListFinish.postValue(true) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -84,7 +85,7 @@ class ReadBookViewModel(application: Application) : BaseViewModel(application) { |
|
|
|
if (!cList.isNullOrEmpty()) { |
|
|
|
if (!cList.isNullOrEmpty()) { |
|
|
|
App.db.bookChapterDao().insert(*cList.toTypedArray()) |
|
|
|
App.db.bookChapterDao().insert(*cList.toTypedArray()) |
|
|
|
chapterSize = cList.size |
|
|
|
chapterSize = cList.size |
|
|
|
loadChapterListFinish() |
|
|
|
chapterListFinish.postValue(true) |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
toast(R.string.error_load_toc) |
|
|
|
toast(R.string.error_load_toc) |
|
|
|
} |
|
|
|
} |
|
|
@ -94,14 +95,6 @@ class ReadBookViewModel(application: Application) : BaseViewModel(application) { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private fun loadChapterListFinish() { |
|
|
|
|
|
|
|
bookData.value?.let { |
|
|
|
|
|
|
|
loadContent(it, durChapterIndex) |
|
|
|
|
|
|
|
loadContent(it, durChapterIndex + 1) |
|
|
|
|
|
|
|
loadContent(it, durChapterIndex - 1) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fun loadContent(book: Book, index: Int) { |
|
|
|
fun loadContent(book: Book, index: Int) { |
|
|
|
synchronized(loadingLock) { |
|
|
|
synchronized(loadingLock) { |
|
|
|
if (loadingChapters.contains(index)) return |
|
|
|
if (loadingChapters.contains(index)) return |
|
|
@ -125,7 +118,7 @@ class ReadBookViewModel(application: Application) : BaseViewModel(application) { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
fun download(book: Book, index: Int) { |
|
|
|
private fun download(book: Book, index: Int) { |
|
|
|
synchronized(loadingLock) { |
|
|
|
synchronized(loadingLock) { |
|
|
|
if (loadingChapters.contains(index)) return |
|
|
|
if (loadingChapters.contains(index)) return |
|
|
|
loadingChapters.add(index) |
|
|
|
loadingChapters.add(index) |
|
|
@ -200,19 +193,15 @@ class ReadBookViewModel(application: Application) : BaseViewModel(application) { |
|
|
|
durPageIndex = 0 |
|
|
|
durPageIndex = 0 |
|
|
|
} |
|
|
|
} |
|
|
|
saveRead() |
|
|
|
saveRead() |
|
|
|
loadChapterListFinish() |
|
|
|
chapterListFinish.postValue(true) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
fun saveRead() { |
|
|
|
fun saveRead() { |
|
|
|
execute { |
|
|
|
execute { |
|
|
|
bookData.value?.let { book -> |
|
|
|
bookData.value?.let { book -> |
|
|
|
book.durChapterTime = System.currentTimeMillis() |
|
|
|
|
|
|
|
book.durChapterIndex = durChapterIndex |
|
|
|
book.durChapterIndex = durChapterIndex |
|
|
|
book.durChapterPos = durPageIndex |
|
|
|
book.durChapterPos = durPageIndex |
|
|
|
curTextChapter?.let { |
|
|
|
App.db.bookDao().update(book) |
|
|
|
book.durChapterTitle = it.title |
|
|
|
|
|
|
|
App.db.bookDao().update(book) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|