Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -14,7 +14,7 @@
|
|||||||
**2022/10/25**
|
**2022/10/25**
|
||||||
|
|
||||||
* 更新cronet: 107.0.5304.54
|
* 更新cronet: 107.0.5304.54
|
||||||
* 朗读菜单的闹钟点击后可以保存设定时间,下次启动朗读自动设定时间,调不了时间的把进度条拉到0然后点一下闹钟就可以了 by Horis
|
* 朗读菜单的闹钟点击后可以保存设定时间,下次启动朗读自动设定时间,调不了时间、朗读固定的时间后停止的把进度条拉到0然后点一下闹钟就可以了 by Horis
|
||||||
* 多页目录和正文添加并发访问限制
|
* 多页目录和正文添加并发访问限制
|
||||||
* 阅读界面点击区域支持更多选项,中间区域也可设置
|
* 阅读界面点击区域支持更多选项,中间区域也可设置
|
||||||
|
|
||||||
|
|||||||
@@ -222,8 +222,9 @@ class AnalyzeUrl(
|
|||||||
queryStr = fieldsTxt
|
queryStr = fieldsTxt
|
||||||
val queryS = fieldsTxt.splitNotBlank("&")
|
val queryS = fieldsTxt.splitNotBlank("&")
|
||||||
for (query in queryS) {
|
for (query in queryS) {
|
||||||
val value = query.substringAfter("=")
|
val queryPair = query.splitNotBlank("=", limit = 2)
|
||||||
val key = query.substringBefore("=")
|
val key = queryPair[0]
|
||||||
|
val value = queryPair.getOrNull(1) ?: ""
|
||||||
if (charset.isNullOrEmpty()) {
|
if (charset.isNullOrEmpty()) {
|
||||||
if (NetworkUtils.hasUrlEncoded(value)) {
|
if (NetworkUtils.hasUrlEncoded(value)) {
|
||||||
fieldMap[key] = value
|
fieldMap[key] = value
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import io.legado.app.base.BaseDialogFragment
|
|||||||
import io.legado.app.constant.EventBus
|
import io.legado.app.constant.EventBus
|
||||||
import io.legado.app.databinding.DialogReadAloudBinding
|
import io.legado.app.databinding.DialogReadAloudBinding
|
||||||
import io.legado.app.help.config.AppConfig
|
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.bottomBackground
|
||||||
import io.legado.app.lib.theme.getPrimaryTextColor
|
import io.legado.app.lib.theme.getPrimaryTextColor
|
||||||
import io.legado.app.model.ReadAloud
|
import io.legado.app.model.ReadAloud
|
||||||
@@ -127,6 +128,13 @@ class ReadAloudDialog : BaseDialogFragment(R.layout.dialog_read_aloud) {
|
|||||||
AppConfig.ttsTimer = seekTimer.progress
|
AppConfig.ttsTimer = seekTimer.progress
|
||||||
toastOnUi("保存设定时间成功!")
|
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.progress = AppConfig.ttsSpeechRate
|
||||||
seekTtsSpeechRate.setOnSeekBarChangeListener(object : SeekBarChangeListener {
|
seekTtsSpeechRate.setOnSeekBarChangeListener(object : SeekBarChangeListener {
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import io.legado.app.R
|
|||||||
import io.legado.app.base.VMBaseActivity
|
import io.legado.app.base.VMBaseActivity
|
||||||
import io.legado.app.databinding.ActivitySourceDebugBinding
|
import io.legado.app.databinding.ActivitySourceDebugBinding
|
||||||
import io.legado.app.help.source.exploreKinds
|
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.accentColor
|
||||||
import io.legado.app.lib.theme.primaryColor
|
import io.legado.app.lib.theme.primaryColor
|
||||||
import io.legado.app.ui.qrcode.QrCodeResult
|
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 io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import splitties.views.onClick
|
import splitties.views.onClick
|
||||||
|
import splitties.views.onLongClick
|
||||||
|
|
||||||
class BookSourceDebugActivity : VMBaseActivity<ActivitySourceDebugBinding, BookSourceDebugModel>() {
|
class BookSourceDebugActivity : VMBaseActivity<ActivitySourceDebugBinding, BookSourceDebugModel>() {
|
||||||
|
|
||||||
@@ -130,14 +132,25 @@ class BookSourceDebugActivity : VMBaseActivity<ActivitySourceDebugBinding, BookS
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
launch {
|
launch {
|
||||||
viewModel.bookSource?.exploreKinds()?.firstOrNull {
|
val exploreKinds = viewModel.bookSource?.exploreKinds()?.filter {
|
||||||
!it.url.isNullOrBlank()
|
!it.url.isNullOrBlank()
|
||||||
}?.let {
|
}
|
||||||
|
exploreKinds?.firstOrNull()?.let {
|
||||||
binding.textFx.text = "${it.title}::${it.url}"
|
binding.textFx.text = "${it.title}::${it.url}"
|
||||||
if (it.title.startsWith("ERROR:")) {
|
if (it.title.startsWith("ERROR:")) {
|
||||||
adapter.addItem("获取发现出错\n${it.url}")
|
adapter.addItem("获取发现出错\n${it.url}")
|
||||||
openOrCloseHelp(false)
|
openOrCloseHelp(false)
|
||||||
searchView.clearFocus()
|
searchView.clearFocus()
|
||||||
|
return@launch
|
||||||
|
}
|
||||||
|
}
|
||||||
|
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)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -73,8 +73,9 @@ fun String?.isTrue(nullIsTrue: Boolean = false): Boolean {
|
|||||||
return !this.matches("\\s*(?i)(false|no|not|0)\\s*".toRegex())
|
return !this.matches("\\s*(?i)(false|no|not|0)\\s*".toRegex())
|
||||||
}
|
}
|
||||||
|
|
||||||
fun String.splitNotBlank(vararg delimiter: String): Array<String> = run {
|
fun String.splitNotBlank(vararg delimiter: String, limit: Int = 0): Array<String> = run {
|
||||||
this.split(*delimiter).map { it.trim() }.filterNot { it.isBlank() }.toTypedArray()
|
this.split(*delimiter, limit = limit).map { it.trim() }.filterNot { it.isBlank() }
|
||||||
|
.toTypedArray()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun String.splitNotBlank(regex: Regex, limit: Int = 0): Array<String> = run {
|
fun String.splitNotBlank(regex: Regex, limit: Int = 0): Array<String> = run {
|
||||||
|
|||||||
@@ -144,6 +144,7 @@
|
|||||||
android:id="@+id/tv_timer"
|
android:id="@+id/tv_timer"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:background="?android:attr/selectableItemBackgroundBorderless"
|
||||||
android:textColor="@color/primaryText"
|
android:textColor="@color/primaryText"
|
||||||
android:text="@string/timer_m" />
|
android:text="@string/timer_m" />
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user