Merge pull request #3898 from adhu2018/master

重构、修复和其他优化
This commit is contained in:
Horis 2024-04-29 13:33:31 +08:00 committed by GitHub
commit 5685d442ff
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
19 changed files with 74 additions and 96 deletions

View File

@ -11,7 +11,6 @@ import io.legado.app.constant.PageAnim
import io.legado.app.constant.PreferKey import io.legado.app.constant.PreferKey
import io.legado.app.help.DefaultData import io.legado.app.help.DefaultData
import io.legado.app.help.coroutine.Coroutine import io.legado.app.help.coroutine.Coroutine
import io.legado.app.ui.book.read.page.provider.ChapterProvider
import io.legado.app.utils.BitmapUtils import io.legado.app.utils.BitmapUtils
import io.legado.app.utils.FileUtils import io.legado.app.utils.FileUtils
import io.legado.app.utils.GSON import io.legado.app.utils.GSON

View File

@ -133,7 +133,7 @@ public class QueryTTF {
} }
private static class GlyfLayout { private static class GlyfLayout {
public short numberOfContours; // 非负值为简单字型,负值为合字型 public short numberOfContours; // 非负值为简单字型,负值为合字型
public short xMin; public short xMin;
public short yMin; public short yMin;
public short xMax; public short xMax;

View File

@ -93,7 +93,6 @@ import io.legado.app.ui.replace.ReplaceRuleActivity
import io.legado.app.ui.replace.edit.ReplaceEditActivity import io.legado.app.ui.replace.edit.ReplaceEditActivity
import io.legado.app.ui.widget.PopupAction import io.legado.app.ui.widget.PopupAction
import io.legado.app.ui.widget.dialog.PhotoDialog import io.legado.app.ui.widget.dialog.PhotoDialog
import io.legado.app.ui.widget.dialog.TextDialog
import io.legado.app.utils.ACache import io.legado.app.utils.ACache
import io.legado.app.utils.Debounce import io.legado.app.utils.Debounce
import io.legado.app.utils.LogUtils import io.legado.app.utils.LogUtils
@ -114,6 +113,7 @@ import io.legado.app.utils.observeEvent
import io.legado.app.utils.observeEventSticky import io.legado.app.utils.observeEventSticky
import io.legado.app.utils.postEvent import io.legado.app.utils.postEvent
import io.legado.app.utils.showDialogFragment import io.legado.app.utils.showDialogFragment
import io.legado.app.utils.showHelp
import io.legado.app.utils.startActivity import io.legado.app.utils.startActivity
import io.legado.app.utils.sysScreenOffTime import io.legado.app.utils.sysScreenOffTime
import io.legado.app.utils.throttle import io.legado.app.utils.throttle
@ -553,7 +553,7 @@ class ReadBookActivity : BaseReadBookActivity(),
R.id.menu_effective_replaces -> showDialogFragment<EffectiveReplacesDialog>() R.id.menu_effective_replaces -> showDialogFragment<EffectiveReplacesDialog>()
R.id.menu_help -> showReadMenuHelp() R.id.menu_help -> showHelp()
} }
return super.onCompatOptionsItemSelected(item) return super.onCompatOptionsItemSelected(item)
} }
@ -1022,11 +1022,6 @@ class ReadBookActivity : BaseReadBookActivity(),
} }
} }
override fun showReadMenuHelp() {
val text = String(assets.open("web/help/md/readMenuHelp.md").readBytes())
showDialogFragment(TextDialog(getString(R.string.help), text, TextDialog.Mode.MD))
}
/** /**
* 显示朗读菜单 * 显示朗读菜单
*/ */
@ -1255,6 +1250,10 @@ class ReadBookActivity : BaseReadBookActivity(),
} }
} }
override fun showHelp() {
showHelp("readMenuHelp")
}
/** /**
* 长按图片 * 长按图片
*/ */

View File

@ -150,7 +150,7 @@ class ReadMenu @JvmOverloads constructor(
} }
callBack.upSystemUiVisibility() callBack.upSystemUiVisibility()
if (!LocalConfig.readMenuHelpVersionIsLast) { if (!LocalConfig.readMenuHelpVersionIsLast) {
callBack.showReadMenuHelp() callBack.showHelp()
} }
} }
@ -580,7 +580,7 @@ class ReadMenu @JvmOverloads constructor(
fun showReadAloudDialog() fun showReadAloudDialog()
fun upSystemUiVisibility() fun upSystemUiVisibility()
fun onClickReadAloud() fun onClickReadAloud()
fun showReadMenuHelp() fun showHelp()
fun showLogin() fun showLogin()
fun payAction() fun payAction()
fun disableSource() fun disableSource()

View File

@ -17,8 +17,14 @@ import io.legado.app.ui.login.SourceLoginActivity
import io.legado.app.ui.widget.code.addJsPattern import io.legado.app.ui.widget.code.addJsPattern
import io.legado.app.ui.widget.code.addJsonPattern import io.legado.app.ui.widget.code.addJsonPattern
import io.legado.app.ui.widget.code.addLegadoPattern import io.legado.app.ui.widget.code.addLegadoPattern
import io.legado.app.ui.widget.dialog.TextDialog import io.legado.app.utils.GSON
import io.legado.app.utils.* import io.legado.app.utils.applyTint
import io.legado.app.utils.sendToClip
import io.legado.app.utils.setLayout
import io.legado.app.utils.showDialogFragment
import io.legado.app.utils.showHelp
import io.legado.app.utils.startActivity
import io.legado.app.utils.toastOnUi
import io.legado.app.utils.viewbindingdelegate.viewBinding import io.legado.app.utils.viewbindingdelegate.viewBinding
class HttpTtsEditDialog() : BaseDialogFragment(R.layout.dialog_http_tts_edit, true), class HttpTtsEditDialog() : BaseDialogFragment(R.layout.dialog_http_tts_edit, true),
@ -111,7 +117,7 @@ class HttpTtsEditDialog() : BaseDialogFragment(R.layout.dialog_http_tts_edit, tr
initView(it) initView(it)
} }
R.id.menu_log -> showDialogFragment<AppLogDialog>() R.id.menu_log -> showDialogFragment<AppLogDialog>()
R.id.menu_help -> help() R.id.menu_help -> showHelp("httpTTSHelp")
} }
return true return true
} }
@ -130,11 +136,4 @@ class HttpTtsEditDialog() : BaseDialogFragment(R.layout.dialog_http_tts_edit, tr
) )
} }
private fun help() {
val helpStr = String(
requireContext().assets.open("web/help/md/httpTTSHelp.md").readBytes()
)
showDialogFragment(TextDialog(getString(R.string.help), helpStr, TextDialog.Mode.MD))
}
} }

View File

@ -20,6 +20,7 @@ import io.legado.app.ui.widget.dialog.TextDialog
import io.legado.app.utils.launch import io.legado.app.utils.launch
import io.legado.app.utils.setEdgeEffectColor import io.legado.app.utils.setEdgeEffectColor
import io.legado.app.utils.showDialogFragment import io.legado.app.utils.showDialogFragment
import io.legado.app.utils.showHelp
import io.legado.app.utils.toastOnUi import io.legado.app.utils.toastOnUi
import io.legado.app.utils.viewbindingdelegate.viewBinding import io.legado.app.utils.viewbindingdelegate.viewBinding
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@ -184,14 +185,9 @@ class BookSourceDebugActivity : VMBaseActivity<ActivitySourceDebugBinding, BookS
R.id.menu_book_src -> showDialogFragment(TextDialog("html", viewModel.bookSrc)) R.id.menu_book_src -> showDialogFragment(TextDialog("html", viewModel.bookSrc))
R.id.menu_toc_src -> showDialogFragment(TextDialog("html", viewModel.tocSrc)) R.id.menu_toc_src -> showDialogFragment(TextDialog("html", viewModel.tocSrc))
R.id.menu_content_src -> showDialogFragment(TextDialog("html", viewModel.contentSrc)) R.id.menu_content_src -> showDialogFragment(TextDialog("html", viewModel.contentSrc))
R.id.menu_help -> showHelp() R.id.menu_help -> showHelp("debugHelp")
} }
return super.onCompatOptionsItemSelected(item) return super.onCompatOptionsItemSelected(item)
} }
private fun showHelp() {
val text = String(assets.open("web/help/md/debugHelp.md").readBytes())
showDialogFragment(TextDialog(getString(R.string.help), text, TextDialog.Mode.MD))
}
} }

View File

@ -43,7 +43,6 @@ import io.legado.app.ui.config.CheckSourceConfig
import io.legado.app.ui.file.HandleFileContract import io.legado.app.ui.file.HandleFileContract
import io.legado.app.ui.qrcode.QrCodeResult import io.legado.app.ui.qrcode.QrCodeResult
import io.legado.app.ui.widget.SelectActionBar import io.legado.app.ui.widget.SelectActionBar
import io.legado.app.ui.widget.dialog.TextDialog
import io.legado.app.ui.widget.recycler.DragSelectTouchHelper import io.legado.app.ui.widget.recycler.DragSelectTouchHelper
import io.legado.app.ui.widget.recycler.ItemTouchCallback import io.legado.app.ui.widget.recycler.ItemTouchCallback
import io.legado.app.ui.widget.recycler.VerticalDivider import io.legado.app.ui.widget.recycler.VerticalDivider
@ -59,6 +58,7 @@ import io.legado.app.utils.sendToClip
import io.legado.app.utils.setEdgeEffectColor import io.legado.app.utils.setEdgeEffectColor
import io.legado.app.utils.share import io.legado.app.utils.share
import io.legado.app.utils.showDialogFragment import io.legado.app.utils.showDialogFragment
import io.legado.app.utils.showHelp
import io.legado.app.utils.splitNotBlank import io.legado.app.utils.splitNotBlank
import io.legado.app.utils.startActivity import io.legado.app.utils.startActivity
import io.legado.app.utils.toastOnUi import io.legado.app.utils.toastOnUi
@ -134,7 +134,7 @@ class BookSourceActivity : VMBaseActivity<ActivityBookSourceBinding, BookSourceV
initSelectActionBar() initSelectActionBar()
resumeCheckSource() resumeCheckSource()
if (!LocalConfig.bookSourcesHelpVersionIsLast) { if (!LocalConfig.bookSourcesHelpVersionIsLast) {
showHelp() showHelp("SourceMBookHelp")
} }
} }
@ -248,7 +248,7 @@ class BookSourceActivity : VMBaseActivity<ActivityBookSourceBinding, BookSourceV
searchView.setQuery(getString(R.string.disabled_explore), true) searchView.setQuery(getString(R.string.disabled_explore), true)
} }
R.id.menu_help -> showHelp() R.id.menu_help -> showHelp("SourceMBookHelp")
} }
if (item.groupId == R.id.source_group) { if (item.groupId == R.id.source_group) {
searchView.setQuery("group:${item.title}", true) searchView.setQuery("group:${item.title}", true)
@ -370,11 +370,6 @@ class BookSourceActivity : VMBaseActivity<ActivityBookSourceBinding, BookSourceV
} }
} }
private fun showHelp() {
val text = String(assets.open("web/help/md/SourceMBookHelp.md").readBytes())
showDialogFragment(TextDialog(getString(R.string.help), text, TextDialog.Mode.MD))
}
private fun initLiveDataGroup() { private fun initLiveDataGroup() {
lifecycleScope.launch { lifecycleScope.launch {
appDb.bookSourceDao.flowGroups().conflate().collect { appDb.bookSourceDao.flowGroups().conflate().collect {

View File

@ -22,7 +22,6 @@ import io.legado.app.ui.association.ImportTxtTocRuleDialog
import io.legado.app.ui.file.HandleFileContract import io.legado.app.ui.file.HandleFileContract
import io.legado.app.ui.qrcode.QrCodeResult import io.legado.app.ui.qrcode.QrCodeResult
import io.legado.app.ui.widget.SelectActionBar import io.legado.app.ui.widget.SelectActionBar
import io.legado.app.ui.widget.dialog.TextDialog
import io.legado.app.ui.widget.recycler.DragSelectTouchHelper import io.legado.app.ui.widget.recycler.DragSelectTouchHelper
import io.legado.app.ui.widget.recycler.ItemTouchCallback import io.legado.app.ui.widget.recycler.ItemTouchCallback
import io.legado.app.ui.widget.recycler.VerticalDivider import io.legado.app.ui.widget.recycler.VerticalDivider
@ -34,6 +33,7 @@ import io.legado.app.utils.readText
import io.legado.app.utils.sendToClip import io.legado.app.utils.sendToClip
import io.legado.app.utils.setEdgeEffectColor import io.legado.app.utils.setEdgeEffectColor
import io.legado.app.utils.showDialogFragment import io.legado.app.utils.showDialogFragment
import io.legado.app.utils.showHelp
import io.legado.app.utils.splitNotBlank import io.legado.app.utils.splitNotBlank
import io.legado.app.utils.toastOnUi import io.legado.app.utils.toastOnUi
import io.legado.app.utils.viewbindingdelegate.viewBinding import io.legado.app.utils.viewbindingdelegate.viewBinding
@ -140,7 +140,7 @@ class TxtTocRuleActivity : VMBaseActivity<ActivityTxtTocRuleBinding, TxtTocRuleV
R.id.menu_import_onLine -> showImportDialog() R.id.menu_import_onLine -> showImportDialog()
R.id.menu_import_qr -> qrCodeResult.launch() R.id.menu_import_qr -> qrCodeResult.launch()
R.id.menu_import_default -> viewModel.importDefault() R.id.menu_import_default -> viewModel.importDefault()
R.id.menu_help -> showTxtTocRuleHelp() R.id.menu_help -> showHelp("txtTocRuleHelp")
} }
return super.onCompatOptionsItemSelected(item) return super.onCompatOptionsItemSelected(item)
@ -244,11 +244,6 @@ class TxtTocRuleActivity : VMBaseActivity<ActivityTxtTocRuleBinding, TxtTocRuleV
} }
} }
private fun showTxtTocRuleHelp() {
val text = String(assets.open("web/help/md/txtTocRuleHelp.md").readBytes())
showDialogFragment(TextDialog(getString(R.string.help), text, TextDialog.Mode.MD))
}
override fun onMenuItemClick(item: MenuItem): Boolean { override fun onMenuItemClick(item: MenuItem): Boolean {
when (item.itemId) { when (item.itemId) {
R.id.menu_enable_selection -> viewModel.enableSelection(*adapter.selection.toTypedArray()) R.id.menu_enable_selection -> viewModel.enableSelection(*adapter.selection.toTypedArray())

View File

@ -88,7 +88,7 @@ class TxtTocRuleAdapter(context: Context, private val callBack: CallBack) :
bundle.keySet().map { bundle.keySet().map {
when (it) { when (it) {
"selected" -> cbSource.isChecked = selected.contains(item) "selected" -> cbSource.isChecked = selected.contains(item)
"upNmae" -> cbSource.text = item.name "upName" -> cbSource.text = item.name
"upExample" -> titleExample.text = item.example "upExample" -> titleExample.text = item.example
"enabled" -> swtEnabled.isChecked = item.enable "enabled" -> swtEnabled.isChecked = item.enable
} }

View File

@ -29,7 +29,6 @@ import io.legado.app.lib.theme.primaryColor
import io.legado.app.ui.association.ImportTxtTocRuleDialog import io.legado.app.ui.association.ImportTxtTocRuleDialog
import io.legado.app.ui.file.HandleFileContract import io.legado.app.ui.file.HandleFileContract
import io.legado.app.ui.qrcode.QrCodeResult import io.legado.app.ui.qrcode.QrCodeResult
import io.legado.app.ui.widget.dialog.TextDialog
import io.legado.app.ui.widget.recycler.ItemTouchCallback import io.legado.app.ui.widget.recycler.ItemTouchCallback
import io.legado.app.ui.widget.recycler.VerticalDivider import io.legado.app.ui.widget.recycler.VerticalDivider
import io.legado.app.utils.ACache import io.legado.app.utils.ACache
@ -38,6 +37,7 @@ import io.legado.app.utils.launch
import io.legado.app.utils.readText import io.legado.app.utils.readText
import io.legado.app.utils.setLayout import io.legado.app.utils.setLayout
import io.legado.app.utils.showDialogFragment import io.legado.app.utils.showDialogFragment
import io.legado.app.utils.showHelp
import io.legado.app.utils.splitNotBlank import io.legado.app.utils.splitNotBlank
import io.legado.app.utils.toastOnUi import io.legado.app.utils.toastOnUi
import io.legado.app.utils.viewbindingdelegate.viewBinding import io.legado.app.utils.viewbindingdelegate.viewBinding
@ -152,7 +152,7 @@ class TxtTocRuleDialog() : BaseDialogFragment(R.layout.dialog_toc_regex),
R.id.menu_import_onLine -> showImportDialog() R.id.menu_import_onLine -> showImportDialog()
R.id.menu_import_qr -> qrCodeResult.launch() R.id.menu_import_qr -> qrCodeResult.launch()
R.id.menu_import_default -> viewModel.importDefault() R.id.menu_import_default -> viewModel.importDefault()
R.id.menu_help -> showTxtTocRuleHelp() R.id.menu_help -> showHelp("txtTocRuleHelp")
} }
return false return false
} }
@ -197,11 +197,6 @@ class TxtTocRuleDialog() : BaseDialogFragment(R.layout.dialog_toc_regex),
} }
} }
private fun showTxtTocRuleHelp() {
val text = String(requireContext().assets.open("web/help/md/txtTocRuleHelp.md").readBytes())
showDialogFragment(TextDialog(getString(R.string.help), text, TextDialog.Mode.MD))
}
inner class TocRegexAdapter(context: Context) : inner class TocRegexAdapter(context: Context) :
RecyclerAdapter<TxtTocRule, ItemTocRegexBinding>(context), RecyclerAdapter<TxtTocRule, ItemTocRegexBinding>(context),
ItemTouchCallback.Callback { ItemTouchCallback.Callback {
@ -264,7 +259,7 @@ class TxtTocRuleDialog() : BaseDialogFragment(R.layout.dialog_toc_regex),
} else { } else {
bundle.keySet().map { bundle.keySet().map {
when (it) { when (it) {
"upNmae" -> rbRegexName.text = item.name "upName" -> rbRegexName.text = item.name
"upExample" -> titleExample.text = item.example "upExample" -> titleExample.text = item.example
"enabled" -> swtEnabled.isChecked = item.enable "enabled" -> swtEnabled.isChecked = item.enable
"upSelect" -> rbRegexName.isChecked = item.name == selectedName "upSelect" -> rbRegexName.isChecked = item.name == selectedName

View File

@ -35,9 +35,17 @@ import io.legado.app.lib.prefs.fragment.PreferenceFragment
import io.legado.app.lib.theme.primaryColor import io.legado.app.lib.theme.primaryColor
import io.legado.app.ui.about.AppLogDialog import io.legado.app.ui.about.AppLogDialog
import io.legado.app.ui.file.HandleFileContract import io.legado.app.ui.file.HandleFileContract
import io.legado.app.ui.widget.dialog.TextDialog
import io.legado.app.ui.widget.dialog.WaitDialog import io.legado.app.ui.widget.dialog.WaitDialog
import io.legado.app.utils.* import io.legado.app.utils.applyTint
import io.legado.app.utils.checkWrite
import io.legado.app.utils.getPrefString
import io.legado.app.utils.isContentScheme
import io.legado.app.utils.launch
import io.legado.app.utils.setEdgeEffectColor
import io.legado.app.utils.showDialogFragment
import io.legado.app.utils.showHelp
import io.legado.app.utils.toEditable
import io.legado.app.utils.toastOnUi
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Dispatchers.Main import kotlinx.coroutines.Dispatchers.Main
import kotlinx.coroutines.Job import kotlinx.coroutines.Job
@ -150,7 +158,7 @@ class BackupConfigFragment : PreferenceFragment(),
listView.setEdgeEffectColor(primaryColor) listView.setEdgeEffectColor(primaryColor)
activity?.addMenuProvider(this, viewLifecycleOwner) activity?.addMenuProvider(this, viewLifecycleOwner)
if (!LocalConfig.backupHelpVersionIsLast) { if (!LocalConfig.backupHelpVersionIsLast) {
showHelp() showHelp("webDavHelp")
} }
} }
@ -162,7 +170,7 @@ class BackupConfigFragment : PreferenceFragment(),
override fun onMenuItemSelected(menuItem: MenuItem): Boolean { override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
when (menuItem.itemId) { when (menuItem.itemId) {
R.id.menu_help -> { R.id.menu_help -> {
showHelp() showHelp("webDavHelp")
return true return true
} }
@ -171,11 +179,6 @@ class BackupConfigFragment : PreferenceFragment(),
return false return false
} }
private fun showHelp() {
val text = String(requireContext().assets.open("web/help/md/webDavHelp.md").readBytes())
showDialogFragment(TextDialog(getString(R.string.help), text, TextDialog.Mode.MD))
}
override fun onDestroy() { override fun onDestroy() {
super.onDestroy() super.onDestroy()
preferenceManager.sharedPreferences?.unregisterOnSharedPreferenceChangeListener(this) preferenceManager.sharedPreferences?.unregisterOnSharedPreferenceChangeListener(this)

View File

@ -23,7 +23,6 @@ import io.legado.app.ui.association.ImportDictRuleDialog
import io.legado.app.ui.file.HandleFileContract import io.legado.app.ui.file.HandleFileContract
import io.legado.app.ui.qrcode.QrCodeResult import io.legado.app.ui.qrcode.QrCodeResult
import io.legado.app.ui.widget.SelectActionBar import io.legado.app.ui.widget.SelectActionBar
import io.legado.app.ui.widget.dialog.TextDialog
import io.legado.app.ui.widget.recycler.DragSelectTouchHelper import io.legado.app.ui.widget.recycler.DragSelectTouchHelper
import io.legado.app.ui.widget.recycler.ItemTouchCallback import io.legado.app.ui.widget.recycler.ItemTouchCallback
import io.legado.app.ui.widget.recycler.VerticalDivider import io.legado.app.ui.widget.recycler.VerticalDivider
@ -35,6 +34,7 @@ import io.legado.app.utils.readText
import io.legado.app.utils.sendToClip import io.legado.app.utils.sendToClip
import io.legado.app.utils.setEdgeEffectColor import io.legado.app.utils.setEdgeEffectColor
import io.legado.app.utils.showDialogFragment import io.legado.app.utils.showDialogFragment
import io.legado.app.utils.showHelp
import io.legado.app.utils.splitNotBlank import io.legado.app.utils.splitNotBlank
import io.legado.app.utils.toastOnUi import io.legado.app.utils.toastOnUi
import io.legado.app.utils.viewbindingdelegate.viewBinding import io.legado.app.utils.viewbindingdelegate.viewBinding
@ -143,7 +143,7 @@ class DictRuleActivity : VMBaseActivity<ActivityDictRuleBinding, DictRuleViewMod
R.id.menu_import_onLine -> showImportDialog() R.id.menu_import_onLine -> showImportDialog()
R.id.menu_import_qr -> qrCodeResult.launch() R.id.menu_import_qr -> qrCodeResult.launch()
R.id.menu_import_default -> viewModel.importDefault() R.id.menu_import_default -> viewModel.importDefault()
R.id.menu_help -> showDictRuleHelp() R.id.menu_help -> showHelp("dictRuleHelp")
} }
return super.onCompatOptionsItemSelected(item) return super.onCompatOptionsItemSelected(item)
} }
@ -235,9 +235,4 @@ class DictRuleActivity : VMBaseActivity<ActivityDictRuleBinding, DictRuleViewMod
cancelButton() cancelButton()
} }
} }
private fun showDictRuleHelp() {
val text = String(assets.open("web/help/md/dictRuleHelp.md").readBytes())
showDialogFragment(TextDialog(getString(R.string.help), text, TextDialog.Mode.MD))
}
} }

View File

@ -148,6 +148,11 @@ class BookshelfFragment2() : BaseBookshelfFragment(R.layout.fragment_bookshelf2)
3 -> list.sortedBy { 3 -> list.sortedBy {
it.order it.order
} }
4 -> list.sortedByDescending {
max(it.latestChapterTime, it.durChapterTime)
}
else -> list.sortedByDescending { else -> list.sortedByDescending {
it.durChapterTime it.durChapterTime
} }

View File

@ -29,7 +29,6 @@ import io.legado.app.ui.dict.rule.DictRuleActivity
import io.legado.app.ui.file.FileManageActivity import io.legado.app.ui.file.FileManageActivity
import io.legado.app.ui.main.MainFragmentInterface import io.legado.app.ui.main.MainFragmentInterface
import io.legado.app.ui.replace.ReplaceRuleActivity import io.legado.app.ui.replace.ReplaceRuleActivity
import io.legado.app.ui.widget.dialog.TextDialog
import io.legado.app.utils.LogUtils import io.legado.app.utils.LogUtils
import io.legado.app.utils.getPrefBoolean import io.legado.app.utils.getPrefBoolean
import io.legado.app.utils.observeEventSticky import io.legado.app.utils.observeEventSticky
@ -37,7 +36,7 @@ import io.legado.app.utils.openUrl
import io.legado.app.utils.putPrefBoolean import io.legado.app.utils.putPrefBoolean
import io.legado.app.utils.sendToClip import io.legado.app.utils.sendToClip
import io.legado.app.utils.setEdgeEffectColor import io.legado.app.utils.setEdgeEffectColor
import io.legado.app.utils.showDialogFragment import io.legado.app.utils.showHelp
import io.legado.app.utils.startActivity import io.legado.app.utils.startActivity
import io.legado.app.utils.viewbindingdelegate.viewBinding import io.legado.app.utils.viewbindingdelegate.viewBinding
@ -68,10 +67,7 @@ class MyFragment() : BaseFragment(R.layout.fragment_my_config), MainFragmentInte
override fun onCompatOptionsItemSelected(item: MenuItem) { override fun onCompatOptionsItemSelected(item: MenuItem) {
when (item.itemId) { when (item.itemId) {
R.id.menu_help -> { R.id.menu_help -> showHelp("appHelp")
val text = String(requireContext().assets.open("web/help/md/appHelp.md").readBytes())
showDialogFragment(TextDialog(getString(R.string.help), text, TextDialog.Mode.MD))
}
} }
} }

View File

@ -33,7 +33,6 @@ import io.legado.app.ui.file.HandleFileContract
import io.legado.app.ui.qrcode.QrCodeResult import io.legado.app.ui.qrcode.QrCodeResult
import io.legado.app.ui.replace.edit.ReplaceEditActivity import io.legado.app.ui.replace.edit.ReplaceEditActivity
import io.legado.app.ui.widget.SelectActionBar import io.legado.app.ui.widget.SelectActionBar
import io.legado.app.ui.widget.dialog.TextDialog
import io.legado.app.ui.widget.recycler.DragSelectTouchHelper import io.legado.app.ui.widget.recycler.DragSelectTouchHelper
import io.legado.app.ui.widget.recycler.ItemTouchCallback import io.legado.app.ui.widget.recycler.ItemTouchCallback
import io.legado.app.ui.widget.recycler.VerticalDivider import io.legado.app.ui.widget.recycler.VerticalDivider
@ -47,6 +46,7 @@ import io.legado.app.utils.readText
import io.legado.app.utils.sendToClip import io.legado.app.utils.sendToClip
import io.legado.app.utils.setEdgeEffectColor import io.legado.app.utils.setEdgeEffectColor
import io.legado.app.utils.showDialogFragment import io.legado.app.utils.showDialogFragment
import io.legado.app.utils.showHelp
import io.legado.app.utils.splitNotBlank import io.legado.app.utils.splitNotBlank
import io.legado.app.utils.toastOnUi import io.legado.app.utils.toastOnUi
import io.legado.app.utils.viewbindingdelegate.viewBinding import io.legado.app.utils.viewbindingdelegate.viewBinding
@ -255,7 +255,7 @@ class ReplaceRuleActivity : VMBaseActivity<ActivityReplaceRuleBinding, ReplaceRu
allowExtensions = arrayOf("txt", "json") allowExtensions = arrayOf("txt", "json")
} }
R.id.menu_import_qr -> qrCodeResult.launch() R.id.menu_import_qr -> qrCodeResult.launch()
R.id.menu_help -> showHelp() R.id.menu_help -> showHelp("replaceRuleHelp")
R.id.menu_group_null -> { R.id.menu_group_null -> {
searchView.setQuery(getString(R.string.no_group), true) searchView.setQuery(getString(R.string.no_group), true)
} }
@ -324,11 +324,6 @@ class ReplaceRuleActivity : VMBaseActivity<ActivityReplaceRuleBinding, ReplaceRu
} }
} }
private fun showHelp() {
val text = String(assets.open("web/help/md/replaceRuleHelp.md").readBytes())
showDialogFragment(TextDialog(getString(R.string.help), text, TextDialog.Mode.MD))
}
override fun onQueryTextChange(newText: String?): Boolean { override fun onQueryTextChange(newText: String?): Boolean {
observeReplaceRuleData(newText) observeReplaceRuleData(newText)
return false return false

View File

@ -28,7 +28,6 @@ import io.legado.app.ui.file.HandleFileContract
import io.legado.app.ui.qrcode.QrCodeResult import io.legado.app.ui.qrcode.QrCodeResult
import io.legado.app.ui.rss.source.edit.RssSourceEditActivity import io.legado.app.ui.rss.source.edit.RssSourceEditActivity
import io.legado.app.ui.widget.SelectActionBar import io.legado.app.ui.widget.SelectActionBar
import io.legado.app.ui.widget.dialog.TextDialog
import io.legado.app.ui.widget.recycler.DragSelectTouchHelper import io.legado.app.ui.widget.recycler.DragSelectTouchHelper
import io.legado.app.ui.widget.recycler.ItemTouchCallback import io.legado.app.ui.widget.recycler.ItemTouchCallback
import io.legado.app.ui.widget.recycler.VerticalDivider import io.legado.app.ui.widget.recycler.VerticalDivider
@ -44,6 +43,7 @@ import io.legado.app.utils.sendToClip
import io.legado.app.utils.setEdgeEffectColor import io.legado.app.utils.setEdgeEffectColor
import io.legado.app.utils.share import io.legado.app.utils.share
import io.legado.app.utils.showDialogFragment import io.legado.app.utils.showDialogFragment
import io.legado.app.utils.showHelp
import io.legado.app.utils.splitNotBlank import io.legado.app.utils.splitNotBlank
import io.legado.app.utils.startActivity import io.legado.app.utils.startActivity
import io.legado.app.utils.toastOnUi import io.legado.app.utils.toastOnUi
@ -163,7 +163,7 @@ class RssSourceActivity : VMBaseActivity<ActivityRssSourceBinding, RssSourceView
R.id.menu_group_null -> { R.id.menu_group_null -> {
searchView.setQuery(getString(R.string.no_group), true) searchView.setQuery(getString(R.string.no_group), true)
} }
R.id.menu_help -> showHelp() R.id.menu_help -> showHelp("SourceMRssHelp")
else -> if (item.groupId == R.id.source_group) { else -> if (item.groupId == R.id.source_group) {
searchView.setQuery("group:${item.title}", true) searchView.setQuery("group:${item.title}", true)
} }
@ -354,11 +354,6 @@ class RssSourceActivity : VMBaseActivity<ActivityRssSourceBinding, RssSourceView
} }
} }
private fun showHelp() {
val text = String(assets.open("web/help/md/SourceMRssHelp.md").readBytes())
showDialogFragment(TextDialog(getString(R.string.help), text, TextDialog.Mode.MD))
}
override fun upCountView() { override fun upCountView() {
binding.selectActionBar.upCountView( binding.selectActionBar.upCountView(
adapter.selection.size, adapter.selection.size,

View File

@ -203,8 +203,10 @@ val Activity.navigationBarGravity: Int
return gravity ?: Gravity.BOTTOM return gravity ?: Gravity.BOTTOM
} }
/**
* 显示目录help下的帮助文档
*/
fun AppCompatActivity.showHelp(fileName: String) { fun AppCompatActivity.showHelp(fileName: String) {
//显示目录help下的帮助文档
val mdText = String(assets.open("web/help/md/${fileName}.md").readBytes()) val mdText = String(assets.open("web/help/md/${fileName}.md").readBytes())
showDialogFragment(TextDialog(getString(R.string.help), mdText, TextDialog.Mode.MD)) showDialogFragment(TextDialog(getString(R.string.help), mdText, TextDialog.Mode.MD))
} }

View File

@ -32,14 +32,16 @@ object ChineseUtils {
fun fixT2sDict() { fun fixT2sDict() {
val dict = DictionaryContainer.getInstance().getDictionary(TransType.TRADITIONAL_TO_SIMPLE) val dict = DictionaryContainer.getInstance().getDictionary(TransType.TRADITIONAL_TO_SIMPLE)
dict.run { dict.run {
remove("", "", "") remove(
remove("支援", "沈默", "類比", "模擬", "划槳", "列根", "先進", "雪梨", "雪糕") "", "", "",
remove("零錢", "零钱", "離線", "碟片", "模組", "桌球", "案頭", "機車", "電漿") "支援", "沈默", "類比", "模擬", "划槳", "列根", "先進", "雪梨", "雪糕",
remove("鳳梨", "魔戒", "載入") "零錢", "零钱", "離線", "碟片", "模組", "桌球", "案頭", "機車", "電漿",
remove("路易斯", "非同步", "出租车", "周杰倫", "马铃薯", "馬鈴薯", "機械人", "電單車") "鳳梨", "魔戒", "載入",
remove("電扶梯", "音效卡", "飆車族", "點陣圖", "個入球", "顆進球") "路易斯", "非同步", "出租车", "周杰倫", "马铃薯", "馬鈴薯", "機械人", "電單車",
remove("魔獸紀元", "高空彈跳", "铁达尼号") "電扶梯", "音效卡", "飆車族", "點陣圖", "個入球", "顆進球",
remove("魔鬼終結者", "純文字檔案") "魔獸紀元", "高空彈跳", "铁达尼号",
"魔鬼終結者", "純文字檔案"
)
} }
} }

View File

@ -12,6 +12,8 @@ import androidx.annotation.DrawableRes
import androidx.core.content.edit import androidx.core.content.edit
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import io.legado.app.R
import io.legado.app.ui.widget.dialog.TextDialog
inline fun <reified T : DialogFragment> Fragment.showDialogFragment( inline fun <reified T : DialogFragment> Fragment.showDialogFragment(
arguments: Bundle.() -> Unit = {} arguments: Bundle.() -> Unit = {}
@ -76,4 +78,9 @@ inline fun <reified T : Activity> Fragment.startActivity(
configIntent: Intent.() -> Unit = {} configIntent: Intent.() -> Unit = {}
) { ) {
startActivity(Intent(requireContext(), T::class.java).apply(configIntent)) startActivity(Intent(requireContext(), T::class.java).apply(configIntent))
}
fun Fragment.showHelp(fileName: String) {
val mdText = String(requireContext().assets.open("web/help/md/${fileName}.md").readBytes())
showDialogFragment(TextDialog(getString(R.string.help), mdText, TextDialog.Mode.MD))
} }