From 7a7cb3e921b072296d47488006d56c29a748e18f Mon Sep 17 00:00:00 2001 From: Horis <8674809+821938089@users.noreply.github.com> Date: Tue, 25 Nov 2025 09:37:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=20#5574?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source/debug/BookSourceDebugActivity.kt | 43 ++++++----- .../legado/app/ui/login/SourceLoginDialog.kt | 76 ++++++++++--------- 2 files changed, 65 insertions(+), 54 deletions(-) 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 0a0b1c289..215d796ab 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 @@ -121,29 +121,36 @@ class BookSourceDebugActivity : VMBaseActivity - binding.textFx.onLongClick { - selector("选择发现", exploreKindTitles) { _, index -> - val explore = exploreKinds[index] - binding.textFx.text = "${explore.title}::${explore.url}" - searchView.setQuery(binding.textFx.text, true) + exploreKinds?.firstOrNull()?.let { + binding.textFx.text = "${it.title}::${it.url}" + if (it.title.startsWith("ERROR:")) { + adapter.addItem("获取发现出错\n${it.url}") + openOrCloseHelp(false) + searchView.clearFocus() + return@launch } } + @Suppress("USELESS_ELVIS") + exploreKinds?.map { it.title ?: "" }?.let { exploreKindTitles -> + binding.textFx.onLongClick { + selector("选择发现", exploreKindTitles) { _, index -> + val explore = exploreKinds[index] + binding.textFx.text = "${explore.title}::${explore.url}" + searchView.setQuery(binding.textFx.text, true) + } + } + } + } catch (e: NullPointerException) { + adapter.addItem("获取发现出错 JSON 数据错误\n$e") + openOrCloseHelp(false) + searchView.clearFocus() } } } diff --git a/app/src/main/java/io/legado/app/ui/login/SourceLoginDialog.kt b/app/src/main/java/io/legado/app/ui/login/SourceLoginDialog.kt index abbf54e4f..5b89b7144 100644 --- a/app/src/main/java/io/legado/app/ui/login/SourceLoginDialog.kt +++ b/app/src/main/java/io/legado/app/ui/login/SourceLoginDialog.kt @@ -56,47 +56,51 @@ class SourceLoginDialog : BaseDialogFragment(R.layout.dialog_login, true) { binding.toolBar.title = getString(R.string.login_source, source.getTag()) val loginInfo = source.getLoginInfoMap() val loginUi = source.loginUi() - loginUi?.forEachIndexed { index, rowUi -> - when (rowUi.type) { - RowUi.Type.text -> ItemSourceEditBinding.inflate( - layoutInflater, - binding.root, - false - ).let { - binding.flexbox.addView(it.root) - it.root.id = index + 1000 - it.textInputLayout.hint = rowUi.name - it.editText.setText(loginInfo?.get(rowUi.name)) - } + try { + loginUi?.forEachIndexed { index, rowUi -> + when (rowUi.type) { + RowUi.Type.text -> ItemSourceEditBinding.inflate( + layoutInflater, + binding.root, + false + ).let { + binding.flexbox.addView(it.root) + it.root.id = index + 1000 + it.textInputLayout.hint = rowUi.name + it.editText.setText(loginInfo?.get(rowUi.name)) + } - RowUi.Type.password -> ItemSourceEditBinding.inflate( - layoutInflater, - binding.root, - false - ).let { - binding.flexbox.addView(it.root) - it.root.id = index + 1000 - it.textInputLayout.hint = rowUi.name - it.editText.inputType = - InputType.TYPE_TEXT_VARIATION_PASSWORD or InputType.TYPE_CLASS_TEXT - it.editText.setText(loginInfo?.get(rowUi.name)) - } + RowUi.Type.password -> ItemSourceEditBinding.inflate( + layoutInflater, + binding.root, + false + ).let { + binding.flexbox.addView(it.root) + it.root.id = index + 1000 + it.textInputLayout.hint = rowUi.name + it.editText.inputType = + InputType.TYPE_TEXT_VARIATION_PASSWORD or InputType.TYPE_CLASS_TEXT + it.editText.setText(loginInfo?.get(rowUi.name)) + } - RowUi.Type.button -> ItemFilletTextBinding.inflate( - layoutInflater, - binding.root, - false - ).let { - binding.flexbox.addView(it.root) - rowUi.style().apply(it.root) - it.root.id = index + 1000 - it.textView.text = rowUi.name - it.textView.setPadding(16.dpToPx()) - it.root.onClick { - handleButtonClick(source, rowUi, loginUi) + RowUi.Type.button -> ItemFilletTextBinding.inflate( + layoutInflater, + binding.root, + false + ).let { + binding.flexbox.addView(it.root) + rowUi.style().apply(it.root) + it.root.id = index + 1000 + it.textView.text = rowUi.name + it.textView.setPadding(16.dpToPx()) + it.root.onClick { + handleButtonClick(source, rowUi, loginUi) + } } } } + } catch (e: NullPointerException) { + AppLog.put("登录UI JSON 数据错误", e, true) } binding.toolBar.inflateMenu(R.menu.source_login) binding.toolBar.menu.applyTint(requireContext())