选择搜索文字

pull/393/head
Jason Yao 4 years ago
parent 9559fcf131
commit 8c377c2ba5
  1. 16
      app/src/main/java/io/legado/app/service/help/ReadBook.kt
  2. 32
      app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt

@ -378,8 +378,20 @@ object ReadBook {
length -= currentLine.text.length length -= currentLine.text.length
Log.d("h11128", "currentLength $length") Log.d("h11128", "currentLength $length")
val charIndex = contentPosition - length val charIndex = contentPosition - length
Log.d("h11128", "contentLength $contentPosition") var addLine = 0
return arrayOf(pageIndex, lineIndex, charIndex) var charIndex2 = 0
// change line
if ((charIndex + query.length) > currentLine.text.length){
addLine = 1
charIndex2 = charIndex + query.length - currentLine.text.length - 1
}
// changePage
if ((lineIndex + addLine + 1) > currentPage.textLines.size){
addLine = -1
charIndex2 = charIndex + query.length - currentLine.text.length - 1
}
Log.d("h11128", "charIndex2 $charIndex $addLine $charIndex2")
return arrayOf(pageIndex, lineIndex, charIndex, addLine, charIndex2)
} }
/** /**

@ -9,6 +9,7 @@ import android.graphics.drawable.ColorDrawable
import android.net.Uri import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.os.Handler import android.os.Handler
import android.util.Log
import android.view.* import android.view.*
import android.view.ViewGroup.LayoutParams.WRAP_CONTENT import android.view.ViewGroup.LayoutParams.WRAP_CONTENT
import androidx.core.view.get import androidx.core.view.get
@ -56,16 +57,14 @@ import io.legado.app.ui.widget.dialog.TextDialog
import io.legado.app.utils.* import io.legado.app.utils.*
import kotlinx.android.synthetic.main.activity_book_read.* import kotlinx.android.synthetic.main.activity_book_read.*
import kotlinx.android.synthetic.main.view_read_menu.* import kotlinx.android.synthetic.main.view_read_menu.*
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.*
import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.Dispatchers.IO
import kotlinx.coroutines.Dispatchers.Main import kotlinx.coroutines.Dispatchers.Main
import kotlinx.coroutines.async
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import org.jetbrains.anko.sdk27.listeners.onClick import org.jetbrains.anko.sdk27.listeners.onClick
import org.jetbrains.anko.startActivity import org.jetbrains.anko.startActivity
import org.jetbrains.anko.startActivityForResult import org.jetbrains.anko.startActivityForResult
import org.jetbrains.anko.toast import org.jetbrains.anko.toast
import java.lang.Runnable
class ReadBookActivity : VMBaseActivity<ReadBookViewModel>(R.layout.activity_book_read), class ReadBookActivity : VMBaseActivity<ReadBookViewModel>(R.layout.activity_book_read),
View.OnTouchListener, View.OnTouchListener,
@ -794,14 +793,29 @@ class ReadBookActivity : VMBaseActivity<ReadBookViewModel>(R.layout.activity_boo
Log.d("h11128", positions[0].toString()) Log.d("h11128", positions[0].toString())
Log.d("h11128", positions[1].toString()) Log.d("h11128", positions[1].toString())
Log.d("h11128", positions[2].toString()) Log.d("h11128", positions[2].toString())
//todo: show selected text Log.d("h11128", positions[3].toString())
val job1 = async(Main){
while (ReadBook.durPageIndex != positions[0]){
delay(100L)
ReadBook.skipToPage(positions[0]) ReadBook.skipToPage(positions[0])
page_view.curPage.selectStartMoveIndex(positions[0], positions[1], 0) }
page_view.curPage.selectEndMoveIndex(positions[0], positions[1], 0 + query.length ) withContext(Main){
Log.d("h11128", "currentpage ${ReadBook.durPageIndex}")
Log.d("h11128", "currentpage ${page_view.pageFactory.currentPage.index}")
Log.d("h11128", "${positions[0]} ${positions[1]} ${positions[2]}")
page_view.curPage.selectStartMoveIndex(0, positions[1], positions[2])
delay(20L)
when (positions[3]){
0 -> page_view.curPage.selectEndMoveIndex(0, positions[1], positions[2] + query.length - 1)
1 -> page_view.curPage.selectEndMoveIndex(0, positions[1] + 1, positions[4])
//todo: consider change page, jump to scroll position
-1 -> page_view.curPage.selectEndMoveIndex(1, 0, positions[4])
}
page_view.isTextSelected = true page_view.isTextSelected = true
delay(100L)
Log.d("h11128", "asdasd $selectedText")
} }
job1.await()
} }
} }
requestCodeReplace -> onReplaceRuleSave() requestCodeReplace -> onReplaceRuleSave()

Loading…
Cancel
Save