This commit is contained in:
Horis
2025-12-19 10:49:31 +08:00
parent f8224b0637
commit 4012ed9569
5 changed files with 27 additions and 4 deletions
@@ -3,6 +3,7 @@ package io.legado.app.service
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.app.PendingIntent import android.app.PendingIntent
import android.net.Uri import android.net.Uri
import androidx.core.net.toUri
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.media3.common.C import androidx.media3.common.C
import androidx.media3.common.MediaItem import androidx.media3.common.MediaItem
@@ -307,7 +308,7 @@ class HttpReadAloudService : BaseReadAloudService(),
} }
private fun createDownloader(factory: CacheDataSource.Factory, fileName: String): Downloader { private fun createDownloader(factory: CacheDataSource.Factory, fileName: String): Downloader {
val uri = Uri.parse(fileName) val uri = fileName.toUri()
val request = DownloadRequest.Builder(fileName, uri).build() val request = DownloadRequest.Builder(fileName, uri).build()
return DefaultDownloaderFactory(factory, okHttpClient.dispatcher.executorService) return DefaultDownloaderFactory(factory, okHttpClient.dispatcher.executorService)
.createDownloader(request) .createDownloader(request)
@@ -586,7 +587,7 @@ class HttpReadAloudService : BaseReadAloudService(),
return servicePendingIntent<HttpReadAloudService>(actionStr) return servicePendingIntent<HttpReadAloudService>(actionStr)
} }
inner class CustomLoadErrorHandlingPolicy : DefaultLoadErrorHandlingPolicy(0) { class CustomLoadErrorHandlingPolicy : DefaultLoadErrorHandlingPolicy(0) {
override fun getRetryDelayMsFor(loadErrorInfo: LoadErrorHandlingPolicy.LoadErrorInfo): Long { override fun getRetryDelayMsFor(loadErrorInfo: LoadErrorHandlingPolicy.LoadErrorInfo): Long {
return C.TIME_UNSET return C.TIME_UNSET
} }
@@ -70,6 +70,9 @@ class GroupEditDialog() : BaseDialogFragment(R.layout.dialog_book_group_edit) {
binding.btnDelete.visible(it.groupId > 0 || it.groupId == Long.MIN_VALUE) binding.btnDelete.visible(it.groupId > 0 || it.groupId == Long.MIN_VALUE)
binding.tieGroupName.setText(it.groupName) binding.tieGroupName.setText(it.groupName)
binding.ivCover.load(it.cover) binding.ivCover.load(it.cover)
if (it.bookSort + 1 !in 0..<binding.spSort.count) {
it.bookSort = -1
}
binding.spSort.setSelection(it.bookSort + 1) binding.spSort.setSelection(it.bookSort + 1)
binding.cbEnableRefresh.isChecked = it.enableRefresh binding.cbEnableRefresh.isChecked = it.enableRefresh
} ?: let { } ?: let {
@@ -3,6 +3,7 @@ package io.legado.app.ui.book.read.config
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.core.view.indices
import com.jaredrummler.android.colorpicker.ColorPickerDialog import com.jaredrummler.android.colorpicker.ColorPickerDialog
import io.legado.app.R import io.legado.app.R
import io.legado.app.base.BaseDialogFragment import io.legado.app.base.BaseDialogFragment
@@ -44,6 +45,9 @@ class TipConfigDialog : BaseDialogFragment(R.layout.dialog_tip_config) {
} }
private fun initView() { private fun initView() {
if (ReadBookConfig.titleMode !in binding.rgTitleMode.indices) {
ReadBookConfig.titleMode = 0
}
binding.rgTitleMode.checkByIndex(ReadBookConfig.titleMode) binding.rgTitleMode.checkByIndex(ReadBookConfig.titleMode)
binding.dsbTitleSize.progress = ReadBookConfig.titleSize binding.dsbTitleSize.progress = ReadBookConfig.titleSize
binding.dsbTitleTop.progress = ReadBookConfig.titleTopSpacing binding.dsbTitleTop.progress = ReadBookConfig.titleTopSpacing
@@ -3,6 +3,7 @@ package io.legado.app.ui.main.bookshelf
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.view.Menu import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import androidx.core.view.indices
import androidx.fragment.app.activityViewModels import androidx.fragment.app.activityViewModels
import androidx.fragment.app.viewModels import androidx.fragment.app.viewModels
import androidx.lifecycle.LiveData import androidx.lifecycle.LiveData
@@ -164,11 +165,22 @@ abstract class BaseBookshelfFragment(layoutId: Int) : VMBaseFragment<BookshelfVi
@SuppressLint("InflateParams") @SuppressLint("InflateParams")
fun configBookshelf() { fun configBookshelf() {
alert(titleResource = R.string.bookshelf_layout) { alert(titleResource = R.string.bookshelf_layout) {
val bookshelfLayout = AppConfig.bookshelfLayout var bookshelfLayout = AppConfig.bookshelfLayout
val bookshelfSort = AppConfig.bookshelfSort var bookshelfSort = AppConfig.bookshelfSort
val alertBinding = val alertBinding =
DialogBookshelfConfigBinding.inflate(layoutInflater) DialogBookshelfConfigBinding.inflate(layoutInflater)
.apply { .apply {
if (AppConfig.bookGroupStyle !in 0..<spGroupStyle.count) {
AppConfig.bookGroupStyle = 0
}
if (bookshelfLayout !in rgLayout.indices) {
bookshelfLayout = 0
AppConfig.bookshelfLayout = 0
}
if (bookshelfSort !in rgSort.indices) {
bookshelfSort = 0
AppConfig.bookshelfSort = 0
}
spGroupStyle.setSelection(AppConfig.bookGroupStyle) spGroupStyle.setSelection(AppConfig.bookGroupStyle)
swShowUnread.isChecked = AppConfig.showUnread swShowUnread.isChecked = AppConfig.showUnread
swShowLastUpdateTime.isChecked = AppConfig.showLastUpdateTime swShowLastUpdateTime.isChecked = AppConfig.showLastUpdateTime
@@ -94,6 +94,9 @@ class RuleSubActivity : BaseActivity<ActivityRuleSubBinding>(),
override fun editSubscription(ruleSub: RuleSub) { override fun editSubscription(ruleSub: RuleSub) {
alert(R.string.rule_subscription) { alert(R.string.rule_subscription) {
val alertBinding = DialogRuleSubEditBinding.inflate(layoutInflater).apply { val alertBinding = DialogRuleSubEditBinding.inflate(layoutInflater).apply {
if (ruleSub.type !in 0..<spType.count) {
ruleSub.type = 0
}
spType.setSelection(ruleSub.type) spType.setSelection(ruleSub.type)
etName.setText(ruleSub.name) etName.setText(ruleSub.name)
etUrl.setText(ruleSub.url) etUrl.setText(ruleSub.url)