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

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

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

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

Loading…
Cancel
Save