pull/909/head
gedoor 4 years ago
parent 9210096d6b
commit 3c6d7bab73
  1. 3
      app/src/main/java/io/legado/app/model/analyzeRule/QueryTTF.java
  2. 84
      app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt
  3. 11
      app/src/main/java/io/legado/app/ui/replace/ReplaceRuleActivity.kt
  4. 14
      app/src/main/java/io/legado/app/ui/replace/edit/ReplaceEditActivity.kt

@ -11,6 +11,7 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@SuppressWarnings({"FieldCanBeLocal", "rawtypes", "StatementWithEmptyBody", "unused"})
public class QueryTTF {
private static class Header {
public int majorVersion;
@ -84,7 +85,7 @@ public class QueryTTF {
public int maxComponentDepth;
}
private class CmapLayout {
private static class CmapLayout {
public int version;
public int numTables;
public List<CmapRecord> records = new LinkedList<>();

@ -9,6 +9,7 @@ import android.os.Handler
import android.os.Looper
import android.view.*
import android.view.ViewGroup.LayoutParams.WRAP_CONTENT
import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.view.get
import androidx.core.view.isVisible
import androidx.core.view.size
@ -69,10 +70,35 @@ class ReadBookActivity : ReadBookBaseActivity(),
TocRegexDialog.CallBack,
ColorPickerDialogListener {
private val requestCodeChapterList = 568
private val requestCodeReplace = 312
private val requestCodeSearchResult = 123
private val requestCodeEditSource = 111
private val tocActivity =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
it.data?.let { data ->
data.getIntExtra("index", ReadBook.durChapterIndex).let { index ->
if (index != ReadBook.durChapterIndex) {
val chapterPos = data.getIntExtra("chapterPos", 0)
viewModel.openChapter(index, chapterPos)
}
}
}
}
private val sourceEditActivity =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
upView()
}
private val replaceActivity =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
viewModel.replaceRuleChanged()
}
private val searchContentActivity =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
it.data?.let { data ->
data.getIntExtra("index", ReadBook.durChapterIndex).let { index ->
viewModel.searchContentQuery = data.getStringExtra("query") ?: ""
val indexWithinChapter = data.getIntExtra("indexWithinChapter", 0)
skipToSearch(index, indexWithinChapter)
}
}
}
private var menu: Menu? = null
private val textActionMenu: TextActionMenu by lazy {
TextActionMenu(this, this)
@ -490,12 +516,13 @@ class ReadBookActivity : ReadBookBaseActivity(),
ReadBook.bookSource?.bookSourceUrl?.let {
scopes.add(it)
}
ReplaceEditActivity.startForResult(
replaceActivity.launch(
ReplaceEditActivity.startIntent(
this,
requestCodeReplace,
pattern = selectedText,
scope = scopes.joinToString(";")
)
)
return true
}
R.id.menu_search_content -> {
@ -682,11 +709,9 @@ class ReadBookActivity : ReadBookBaseActivity(),
override fun openSourceEditActivity() {
ReadBook.webBook?.let {
startActivityForResult<BookSourceEditActivity>(
requestCodeEditSource
) {
sourceEditActivity.launch(Intent(this, BookSourceEditActivity::class.java).apply {
putExtra("data", it.bookSource.bookSourceUrl)
}
})
}
}
@ -694,7 +719,7 @@ class ReadBookActivity : ReadBookBaseActivity(),
* 替换
*/
override fun openReplaceRule() {
startActivityForResult<ReplaceRuleActivity>(requestCodeReplace)
replaceActivity.launch(Intent(this, ReplaceRuleActivity::class.java))
}
/**
@ -702,11 +727,9 @@ class ReadBookActivity : ReadBookBaseActivity(),
*/
override fun openChapterList() {
ReadBook.book?.let {
startActivityForResult<ChapterListActivity>(
requestCodeChapterList
) {
tocActivity.launch(Intent(this, ChapterListActivity::class.java).apply {
putExtra("bookUrl", it.bookUrl)
}
})
}
}
@ -715,12 +738,10 @@ class ReadBookActivity : ReadBookBaseActivity(),
*/
override fun openSearchActivity(searchWord: String?) {
ReadBook.book?.let {
startActivityForResult<SearchContentActivity>(
requestCodeSearchResult
) {
searchContentActivity.launch(Intent(this, SearchContentActivity::class.java).apply {
putExtra("bookUrl", it.bookUrl)
putExtra("searchWord", searchWord ?: viewModel.searchContentQuery)
}
})
}
}
@ -812,31 +833,6 @@ class ReadBookActivity : ReadBookBaseActivity(),
}.show()
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (resultCode == Activity.RESULT_OK) {
when (requestCode) {
requestCodeEditSource -> viewModel.upBookSource {
upView()
}
requestCodeChapterList ->
data?.getIntExtra("index", ReadBook.durChapterIndex)?.let { index ->
if (index != ReadBook.durChapterIndex) {
val chapterPos = data.getIntExtra("chapterPos", 0)
viewModel.openChapter(index, chapterPos)
}
}
requestCodeSearchResult ->
data?.getIntExtra("index", ReadBook.durChapterIndex)?.let { index ->
viewModel.searchContentQuery = data.getStringExtra("query") ?: ""
val indexWithinChapter = data.getIntExtra("indexWithinChapter", 0)
skipToSearch(index, indexWithinChapter)
}
requestCodeReplace -> viewModel.replaceRuleChanged()
}
}
}
private fun skipToSearch(index: Int, indexWithinChapter: Int) {
viewModel.openChapter(index) {
val pages = ReadBook.curTextChapter?.pages ?: return@openChapter

@ -7,6 +7,7 @@ import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import android.view.SubMenu
import androidx.activity.result.contract.ActivityResultContracts
import androidx.activity.viewModels
import androidx.appcompat.widget.PopupMenu
import androidx.appcompat.widget.SearchView
@ -54,7 +55,10 @@ class ReplaceRuleActivity : VMBaseActivity<ActivityReplaceRuleBinding, ReplaceRu
private val importRequestCode = 132
private val importRequestCodeQr = 133
private val exportRequestCode = 234
private val requestCodeEdit = 213
private val editActivity =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
setResult(RESULT_OK)
}
private lateinit var adapter: ReplaceRuleAdapter
private lateinit var searchView: SearchView
private var groups = hashSetOf<String>()
@ -180,7 +184,7 @@ class ReplaceRuleActivity : VMBaseActivity<ActivityReplaceRuleBinding, ReplaceRu
override fun onCompatOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.menu_add_replace_rule ->
ReplaceEditActivity.startForResult(this, requestCodeEdit)
editActivity.launch(ReplaceEditActivity.startIntent(this))
R.id.menu_group_manage ->
GroupManageDialog().show(supportFragmentManager, "groupManage")
@ -263,7 +267,6 @@ class ReplaceRuleActivity : VMBaseActivity<ActivityReplaceRuleBinding, ReplaceRu
super.onActivityResult(requestCode, resultCode, data)
if (resultCode != RESULT_OK) return
when (requestCode) {
requestCodeEdit -> setResult(RESULT_OK)
importRequestCode -> {
data?.data?.let { uri ->
kotlin.runCatching {
@ -325,7 +328,7 @@ class ReplaceRuleActivity : VMBaseActivity<ActivityReplaceRuleBinding, ReplaceRu
override fun edit(rule: ReplaceRule) {
setResult(RESULT_OK)
ReplaceEditActivity.startForResult(this, requestCodeEdit, rule.id)
editActivity.launch(ReplaceEditActivity.startIntent(this, rule.id))
}
override fun toTop(rule: ReplaceRule) {

@ -1,6 +1,6 @@
package io.legado.app.ui.replace.edit
import android.app.Activity
import android.content.Context
import android.content.Intent
import android.graphics.Rect
import android.os.Bundle
@ -33,21 +33,21 @@ class ReplaceEditActivity :
companion object {
fun startForResult(
activity: Activity,
requestCode: Int,
fun startIntent(
context: Context,
id: Long = -1,
pattern: String? = null,
isRegex: Boolean = false,
scope: String? = null
) {
val intent = Intent(activity, ReplaceEditActivity::class.java)
): Intent {
val intent = Intent(context, ReplaceEditActivity::class.java)
intent.putExtra("id", id)
intent.putExtra("pattern", pattern)
intent.putExtra("isRegex", isRegex)
intent.putExtra("scope", scope)
activity.startActivityForResult(intent, requestCode)
return intent
}
}
override fun getViewBinding(): ActivityReplaceEditBinding {

Loading…
Cancel
Save