优化
This commit is contained in:
@@ -60,7 +60,7 @@ class BookInfoActivity :
|
||||
|
||||
private val tocActivityResult = registerForActivityResult(TocActivityResult()) {
|
||||
it?.let {
|
||||
viewModel.bookData.value?.let { book ->
|
||||
viewModel.getBook(false)?.let { book ->
|
||||
launch {
|
||||
withContext(IO) {
|
||||
book.durChapterIndex = it.first
|
||||
@@ -155,14 +155,14 @@ class BookInfoActivity :
|
||||
override fun onCompatOptionsItemSelected(item: MenuItem): Boolean {
|
||||
when (item.itemId) {
|
||||
R.id.menu_edit -> {
|
||||
viewModel.bookData.value?.let {
|
||||
viewModel.getBook()?.let {
|
||||
infoEditResult.launch {
|
||||
putExtra("bookUrl", it.bookUrl)
|
||||
}
|
||||
}
|
||||
}
|
||||
R.id.menu_share_it -> {
|
||||
viewModel.bookData.value?.let {
|
||||
viewModel.getBook()?.let {
|
||||
val bookJson = GSON.toJson(it)
|
||||
val shareStr = "${it.bookUrl}#$bookJson"
|
||||
shareWithQr(shareStr, it.name)
|
||||
@@ -170,7 +170,7 @@ class BookInfoActivity :
|
||||
}
|
||||
R.id.menu_refresh -> {
|
||||
upLoading(true)
|
||||
viewModel.bookData.value?.let {
|
||||
viewModel.getBook()?.let {
|
||||
viewModel.refreshBook(it)
|
||||
}
|
||||
}
|
||||
@@ -183,14 +183,14 @@ class BookInfoActivity :
|
||||
R.id.menu_top -> viewModel.topBook()
|
||||
R.id.menu_set_source_variable -> setSourceVariable()
|
||||
R.id.menu_set_book_variable -> setBookVariable()
|
||||
R.id.menu_copy_book_url -> viewModel.bookData.value?.bookUrl?.let {
|
||||
R.id.menu_copy_book_url -> viewModel.getBook()?.bookUrl?.let {
|
||||
sendToClip(it)
|
||||
} ?: toastOnUi(R.string.no_book)
|
||||
R.id.menu_copy_toc_url -> viewModel.bookData.value?.tocUrl?.let {
|
||||
}
|
||||
R.id.menu_copy_toc_url -> viewModel.getBook()?.tocUrl?.let {
|
||||
sendToClip(it)
|
||||
} ?: toastOnUi(R.string.no_book)
|
||||
}
|
||||
R.id.menu_can_update -> {
|
||||
viewModel.bookData.value?.let {
|
||||
viewModel.getBook()?.let {
|
||||
it.canUpdate = !it.canUpdate
|
||||
if (viewModel.inBookshelf) {
|
||||
viewModel.saveBook(it)
|
||||
@@ -202,7 +202,7 @@ class BookInfoActivity :
|
||||
R.id.menu_split_long_chapter -> {
|
||||
upLoading(true)
|
||||
tocChanged = true
|
||||
viewModel.bookData.value?.let {
|
||||
viewModel.getBook()?.let {
|
||||
it.setSplitLongChapter(!item.isChecked)
|
||||
viewModel.loadBookInfo(it, false)
|
||||
}
|
||||
@@ -211,7 +211,7 @@ class BookInfoActivity :
|
||||
}
|
||||
R.id.menu_delete_alert -> LocalConfig.bookInfoDeleteAlert = !item.isChecked
|
||||
R.id.menu_upload -> {
|
||||
viewModel.bookData.value?.let { book ->
|
||||
viewModel.getBook()?.let { book ->
|
||||
book.getRemoteUrl()?.let {
|
||||
alert(R.string.draw, R.string.sure_upload) {
|
||||
okButton {
|
||||
@@ -332,20 +332,20 @@ class BookInfoActivity :
|
||||
|
||||
private fun initViewEvent() = binding.run {
|
||||
ivCover.setOnClickListener {
|
||||
viewModel.bookData.value?.let {
|
||||
viewModel.getBook()?.let {
|
||||
showDialogFragment(
|
||||
ChangeCoverDialog(it.name, it.author)
|
||||
)
|
||||
} ?: toastOnUi("Book is null")
|
||||
}
|
||||
}
|
||||
ivCover.setOnLongClickListener {
|
||||
viewModel.bookData.value?.getDisplayCover()?.let { path ->
|
||||
viewModel.getBook()?.getDisplayCover()?.let { path ->
|
||||
showDialogFragment(PhotoDialog(path))
|
||||
}
|
||||
true
|
||||
}
|
||||
tvRead.setOnClickListener {
|
||||
viewModel.bookData.value?.let { book ->
|
||||
viewModel.getBook()?.let { book ->
|
||||
if (book.isWebFile) {
|
||||
showWebFileDownloadAlert {
|
||||
readBook(it)
|
||||
@@ -353,10 +353,10 @@ class BookInfoActivity :
|
||||
} else {
|
||||
readBook(book)
|
||||
}
|
||||
} ?: toastOnUi("Book is null")
|
||||
}
|
||||
}
|
||||
tvShelf.setOnClickListener {
|
||||
viewModel.bookData.value?.let { book ->
|
||||
viewModel.getBook()?.let { book ->
|
||||
if (viewModel.inBookshelf) {
|
||||
deleteBook()
|
||||
} else {
|
||||
@@ -371,44 +371,50 @@ class BookInfoActivity :
|
||||
}
|
||||
}
|
||||
tvOrigin.setOnClickListener {
|
||||
viewModel.bookData.value?.let { book ->
|
||||
viewModel.getBook()?.let { book ->
|
||||
if (book.isLocal) return@let
|
||||
startActivity<BookSourceEditActivity> {
|
||||
putExtra("sourceUrl", book.origin)
|
||||
}
|
||||
} ?: toastOnUi("Book is null")
|
||||
}
|
||||
}
|
||||
tvChangeSource.setOnClickListener {
|
||||
viewModel.bookData.value?.let { book ->
|
||||
viewModel.getBook()?.let { book ->
|
||||
showDialogFragment(ChangeBookSourceDialog(book.name, book.author))
|
||||
} ?: toastOnUi("Book is null")
|
||||
}
|
||||
}
|
||||
tvTocView.setOnClickListener {
|
||||
if (!viewModel.inBookshelf) {
|
||||
viewModel.saveBook(viewModel.bookData.value) {
|
||||
viewModel.saveChapterList {
|
||||
openChapterList()
|
||||
viewModel.getBook()?.let { book ->
|
||||
if (!viewModel.inBookshelf) {
|
||||
viewModel.saveBook(book) {
|
||||
viewModel.saveChapterList {
|
||||
openChapterList()
|
||||
}
|
||||
}
|
||||
} else {
|
||||
openChapterList()
|
||||
}
|
||||
} else {
|
||||
openChapterList()
|
||||
}
|
||||
}
|
||||
tvChangeGroup.setOnClickListener {
|
||||
viewModel.bookData.value?.let {
|
||||
viewModel.getBook()?.let {
|
||||
showDialogFragment(
|
||||
GroupSelectDialog(it.group)
|
||||
)
|
||||
} ?: toastOnUi("Book is null")
|
||||
}
|
||||
}
|
||||
tvAuthor.setOnClickListener {
|
||||
startActivity<SearchActivity> {
|
||||
putExtra("key", viewModel.bookData.value?.author)
|
||||
viewModel.getBook(false)?.let { book ->
|
||||
startActivity<SearchActivity> {
|
||||
putExtra("key", book.author)
|
||||
}
|
||||
}
|
||||
}
|
||||
tvName.setOnClickListener {
|
||||
startActivity<SearchActivity> {
|
||||
putExtra("key", viewModel.bookData.value?.name)
|
||||
viewModel.getBook(false)?.let { book ->
|
||||
startActivity<SearchActivity> {
|
||||
putExtra("key", book.name)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -440,24 +446,23 @@ class BookInfoActivity :
|
||||
toastOnUi("书源不存在")
|
||||
return@launch
|
||||
}
|
||||
val book = viewModel.bookData.value
|
||||
if (book == null) {
|
||||
toastOnUi("书籍不存在")
|
||||
return@launch
|
||||
}
|
||||
val book = viewModel.getBook() ?: return@launch
|
||||
val variable = withContext(IO) { book.getCustomVariable() }
|
||||
val comment = source.getDisplayVariableComment("""书籍变量可在js中通过book.getVariable("custom")获取""")
|
||||
showDialogFragment(VariableDialog(
|
||||
getString(R.string.set_book_variable),
|
||||
book.bookUrl,
|
||||
variable,
|
||||
comment
|
||||
))
|
||||
val comment =
|
||||
source.getDisplayVariableComment("""书籍变量可在js中通过book.getVariable("custom")获取""")
|
||||
showDialogFragment(
|
||||
VariableDialog(
|
||||
getString(R.string.set_book_variable),
|
||||
book.bookUrl,
|
||||
variable,
|
||||
comment
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
override fun setVariable(key: String, variable: String?) {
|
||||
when(key) {
|
||||
when (key) {
|
||||
viewModel.bookSource?.getKey() -> viewModel.bookSource?.setVariable(variable)
|
||||
viewModel.bookData.value?.bookUrl -> viewModel.bookData.value?.let {
|
||||
it.putCustomVariable(variable)
|
||||
@@ -468,7 +473,7 @@ class BookInfoActivity :
|
||||
|
||||
@SuppressLint("InflateParams")
|
||||
private fun deleteBook() {
|
||||
viewModel.bookData.value?.let {
|
||||
viewModel.getBook()?.let {
|
||||
if (LocalConfig.bookInfoDeleteAlert) {
|
||||
alert(
|
||||
titleResource = R.string.draw,
|
||||
@@ -509,7 +514,7 @@ class BookInfoActivity :
|
||||
toastOnUi(R.string.chapter_list_empty)
|
||||
return
|
||||
}
|
||||
viewModel.bookData.value?.let {
|
||||
viewModel.getBook()?.let {
|
||||
tocActivityResult.launch(it.bookUrl)
|
||||
}
|
||||
}
|
||||
@@ -630,7 +635,7 @@ class BookInfoActivity :
|
||||
|
||||
override fun upGroup(requestCode: Int, groupId: Long) {
|
||||
upGroup(groupId)
|
||||
viewModel.bookData.value?.let { book ->
|
||||
viewModel.getBook()?.let { book ->
|
||||
book.group = groupId
|
||||
if (viewModel.inBookshelf) {
|
||||
viewModel.saveBook(book)
|
||||
|
||||
@@ -407,6 +407,14 @@ class BookInfoViewModel(application: Application) : BaseViewModel(application) {
|
||||
}
|
||||
}
|
||||
|
||||
fun getBook(toastNull: Boolean = true): Book? {
|
||||
val book = bookData.value
|
||||
if (toastNull && book == null) {
|
||||
context.toastOnUi("book is null")
|
||||
}
|
||||
return book
|
||||
}
|
||||
|
||||
fun delBook(deleteOriginal: Boolean = false, success: (() -> Unit)? = null) {
|
||||
execute {
|
||||
bookData.value?.let {
|
||||
|
||||
Reference in New Issue
Block a user