添加所有书签界面
This commit is contained in:
@@ -3,15 +3,19 @@ package io.legado.app.ui.book.bookmark
|
||||
import android.os.Bundle
|
||||
import androidx.activity.viewModels
|
||||
import io.legado.app.base.VMBaseActivity
|
||||
import io.legado.app.data.entities.Bookmark
|
||||
import io.legado.app.databinding.ActivityAllBookmarkBinding
|
||||
import io.legado.app.utils.showDialogFragment
|
||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||
|
||||
class AllBookmarkActivity : VMBaseActivity<ActivityAllBookmarkBinding, AllBookmarkViewModel>() {
|
||||
class AllBookmarkActivity : VMBaseActivity<ActivityAllBookmarkBinding, AllBookmarkViewModel>(),
|
||||
BookmarkAdapter.Callback,
|
||||
BookmarkDialog.Callback {
|
||||
|
||||
override val viewModel by viewModels<AllBookmarkViewModel>()
|
||||
override val binding by viewBinding(ActivityAllBookmarkBinding::inflate)
|
||||
private val adapter by lazy {
|
||||
BookmarkAdapter(this)
|
||||
BookmarkAdapter(this, this)
|
||||
}
|
||||
|
||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||
@@ -26,5 +30,18 @@ class AllBookmarkActivity : VMBaseActivity<ActivityAllBookmarkBinding, AllBookma
|
||||
binding.recyclerView.adapter = adapter
|
||||
}
|
||||
|
||||
override fun onItemClick(bookmark: Bookmark, position: Int) {
|
||||
showDialogFragment(BookmarkDialog(bookmark, position))
|
||||
}
|
||||
|
||||
override fun upBookmark(pos: Int, bookmark: Bookmark) {
|
||||
adapter.setItem(pos, bookmark)
|
||||
}
|
||||
|
||||
override fun deleteBookmark(pos: Int) {
|
||||
adapter.getItem(pos)?.let {
|
||||
viewModel.deleteBookmark(it)
|
||||
}
|
||||
adapter.removeItem(pos)
|
||||
}
|
||||
}
|
||||
@@ -16,4 +16,10 @@ class AllBookmarkViewModel(application: Application) : BaseViewModel(application
|
||||
}
|
||||
}
|
||||
|
||||
fun deleteBookmark(bookmark: Bookmark) {
|
||||
execute {
|
||||
appDb.bookmarkDao.delete(bookmark)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -7,8 +7,10 @@ import io.legado.app.base.adapter.RecyclerAdapter
|
||||
import io.legado.app.data.entities.Bookmark
|
||||
import io.legado.app.databinding.ItemBookmarkBinding
|
||||
import io.legado.app.utils.gone
|
||||
import splitties.views.onClick
|
||||
|
||||
class BookmarkAdapter(context: Context) : RecyclerAdapter<Bookmark, ItemBookmarkBinding>(context) {
|
||||
class BookmarkAdapter(context: Context, val callback: Callback) :
|
||||
RecyclerAdapter<Bookmark, ItemBookmarkBinding>(context) {
|
||||
|
||||
override fun getViewBinding(parent: ViewGroup): ItemBookmarkBinding {
|
||||
return ItemBookmarkBinding.inflate(inflater, parent, false)
|
||||
@@ -28,7 +30,11 @@ class BookmarkAdapter(context: Context) : RecyclerAdapter<Bookmark, ItemBookmark
|
||||
}
|
||||
|
||||
override fun registerListener(holder: ItemViewHolder, binding: ItemBookmarkBinding) {
|
||||
|
||||
binding.root.onClick {
|
||||
getItemByLayoutPosition(holder.layoutPosition)?.let {
|
||||
callback.onItemClick(it, holder.layoutPosition)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun getHeaderText(position: Int): String {
|
||||
@@ -45,4 +51,10 @@ class BookmarkAdapter(context: Context) : RecyclerAdapter<Bookmark, ItemBookmark
|
||||
&& lastItem?.bookAuthor == curItem?.bookAuthor)
|
||||
}
|
||||
|
||||
interface Callback {
|
||||
|
||||
fun onItemClick(bookmark: Bookmark, position: Int)
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+3
-2
@@ -1,4 +1,4 @@
|
||||
package io.legado.app.ui.book.toc
|
||||
package io.legado.app.ui.book.bookmark
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
@@ -76,7 +76,8 @@ class BookmarkDialog() : BaseDialogFragment(R.layout.dialog_bookmark) {
|
||||
}
|
||||
|
||||
private fun getCallback(): Callback? {
|
||||
return parentFragment as? Callback
|
||||
return (parentFragment as? Callback)
|
||||
?: activity as? Callback
|
||||
}
|
||||
|
||||
interface Callback {
|
||||
@@ -38,6 +38,7 @@ import io.legado.app.model.ReadBook
|
||||
import io.legado.app.receiver.TimeBatteryReceiver
|
||||
import io.legado.app.service.BaseReadAloudService
|
||||
import io.legado.app.ui.about.AppLogDialog
|
||||
import io.legado.app.ui.book.bookmark.BookmarkDialog
|
||||
import io.legado.app.ui.book.changesource.ChangeBookSourceDialog
|
||||
import io.legado.app.ui.book.changesource.ChangeChapterSourceDialog
|
||||
import io.legado.app.ui.book.read.config.*
|
||||
@@ -51,7 +52,6 @@ import io.legado.app.ui.book.read.page.provider.TextPageFactory
|
||||
import io.legado.app.ui.book.searchContent.SearchContentActivity
|
||||
import io.legado.app.ui.book.searchContent.SearchResult
|
||||
import io.legado.app.ui.book.source.edit.BookSourceEditActivity
|
||||
import io.legado.app.ui.book.toc.BookmarkDialog
|
||||
import io.legado.app.ui.book.toc.TocActivityResult
|
||||
import io.legado.app.ui.browser.WebViewActivity
|
||||
import io.legado.app.ui.dict.DictDialog
|
||||
|
||||
@@ -11,6 +11,7 @@ import io.legado.app.data.appDb
|
||||
import io.legado.app.data.entities.Bookmark
|
||||
import io.legado.app.databinding.FragmentBookmarkBinding
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.ui.book.bookmark.BookmarkDialog
|
||||
import io.legado.app.ui.widget.recycler.UpLinearLayoutManager
|
||||
import io.legado.app.ui.widget.recycler.VerticalDivider
|
||||
import io.legado.app.utils.setEdgeEffectColor
|
||||
|
||||
Reference in New Issue
Block a user