diff --git a/app/src/main/assets/updateLog.md b/app/src/main/assets/updateLog.md index 63349655f..6bab5f744 100644 --- a/app/src/main/assets/updateLog.md +++ b/app/src/main/assets/updateLog.md @@ -14,7 +14,7 @@ **2022/10/25** * 更新cronet: 107.0.5304.54 -* 朗读菜单的闹钟点击后可以保存设定时间,下次启动朗读自动设定时间,调不了时间的把进度条拉到0然后点一下闹钟就可以了 by Horis +* 朗读菜单的闹钟点击后可以保存设定时间,下次启动朗读自动设定时间,调不了时间、朗读固定的时间后停止的把进度条拉到0然后点一下闹钟就可以了 by Horis * 多页目录和正文添加并发访问限制 * 阅读界面点击区域支持更多选项,中间区域也可设置 diff --git a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt index c9bd620e1..f0f9ce1c1 100644 --- a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt +++ b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt @@ -222,8 +222,9 @@ class AnalyzeUrl( queryStr = fieldsTxt val queryS = fieldsTxt.splitNotBlank("&") for (query in queryS) { - val value = query.substringAfter("=") - val key = query.substringBefore("=") + val queryPair = query.splitNotBlank("=", limit = 2) + val key = queryPair[0] + val value = queryPair.getOrNull(1) ?: "" if (charset.isNullOrEmpty()) { if (NetworkUtils.hasUrlEncoded(value)) { fieldMap[key] = value diff --git a/app/src/main/java/io/legado/app/ui/book/read/config/ReadAloudDialog.kt b/app/src/main/java/io/legado/app/ui/book/read/config/ReadAloudDialog.kt index 41554df80..1afdc469b 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/config/ReadAloudDialog.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/config/ReadAloudDialog.kt @@ -12,6 +12,7 @@ import io.legado.app.base.BaseDialogFragment import io.legado.app.constant.EventBus import io.legado.app.databinding.DialogReadAloudBinding import io.legado.app.help.config.AppConfig +import io.legado.app.lib.dialogs.selector import io.legado.app.lib.theme.bottomBackground import io.legado.app.lib.theme.getPrimaryTextColor import io.legado.app.model.ReadAloud @@ -127,6 +128,13 @@ class ReadAloudDialog : BaseDialogFragment(R.layout.dialog_read_aloud) { AppConfig.ttsTimer = seekTimer.progress toastOnUi("保存设定时间成功!") } + tvTimer.setOnClickListener { + val times = intArrayOf(0, 5, 10, 15, 30, 60, 90, 180) + val timeKeys = times.map { "$it 分钟" } + context?.selector("设定时间", timeKeys) { _, index -> + ReadAloud.setTimer(requireContext(), times[index]) + } + } //设置保存的默认值 seekTtsSpeechRate.progress = AppConfig.ttsSpeechRate seekTtsSpeechRate.setOnSeekBarChangeListener(object : SeekBarChangeListener { 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 1b16f272a..4f893e56a 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 @@ -11,6 +11,7 @@ import io.legado.app.R import io.legado.app.base.VMBaseActivity import io.legado.app.databinding.ActivitySourceDebugBinding import io.legado.app.help.source.exploreKinds +import io.legado.app.lib.dialogs.selector import io.legado.app.lib.theme.accentColor import io.legado.app.lib.theme.primaryColor import io.legado.app.ui.qrcode.QrCodeResult @@ -22,6 +23,7 @@ import io.legado.app.utils.toastOnUi import io.legado.app.utils.viewbindingdelegate.viewBinding import kotlinx.coroutines.launch import splitties.views.onClick +import splitties.views.onLongClick class BookSourceDebugActivity : VMBaseActivity() { @@ -130,14 +132,25 @@ 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) + } } } } diff --git a/app/src/main/java/io/legado/app/utils/StringExtensions.kt b/app/src/main/java/io/legado/app/utils/StringExtensions.kt index f273cc45a..a02596bdb 100644 --- a/app/src/main/java/io/legado/app/utils/StringExtensions.kt +++ b/app/src/main/java/io/legado/app/utils/StringExtensions.kt @@ -73,8 +73,9 @@ fun String?.isTrue(nullIsTrue: Boolean = false): Boolean { return !this.matches("\\s*(?i)(false|no|not|0)\\s*".toRegex()) } -fun String.splitNotBlank(vararg delimiter: String): Array = run { - this.split(*delimiter).map { it.trim() }.filterNot { it.isBlank() }.toTypedArray() +fun String.splitNotBlank(vararg delimiter: String, limit: Int = 0): Array = run { + this.split(*delimiter, limit = limit).map { it.trim() }.filterNot { it.isBlank() } + .toTypedArray() } fun String.splitNotBlank(regex: Regex, limit: Int = 0): Array = run { diff --git a/app/src/main/res/layout/dialog_read_aloud.xml b/app/src/main/res/layout/dialog_read_aloud.xml index 2a9467d36..5ac2f1962 100644 --- a/app/src/main/res/layout/dialog_read_aloud.xml +++ b/app/src/main/res/layout/dialog_read_aloud.xml @@ -144,6 +144,7 @@ android:id="@+id/tv_timer" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:background="?android:attr/selectableItemBackgroundBorderless" android:textColor="@color/primaryText" android:text="@string/timer_m" />