优化书签功能

pull/293/head
gedoor 5 years ago
parent 550295632c
commit c6c6ffe742
  1. 3
      app/src/main/java/io/legado/app/data/dao/BookmarkDao.kt
  2. 11
      app/src/main/java/io/legado/app/ui/book/chapterlist/BookmarkAdapter.kt
  3. 43
      app/src/main/java/io/legado/app/ui/book/chapterlist/BookmarkFragment.kt
  4. 3
      app/src/main/res/layout/item_bookmark.xml

@ -24,6 +24,9 @@ interface BookmarkDao {
@Insert(onConflict = OnConflictStrategy.REPLACE) @Insert(onConflict = OnConflictStrategy.REPLACE)
fun insert(vararg bookmark: Bookmark) fun insert(vararg bookmark: Bookmark)
@Update
fun update(bookmark: Bookmark)
@Delete @Delete
fun delete(vararg bookmark: Bookmark) fun delete(vararg bookmark: Bookmark)

@ -1,6 +1,5 @@
package io.legado.app.ui.book.chapterlist package io.legado.app.ui.book.chapterlist
import android.os.AsyncTask.execute
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
@ -47,19 +46,17 @@ class BookmarkAdapter(val callback: Callback) : PagedListAdapter<Bookmark, Bookm
tv_chapter_name.text = bookmark.chapterName tv_chapter_name.text = bookmark.chapterName
tv_content.text = bookmark.content tv_content.text = bookmark.content
itemView.onClick { itemView.onClick {
callback?.open(bookmark) callback?.onClick(bookmark)
} }
itemView.onLongClick { itemView.onLongClick {
execute { callback?.onLongClick(bookmark)
callback?.delBookmark(bookmark)
}
true true
} }
} }
} }
interface Callback { interface Callback {
fun open(bookmark: Bookmark) fun onClick(bookmark: Bookmark)
fun delBookmark(bookmark: Bookmark) fun onLongClick(bookmark: Bookmark)
} }
} }

@ -1,9 +1,12 @@
package io.legado.app.ui.book.chapterlist package io.legado.app.ui.book.chapterlist
import android.annotation.SuppressLint
import android.app.Activity import android.app.Activity
import android.content.Intent import android.content.Intent
import android.os.AsyncTask
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import android.widget.EditText
import androidx.lifecycle.LiveData import androidx.lifecycle.LiveData
import androidx.lifecycle.Observer import androidx.lifecycle.Observer
import androidx.paging.LivePagedListBuilder import androidx.paging.LivePagedListBuilder
@ -13,9 +16,16 @@ import io.legado.app.App
import io.legado.app.R import io.legado.app.R
import io.legado.app.base.VMBaseFragment import io.legado.app.base.VMBaseFragment
import io.legado.app.data.entities.Bookmark import io.legado.app.data.entities.Bookmark
import io.legado.app.lib.dialogs.alert
import io.legado.app.lib.dialogs.customView
import io.legado.app.lib.dialogs.noButton
import io.legado.app.lib.dialogs.yesButton
import io.legado.app.lib.theme.ATH import io.legado.app.lib.theme.ATH
import io.legado.app.ui.widget.recycler.VerticalDivider import io.legado.app.ui.widget.recycler.VerticalDivider
import io.legado.app.utils.applyTint
import io.legado.app.utils.getViewModelOfActivity import io.legado.app.utils.getViewModelOfActivity
import io.legado.app.utils.requestInputMethod
import kotlinx.android.synthetic.main.dialog_edit_text.view.*
import kotlinx.android.synthetic.main.fragment_bookmark.* import kotlinx.android.synthetic.main.fragment_bookmark.*
@ -68,7 +78,8 @@ class BookmarkFragment : VMBaseFragment<ChapterListViewModel>(R.layout.fragment_
} }
} }
override fun open(bookmark: Bookmark) {
override fun onClick(bookmark: Bookmark) {
val bookmarkData = Intent() val bookmarkData = Intent()
bookmarkData.putExtra("index", bookmark.chapterIndex) bookmarkData.putExtra("index", bookmark.chapterIndex)
bookmarkData.putExtra("pageIndex", bookmark.pageIndex) bookmarkData.putExtra("pageIndex", bookmark.pageIndex)
@ -76,7 +87,33 @@ class BookmarkFragment : VMBaseFragment<ChapterListViewModel>(R.layout.fragment_
activity?.finish() activity?.finish()
} }
override fun delBookmark(bookmark: Bookmark) { @SuppressLint("InflateParams")
App.db.bookmarkDao().delete(bookmark) override fun onLongClick(bookmark: Bookmark) {
viewModel.book?.let { book ->
requireContext().alert(R.string.bookmark) {
var editText: EditText? = null
message = book.name + "" + bookmark.chapterName
customView {
layoutInflater.inflate(R.layout.dialog_edit_text, null).apply {
editText = edit_view.apply {
setHint(R.string.note_content)
setText(bookmark.content)
}
}
}
yesButton {
editText?.text?.toString()?.let { editContent ->
AsyncTask.execute {
bookmark.content = editContent
App.db.bookmarkDao().update(bookmark)
}
}
}
noButton()
neutralButton(R.string.delete) {
App.db.bookmarkDao().delete(bookmark)
}
}.show().applyTint().requestInputMethod()
}
} }
} }

@ -3,18 +3,21 @@
android:orientation="vertical" android:orientation="vertical"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="8dp"
android:background="?android:attr/selectableItemBackground"> android:background="?android:attr/selectableItemBackground">
<TextView <TextView
android:id="@+id/tv_chapter_name" android:id="@+id/tv_chapter_name"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="4dp"
android:singleLine="true" /> android:singleLine="true" />
<TextView <TextView
android:id="@+id/tv_content" android:id="@+id/tv_content"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="4dp"
android:textSize="12sp" android:textSize="12sp"
android:singleLine="true" /> android:singleLine="true" />

Loading…
Cancel
Save