diff --git a/app/src/main/java/io/legado/app/help/config/ReadBookConfig.kt b/app/src/main/java/io/legado/app/help/config/ReadBookConfig.kt index eb38c7e78..fe4e2e16f 100644 --- a/app/src/main/java/io/legado/app/help/config/ReadBookConfig.kt +++ b/app/src/main/java/io/legado/app/help/config/ReadBookConfig.kt @@ -11,7 +11,6 @@ import io.legado.app.constant.PageAnim import io.legado.app.constant.PreferKey import io.legado.app.help.DefaultData 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.FileUtils import io.legado.app.utils.GSON diff --git a/app/src/main/java/io/legado/app/model/analyzeRule/QueryTTF.java b/app/src/main/java/io/legado/app/model/analyzeRule/QueryTTF.java index 26bd4cb83..1e0b6d88f 100644 --- a/app/src/main/java/io/legado/app/model/analyzeRule/QueryTTF.java +++ b/app/src/main/java/io/legado/app/model/analyzeRule/QueryTTF.java @@ -137,7 +137,7 @@ public class QueryTTF { } private static class GlyfLayout { - public short numberOfContours; // 非负值为简单字型,负值为符合字型 + public short numberOfContours; // 非负值为简单字型,负值为复合字型 public short xMin; public short yMin; public short xMax; diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt index 14a9bdc3d..b116c77fa 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt @@ -93,7 +93,6 @@ import io.legado.app.ui.replace.ReplaceRuleActivity import io.legado.app.ui.replace.edit.ReplaceEditActivity import io.legado.app.ui.widget.PopupAction 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.Debounce 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.postEvent import io.legado.app.utils.showDialogFragment +import io.legado.app.utils.showHelp import io.legado.app.utils.startActivity import io.legado.app.utils.sysScreenOffTime import io.legado.app.utils.throttle @@ -553,7 +553,7 @@ class ReadBookActivity : BaseReadBookActivity(), R.id.menu_effective_replaces -> showDialogFragment() - R.id.menu_help -> showReadMenuHelp() + R.id.menu_help -> showHelp() } 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") + } + /** * 长按图片 */ diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadMenu.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadMenu.kt index 5e163456c..e111cacaf 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/ReadMenu.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/ReadMenu.kt @@ -150,7 +150,7 @@ class ReadMenu @JvmOverloads constructor( } callBack.upSystemUiVisibility() if (!LocalConfig.readMenuHelpVersionIsLast) { - callBack.showReadMenuHelp() + callBack.showHelp() } } @@ -580,7 +580,7 @@ class ReadMenu @JvmOverloads constructor( fun showReadAloudDialog() fun upSystemUiVisibility() fun onClickReadAloud() - fun showReadMenuHelp() + fun showHelp() fun showLogin() fun payAction() fun disableSource() diff --git a/app/src/main/java/io/legado/app/ui/book/read/config/HttpTtsEditDialog.kt b/app/src/main/java/io/legado/app/ui/book/read/config/HttpTtsEditDialog.kt index ba075ffc8..3be519462 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/config/HttpTtsEditDialog.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/config/HttpTtsEditDialog.kt @@ -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.addJsonPattern import io.legado.app.ui.widget.code.addLegadoPattern -import io.legado.app.ui.widget.dialog.TextDialog -import io.legado.app.utils.* +import io.legado.app.utils.GSON +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 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) } R.id.menu_log -> showDialogFragment() - R.id.menu_help -> help() + R.id.menu_help -> showHelp("httpTTSHelp") } 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)) - } - } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/book/source/debug/BookSourceDebugActivity.kt b/app/src/main/java/io/legado/app/ui/book/source/debug/BookSourceDebugActivity.kt index b47fbe09c..f2cdf3b95 100644 --- a/app/src/main/java/io/legado/app/ui/book/source/debug/BookSourceDebugActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/source/debug/BookSourceDebugActivity.kt @@ -20,6 +20,7 @@ import io.legado.app.ui.widget.dialog.TextDialog 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.toastOnUi import io.legado.app.utils.viewbindingdelegate.viewBinding import kotlinx.coroutines.launch @@ -184,14 +185,9 @@ class BookSourceDebugActivity : VMBaseActivity showDialogFragment(TextDialog("html", viewModel.bookSrc)) R.id.menu_toc_src -> showDialogFragment(TextDialog("html", viewModel.tocSrc)) 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) } - private fun showHelp() { - val text = String(assets.open("web/help/md/debugHelp.md").readBytes()) - showDialogFragment(TextDialog(getString(R.string.help), text, TextDialog.Mode.MD)) - } - } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceActivity.kt b/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceActivity.kt index a4e7bf479..ef168fc86 100644 --- a/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceActivity.kt @@ -43,7 +43,6 @@ import io.legado.app.ui.config.CheckSourceConfig import io.legado.app.ui.file.HandleFileContract import io.legado.app.ui.qrcode.QrCodeResult 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.ItemTouchCallback 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.share import io.legado.app.utils.showDialogFragment +import io.legado.app.utils.showHelp import io.legado.app.utils.splitNotBlank import io.legado.app.utils.startActivity import io.legado.app.utils.toastOnUi @@ -134,7 +134,7 @@ class BookSourceActivity : VMBaseActivity showHelp() + R.id.menu_help -> showHelp("SourceMBookHelp") } if (item.groupId == R.id.source_group) { searchView.setQuery("group:${item.title}", true) @@ -370,11 +370,6 @@ class BookSourceActivity : VMBaseActivity showImportDialog() R.id.menu_import_qr -> qrCodeResult.launch() R.id.menu_import_default -> viewModel.importDefault() - R.id.menu_help -> showTxtTocRuleHelp() + R.id.menu_help -> showHelp("txtTocRuleHelp") } return super.onCompatOptionsItemSelected(item) @@ -244,11 +244,6 @@ class TxtTocRuleActivity : VMBaseActivity viewModel.enableSelection(*adapter.selection.toTypedArray()) diff --git a/app/src/main/java/io/legado/app/ui/book/toc/rule/TxtTocRuleAdapter.kt b/app/src/main/java/io/legado/app/ui/book/toc/rule/TxtTocRuleAdapter.kt index 3cfc4e719..6a934e2a9 100644 --- a/app/src/main/java/io/legado/app/ui/book/toc/rule/TxtTocRuleAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/book/toc/rule/TxtTocRuleAdapter.kt @@ -88,7 +88,7 @@ class TxtTocRuleAdapter(context: Context, private val callBack: CallBack) : bundle.keySet().map { when (it) { "selected" -> cbSource.isChecked = selected.contains(item) - "upNmae" -> cbSource.text = item.name + "upName" -> cbSource.text = item.name "upExample" -> titleExample.text = item.example "enabled" -> swtEnabled.isChecked = item.enable } diff --git a/app/src/main/java/io/legado/app/ui/book/toc/rule/TxtTocRuleDialog.kt b/app/src/main/java/io/legado/app/ui/book/toc/rule/TxtTocRuleDialog.kt index cf57c041c..28d087f0f 100644 --- a/app/src/main/java/io/legado/app/ui/book/toc/rule/TxtTocRuleDialog.kt +++ b/app/src/main/java/io/legado/app/ui/book/toc/rule/TxtTocRuleDialog.kt @@ -29,7 +29,6 @@ import io.legado.app.lib.theme.primaryColor import io.legado.app.ui.association.ImportTxtTocRuleDialog import io.legado.app.ui.file.HandleFileContract 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.VerticalDivider 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.setLayout import io.legado.app.utils.showDialogFragment +import io.legado.app.utils.showHelp import io.legado.app.utils.splitNotBlank import io.legado.app.utils.toastOnUi 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_qr -> qrCodeResult.launch() R.id.menu_import_default -> viewModel.importDefault() - R.id.menu_help -> showTxtTocRuleHelp() + R.id.menu_help -> showHelp("txtTocRuleHelp") } 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) : RecyclerAdapter(context), ItemTouchCallback.Callback { @@ -264,7 +259,7 @@ class TxtTocRuleDialog() : BaseDialogFragment(R.layout.dialog_toc_regex), } else { bundle.keySet().map { when (it) { - "upNmae" -> rbRegexName.text = item.name + "upName" -> rbRegexName.text = item.name "upExample" -> titleExample.text = item.example "enabled" -> swtEnabled.isChecked = item.enable "upSelect" -> rbRegexName.isChecked = item.name == selectedName diff --git a/app/src/main/java/io/legado/app/ui/config/BackupConfigFragment.kt b/app/src/main/java/io/legado/app/ui/config/BackupConfigFragment.kt index 6e3b868f7..9f291543d 100644 --- a/app/src/main/java/io/legado/app/ui/config/BackupConfigFragment.kt +++ b/app/src/main/java/io/legado/app/ui/config/BackupConfigFragment.kt @@ -35,9 +35,17 @@ import io.legado.app.lib.prefs.fragment.PreferenceFragment import io.legado.app.lib.theme.primaryColor import io.legado.app.ui.about.AppLogDialog 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.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.Main import kotlinx.coroutines.Job @@ -150,7 +158,7 @@ class BackupConfigFragment : PreferenceFragment(), listView.setEdgeEffectColor(primaryColor) activity?.addMenuProvider(this, viewLifecycleOwner) if (!LocalConfig.backupHelpVersionIsLast) { - showHelp() + showHelp("webDavHelp") } } @@ -162,7 +170,7 @@ class BackupConfigFragment : PreferenceFragment(), override fun onMenuItemSelected(menuItem: MenuItem): Boolean { when (menuItem.itemId) { R.id.menu_help -> { - showHelp() + showHelp("webDavHelp") return true } @@ -171,11 +179,6 @@ class BackupConfigFragment : PreferenceFragment(), 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() { super.onDestroy() preferenceManager.sharedPreferences?.unregisterOnSharedPreferenceChangeListener(this) diff --git a/app/src/main/java/io/legado/app/ui/dict/rule/DictRuleActivity.kt b/app/src/main/java/io/legado/app/ui/dict/rule/DictRuleActivity.kt index dc194951e..67489a24c 100644 --- a/app/src/main/java/io/legado/app/ui/dict/rule/DictRuleActivity.kt +++ b/app/src/main/java/io/legado/app/ui/dict/rule/DictRuleActivity.kt @@ -23,7 +23,6 @@ import io.legado.app.ui.association.ImportDictRuleDialog import io.legado.app.ui.file.HandleFileContract import io.legado.app.ui.qrcode.QrCodeResult 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.ItemTouchCallback 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.setEdgeEffectColor import io.legado.app.utils.showDialogFragment +import io.legado.app.utils.showHelp import io.legado.app.utils.splitNotBlank import io.legado.app.utils.toastOnUi import io.legado.app.utils.viewbindingdelegate.viewBinding @@ -143,7 +143,7 @@ class DictRuleActivity : VMBaseActivity showImportDialog() R.id.menu_import_qr -> qrCodeResult.launch() R.id.menu_import_default -> viewModel.importDefault() - R.id.menu_help -> showDictRuleHelp() + R.id.menu_help -> showHelp("dictRuleHelp") } return super.onCompatOptionsItemSelected(item) } @@ -235,9 +235,4 @@ class DictRuleActivity : VMBaseActivity list.sortedBy { it.order } + + 4 -> list.sortedByDescending { + max(it.latestChapterTime, it.durChapterTime) + } + else -> list.sortedByDescending { it.durChapterTime } diff --git a/app/src/main/java/io/legado/app/ui/main/my/MyFragment.kt b/app/src/main/java/io/legado/app/ui/main/my/MyFragment.kt index b9b439b6b..e60e77441 100644 --- a/app/src/main/java/io/legado/app/ui/main/my/MyFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/my/MyFragment.kt @@ -29,7 +29,6 @@ import io.legado.app.ui.dict.rule.DictRuleActivity import io.legado.app.ui.file.FileManageActivity import io.legado.app.ui.main.MainFragmentInterface 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.getPrefBoolean 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.sendToClip 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.viewbindingdelegate.viewBinding @@ -68,10 +67,7 @@ class MyFragment() : BaseFragment(R.layout.fragment_my_config), MainFragmentInte override fun onCompatOptionsItemSelected(item: MenuItem) { when (item.itemId) { - R.id.menu_help -> { - val text = String(requireContext().assets.open("web/help/md/appHelp.md").readBytes()) - showDialogFragment(TextDialog(getString(R.string.help), text, TextDialog.Mode.MD)) - } + R.id.menu_help -> showHelp("appHelp") } } diff --git a/app/src/main/java/io/legado/app/ui/replace/ReplaceRuleActivity.kt b/app/src/main/java/io/legado/app/ui/replace/ReplaceRuleActivity.kt index 4a84da03e..74f8eecb7 100644 --- a/app/src/main/java/io/legado/app/ui/replace/ReplaceRuleActivity.kt +++ b/app/src/main/java/io/legado/app/ui/replace/ReplaceRuleActivity.kt @@ -33,7 +33,6 @@ import io.legado.app.ui.file.HandleFileContract import io.legado.app.ui.qrcode.QrCodeResult import io.legado.app.ui.replace.edit.ReplaceEditActivity 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.ItemTouchCallback 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.setEdgeEffectColor import io.legado.app.utils.showDialogFragment +import io.legado.app.utils.showHelp import io.legado.app.utils.splitNotBlank import io.legado.app.utils.toastOnUi import io.legado.app.utils.viewbindingdelegate.viewBinding @@ -255,7 +255,7 @@ class ReplaceRuleActivity : VMBaseActivity qrCodeResult.launch() - R.id.menu_help -> showHelp() + R.id.menu_help -> showHelp("replaceRuleHelp") R.id.menu_group_null -> { searchView.setQuery(getString(R.string.no_group), true) } @@ -324,11 +324,6 @@ class ReplaceRuleActivity : VMBaseActivity { 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) { searchView.setQuery("group:${item.title}", true) } @@ -354,11 +354,6 @@ class RssSourceActivity : VMBaseActivity Fragment.showDialogFragment( arguments: Bundle.() -> Unit = {} @@ -76,4 +78,9 @@ inline fun Fragment.startActivity( configIntent: Intent.() -> Unit = {} ) { 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)) } \ No newline at end of file