pull/473/head
gedoor 4 years ago
parent ec35f502d8
commit 268b23c30e
  1. 56
      app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt
  2. 47
      app/src/main/java/io/legado/app/ui/book/read/ReadBookBaseActivity.kt
  3. 10
      app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt
  4. 6
      app/src/main/java/io/legado/app/ui/book/read/config/MoreConfigDialog.kt

@ -6,7 +6,6 @@ import android.content.Intent
import android.content.res.Configuration import android.content.res.Configuration
import android.graphics.Color import android.graphics.Color
import android.graphics.drawable.ColorDrawable import android.graphics.drawable.ColorDrawable
import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.os.Handler import android.os.Handler
import android.os.Looper import android.os.Looper
@ -23,9 +22,7 @@ import io.legado.app.constant.PreferKey
import io.legado.app.constant.Status import io.legado.app.constant.Status
import io.legado.app.data.entities.Book import io.legado.app.data.entities.Book
import io.legado.app.data.entities.BookChapter import io.legado.app.data.entities.BookChapter
import io.legado.app.help.BookHelp
import io.legado.app.help.ReadBookConfig import io.legado.app.help.ReadBookConfig
import io.legado.app.help.coroutine.Coroutine
import io.legado.app.help.storage.Backup import io.legado.app.help.storage.Backup
import io.legado.app.help.storage.SyncBookProgress import io.legado.app.help.storage.SyncBookProgress
import io.legado.app.lib.dialogs.alert import io.legado.app.lib.dialogs.alert
@ -47,7 +44,6 @@ import io.legado.app.ui.book.read.page.PageView
import io.legado.app.ui.book.read.page.TextPageFactory import io.legado.app.ui.book.read.page.TextPageFactory
import io.legado.app.ui.book.read.page.delegate.PageDelegate import io.legado.app.ui.book.read.page.delegate.PageDelegate
import io.legado.app.ui.book.searchContent.SearchContentActivity import io.legado.app.ui.book.searchContent.SearchContentActivity
import io.legado.app.ui.book.source.edit.BookSourceEditActivity
import io.legado.app.ui.book.toc.ChapterListActivity import io.legado.app.ui.book.toc.ChapterListActivity
import io.legado.app.ui.login.SourceLogin import io.legado.app.ui.login.SourceLogin
import io.legado.app.ui.replace.ReplaceRuleActivity import io.legado.app.ui.replace.ReplaceRuleActivity
@ -62,7 +58,6 @@ import kotlinx.coroutines.Dispatchers.Main
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import org.jetbrains.anko.sdk27.listeners.onClick
import org.jetbrains.anko.startActivity import org.jetbrains.anko.startActivity
import org.jetbrains.anko.startActivityForResult import org.jetbrains.anko.startActivityForResult
import org.jetbrains.anko.toast import org.jetbrains.anko.toast
@ -80,7 +75,6 @@ class ReadBookActivity : ReadBookBaseActivity(),
TocRegexDialog.CallBack, TocRegexDialog.CallBack,
ColorPickerDialogListener { ColorPickerDialogListener {
private val requestCodeChapterList = 568 private val requestCodeChapterList = 568
private val requestCodeEditSource = 111
private val requestCodeReplace = 312 private val requestCodeReplace = 312
private val requestCodeSearchResult = 123 private val requestCodeSearchResult = 123
private var menu: Menu? = null private var menu: Menu? = null
@ -102,7 +96,11 @@ class ReadBookActivity : ReadBookBaseActivity(),
override val headerHeight: Int get() = page_view.curPage.headerHeight override val headerHeight: Int get() = page_view.curPage.headerHeight
override fun onActivityCreated(savedInstanceState: Bundle?) { override fun onActivityCreated(savedInstanceState: Bundle?) {
initView() super.onActivityCreated(savedInstanceState)
cursor_left.setColorFilter(accentColor)
cursor_right.setColorFilter(accentColor)
cursor_left.setOnTouchListener(this)
cursor_right.setOnTouchListener(this)
upScreenTimeOut() upScreenTimeOut()
ReadBook.callBack = this ReadBook.callBack = this
ReadBook.titleDate.observe(this) { ReadBook.titleDate.observe(this) {
@ -161,32 +159,6 @@ class ReadBookActivity : ReadBookBaseActivity(),
} }
} }
/**
* 初始化View
*/
private fun initView() {
cursor_left.setColorFilter(accentColor)
cursor_right.setColorFilter(accentColor)
cursor_left.setOnTouchListener(this)
cursor_right.setOnTouchListener(this)
tv_chapter_name.onClick {
ReadBook.webBook?.let {
startActivityForResult<BookSourceEditActivity>(
requestCodeEditSource,
Pair("data", it.bookSource.bookSourceUrl)
)
}
}
tv_chapter_url.onClick {
runCatching {
val url = tv_chapter_url.text.toString()
val intent = Intent(Intent.ACTION_VIEW)
intent.data = Uri.parse(url)
startActivity(intent)
}
}
}
override fun onCompatCreateOptionsMenu(menu: Menu): Boolean { override fun onCompatCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.read_book, menu) menuInflater.inflate(R.menu.read_book, menu)
return super.onCompatCreateOptionsMenu(menu) return super.onCompatCreateOptionsMenu(menu)
@ -248,7 +220,7 @@ class ReadBookActivity : ReadBookBaseActivity(),
R.id.menu_enable_replace -> ReadBook.book?.let { R.id.menu_enable_replace -> ReadBook.book?.let {
it.setUseReplaceRule(!it.getUseReplaceRule()) it.setUseReplaceRule(!it.getUseReplaceRule())
menu?.findItem(R.id.menu_enable_replace)?.isChecked = it.getUseReplaceRule() menu?.findItem(R.id.menu_enable_replace)?.isChecked = it.getUseReplaceRule()
onReplaceRuleSave() viewModel.replaceRuleChanged()
} }
R.id.menu_re_segment -> ReadBook.book?.let { R.id.menu_re_segment -> ReadBook.book?.let {
it.setReSegment(!it.getReSegment()) it.setReSegment(!it.getReSegment())
@ -689,16 +661,6 @@ class ReadBookActivity : ReadBookBaseActivity(),
} }
} }
/**
* 替换规则变化
*/
private fun onReplaceRuleSave() {
Coroutine.async {
BookHelp.upReplaceRules()
ReadBook.loadContent(resetPageOffset = false)
}
}
/** /**
* 显示阅读样式配置 * 显示阅读样式配置
*/ */
@ -765,7 +727,6 @@ class ReadBookActivity : ReadBookBaseActivity(),
super.onActivityResult(requestCode, resultCode, data) super.onActivityResult(requestCode, resultCode, data)
if (resultCode == Activity.RESULT_OK) { if (resultCode == Activity.RESULT_OK) {
when (requestCode) { when (requestCode) {
requestCodeEditSource -> viewModel.upBookSource()
requestCodeChapterList -> requestCodeChapterList ->
data?.getIntExtra("index", ReadBook.durChapterIndex)?.let { index -> data?.getIntExtra("index", ReadBook.durChapterIndex)?.let { index ->
if (index != ReadBook.durChapterIndex) { if (index != ReadBook.durChapterIndex) {
@ -821,9 +782,8 @@ class ReadBookActivity : ReadBookBaseActivity(),
} }
} }
} }
requestCodeReplace -> onReplaceRuleSave() requestCodeReplace -> viewModel.replaceRuleChanged()
} }
} }
} }
@ -915,7 +875,7 @@ class ReadBookActivity : ReadBookBaseActivity(),
read_menu.upBrightnessState() read_menu.upBrightnessState()
} }
observeEvent<String>(EventBus.REPLACE_RULE_SAVE) { observeEvent<String>(EventBus.REPLACE_RULE_SAVE) {
onReplaceRuleSave() viewModel.replaceRuleChanged()
} }
} }

@ -1,7 +1,10 @@
package io.legado.app.ui.book.read package io.legado.app.ui.book.read
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.app.Activity
import android.content.Intent
import android.content.pm.ActivityInfo import android.content.pm.ActivityInfo
import android.net.Uri
import android.os.Build import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.view.* import android.view.*
@ -22,6 +25,7 @@ import io.legado.app.service.help.CacheBook
import io.legado.app.service.help.ReadBook import io.legado.app.service.help.ReadBook
import io.legado.app.ui.book.read.config.BgTextConfigDialog import io.legado.app.ui.book.read.config.BgTextConfigDialog
import io.legado.app.ui.book.read.config.PaddingConfigDialog import io.legado.app.ui.book.read.config.PaddingConfigDialog
import io.legado.app.ui.book.source.edit.BookSourceEditActivity
import io.legado.app.ui.widget.text.AutoCompleteTextView import io.legado.app.ui.widget.text.AutoCompleteTextView
import io.legado.app.utils.applyTint import io.legado.app.utils.applyTint
import io.legado.app.utils.getPrefString import io.legado.app.utils.getPrefString
@ -29,13 +33,16 @@ import io.legado.app.utils.getViewModel
import io.legado.app.utils.requestInputMethod import io.legado.app.utils.requestInputMethod
import kotlinx.android.synthetic.main.dialog_download_choice.view.* import kotlinx.android.synthetic.main.dialog_download_choice.view.*
import kotlinx.android.synthetic.main.dialog_edit_text.view.* import kotlinx.android.synthetic.main.dialog_edit_text.view.*
import kotlinx.android.synthetic.main.view_read_menu.*
import org.jetbrains.anko.sdk27.listeners.onClick
import org.jetbrains.anko.startActivityForResult
abstract class ReadBookBaseActivity : abstract class ReadBookBaseActivity :
VMBaseActivity<ReadBookViewModel>(R.layout.activity_book_read) { VMBaseActivity<ReadBookViewModel>(R.layout.activity_book_read) {
override val viewModel: ReadBookViewModel override val viewModel: ReadBookViewModel
get() = getViewModel(ReadBookViewModel::class.java) get() = getViewModel(ReadBookViewModel::class.java)
private val requestCodeEditSource = 111
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
ReadBook.msg = null ReadBook.msg = null
@ -44,6 +51,41 @@ abstract class ReadBookBaseActivity :
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
} }
override fun onActivityCreated(savedInstanceState: Bundle?) {
initView()
}
/**
* 初始化View
*/
private fun initView() {
tv_chapter_name.onClick {
ReadBook.webBook?.let {
startActivityForResult<BookSourceEditActivity>(
requestCodeEditSource,
Pair("data", it.bookSource.bookSourceUrl)
)
}
}
tv_chapter_url.onClick {
runCatching {
val url = tv_chapter_url.text.toString()
val intent = Intent(Intent.ACTION_VIEW)
intent.data = Uri.parse(url)
startActivity(intent)
}
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (resultCode == Activity.RESULT_OK) {
when (requestCode) {
requestCodeEditSource -> viewModel.upBookSource()
}
}
}
fun showPaddingConfig() { fun showPaddingConfig() {
PaddingConfigDialog().show(supportFragmentManager, "paddingConfig") PaddingConfigDialog().show(supportFragmentManager, "paddingConfig")
} }
@ -65,7 +107,6 @@ abstract class ReadBookBaseActivity :
} }
} }
/** /**
* 更新状态栏,导航栏 * 更新状态栏,导航栏
*/ */
@ -139,7 +180,7 @@ abstract class ReadBookBaseActivity :
/** /**
* 适配刘海 * 适配刘海
*/ */
fun upLayoutInDisplayCutoutMode() { private fun upLayoutInDisplayCutoutMode() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P && AppConfig.readBodyToLh) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P && AppConfig.readBodyToLh) {
window.attributes = window.attributes.apply { window.attributes = window.attributes.apply {
layoutInDisplayCutoutMode = layoutInDisplayCutoutMode =

@ -271,6 +271,16 @@ class ReadBookViewModel(application: Application) : BaseViewModel(application) {
} }
} }
/**
* 替换规则变化
*/
fun replaceRuleChanged() {
execute {
BookHelp.upReplaceRules()
ReadBook.loadContent(resetPageOffset = false)
}
}
override fun onCleared() { override fun onCleared() {
super.onCleared() super.onCleared()
if (BaseReadAloudService.pause) { if (BaseReadAloudService.pause) {

@ -14,7 +14,7 @@ import io.legado.app.constant.PreferKey
import io.legado.app.help.ReadBookConfig import io.legado.app.help.ReadBookConfig
import io.legado.app.lib.theme.ATH import io.legado.app.lib.theme.ATH
import io.legado.app.lib.theme.bottomBackground import io.legado.app.lib.theme.bottomBackground
import io.legado.app.ui.book.read.ReadBookActivityHelp import io.legado.app.ui.book.read.ReadBookActivity
import io.legado.app.utils.dp import io.legado.app.utils.dp
import io.legado.app.utils.getPrefBoolean import io.legado.app.utils.getPrefBoolean
import io.legado.app.utils.postEvent import io.legado.app.utils.postEvent
@ -101,9 +101,7 @@ class MoreConfigDialog : DialogFragment() {
PreferKey.keepLight -> postEvent(key, true) PreferKey.keepLight -> postEvent(key, true)
PreferKey.textSelectAble -> postEvent(key, getPrefBoolean(key)) PreferKey.textSelectAble -> postEvent(key, getPrefBoolean(key))
getString(R.string.pk_requested_direction) -> { getString(R.string.pk_requested_direction) -> {
activity?.let { (activity as? ReadBookActivity)?.setOrientation()
ReadBookActivityHelp.setOrientation(it)
}
} }
PreferKey.textFullJustify, PreferKey.textFullJustify,
PreferKey.textBottomJustify -> { PreferKey.textBottomJustify -> {

Loading…
Cancel
Save