diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt index 6a16e962a..6a2a00e19 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt @@ -12,7 +12,7 @@ import androidx.core.view.isVisible import androidx.lifecycle.Observer import com.jaredrummler.android.colorpicker.ColorPickerDialogListener import io.legado.app.R -import io.legado.app.base.VMBaseActivity +import io.legado.app.base.BaseActivity import io.legado.app.constant.Bus import io.legado.app.constant.Status import io.legado.app.data.entities.Book @@ -51,15 +51,13 @@ import org.jetbrains.anko.startActivity import org.jetbrains.anko.startActivityForResult import org.jetbrains.anko.toast -class ReadBookActivity : VMBaseActivity(R.layout.activity_book_read), +class ReadBookActivity : BaseActivity(R.layout.activity_book_read), PageView.CallBack, ReadMenu.CallBack, ReadAloudDialog.CallBack, ChangeSourceDialog.CallBack, ReadBookViewModel.CallBack, ColorPickerDialogListener { - override val viewModel: ReadBookViewModel - get() = getViewModel(ReadBookViewModel::class.java) private val requestCodeChapterList = 568 private val requestCodeEditSource = 111 @@ -70,9 +68,9 @@ class ReadBookActivity : VMBaseActivity(R.layout.activity_boo Help.upLayoutInDisplayCutoutMode(window) setSupportActionBar(toolbar) initView() - viewModel.callBack = this - viewModel.titleDate.observe(this, Observer { title_bar.title = it }) - viewModel.initData(intent) + ReadBookViewModel.callBack = this + ReadBookViewModel.titleDate.observe(this, Observer { title_bar.title = it }) + ReadBookViewModel.initData(intent) } override fun onWindowFocusChanged(hasFocus: Boolean) { @@ -101,7 +99,7 @@ class ReadBookActivity : VMBaseActivity(R.layout.activity_boo */ private fun initView() { tv_chapter_name.onClick { - viewModel.webBook?.let { + ReadBookViewModel.webBook?.let { startActivityForResult( requestCodeEditSource, Pair("data", it.bookSource.bookSourceUrl) @@ -138,15 +136,15 @@ class ReadBookActivity : VMBaseActivity(R.layout.activity_boo when (item.itemId) { R.id.menu_change_source -> { read_menu.runMenuOut() - viewModel.book?.let { + ReadBookViewModel.book?.let { ChangeSourceDialog.show(supportFragmentManager, it.name, it.author) } } R.id.menu_refresh -> { - viewModel.book?.let { - viewModel.curTextChapter = null + ReadBookViewModel.book?.let { + ReadBookViewModel.curTextChapter = null page_view.upContent() - viewModel.refreshContent(it) + ReadBookViewModel.refreshContent(it) } } } @@ -252,16 +250,16 @@ class ReadBookActivity : VMBaseActivity(R.layout.activity_boo * 加载章节内容 */ override fun loadContent() { - viewModel.loadContent(viewModel.durChapterIndex) - viewModel.loadContent(viewModel.durChapterIndex + 1) - viewModel.loadContent(viewModel.durChapterIndex - 1) + ReadBookViewModel.loadContent(ReadBookViewModel.durChapterIndex) + ReadBookViewModel.loadContent(ReadBookViewModel.durChapterIndex + 1) + ReadBookViewModel.loadContent(ReadBookViewModel.durChapterIndex - 1) } /** * 加载章节内容, index章节序号 */ override fun loadContent(index: Int) { - viewModel.loadContent(index) + ReadBookViewModel.loadContent(index) } /** @@ -269,9 +267,9 @@ class ReadBookActivity : VMBaseActivity(R.layout.activity_boo */ override fun contentLoadFinish(bookChapter: BookChapter, content: String) { when (bookChapter.index) { - viewModel.durChapterIndex -> launch { - viewModel.curTextChapter = ChapterProvider - .getTextChapter(bookChapter, content, viewModel.chapterSize) + ReadBookViewModel.durChapterIndex -> launch { + ReadBookViewModel.curTextChapter = ChapterProvider + .getTextChapter(bookChapter, content, ReadBookViewModel.chapterSize) page_view.upContent() curChapterChanged() if (intent.getBooleanExtra("readAloud", false)) { @@ -279,14 +277,14 @@ class ReadBookActivity : VMBaseActivity(R.layout.activity_boo readAloud() } } - viewModel.durChapterIndex - 1 -> launch { - viewModel.prevTextChapter = ChapterProvider - .getTextChapter(bookChapter, content, viewModel.chapterSize) + ReadBookViewModel.durChapterIndex - 1 -> launch { + ReadBookViewModel.prevTextChapter = ChapterProvider + .getTextChapter(bookChapter, content, ReadBookViewModel.chapterSize) page_view.upContent(-1) } - viewModel.durChapterIndex + 1 -> launch { - viewModel.nextTextChapter = ChapterProvider - .getTextChapter(bookChapter, content, viewModel.chapterSize) + ReadBookViewModel.durChapterIndex + 1 -> launch { + ReadBookViewModel.nextTextChapter = ChapterProvider + .getTextChapter(bookChapter, content, ReadBookViewModel.chapterSize) page_view.upContent(1) } } @@ -297,22 +295,23 @@ class ReadBookActivity : VMBaseActivity(R.layout.activity_boo } private fun curChapterChanged() { - viewModel.curTextChapter?.let { + ReadBookViewModel.curTextChapter?.let { tv_chapter_name.text = it.title tv_chapter_name.visible() - if (!viewModel.isLocalBook) { + if (!ReadBookViewModel.isLocalBook) { tv_chapter_url.text = it.url tv_chapter_url.visible() } seek_read_page.max = it.pageSize().minus(1) - tv_pre.isEnabled = viewModel.durChapterIndex != 0 - tv_next.isEnabled = viewModel.durChapterIndex != viewModel.chapterSize - 1 + tv_pre.isEnabled = ReadBookViewModel.durChapterIndex != 0 + tv_next.isEnabled = + ReadBookViewModel.durChapterIndex != ReadBookViewModel.chapterSize - 1 curPageChanged() } } private fun curPageChanged() { - seek_read_page.progress = viewModel.durPageIndex + seek_read_page.progress = ReadBookViewModel.durPageIndex when (readAloudStatus) { Status.PLAY -> readAloud() Status.PAUSE -> { @@ -326,36 +325,36 @@ class ReadBookActivity : VMBaseActivity(R.layout.activity_boo } override fun chapterSize(): Int { - return viewModel.chapterSize + return ReadBookViewModel.chapterSize } override val curOrigin: String? - get() = viewModel.book?.origin + get() = ReadBookViewModel.book?.origin override val oldBook: Book? - get() = viewModel.book + get() = ReadBookViewModel.book override fun changeTo(book: Book) { - viewModel.changeTo(book) + ReadBookViewModel.changeTo(book) } override fun durChapterIndex(): Int { - return viewModel.durChapterIndex + return ReadBookViewModel.durChapterIndex } override fun durChapterPos(): Int { - viewModel.curTextChapter?.let { - if (viewModel.durPageIndex < it.pageSize()) { - return viewModel.durPageIndex + ReadBookViewModel.curTextChapter?.let { + if (ReadBookViewModel.durPageIndex < it.pageSize()) { + return ReadBookViewModel.durPageIndex } return it.pageSize() - 1 } - return viewModel.durPageIndex + return ReadBookViewModel.durPageIndex } override fun setPageIndex(pageIndex: Int) { - viewModel.durPageIndex = pageIndex - viewModel.saveRead() + ReadBookViewModel.durPageIndex = pageIndex + ReadBookViewModel.saveRead() curPageChanged() } @@ -364,9 +363,9 @@ class ReadBookActivity : VMBaseActivity(R.layout.activity_boo */ override fun textChapter(chapterOnDur: Int): TextChapter? { return when (chapterOnDur) { - 0 -> viewModel.curTextChapter - 1 -> viewModel.nextTextChapter - -1 -> viewModel.prevTextChapter + 0 -> ReadBookViewModel.curTextChapter + 1 -> ReadBookViewModel.nextTextChapter + -1 -> ReadBookViewModel.prevTextChapter else -> null } } @@ -375,10 +374,10 @@ class ReadBookActivity : VMBaseActivity(R.layout.activity_boo * 下一页 */ override fun moveToNextChapter(upContent: Boolean): Boolean { - return if (viewModel.durChapterIndex < viewModel.chapterSize - 1) { - viewModel.durPageIndex = 0 - viewModel.moveToNextChapter(upContent) - viewModel.saveRead() + return if (ReadBookViewModel.durChapterIndex < ReadBookViewModel.chapterSize - 1) { + ReadBookViewModel.durPageIndex = 0 + ReadBookViewModel.moveToNextChapter(upContent) + ReadBookViewModel.saveRead() curChapterChanged() true } else { @@ -390,10 +389,11 @@ class ReadBookActivity : VMBaseActivity(R.layout.activity_boo * 上一页 */ override fun moveToPrevChapter(upContent: Boolean, last: Boolean): Boolean { - return if (viewModel.durChapterIndex > 0) { - viewModel.durPageIndex = if (last) viewModel.prevTextChapter?.lastIndex() ?: 0 else 0 - viewModel.moveToPrevChapter(upContent) - viewModel.saveRead() + return if (ReadBookViewModel.durChapterIndex > 0) { + ReadBookViewModel.durPageIndex = + if (last) ReadBookViewModel.prevTextChapter?.lastIndex() ?: 0 else 0 + ReadBookViewModel.moveToPrevChapter(upContent) + ReadBookViewModel.saveRead() curChapterChanged() true } else { @@ -418,10 +418,10 @@ class ReadBookActivity : VMBaseActivity(R.layout.activity_boo } override fun skipToPage(page: Int) { - viewModel.durPageIndex = page + ReadBookViewModel.durPageIndex = page page_view.upContent() curPageChanged() - viewModel.saveRead() + ReadBookViewModel.saveRead() } override fun openReplaceRule() { @@ -429,7 +429,7 @@ class ReadBookActivity : VMBaseActivity(R.layout.activity_boo } override fun openChapterList() { - viewModel.book?.let { + ReadBookViewModel.book?.let { startActivityForResult( requestCodeChapterList, Pair("bookUrl", it.bookUrl) @@ -468,15 +468,15 @@ class ReadBookActivity : VMBaseActivity(R.layout.activity_boo * 朗读 */ private fun readAloud(play: Boolean = true) { - val book = viewModel.book - val textChapter = viewModel.curTextChapter + val book = ReadBookViewModel.book + val textChapter = ReadBookViewModel.curTextChapter if (book != null && textChapter != null) { val key = IntentDataHelp.putData(textChapter) ReadAloud.play( this, book.name, textChapter.title, - viewModel.durPageIndex, + ReadBookViewModel.durPageIndex, key, play ) @@ -506,22 +506,22 @@ class ReadBookActivity : VMBaseActivity(R.layout.activity_boo super.onActivityResult(requestCode, resultCode, data) if (resultCode == Activity.RESULT_OK) { when (requestCode) { - requestCodeEditSource -> viewModel.upBookSource() + requestCodeEditSource -> ReadBookViewModel.upBookSource() requestCodeChapterList -> - data?.getIntExtra("index", viewModel.durChapterIndex)?.let { - viewModel.openChapter(it) + data?.getIntExtra("index", ReadBookViewModel.durChapterIndex)?.let { + ReadBookViewModel.openChapter(it) } } } } override fun finish() { - viewModel.book?.let { - if (!viewModel.inBookshelf) { + ReadBookViewModel.book?.let { + if (!ReadBookViewModel.inBookshelf) { this.alert(title = getString(R.string.add_to_shelf)) { message = getString(R.string.check_add_bookshelf, it.name) - okButton { viewModel.inBookshelf = true } - noButton { viewModel.removeFromBookshelf { super.finish() } } + okButton { ReadBookViewModel.inBookshelf = true } + noButton { ReadBookViewModel.removeFromBookshelf { super.finish() } } }.show().applyTint() } else { super.finish() @@ -534,8 +534,8 @@ class ReadBookActivity : VMBaseActivity(R.layout.activity_boo observeEvent(Bus.ALOUD_STATE) { readAloudStatus = it if (it == Status.STOP || it == Status.PAUSE) { - viewModel.curTextChapter?.let { textChapter -> - val page = textChapter.page(viewModel.durPageIndex) + ReadBookViewModel.curTextChapter?.let { textChapter -> + val page = textChapter.page(ReadBookViewModel.durPageIndex) if (page != null && page.text is SpannableStringBuilder) { page.text.removeSpan(ChapterProvider.readAloudSpan) page_view.upContent() @@ -546,7 +546,7 @@ class ReadBookActivity : VMBaseActivity(R.layout.activity_boo observeEvent(Bus.TIME_CHANGED) { page_view.upTime() } observeEvent(Bus.BATTERY_CHANGED) { page_view.upBattery(it) } observeEvent(Bus.OPEN_CHAPTER) { - viewModel.openChapter(it.index) + ReadBookViewModel.openChapter(it.index) page_view.upContent() } observeEvent(Bus.MEDIA_BUTTON) { @@ -568,9 +568,9 @@ class ReadBookActivity : VMBaseActivity(R.layout.activity_boo } observeEvent(Bus.TTS_START) { chapterStart -> launch(IO) { - viewModel.curTextChapter?.let { - val pageStart = chapterStart - it.getReadLength(viewModel.durPageIndex) - it.page(viewModel.durPageIndex)?.upPageAloudSpan(pageStart) + ReadBookViewModel.curTextChapter?.let { + val pageStart = chapterStart - it.getReadLength(ReadBookViewModel.durPageIndex) + it.page(ReadBookViewModel.durPageIndex)?.upPageAloudSpan(pageStart) withContext(Main) { page_view.upContent() } @@ -583,20 +583,20 @@ class ReadBookActivity : VMBaseActivity(R.layout.activity_boo if (page_view.isScrollDelegate) { page_view.moveToNextPage() } else { - viewModel.durPageIndex = viewModel.durPageIndex + 1 + ReadBookViewModel.durPageIndex = ReadBookViewModel.durPageIndex + 1 page_view.upContent() - viewModel.saveRead() + ReadBookViewModel.saveRead() } } 2 -> if (!moveToNextChapter(true)) ReadAloud.stop(this) -1 -> { - if (viewModel.durPageIndex > 0) { + if (ReadBookViewModel.durPageIndex > 0) { if (page_view.isScrollDelegate) { page_view.moveToPrevPage() } else { - viewModel.durPageIndex = viewModel.durPageIndex - 1 + ReadBookViewModel.durPageIndex = ReadBookViewModel.durPageIndex - 1 page_view.upContent() - viewModel.saveRead() + ReadBookViewModel.saveRead() } } else { moveToPrevChapter(true) diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt index b5542aea5..0dd83e4ed 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt @@ -20,7 +20,7 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import org.jetbrains.anko.toast -class ReadBookViewModel { +object ReadBookViewModel { var titleDate = MutableLiveData() var book: Book? = null var inBookshelf = false