详情页添加登录菜单

pull/995/head
gedoor 4 years ago
parent 9c0da1de98
commit 3a9d9c6eae
  1. 2
      app/src/main/AndroidManifest.xml
  2. 14
      app/src/main/java/io/legado/app/ui/book/info/BookInfoActivity.kt
  3. 16
      app/src/main/java/io/legado/app/ui/book/info/BookInfoViewModel.kt
  4. 2
      app/src/main/java/io/legado/app/ui/login/SourceLoginActivity.kt
  5. 5
      app/src/main/res/menu/book_info.xml

@ -286,7 +286,7 @@
android:launchMode="singleTop" />
<!-- 书源登录 -->
<activity
android:name=".ui.login.SourceLogin"
android:name=".ui.login.SourceLoginActivity"
android:configChanges="orientation|screenSize"
android:hardwareAccelerated="true" />
<!-- 阅读记录 -->

@ -105,6 +105,14 @@ class BookInfoActivity :
return super.onCompatCreateOptionsMenu(menu)
}
override fun onMenuOpened(featureId: Int, menu: Menu): Boolean {
menu.findItem(R.id.menu_can_update)?.isChecked =
viewModel.bookData.value?.canUpdate ?: true
menu.findItem(R.id.menu_login)?.isVisible =
!viewModel.bookSource?.loginUrl.isNullOrBlank()
return super.onMenuOpened(featureId, menu)
}
override fun onCompatOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.menu_edit -> {
@ -156,12 +164,6 @@ class BookInfoActivity :
return super.onCompatOptionsItemSelected(item)
}
override fun onMenuOpened(featureId: Int, menu: Menu): Boolean {
menu.findItem(R.id.menu_can_update)?.isChecked =
viewModel.bookData.value?.canUpdate ?: true
return super.onMenuOpened(featureId, menu)
}
private fun showBook(book: Book) = with(binding) {
showCover(book)
tvName.text = book.name

@ -8,6 +8,7 @@ import io.legado.app.base.BaseViewModel
import io.legado.app.data.appDb
import io.legado.app.data.entities.Book
import io.legado.app.data.entities.BookChapter
import io.legado.app.data.entities.BookSource
import io.legado.app.help.BookHelp
import io.legado.app.model.localBook.LocalBook
import io.legado.app.model.webBook.WebBook
@ -19,6 +20,7 @@ class BookInfoViewModel(application: Application) : BaseViewModel(application) {
val chapterListData = MutableLiveData<List<BookChapter>>()
var durChapterIndex = 0
var inBookshelf = false
var bookSource: BookSource? = null
fun initData(intent: Intent) {
execute {
@ -36,6 +38,7 @@ class BookInfoViewModel(application: Application) : BaseViewModel(application) {
private fun setBook(book: Book) {
durChapterIndex = book.durChapterIndex
bookData.postValue(book)
initBookSource(book)
if (book.tocUrl.isEmpty()) {
loadBookInfo(book)
} else {
@ -48,6 +51,14 @@ class BookInfoViewModel(application: Application) : BaseViewModel(application) {
}
}
private fun initBookSource(book: Book) {
bookSource = if (book.isLocalBook()) {
null
} else {
appDb.bookSourceDao.getBookSource(book.origin)
}
}
fun loadBookInfo(
book: Book, canReName: Boolean = true,
changeDruChapterIndex: ((chapters: List<BookChapter>) -> Unit)? = null,
@ -56,7 +67,7 @@ class BookInfoViewModel(application: Application) : BaseViewModel(application) {
if (book.isLocalBook()) {
loadChapter(book, changeDruChapterIndex)
} else {
appDb.bookSourceDao.getBookSource(book.origin)?.let { bookSource ->
bookSource?.let { bookSource ->
WebBook(bookSource).getBookInfo(this, book, canReName = canReName)
.onSuccess(IO) {
bookData.postValue(book)
@ -87,7 +98,7 @@ class BookInfoViewModel(application: Application) : BaseViewModel(application) {
chapterListData.postValue(it)
}
} else {
appDb.bookSourceDao.getBookSource(book.origin)?.let { bookSource ->
bookSource?.let { bookSource ->
WebBook(bookSource).getChapterList(this, book)
.onSuccess(IO) {
if (it.isNotEmpty()) {
@ -135,6 +146,7 @@ class BookInfoViewModel(application: Application) : BaseViewModel(application) {
}
}
bookData.postValue(newBook)
initBookSource(newBook)
if (newBook.tocUrl.isEmpty()) {
loadBookInfo(newBook, false) {
upChangeDurChapterIndex(newBook, oldTocSize, it)

@ -15,7 +15,7 @@ import io.legado.app.help.http.CookieStore
import io.legado.app.utils.snackbar
class SourceLogin : BaseActivity<ActivitySourceLoginBinding>() {
class SourceLoginActivity : BaseActivity<ActivitySourceLoginBinding>() {
var sourceUrl: String? = null
var loginUrl: String? = null

@ -19,6 +19,11 @@
android:title="@string/refresh"
app:showAsAction="never" />
<item
android:id="@+id/menu_login"
android:title="@string/login"
app:showAsAction="never" />
<item
android:id="@+id/menu_copy_book_url"
android:title="@string/copy_book_url"

Loading…
Cancel
Save