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