优化
This commit is contained in:
@@ -57,6 +57,7 @@ import io.legado.app.ui.book.searchContent.SearchContentActivity
|
|||||||
import io.legado.app.ui.book.searchContent.SearchResult
|
import io.legado.app.ui.book.searchContent.SearchResult
|
||||||
import io.legado.app.ui.book.source.edit.BookSourceEditActivity
|
import io.legado.app.ui.book.source.edit.BookSourceEditActivity
|
||||||
import io.legado.app.ui.book.toc.TocActivityResult
|
import io.legado.app.ui.book.toc.TocActivityResult
|
||||||
|
import io.legado.app.ui.book.toc.TxtTocRegexDialog
|
||||||
import io.legado.app.ui.browser.WebViewActivity
|
import io.legado.app.ui.browser.WebViewActivity
|
||||||
import io.legado.app.ui.dict.DictDialog
|
import io.legado.app.ui.dict.DictDialog
|
||||||
import io.legado.app.ui.document.HandleFileContract
|
import io.legado.app.ui.document.HandleFileContract
|
||||||
@@ -86,7 +87,7 @@ class ReadBookActivity : BaseReadBookActivity(),
|
|||||||
ChangeChapterSourceDialog.CallBack,
|
ChangeChapterSourceDialog.CallBack,
|
||||||
ReadBook.CallBack,
|
ReadBook.CallBack,
|
||||||
AutoReadDialog.CallBack,
|
AutoReadDialog.CallBack,
|
||||||
TocRegexDialog.CallBack,
|
TxtTocRegexDialog.CallBack,
|
||||||
ColorPickerDialogListener {
|
ColorPickerDialogListener {
|
||||||
|
|
||||||
private val tocActivity =
|
private val tocActivity =
|
||||||
@@ -383,7 +384,7 @@ class ReadBookActivity : BaseReadBookActivity(),
|
|||||||
}
|
}
|
||||||
R.id.menu_log -> showDialogFragment<AppLogDialog>()
|
R.id.menu_log -> showDialogFragment<AppLogDialog>()
|
||||||
R.id.menu_toc_regex -> showDialogFragment(
|
R.id.menu_toc_regex -> showDialogFragment(
|
||||||
TocRegexDialog(ReadBook.book?.tocUrl)
|
TxtTocRegexDialog(ReadBook.book?.tocUrl)
|
||||||
)
|
)
|
||||||
R.id.menu_reverse_content -> ReadBook.book?.let {
|
R.id.menu_reverse_content -> ReadBook.book?.let {
|
||||||
viewModel.reverseContent(it)
|
viewModel.reverseContent(it)
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import com.google.android.material.tabs.TabLayout
|
|||||||
import io.legado.app.R
|
import io.legado.app.R
|
||||||
import io.legado.app.base.VMBaseActivity
|
import io.legado.app.base.VMBaseActivity
|
||||||
import io.legado.app.databinding.ActivityChapterListBinding
|
import io.legado.app.databinding.ActivityChapterListBinding
|
||||||
|
import io.legado.app.help.book.isLocalTxt
|
||||||
import io.legado.app.help.config.AppConfig
|
import io.legado.app.help.config.AppConfig
|
||||||
import io.legado.app.lib.theme.accentColor
|
import io.legado.app.lib.theme.accentColor
|
||||||
import io.legado.app.lib.theme.primaryTextColor
|
import io.legado.app.lib.theme.primaryTextColor
|
||||||
@@ -25,13 +26,16 @@ import io.legado.app.utils.showDialogFragment
|
|||||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||||
import io.legado.app.utils.visible
|
import io.legado.app.utils.visible
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 目录
|
||||||
|
*/
|
||||||
class TocActivity : VMBaseActivity<ActivityChapterListBinding, TocViewModel>() {
|
class TocActivity : VMBaseActivity<ActivityChapterListBinding, TocViewModel>() {
|
||||||
|
|
||||||
override val binding by viewBinding(ActivityChapterListBinding::inflate)
|
override val binding by viewBinding(ActivityChapterListBinding::inflate)
|
||||||
override val viewModel by viewModels<TocViewModel>()
|
override val viewModel by viewModels<TocViewModel>()
|
||||||
|
|
||||||
private lateinit var tabLayout: TabLayout
|
private lateinit var tabLayout: TabLayout
|
||||||
|
private var menu: Menu? = null
|
||||||
private var searchView: SearchView? = null
|
private var searchView: SearchView? = null
|
||||||
|
|
||||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
@@ -40,6 +44,9 @@ class TocActivity : VMBaseActivity<ActivityChapterListBinding, TocViewModel>() {
|
|||||||
tabLayout.setSelectedTabIndicatorColor(accentColor)
|
tabLayout.setSelectedTabIndicatorColor(accentColor)
|
||||||
binding.viewPager.adapter = TabFragmentPageAdapter()
|
binding.viewPager.adapter = TabFragmentPageAdapter()
|
||||||
tabLayout.setupWithViewPager(binding.viewPager)
|
tabLayout.setupWithViewPager(binding.viewPager)
|
||||||
|
viewModel.bookData.observe(this) {
|
||||||
|
menu?.setGroupVisible(R.id.menu_group_text, it.isLocalTxt)
|
||||||
|
}
|
||||||
intent.getStringExtra("bookUrl")?.let {
|
intent.getStringExtra("bookUrl")?.let {
|
||||||
viewModel.initBook(it)
|
viewModel.initBook(it)
|
||||||
}
|
}
|
||||||
@@ -47,6 +54,10 @@ class TocActivity : VMBaseActivity<ActivityChapterListBinding, TocViewModel>() {
|
|||||||
|
|
||||||
override fun onCompatCreateOptionsMenu(menu: Menu): Boolean {
|
override fun onCompatCreateOptionsMenu(menu: Menu): Boolean {
|
||||||
menuInflater.inflate(R.menu.book_toc, menu)
|
menuInflater.inflate(R.menu.book_toc, menu)
|
||||||
|
this.menu = menu
|
||||||
|
viewModel.bookData.value?.let {
|
||||||
|
menu.setGroupVisible(R.id.menu_group_text, it.isLocalTxt)
|
||||||
|
}
|
||||||
val search = menu.findItem(R.id.menu_search)
|
val search = menu.findItem(R.id.menu_search)
|
||||||
searchView = (search.actionView as SearchView).apply {
|
searchView = (search.actionView as SearchView).apply {
|
||||||
applyTint(primaryTextColor)
|
applyTint(primaryTextColor)
|
||||||
@@ -84,6 +95,9 @@ class TocActivity : VMBaseActivity<ActivityChapterListBinding, TocViewModel>() {
|
|||||||
|
|
||||||
override fun onCompatOptionsItemSelected(item: MenuItem): Boolean {
|
override fun onCompatOptionsItemSelected(item: MenuItem): Boolean {
|
||||||
when (item.itemId) {
|
when (item.itemId) {
|
||||||
|
R.id.menu_toc_regex -> showDialogFragment(
|
||||||
|
TxtTocRegexDialog(viewModel.bookData.value?.tocUrl)
|
||||||
|
)
|
||||||
R.id.menu_reverse_toc -> viewModel.reverseToc {
|
R.id.menu_reverse_toc -> viewModel.reverseToc {
|
||||||
viewModel.chapterListCallBack?.upChapterList(searchView?.query?.toString())
|
viewModel.chapterListCallBack?.upChapterList(searchView?.query?.toString())
|
||||||
setResult(RESULT_OK, Intent().apply {
|
setResult(RESULT_OK, Intent().apply {
|
||||||
@@ -101,12 +115,12 @@ class TocActivity : VMBaseActivity<ActivityChapterListBinding, TocViewModel>() {
|
|||||||
return super.onCompatOptionsItemSelected(item)
|
return super.onCompatOptionsItemSelected(item)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onBackPressed() {
|
override fun finish() {
|
||||||
if (tabLayout.isGone) {
|
if (tabLayout.isGone) {
|
||||||
searchView?.onActionViewCollapsed()
|
searchView?.onActionViewCollapsed()
|
||||||
tabLayout.visible()
|
tabLayout.visible()
|
||||||
} else {
|
} else {
|
||||||
super.onBackPressed()
|
super.finish()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+6
-3
@@ -1,4 +1,4 @@
|
|||||||
package io.legado.app.ui.book.read.config
|
package io.legado.app.ui.book.toc
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
@@ -33,7 +33,10 @@ import kotlinx.coroutines.Dispatchers.IO
|
|||||||
import kotlinx.coroutines.flow.conflate
|
import kotlinx.coroutines.flow.conflate
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
class TocRegexDialog() : BaseDialogFragment(R.layout.dialog_toc_regex),
|
/**
|
||||||
|
* txt目录规则
|
||||||
|
*/
|
||||||
|
class TxtTocRegexDialog() : BaseDialogFragment(R.layout.dialog_toc_regex),
|
||||||
Toolbar.OnMenuItemClickListener {
|
Toolbar.OnMenuItemClickListener {
|
||||||
|
|
||||||
constructor(tocRegex: String?) : this() {
|
constructor(tocRegex: String?) : this() {
|
||||||
@@ -43,7 +46,7 @@ class TocRegexDialog() : BaseDialogFragment(R.layout.dialog_toc_regex),
|
|||||||
}
|
}
|
||||||
|
|
||||||
private val importTocRuleKey = "tocRuleUrl"
|
private val importTocRuleKey = "tocRuleUrl"
|
||||||
private val viewModel: TocRegexViewModel by viewModels()
|
private val viewModel: TxtTocRegexViewModel by viewModels()
|
||||||
private val binding by viewBinding(DialogTocRegexBinding::bind)
|
private val binding by viewBinding(DialogTocRegexBinding::bind)
|
||||||
private val adapter by lazy { TocRegexAdapter(requireContext()) }
|
private val adapter by lazy { TocRegexAdapter(requireContext()) }
|
||||||
var selectedName: String? = null
|
var selectedName: String? = null
|
||||||
+5
-2
@@ -1,4 +1,4 @@
|
|||||||
package io.legado.app.ui.book.read.config
|
package io.legado.app.ui.book.toc
|
||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import io.legado.app.base.BaseViewModel
|
import io.legado.app.base.BaseViewModel
|
||||||
@@ -6,7 +6,10 @@ import io.legado.app.data.appDb
|
|||||||
import io.legado.app.data.entities.TxtTocRule
|
import io.legado.app.data.entities.TxtTocRule
|
||||||
import io.legado.app.help.DefaultData
|
import io.legado.app.help.DefaultData
|
||||||
|
|
||||||
class TocRegexViewModel(application: Application) : BaseViewModel(application) {
|
/**
|
||||||
|
* txt目录规则
|
||||||
|
*/
|
||||||
|
class TxtTocRegexViewModel(application: Application) : BaseViewModel(application) {
|
||||||
|
|
||||||
fun saveRule(rule: TxtTocRule) {
|
fun saveRule(rule: TxtTocRule) {
|
||||||
execute {
|
execute {
|
||||||
@@ -10,6 +10,17 @@
|
|||||||
app:actionViewClass="androidx.appcompat.widget.SearchView"
|
app:actionViewClass="androidx.appcompat.widget.SearchView"
|
||||||
app:showAsAction="always" />
|
app:showAsAction="always" />
|
||||||
|
|
||||||
|
<group
|
||||||
|
android:id="@+id/menu_group_text"
|
||||||
|
android:visible="false">
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/menu_toc_regex"
|
||||||
|
android:title="@string/txt_toc_regex"
|
||||||
|
app:showAsAction="never" />
|
||||||
|
|
||||||
|
</group>
|
||||||
|
|
||||||
<item
|
<item
|
||||||
android:id="@+id/menu_reverse_toc"
|
android:id="@+id/menu_reverse_toc"
|
||||||
android:title="@string/reverse_toc"
|
android:title="@string/reverse_toc"
|
||||||
|
|||||||
Reference in New Issue
Block a user