Compare commits

...

5 Commits

Author SHA1 Message Date
kunfei
d8d70a8cc7
Merge ce60219cf3 into 27571f5b06 2024-05-20 09:29:56 +08:00
Xwite
ce60219cf3 Bump cronet from 123.0.6312.80 to 125.0.6422.53
- Changes in the [Git log](https://chromium.googlesource.com/chromium/src/+log/123.0.6312.80..125.0.6422.53)
2024-05-20 01:29:52 +00:00
Horis
27571f5b06 优化 2024-05-19 17:38:16 +08:00
Horis
0d63180dd0 优化 2024-05-18 00:04:54 +08:00
Horis
9e5cefc47c 优化 2024-05-17 21:57:15 +08:00
17 changed files with 56 additions and 73 deletions

View File

@ -113,6 +113,14 @@
-identifiernamestring class * { -identifiernamestring class * {
@org.chromium.build.annotations.IdentifierNameString *; @org.chromium.build.annotations.IdentifierNameString *;
} }
# Mark fields with this to help R8 figure out that they cannot be null.
-assumenosideeffects class ** {
@org.chromium.build.annotations.AssumeNonNull *** *(...) return _NONNULL_;
}
-assumenosideeffects class ** {
@org.chromium.build.annotations.AssumeNonNull *** * return _NONNULL_;
}
# -------- Config Path: components/cronet/android/cronet_impl_common_proguard.cfg -------- # -------- Config Path: components/cronet/android/cronet_impl_common_proguard.cfg --------
# Proguard config for apps that depend on cronet_impl_common_java.jar. # Proguard config for apps that depend on cronet_impl_common_java.jar.

Binary file not shown.

Binary file not shown.

View File

@ -1 +1 @@
{"arm64-v8a":"bbf2c50d1ebf0763d451b08e290a3244","armeabi-v7a":"ecb872f7b1b5342f4d7c36262bec0600","x86":"4da4832b89e2412d808c5b1ecdc24e3d","x86_64":"62080f051db02ed0e939affb39ce67fb","version":"123.0.6312.80"} {"x86":"7bb90297b32867b4663edba1521c304a","arm64-v8a":"6281481485abdb423b9d1fcee5978157","armeabi-v7a":"3fa31a4b27e69408c6438eb24f53634b","x86_64":"5fbb8757a52a113ea8a8771b39fd7a1b","version":"125.0.6422.53"}

View File

@ -13,6 +13,7 @@
* 漫画源看书显示乱码,**阅读与其他软件的源并不通用**,请导入阅读的支持的漫画源! * 漫画源看书显示乱码,**阅读与其他软件的源并不通用**,请导入阅读的支持的漫画源!
**2024/02/27** **2024/02/27**
* 更新cronet: 125.0.6422.53
* 更新cronet: 123.0.6312.80 * 更新cronet: 123.0.6312.80
* 更新cronet: 123.0.6312.40 * 更新cronet: 123.0.6312.40

View File

@ -93,7 +93,7 @@ object ReadBook : CoroutineScope by MainScope() {
readRecord.readTime = appDb.readRecordDao.getReadTime(book.name) ?: 0 readRecord.readTime = appDb.readRecordDao.getReadTime(book.name) ?: 0
chapterSize = appDb.bookChapterDao.getChapterCount(book.bookUrl) chapterSize = appDb.bookChapterDao.getChapterCount(book.bookUrl)
contentProcessor = ContentProcessor.get(book) contentProcessor = ContentProcessor.get(book)
durChapterIndex = min(book.durChapterIndex, chapterSize - 1).coerceAtLeast(0) durChapterIndex = book.durChapterIndex
durChapterPos = book.durChapterPos durChapterPos = book.durChapterPos
isLocalBook = book.isLocal isLocalBook = book.isLocal
clearTextChapter() clearTextChapter()

View File

@ -116,6 +116,9 @@ class ReadBookViewModel(application: Application) : BaseViewModel(application) {
ReadBook.loadOrUpContent() ReadBook.loadOrUpContent()
checkLocalBookFileExist(book) checkLocalBookFileExist(book)
} else { } else {
if (ReadBook.durChapterIndex > ReadBook.chapterSize - 1) {
ReadBook.durChapterIndex = ReadBook.chapterSize - 1
}
ReadBook.loadContent(resetPageOffset = false) ReadBook.loadContent(resetPageOffset = false)
checkLocalBookFileExist(book) checkLocalBookFileExist(book)
} }

View File

@ -278,17 +278,18 @@ class ContentTextView(context: Context, attrs: AttributeSet?) : View(context, at
if (textPos.compare(selectEnd) <= 0) { if (textPos.compare(selectEnd) <= 0) {
selectStart.upData(pos = textPos) selectStart.upData(pos = textPos)
upSelectedStart( upSelectedStart(
if (textPos.isTouch) textColumn.start else textColumn.end, if (textPos.columnIndex < textLine.columns.lastIndex) textColumn.start else textColumn.end,
textLine.lineBottom + relativeOffset, textLine.lineBottom + relativeOffset,
textLine.lineTop + relativeOffset textLine.lineTop + relativeOffset
) )
} else { } else {
reverseStartCursor = true reverseStartCursor = true
reverseEndCursor = false reverseEndCursor = false
selectEnd.columnIndex++
selectStartMoveIndex(selectEnd) selectStartMoveIndex(selectEnd)
selectEnd.upData(textPos) selectEnd.upData(textPos)
upSelectedEnd( upSelectedEnd(
if (selectEnd.isTouch || selectEnd.isLast) textColumn.end else textColumn.start, if (textPos.columnIndex > -1) textColumn.end else textColumn.start,
textLine.lineBottom + relativeOffset textLine.lineBottom + relativeOffset
) )
} }
@ -307,16 +308,17 @@ class ContentTextView(context: Context, attrs: AttributeSet?) : View(context, at
if (textPos.compare(selectStart) >= 0) { if (textPos.compare(selectStart) >= 0) {
selectEnd.upData(textPos) selectEnd.upData(textPos)
upSelectedEnd( upSelectedEnd(
if (selectEnd.isTouch || selectEnd.isLast) textColumn.end else textColumn.start, if (textPos.columnIndex > -1) textColumn.end else textColumn.start,
textLine.lineBottom + relativeOffset textLine.lineBottom + relativeOffset
) )
} else { } else {
reverseEndCursor = true reverseEndCursor = true
reverseStartCursor = false reverseStartCursor = false
selectStart.columnIndex--
selectEndMoveIndex(selectStart) selectEndMoveIndex(selectStart)
selectStart.upData(textPos) selectStart.upData(textPos)
upSelectedStart( upSelectedStart(
if (textPos.isTouch) textColumn.start else textColumn.end, if (textPos.columnIndex < textLine.columns.lastIndex) textColumn.start else textColumn.end,
textLine.lineBottom + relativeOffset, textLine.lineBottom + relativeOffset,
textLine.lineTop + relativeOffset textLine.lineTop + relativeOffset
) )
@ -418,11 +420,11 @@ class ContentTextView(context: Context, attrs: AttributeSet?) : View(context, at
} }
} }
val isLast = columns.first().start < x val isLast = columns.first().start < x
val charIndex = if (isLast) columns.lastIndex else 0 val charIndex = if (isLast) columns.lastIndex + 1 else -1
val textColumn = if (isLast) columns.last() else columns.first() val textColumn = if (isLast) columns.last() else columns.first()
touched.invoke( touched.invoke(
relativeOffset, relativeOffset,
TextPos(relativePos, lineIndex, charIndex, false, isLast), TextPos(relativePos, lineIndex, charIndex),
textPage, textLine, textColumn textPage, textLine, textColumn
) )
return return
@ -489,18 +491,14 @@ class ContentTextView(context: Context, attrs: AttributeSet?) : View(context, at
relativePagePos: Int, relativePagePos: Int,
lineIndex: Int, lineIndex: Int,
charIndex: Int, charIndex: Int,
isTouch: Boolean,
isLast: Boolean = false
) { ) {
selectStart.relativePagePos = relativePagePos selectStart.relativePagePos = relativePagePos
selectStart.lineIndex = lineIndex selectStart.lineIndex = lineIndex
selectStart.columnIndex = charIndex selectStart.columnIndex = charIndex
selectStart.isTouch = isTouch
selectStart.isLast = isLast
val textLine = relativePage(relativePagePos).getLine(lineIndex) val textLine = relativePage(relativePagePos).getLine(lineIndex)
val textColumn = textLine.getColumn(charIndex) val textColumn = textLine.getColumn(charIndex)
upSelectedStart( upSelectedStart(
textColumn.start, if (charIndex < textLine.columns.lastIndex) textColumn.start else textColumn.end,
textLine.lineBottom + relativeOffset(relativePagePos), textLine.lineBottom + relativeOffset(relativePagePos),
textLine.lineTop + relativeOffset(relativePagePos) textLine.lineTop + relativeOffset(relativePagePos)
) )
@ -508,7 +506,7 @@ class ContentTextView(context: Context, attrs: AttributeSet?) : View(context, at
} }
fun selectStartMoveIndex(textPos: TextPos) = textPos.run { fun selectStartMoveIndex(textPos: TextPos) = textPos.run {
selectStartMoveIndex(relativePagePos, lineIndex, columnIndex, isTouch, isLast) selectStartMoveIndex(relativePagePos, lineIndex, columnIndex)
} }
/** /**
@ -518,22 +516,21 @@ class ContentTextView(context: Context, attrs: AttributeSet?) : View(context, at
relativePage: Int, relativePage: Int,
lineIndex: Int, lineIndex: Int,
charIndex: Int, charIndex: Int,
isTouch: Boolean,
isLast: Boolean = false
) { ) {
selectEnd.relativePagePos = relativePage selectEnd.relativePagePos = relativePage
selectEnd.lineIndex = lineIndex selectEnd.lineIndex = lineIndex
selectEnd.columnIndex = charIndex selectEnd.columnIndex = charIndex
selectEnd.isTouch = isTouch
selectEnd.isLast = isLast
val textLine = relativePage(relativePage).getLine(lineIndex) val textLine = relativePage(relativePage).getLine(lineIndex)
val textColumn = textLine.getColumn(charIndex) val textColumn = textLine.getColumn(charIndex)
upSelectedEnd(textColumn.end, textLine.lineBottom + relativeOffset(relativePage)) upSelectedEnd(
if (charIndex > -1) textColumn.end else textColumn.start,
textLine.lineBottom + relativeOffset(relativePage)
)
upSelectChars() upSelectChars()
} }
fun selectEndMoveIndex(textPos: TextPos) = textPos.run { fun selectEndMoveIndex(textPos: TextPos) = textPos.run {
selectEndMoveIndex(relativePagePos, lineIndex, columnIndex, isTouch, isLast) selectEndMoveIndex(relativePagePos, lineIndex, columnIndex)
} }
private fun upSelectChars() { private fun upSelectChars() {
@ -553,8 +550,8 @@ class ContentTextView(context: Context, attrs: AttributeSet?) : View(context, at
val compareStart = textPos.compare(selectStart) val compareStart = textPos.compare(selectStart)
val compareEnd = textPos.compare(selectEnd) val compareEnd = textPos.compare(selectEnd)
column.selected = when { column.selected = when {
compareStart == 0 -> selectStart.isTouch compareStart == 0 -> true
compareEnd == 0 -> selectEnd.isTouch || selectEnd.isLast compareEnd == 0 -> true
compareStart > 0 && compareEnd < 0 -> true compareStart > 0 && compareEnd < 0 -> true
else -> false else -> false
} }
@ -624,19 +621,19 @@ class ContentTextView(context: Context, attrs: AttributeSet?) : View(context, at
if (column is TextColumn) { if (column is TextColumn) {
when { when {
compareStart == 0 -> { compareStart == 0 -> {
if (selectStart.isTouch) { if (textPos.columnIndex < textLine.columns.lastIndex) {
builder.append(column.charData) builder.append(column.charData)
} }
if ( if (
textLine.isParagraphEnd textLine.isParagraphEnd
&& charIndex == textLine.charSize - 1 && charIndex == textLine.columns.lastIndex
&& compareEnd != 0 && compareEnd != 0
) { ) {
builder.append("\n") builder.append("\n")
} }
} }
compareEnd == 0 -> if (selectEnd.isTouch || selectEnd.isLast) { compareEnd == 0 -> if (textPos.columnIndex > -1) {
builder.append(column.charData) builder.append(column.charData)
} }
@ -644,7 +641,7 @@ class ContentTextView(context: Context, attrs: AttributeSet?) : View(context, at
builder.append(column.charData) builder.append(column.charData)
if ( if (
textLine.isParagraphEnd textLine.isParagraphEnd
&& charIndex == textLine.charSize - 1 && charIndex == textLine.columns.lastIndex
) { ) {
builder.append("\n") builder.append("\n")
} }

View File

@ -404,17 +404,9 @@ class PageView(context: Context) : FrameLayout(context) {
fun selectStartMoveIndex( fun selectStartMoveIndex(
relativePagePos: Int, relativePagePos: Int,
lineIndex: Int, lineIndex: Int,
charIndex: Int, charIndex: Int
isTouch: Boolean = true,
isLast: Boolean = false
) { ) {
binding.contentTextView.selectStartMoveIndex( binding.contentTextView.selectStartMoveIndex(relativePagePos, lineIndex, charIndex)
relativePagePos,
lineIndex,
charIndex,
isTouch,
isLast
)
} }
fun selectStartMoveIndex(textPos: TextPos) { fun selectStartMoveIndex(textPos: TextPos) {
@ -428,17 +420,9 @@ class PageView(context: Context) : FrameLayout(context) {
fun selectEndMoveIndex( fun selectEndMoveIndex(
relativePagePos: Int, relativePagePos: Int,
lineIndex: Int, lineIndex: Int,
charIndex: Int, charIndex: Int
isTouch: Boolean = true,
isLast: Boolean = false
) { ) {
binding.contentTextView.selectEndMoveIndex( binding.contentTextView.selectEndMoveIndex(relativePagePos, lineIndex, charIndex)
relativePagePos,
lineIndex,
charIndex,
isTouch,
isLast
)
} }
fun selectEndMoveIndex(textPos: TextPos) { fun selectEndMoveIndex(textPos: TextPos) {

View File

@ -443,9 +443,13 @@ class ReadView(context: Context, attrs: AttributeSet) :
curPage.selectText(x, y) { textPos -> curPage.selectText(x, y) { textPos ->
val compare = initialTextPos.compare(textPos) val compare = initialTextPos.compare(textPos)
when { when {
compare >= 0 -> { compare > 0 -> {
curPage.selectStartMoveIndex(textPos) curPage.selectStartMoveIndex(textPos)
curPage.selectEndMoveIndex(initialTextPos) curPage.selectEndMoveIndex(
initialTextPos.relativePagePos,
initialTextPos.lineIndex,
initialTextPos.columnIndex - 1
)
} }
else -> { else -> {

View File

@ -11,30 +11,22 @@ data class TextPos(
var relativePagePos: Int, var relativePagePos: Int,
var lineIndex: Int, var lineIndex: Int,
var columnIndex: Int, var columnIndex: Int,
var isTouch: Boolean = true,
var isLast: Boolean = false
) { ) {
fun upData( fun upData(
relativePos: Int, relativePos: Int,
lineIndex: Int, lineIndex: Int,
charIndex: Int, charIndex: Int,
isTouch: Boolean,
isLast: Boolean
) { ) {
this.relativePagePos = relativePos this.relativePagePos = relativePos
this.lineIndex = lineIndex this.lineIndex = lineIndex
this.columnIndex = charIndex this.columnIndex = charIndex
this.isTouch = isTouch
this.isLast = isLast
} }
fun upData(pos: TextPos) { fun upData(pos: TextPos) {
relativePagePos = pos.relativePagePos relativePagePos = pos.relativePagePos
lineIndex = pos.lineIndex lineIndex = pos.lineIndex
columnIndex = pos.columnIndex columnIndex = pos.columnIndex
isTouch = pos.isTouch
isLast = pos.isLast
} }
fun compare(pos: TextPos): Int { fun compare(pos: TextPos): Int {
@ -65,8 +57,6 @@ data class TextPos(
relativePagePos = 0 relativePagePos = 0
lineIndex = -1 lineIndex = -1
columnIndex = -1 columnIndex = -1
isTouch = true
isLast = false
} }
fun isSelected(): Boolean { fun isSelected(): Boolean {

View File

@ -4,17 +4,14 @@ package io.legado.app.utils
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Context import android.content.Context
import android.view.View
import android.widget.TextView
import android.widget.Toast import android.widget.Toast
import androidx.cardview.widget.CardView
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import io.legado.app.BuildConfig import io.legado.app.BuildConfig
import io.legado.app.R import io.legado.app.databinding.ViewToastBinding
import io.legado.app.help.config.AppConfig import io.legado.app.help.config.AppConfig
import io.legado.app.lib.theme.bottomBackground import io.legado.app.lib.theme.bottomBackground
import io.legado.app.lib.theme.getPrimaryTextColor import io.legado.app.lib.theme.getPrimaryTextColor
import splitties.views.inflate import splitties.systemservices.layoutInflater
private var toast: Toast? = null private var toast: Toast? = null
@ -31,14 +28,13 @@ fun Context.toastOnUi(message: CharSequence?, duration: Int = Toast.LENGTH_SHORT
kotlin.runCatching { kotlin.runCatching {
toast?.cancel() toast?.cancel()
toast = Toast(this) toast = Toast(this)
val toastView: View = inflate(R.layout.view_toast)
toast?.view = toastView
val cardView = toastView.findViewById<CardView>(R.id.cv_content)
cardView.setCardBackgroundColor(bottomBackground)
val isLight = ColorUtils.isColorLight(bottomBackground) val isLight = ColorUtils.isColorLight(bottomBackground)
val textView = toastView.findViewById<TextView>(R.id.tv_text) ViewToastBinding.inflate(layoutInflater).run {
textView.setTextColor(getPrimaryTextColor(isLight)) toast?.view = root
textView.text = message cvToast.setCardBackgroundColor(bottomBackground)
tvText.setTextColor(getPrimaryTextColor(isLight))
tvText.text = message
}
toast?.duration = duration toast?.duration = duration
toast?.show() toast?.show()
} }

View File

@ -6,7 +6,7 @@
android:orientation="vertical"> android:orientation="vertical">
<androidx.cardview.widget.CardView <androidx.cardview.widget.CardView
android:id="@+id/cv_content" android:id="@+id/cv_toast"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:cardCornerRadius="10dp" app:cardCornerRadius="10dp"

View File

@ -42,7 +42,7 @@ android.defaults.buildfeatures.shaders=false
# and none from the library's dependencies, thereby reducing the size of the R class for that library. # and none from the library's dependencies, thereby reducing the size of the R class for that library.
android.nonTransitiveRClass=true android.nonTransitiveRClass=true
# https://chromiumdash.appspot.com/releases?platform=Android # https://chromiumdash.appspot.com/releases?platform=Android
CronetVersion=123.0.6312.80 CronetVersion=125.0.6422.53
CronetMainVersion=123.0.0.0 CronetMainVersion=125.0.0.0
android.injected.testOnly=false android.injected.testOnly=false
android.nonFinalResIds=true android.nonFinalResIds=true