优化
This commit is contained in:
@@ -81,6 +81,7 @@ class App : Application() {
|
|||||||
val clearTime = System.currentTimeMillis() - TimeUnit.DAYS.toMillis(1)
|
val clearTime = System.currentTimeMillis() - TimeUnit.DAYS.toMillis(1)
|
||||||
appDb.searchBookDao.clearExpired(clearTime)
|
appDb.searchBookDao.clearExpired(clearTime)
|
||||||
}
|
}
|
||||||
|
appDb.bookDao.deleteNotShelfBook()
|
||||||
RuleBigDataHelp.clearInvalid()
|
RuleBigDataHelp.clearInvalid()
|
||||||
BookHelp.clearInvalidCache()
|
BookHelp.clearInvalidCache()
|
||||||
Backup.clearCache()
|
Backup.clearCache()
|
||||||
|
|||||||
@@ -43,9 +43,14 @@ object BookType {
|
|||||||
*/
|
*/
|
||||||
const val archive = 0b1000000000
|
const val archive = 0b1000000000
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 1024 未正式加入到书架的临时阅读书籍
|
||||||
|
*/
|
||||||
|
const val notShelf = 0b100_0000_0000
|
||||||
|
|
||||||
@Target(AnnotationTarget.VALUE_PARAMETER)
|
@Target(AnnotationTarget.VALUE_PARAMETER)
|
||||||
@Retention(AnnotationRetention.SOURCE)
|
@Retention(AnnotationRetention.SOURCE)
|
||||||
@IntDef(text, updateError, audio, image, webFile, local, archive)
|
@IntDef(text, updateError, audio, image, webFile, local, archive, notShelf)
|
||||||
annotation class Type
|
annotation class Type
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -148,4 +148,7 @@ interface BookDao {
|
|||||||
|
|
||||||
@Query("update books set `group` = `group` - :group where `group` & :group > 0")
|
@Query("update books set `group` = `group` - :group where `group` & :group > 0")
|
||||||
fun removeGroup(group: Long)
|
fun removeGroup(group: Long)
|
||||||
|
|
||||||
|
@Query("delete from books where type & ${BookType.notShelf} > 0")
|
||||||
|
fun deleteNotShelfBook()
|
||||||
}
|
}
|
||||||
@@ -223,6 +223,10 @@ fun BookSource.getBookType(): Int {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun BookSource.getAllBookType(): Int {
|
||||||
|
return BookType.text or BookType.image or BookType.audio or BookType.webFile
|
||||||
|
}
|
||||||
|
|
||||||
fun Book.sync(oldBook: Book) {
|
fun Book.sync(oldBook: Book) {
|
||||||
val curBook = appDb.bookDao.getBook(oldBook.bookUrl)!!
|
val curBook = appDb.bookDao.getBook(oldBook.bookUrl)!!
|
||||||
durChapterTime = curBook.durChapterTime
|
durChapterTime = curBook.durChapterTime
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import io.legado.app.service.BaseReadAloudService
|
|||||||
import io.legado.app.ui.book.read.page.entities.TextChapter
|
import io.legado.app.ui.book.read.page.entities.TextChapter
|
||||||
import io.legado.app.ui.book.read.page.provider.ChapterProvider
|
import io.legado.app.ui.book.read.page.provider.ChapterProvider
|
||||||
import io.legado.app.ui.book.read.page.provider.LayoutProgressListener
|
import io.legado.app.ui.book.read.page.provider.LayoutProgressListener
|
||||||
|
import io.legado.app.utils.LogUtils
|
||||||
import io.legado.app.utils.stackTraceStr
|
import io.legado.app.utils.stackTraceStr
|
||||||
import io.legado.app.utils.toastOnUi
|
import io.legado.app.utils.toastOnUi
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
@@ -97,6 +98,7 @@ object ReadBook : CoroutineScope by MainScope() {
|
|||||||
durChapterPos = book.durChapterPos
|
durChapterPos = book.durChapterPos
|
||||||
isLocalBook = book.isLocal
|
isLocalBook = book.isLocal
|
||||||
clearTextChapter()
|
clearTextChapter()
|
||||||
|
callBack?.upContent()
|
||||||
callBack?.upMenuView()
|
callBack?.upMenuView()
|
||||||
callBack?.upPageAnim()
|
callBack?.upPageAnim()
|
||||||
upWebBook(book)
|
upWebBook(book)
|
||||||
|
|||||||
@@ -6,7 +6,10 @@ import io.legado.app.data.entities.BookChapter
|
|||||||
import io.legado.app.data.entities.BookSource
|
import io.legado.app.data.entities.BookSource
|
||||||
import io.legado.app.data.entities.SearchBook
|
import io.legado.app.data.entities.SearchBook
|
||||||
import io.legado.app.exception.NoStackTraceException
|
import io.legado.app.exception.NoStackTraceException
|
||||||
|
import io.legado.app.help.book.addType
|
||||||
|
import io.legado.app.help.book.getAllBookType
|
||||||
import io.legado.app.help.book.getBookType
|
import io.legado.app.help.book.getBookType
|
||||||
|
import io.legado.app.help.book.removeType
|
||||||
import io.legado.app.help.coroutine.Coroutine
|
import io.legado.app.help.coroutine.Coroutine
|
||||||
import io.legado.app.help.http.StrResponse
|
import io.legado.app.help.http.StrResponse
|
||||||
import io.legado.app.model.Debug
|
import io.legado.app.model.Debug
|
||||||
@@ -144,7 +147,8 @@ object WebBook {
|
|||||||
book: Book,
|
book: Book,
|
||||||
canReName: Boolean = true,
|
canReName: Boolean = true,
|
||||||
): Book {
|
): Book {
|
||||||
book.type = bookSource.getBookType()
|
book.removeType(bookSource.getAllBookType())
|
||||||
|
book.addType(bookSource.getBookType())
|
||||||
if (!book.infoHtml.isNullOrEmpty()) {
|
if (!book.infoHtml.isNullOrEmpty()) {
|
||||||
BookInfo.analyzeBookInfo(
|
BookInfo.analyzeBookInfo(
|
||||||
bookSource = bookSource,
|
bookSource = bookSource,
|
||||||
@@ -220,7 +224,8 @@ object WebBook {
|
|||||||
book: Book,
|
book: Book,
|
||||||
runPerJs: Boolean = false
|
runPerJs: Boolean = false
|
||||||
): Result<List<BookChapter>> {
|
): Result<List<BookChapter>> {
|
||||||
book.type = bookSource.getBookType()
|
book.removeType(bookSource.getAllBookType())
|
||||||
|
book.addType(bookSource.getBookType())
|
||||||
return kotlin.runCatching {
|
return kotlin.runCatching {
|
||||||
if (runPerJs) {
|
if (runPerJs) {
|
||||||
runPreUpdateJs(bookSource, book).getOrThrow()
|
runPreUpdateJs(bookSource, book).getOrThrow()
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import io.legado.app.data.entities.BookSource
|
|||||||
import io.legado.app.databinding.ActivityBookInfoBinding
|
import io.legado.app.databinding.ActivityBookInfoBinding
|
||||||
import io.legado.app.exception.NoStackTraceException
|
import io.legado.app.exception.NoStackTraceException
|
||||||
import io.legado.app.help.AppWebDav
|
import io.legado.app.help.AppWebDav
|
||||||
|
import io.legado.app.help.book.addType
|
||||||
import io.legado.app.help.book.getRemoteUrl
|
import io.legado.app.help.book.getRemoteUrl
|
||||||
import io.legado.app.help.book.isAudio
|
import io.legado.app.help.book.isAudio
|
||||||
import io.legado.app.help.book.isLocal
|
import io.legado.app.help.book.isLocal
|
||||||
@@ -45,6 +46,7 @@ import io.legado.app.ui.book.changesource.ChangeBookSourceDialog
|
|||||||
import io.legado.app.ui.book.group.GroupSelectDialog
|
import io.legado.app.ui.book.group.GroupSelectDialog
|
||||||
import io.legado.app.ui.book.info.edit.BookInfoEditActivity
|
import io.legado.app.ui.book.info.edit.BookInfoEditActivity
|
||||||
import io.legado.app.ui.book.read.ReadBookActivity
|
import io.legado.app.ui.book.read.ReadBookActivity
|
||||||
|
import io.legado.app.ui.book.read.ReadBookActivity.Companion.RESULT_DELETED
|
||||||
import io.legado.app.ui.book.search.SearchActivity
|
import io.legado.app.ui.book.search.SearchActivity
|
||||||
import io.legado.app.ui.book.source.edit.BookSourceEditActivity
|
import io.legado.app.ui.book.source.edit.BookSourceEditActivity
|
||||||
import io.legado.app.ui.book.toc.TocActivityResult
|
import io.legado.app.ui.book.toc.TocActivityResult
|
||||||
@@ -106,10 +108,17 @@ class BookInfoActivity :
|
|||||||
ActivityResultContracts.StartActivityForResult()
|
ActivityResultContracts.StartActivityForResult()
|
||||||
) {
|
) {
|
||||||
viewModel.upBook(intent)
|
viewModel.upBook(intent)
|
||||||
if (it.resultCode == RESULT_OK) {
|
when (it.resultCode) {
|
||||||
|
RESULT_OK -> {
|
||||||
viewModel.inBookshelf = true
|
viewModel.inBookshelf = true
|
||||||
upTvBookshelf()
|
upTvBookshelf()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RESULT_DELETED -> {
|
||||||
|
setResult(RESULT_OK)
|
||||||
|
finish()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
private val infoEditResult = registerForActivityResult(
|
private val infoEditResult = registerForActivityResult(
|
||||||
StartActivityContract(BookInfoEditActivity::class.java)
|
StartActivityContract(BookInfoEditActivity::class.java)
|
||||||
@@ -550,6 +559,7 @@ class BookInfoActivity :
|
|||||||
LocalConfig.deleteBookOriginal = checkBox.isChecked
|
LocalConfig.deleteBookOriginal = checkBox.isChecked
|
||||||
}
|
}
|
||||||
viewModel.delBook(LocalConfig.deleteBookOriginal) {
|
viewModel.delBook(LocalConfig.deleteBookOriginal) {
|
||||||
|
setResult(RESULT_OK)
|
||||||
finish()
|
finish()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -557,6 +567,7 @@ class BookInfoActivity :
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
viewModel.delBook(LocalConfig.deleteBookOriginal) {
|
viewModel.delBook(LocalConfig.deleteBookOriginal) {
|
||||||
|
setResult(RESULT_OK)
|
||||||
finish()
|
finish()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -637,6 +648,7 @@ class BookInfoActivity :
|
|||||||
|
|
||||||
private fun readBook(book: Book) {
|
private fun readBook(book: Book) {
|
||||||
if (!viewModel.inBookshelf) {
|
if (!viewModel.inBookshelf) {
|
||||||
|
book.addType(BookType.notShelf)
|
||||||
viewModel.saveBook(book) {
|
viewModel.saveBook(book) {
|
||||||
viewModel.saveChapterList {
|
viewModel.saveChapterList {
|
||||||
startReadActivity(book)
|
startReadActivity(book)
|
||||||
|
|||||||
@@ -424,6 +424,7 @@ class BookInfoViewModel(application: Application) : BaseViewModel(application) {
|
|||||||
fun addToBookshelf(success: (() -> Unit)?) {
|
fun addToBookshelf(success: (() -> Unit)?) {
|
||||||
execute {
|
execute {
|
||||||
bookData.value?.let { book ->
|
bookData.value?.let { book ->
|
||||||
|
book.removeType(BookType.notShelf)
|
||||||
if (book.order == 0) {
|
if (book.order == 0) {
|
||||||
book.order = appDb.bookDao.minOrder - 1
|
book.order = appDb.bookDao.minOrder - 1
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,11 +12,21 @@ import io.legado.app.constant.BookType
|
|||||||
import io.legado.app.data.entities.Book
|
import io.legado.app.data.entities.Book
|
||||||
import io.legado.app.databinding.ActivityBookInfoEditBinding
|
import io.legado.app.databinding.ActivityBookInfoEditBinding
|
||||||
import io.legado.app.help.book.BookHelp
|
import io.legado.app.help.book.BookHelp
|
||||||
|
import io.legado.app.help.book.addType
|
||||||
import io.legado.app.help.book.isAudio
|
import io.legado.app.help.book.isAudio
|
||||||
import io.legado.app.help.book.isImage
|
import io.legado.app.help.book.isImage
|
||||||
import io.legado.app.help.book.isLocal
|
import io.legado.app.help.book.isLocal
|
||||||
|
import io.legado.app.help.book.removeType
|
||||||
import io.legado.app.ui.book.changecover.ChangeCoverDialog
|
import io.legado.app.ui.book.changecover.ChangeCoverDialog
|
||||||
import io.legado.app.utils.*
|
import io.legado.app.utils.FileUtils
|
||||||
|
import io.legado.app.utils.MD5Utils
|
||||||
|
import io.legado.app.utils.SelectImageContract
|
||||||
|
import io.legado.app.utils.externalFiles
|
||||||
|
import io.legado.app.utils.inputStream
|
||||||
|
import io.legado.app.utils.launch
|
||||||
|
import io.legado.app.utils.readUri
|
||||||
|
import io.legado.app.utils.showDialogFragment
|
||||||
|
import io.legado.app.utils.toastOnUi
|
||||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||||
import splitties.init.appCtx
|
import splitties.init.appCtx
|
||||||
import java.io.FileOutputStream
|
import java.io.FileOutputStream
|
||||||
@@ -100,11 +110,13 @@ class BookInfoEditActivity :
|
|||||||
book.name = tieBookName.text?.toString() ?: ""
|
book.name = tieBookName.text?.toString() ?: ""
|
||||||
book.author = tieBookAuthor.text?.toString() ?: ""
|
book.author = tieBookAuthor.text?.toString() ?: ""
|
||||||
val local = if (book.isLocal) BookType.local else 0
|
val local = if (book.isLocal) BookType.local else 0
|
||||||
book.type = when (spType.selectedItemPosition) {
|
val bookType = when (spType.selectedItemPosition) {
|
||||||
2 -> BookType.image or local
|
2 -> BookType.image or local
|
||||||
1 -> BookType.audio or local
|
1 -> BookType.audio or local
|
||||||
else -> BookType.text or local
|
else -> BookType.text or local
|
||||||
}
|
}
|
||||||
|
book.removeType(BookType.local, BookType.image, BookType.audio, BookType.text)
|
||||||
|
book.addType(bookType)
|
||||||
val customCoverUrl = tieCoverUrl.text?.toString()
|
val customCoverUrl = tieCoverUrl.text?.toString()
|
||||||
book.customCoverUrl = if (customCoverUrl == book.coverUrl) null else customCoverUrl
|
book.customCoverUrl = if (customCoverUrl == book.coverUrl) null else customCoverUrl
|
||||||
book.customIntro = tieBookIntro.text?.toString()
|
book.customIntro = tieBookIntro.text?.toString()
|
||||||
|
|||||||
@@ -66,6 +66,7 @@ import io.legado.app.ui.book.audio.AudioPlayActivity
|
|||||||
import io.legado.app.ui.book.bookmark.BookmarkDialog
|
import io.legado.app.ui.book.bookmark.BookmarkDialog
|
||||||
import io.legado.app.ui.book.changesource.ChangeBookSourceDialog
|
import io.legado.app.ui.book.changesource.ChangeBookSourceDialog
|
||||||
import io.legado.app.ui.book.changesource.ChangeChapterSourceDialog
|
import io.legado.app.ui.book.changesource.ChangeChapterSourceDialog
|
||||||
|
import io.legado.app.ui.book.info.BookInfoActivity
|
||||||
import io.legado.app.ui.book.read.config.AutoReadDialog
|
import io.legado.app.ui.book.read.config.AutoReadDialog
|
||||||
import io.legado.app.ui.book.read.config.BgTextConfigDialog.Companion.BG_COLOR
|
import io.legado.app.ui.book.read.config.BgTextConfigDialog.Companion.BG_COLOR
|
||||||
import io.legado.app.ui.book.read.config.BgTextConfigDialog.Companion.TEXT_COLOR
|
import io.legado.app.ui.book.read.config.BgTextConfigDialog.Companion.TEXT_COLOR
|
||||||
@@ -189,6 +190,13 @@ class ReadBookActivity : BaseReadBookActivity(),
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
private val bookInfoActivity =
|
||||||
|
registerForActivityResult(StartActivityContract(BookInfoActivity::class.java)) {
|
||||||
|
if (it.resultCode == RESULT_OK) {
|
||||||
|
setResult(RESULT_DELETED)
|
||||||
|
super.finish()
|
||||||
|
}
|
||||||
|
}
|
||||||
private val selectImageDir = registerForActivityResult(HandleFileContract()) {
|
private val selectImageDir = registerForActivityResult(HandleFileContract()) {
|
||||||
it.uri?.let { uri ->
|
it.uri?.let { uri ->
|
||||||
ACache.get().put(AppConst.imagePathKey, uri.toString())
|
ACache.get().put(AppConst.imagePathKey, uri.toString())
|
||||||
@@ -232,7 +240,6 @@ class ReadBookActivity : BaseReadBookActivity(),
|
|||||||
binding.readMenu.upSeekBar()
|
binding.readMenu.upSeekBar()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private var upContent = true
|
|
||||||
|
|
||||||
//恢复跳转前进度对话框的交互结果
|
//恢复跳转前进度对话框的交互结果
|
||||||
private var confirmRestoreProcess: Boolean? = null
|
private var confirmRestoreProcess: Boolean? = null
|
||||||
@@ -284,6 +291,9 @@ class ReadBookActivity : BaseReadBookActivity(),
|
|||||||
|
|
||||||
override fun onNewIntent(intent: Intent?) {
|
override fun onNewIntent(intent: Intent?) {
|
||||||
super.onNewIntent(intent)
|
super.onNewIntent(intent)
|
||||||
|
if (!ReadBook.inBookshelf) {
|
||||||
|
viewModel.removeFromBookshelf(null)
|
||||||
|
}
|
||||||
viewModel.initData(intent ?: return)
|
viewModel.initData(intent ?: return)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -953,6 +963,9 @@ class ReadBookActivity : BaseReadBookActivity(),
|
|||||||
|
|
||||||
override fun notifyBookChanged() {
|
override fun notifyBookChanged() {
|
||||||
bookChanged = true
|
bookChanged = true
|
||||||
|
if (!ReadBook.inBookshelf) {
|
||||||
|
viewModel.removeFromBookshelf { super.finish() }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1063,6 +1076,15 @@ class ReadBookActivity : BaseReadBookActivity(),
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun openBookInfoActivity() {
|
||||||
|
ReadBook.book?.let {
|
||||||
|
bookInfoActivity.launch {
|
||||||
|
putExtra("name", it.name)
|
||||||
|
putExtra("author", it.author)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 替换
|
* 替换
|
||||||
*/
|
*/
|
||||||
@@ -1462,6 +1484,8 @@ class ReadBookActivity : BaseReadBookActivity(),
|
|||||||
alert(title = getString(R.string.add_to_bookshelf)) {
|
alert(title = getString(R.string.add_to_bookshelf)) {
|
||||||
setMessage(getString(R.string.check_add_bookshelf, book.name))
|
setMessage(getString(R.string.check_add_bookshelf, book.name))
|
||||||
okButton {
|
okButton {
|
||||||
|
ReadBook.book?.removeType(BookType.notShelf)
|
||||||
|
ReadBook.book?.save()
|
||||||
ReadBook.inBookshelf = true
|
ReadBook.inBookshelf = true
|
||||||
setResult(Activity.RESULT_OK)
|
setResult(Activity.RESULT_OK)
|
||||||
}
|
}
|
||||||
@@ -1477,6 +1501,9 @@ class ReadBookActivity : BaseReadBookActivity(),
|
|||||||
popupAction.dismiss()
|
popupAction.dismiss()
|
||||||
binding.readView.onDestroy()
|
binding.readView.onDestroy()
|
||||||
ReadBook.unregister(this)
|
ReadBook.unregister(this)
|
||||||
|
if (!ReadBook.inBookshelf) {
|
||||||
|
viewModel.removeFromBookshelf(null)
|
||||||
|
}
|
||||||
if (!BuildConfig.DEBUG) {
|
if (!BuildConfig.DEBUG) {
|
||||||
Backup.autoBack(this)
|
Backup.autoBack(this)
|
||||||
}
|
}
|
||||||
@@ -1578,4 +1605,9 @@ class ReadBookActivity : BaseReadBookActivity(),
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
const val RESULT_DELETED = 100
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -316,8 +316,9 @@ class ReadBookViewModel(application: Application) : BaseViewModel(application) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun removeFromBookshelf(success: (() -> Unit)?) {
|
fun removeFromBookshelf(success: (() -> Unit)?) {
|
||||||
execute {
|
val book = ReadBook.book
|
||||||
ReadBook.book?.delete()
|
Coroutine.async {
|
||||||
|
book?.delete()
|
||||||
}.onSuccess {
|
}.onSuccess {
|
||||||
success?.invoke()
|
success?.invoke()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ import io.legado.app.lib.theme.getPrimaryTextColor
|
|||||||
import io.legado.app.lib.theme.primaryColor
|
import io.legado.app.lib.theme.primaryColor
|
||||||
import io.legado.app.lib.theme.primaryTextColor
|
import io.legado.app.lib.theme.primaryTextColor
|
||||||
import io.legado.app.model.ReadBook
|
import io.legado.app.model.ReadBook
|
||||||
import io.legado.app.ui.book.info.BookInfoActivity
|
|
||||||
import io.legado.app.ui.browser.WebViewActivity
|
import io.legado.app.ui.browser.WebViewActivity
|
||||||
import io.legado.app.ui.widget.seekbar.SeekBarChangeListener
|
import io.legado.app.ui.widget.seekbar.SeekBarChangeListener
|
||||||
import io.legado.app.utils.ColorUtils
|
import io.legado.app.utils.ColorUtils
|
||||||
@@ -332,12 +331,7 @@ class ReadMenu @JvmOverloads constructor(
|
|||||||
private fun bindEvent() = binding.run {
|
private fun bindEvent() = binding.run {
|
||||||
vwMenuBg.setOnClickListener { runMenuOut() }
|
vwMenuBg.setOnClickListener { runMenuOut() }
|
||||||
titleBar.toolbar.setOnClickListener {
|
titleBar.toolbar.setOnClickListener {
|
||||||
ReadBook.book?.let {
|
callBack.openBookInfoActivity()
|
||||||
context.startActivity<BookInfoActivity> {
|
|
||||||
putExtra("name", it.name)
|
|
||||||
putExtra("author", it.author)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
val chapterViewClickListener = OnClickListener {
|
val chapterViewClickListener = OnClickListener {
|
||||||
if (ReadBook.isLocalBook) {
|
if (ReadBook.isLocalBook) {
|
||||||
@@ -575,6 +569,7 @@ class ReadMenu @JvmOverloads constructor(
|
|||||||
fun openChapterList()
|
fun openChapterList()
|
||||||
fun openSearchActivity(searchWord: String?)
|
fun openSearchActivity(searchWord: String?)
|
||||||
fun openSourceEditActivity()
|
fun openSourceEditActivity()
|
||||||
|
fun openBookInfoActivity()
|
||||||
fun showReadStyle()
|
fun showReadStyle()
|
||||||
fun showMoreSetting()
|
fun showMoreSetting()
|
||||||
fun showReadAloudDialog()
|
fun showReadAloudDialog()
|
||||||
|
|||||||
Reference in New Issue
Block a user