diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt
index d06140a86..7b4032ced 100644
--- a/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt
+++ b/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt
@@ -430,7 +430,12 @@ class ReadBookActivity : ReadBookBaseActivity(),
override fun onMenuItemSelected(itemId: Int): Boolean {
when (itemId) {
R.id.menu_bookmark -> binding.readView.curPage.let {
- showBookMark(it.selectStartPos, it.selectedText)
+ val bookmark = it.createBookmark()
+ if (bookmark == null) {
+ toast(R.string.create_bookmark_error)
+ } else {
+ showBookMark(bookmark)
+ }
return true
}
R.id.menu_replace -> {
diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadBookBaseActivity.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadBookBaseActivity.kt
index 34f687ce6..a3b309dea 100644
--- a/app/src/main/java/io/legado/app/ui/book/read/ReadBookBaseActivity.kt
+++ b/app/src/main/java/io/legado/app/ui/book/read/ReadBookBaseActivity.kt
@@ -199,7 +199,7 @@ abstract class ReadBookBaseActivity :
}
@SuppressLint("InflateParams")
- fun showBookMark(chapterPos: Int, bookText: String) {
+ fun showBookMark(bookmark: Bookmark) {
val book = ReadBook.book ?: return
val textChapter = ReadBook.curTextChapter ?: return
alert(title = getString(R.string.bookmark_add)) {
@@ -211,15 +211,7 @@ abstract class ReadBookBaseActivity :
yesButton {
alertBinding.editView.text?.toString()?.let { editContent ->
Coroutine.async {
- val bookmark = Bookmark(
- bookUrl = book.bookUrl,
- bookName = book.name,
- chapterIndex = ReadBook.durChapterIndex,
- chapterPos = chapterPos,
- chapterName = textChapter.title,
- bookText = bookText,
- content = editContent
- )
+ bookmark.content = editContent
App.db.bookmarkDao.insert(bookmark)
}
}
diff --git a/app/src/main/java/io/legado/app/ui/book/read/page/ContentTextView.kt b/app/src/main/java/io/legado/app/ui/book/read/page/ContentTextView.kt
index 847122163..745146532 100644
--- a/app/src/main/java/io/legado/app/ui/book/read/page/ContentTextView.kt
+++ b/app/src/main/java/io/legado/app/ui/book/read/page/ContentTextView.kt
@@ -9,6 +9,7 @@ import android.util.Log
import android.view.View
import io.legado.app.R
import io.legado.app.constant.PreferKey
+import io.legado.app.data.entities.Bookmark
import io.legado.app.help.ReadBookConfig
import io.legado.app.lib.theme.accentColor
import io.legado.app.service.help.ReadBook
@@ -480,15 +481,24 @@ class ContentTextView(context: Context, attrs: AttributeSet?) : View(context, at
return stringBuilder.toString()
}
- val selectStartPos: Int
- get() {
- val page = relativePage(selectStart[0])
- page.getTextChapter()?.let {
- return it.getReadLength(page.index) +
- page.getSelectStartLength(selectStart[1], selectStart[2])
+ fun createBookmark(): Bookmark? {
+ val page = relativePage(selectStart[0])
+ page.getTextChapter()?.let { chapter ->
+ val chapterPos = chapter.getReadLength(page.index) +
+ page.getSelectStartLength(selectStart[1], selectStart[2])
+ ReadBook.book?.let { book ->
+ return Bookmark(
+ bookUrl = book.bookUrl,
+ bookName = book.name,
+ chapterIndex = page.chapterIndex,
+ chapterPos = chapterPos,
+ chapterName = chapter.title,
+ bookText = selectedText
+ )
}
- return 0
}
+ return null
+ }
private fun selectToInt(page: Int, line: Int, char: Int): Int {
return page * 10000000 + line * 100000 + char
diff --git a/app/src/main/java/io/legado/app/ui/book/read/page/PageView.kt b/app/src/main/java/io/legado/app/ui/book/read/page/PageView.kt
index 34720e06a..dbecc4b82 100644
--- a/app/src/main/java/io/legado/app/ui/book/read/page/PageView.kt
+++ b/app/src/main/java/io/legado/app/ui/book/read/page/PageView.kt
@@ -11,6 +11,7 @@ import io.legado.app.App
import io.legado.app.R
import io.legado.app.base.BaseActivity
import io.legado.app.constant.AppConst.timeFormat
+import io.legado.app.data.entities.Bookmark
import io.legado.app.databinding.ViewBookPageBinding
import io.legado.app.help.ReadBookConfig
import io.legado.app.help.ReadTipConfig
@@ -270,9 +271,11 @@ class PageView(context: Context) : FrameLayout(context) {
binding.contentTextView.cancelSelect()
}
- val selectedText: String get() = binding.contentTextView.selectedText
+ fun createBookmark(): Bookmark? {
+ return binding.contentTextView.createBookmark()
+ }
- val selectStartPos get() = binding.contentTextView.selectStartPos
+ val selectedText: String get() = binding.contentTextView.selectedText
val textPage get() = binding.contentTextView.textPage
}
\ No newline at end of file
diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml
index 9055d82d3..33f41ba8c 100644
--- a/app/src/main/res/values-zh-rHK/strings.xml
+++ b/app/src/main/res/values-zh-rHK/strings.xml
@@ -792,5 +792,6 @@
当前进度超过云端进度,是否同步?
同步阅读进度
进入退出阅读界面时同步阅读进度
+ 创建书签失败
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index d8d6bc7d3..132c8ac83 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -793,5 +793,6 @@
目前進度超過雲端進度,是否同步?
同步閱讀進度
進入退出閱讀介面時同步閱讀進度
+ 创建书签失败
diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml
index 4ce861774..888dee9f4 100644
--- a/app/src/main/res/values-zh/strings.xml
+++ b/app/src/main/res/values-zh/strings.xml
@@ -796,5 +796,6 @@
当前进度超过云端进度,是否同步?
同步阅读进度
进入退出阅读界面时同步阅读进度
+ 创建书签失败
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index e02fd21f0..6a19ba8bf 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -799,5 +799,6 @@
当前进度超过云端进度,是否同步?
同步阅读进度
进入退出阅读界面时同步阅读进度
+ 创建书签失败