优化
Some checks failed
Test Build / prepare (push) Has been cancelled
Test Build / build (app, release) (push) Has been cancelled
Test Build / build (app, releaseA) (push) Has been cancelled
Test Build / prerelease (push) Has been cancelled
Test Build / lanzou (push) Has been cancelled
Test Build / test_Branch (push) Has been cancelled
Test Build / telegram (push) Has been cancelled
update fork / build (push) Has been cancelled

This commit is contained in:
Horis
2025-04-12 17:53:55 +08:00
parent bd2f84432c
commit ce46b3c868
9 changed files with 47 additions and 69 deletions

View File

@@ -19,15 +19,13 @@ import io.legado.app.help.config.AppConfig
import io.legado.app.help.config.LocalConfig
import io.legado.app.lib.dialogs.alert
import io.legado.app.lib.theme.primaryTextColor
import io.legado.app.ui.book.manga.ReadMangaActivity
import io.legado.app.ui.book.read.ReadBookActivity
import io.legado.app.ui.book.search.SearchActivity
import io.legado.app.utils.applyNavigationBarPadding
import io.legado.app.utils.applyTint
import io.legado.app.utils.cnCompare
import io.legado.app.utils.getInt
import io.legado.app.utils.putInt
import io.legado.app.utils.startReadOrMangaActivity
import io.legado.app.utils.startActivityForBook
import io.legado.app.utils.viewbindingdelegate.viewBinding
import kotlinx.coroutines.Dispatchers.IO
import kotlinx.coroutines.launch
@@ -193,9 +191,7 @@ class ReadRecordActivity : BaseActivity<ActivityReadRecordBinding>() {
if (book == null) {
SearchActivity.start(this@ReadRecordActivity, item.bookName)
} else {
startReadOrMangaActivity<ReadBookActivity, ReadMangaActivity>(book) {
putExtra("bookUrl", book.bookUrl)
}
startActivityForBook(book)
}
}
}

View File

@@ -15,8 +15,6 @@ import io.legado.app.help.config.AppConfig
import io.legado.app.lib.dialogs.alert
import io.legado.app.lib.permission.Permissions
import io.legado.app.lib.permission.PermissionsCompat
import io.legado.app.ui.book.manga.ReadMangaActivity
import io.legado.app.ui.book.read.ReadBookActivity
import io.legado.app.ui.file.HandleFileContract
import io.legado.app.utils.FileUtils
import io.legado.app.utils.buildMainHandler
@@ -27,7 +25,7 @@ import io.legado.app.utils.isContentScheme
import io.legado.app.utils.readUri
import io.legado.app.utils.showDialogFragment
import io.legado.app.utils.startActivity
import io.legado.app.utils.startReadOrMangaActivity
import io.legado.app.utils.startActivityForBook
import io.legado.app.utils.toastOnUi
import io.legado.app.utils.viewbindingdelegate.viewBinding
import kotlinx.coroutines.Dispatchers.IO
@@ -92,9 +90,7 @@ class FileAssociationActivity :
}
viewModel.openBookLiveData.observe(this) {
binding.rotateLoading.gone()
startReadOrMangaActivity<ReadBookActivity, ReadMangaActivity>(it) {
putExtra("bookUrl", it.bookUrl)
}
startActivityForBook(it)
finish()
}
viewModel.notSupportedLiveData.observe(this) { data ->
@@ -159,7 +155,9 @@ class FileAssociationActivity :
val treeDoc =
DocumentFile.fromTreeUri(this@FileAssociationActivity, treeUri)
if (!treeDoc!!.checkWrite()) {
throw InvalidBooksDirException("请重新设置书籍保存位置\nPermission Denial")
throw InvalidBooksDirException(
"请重新设置书籍保存位置\nPermission Denial"
)
}
readUri(uri) { fileDoc, inputStream ->
val name = fileDoc.name
@@ -167,7 +165,9 @@ class FileAssociationActivity :
if (doc == null || fileDoc.lastModified > doc.lastModified()) {
if (doc == null) {
doc = treeDoc.createFile(FileUtils.getMimeType(name), name)
?: throw InvalidBooksDirException("请重新设置书籍保存位置\nPermission Denial")
?: throw InvalidBooksDirException(
"请重新设置书籍保存位置\nPermission Denial"
)
}
contentResolver.openOutputStream(doc.uri)!!.use { oStream ->
inputStream.copyTo(oStream)
@@ -179,7 +179,9 @@ class FileAssociationActivity :
} else {
val treeFile = File(treeUri.path ?: treeUri.toString())
if (!treeFile.checkWrite()) {
throw InvalidBooksDirException("请重新设置书籍保存位置\nPermission Denial")
throw InvalidBooksDirException(
"请重新设置书籍保存位置\nPermission Denial"
)
}
readUri(uri) { fileDoc, inputStream ->
val name = fileDoc.name

View File

@@ -31,8 +31,6 @@ import io.legado.app.model.BookCover
import io.legado.app.service.AudioPlayService
import io.legado.app.ui.about.AppLogDialog
import io.legado.app.ui.book.changesource.ChangeBookSourceDialog
import io.legado.app.ui.book.manga.ReadMangaActivity
import io.legado.app.ui.book.read.ReadBookActivity
import io.legado.app.ui.book.source.edit.BookSourceEditActivity
import io.legado.app.ui.book.toc.TocActivityResult
import io.legado.app.ui.login.SourceLoginActivity
@@ -46,7 +44,7 @@ import io.legado.app.utils.observeEventSticky
import io.legado.app.utils.sendToClip
import io.legado.app.utils.showDialogFragment
import io.legado.app.utils.startActivity
import io.legado.app.utils.startReadOrMangaActivity
import io.legado.app.utils.startActivityForBook
import io.legado.app.utils.viewbindingdelegate.viewBinding
import io.legado.app.utils.visible
import kotlinx.coroutines.Dispatchers.IO
@@ -220,9 +218,7 @@ class AudioPlayActivity :
AudioPlay.book?.delete()
appDb.bookDao.insert(book)
}
startReadOrMangaActivity<ReadBookActivity,ReadMangaActivity>(book) {
putExtra("bookUrl", book.bookUrl)
}
startActivityForBook(book)
finish()
}
}

View File

@@ -15,15 +15,13 @@ import io.legado.app.lib.dialogs.alert
import io.legado.app.lib.dialogs.selector
import io.legado.app.lib.theme.primaryTextColor
import io.legado.app.model.localBook.LocalBook
import io.legado.app.ui.book.manga.ReadMangaActivity
import io.legado.app.ui.book.read.ReadBookActivity
import io.legado.app.ui.file.HandleFileContract
import io.legado.app.utils.ArchiveUtils
import io.legado.app.utils.FileDoc
import io.legado.app.utils.applyTint
import io.legado.app.utils.hideSoftInput
import io.legado.app.utils.shouldHideSoftInput
import io.legado.app.utils.startReadOrMangaActivity
import io.legado.app.utils.startActivityForBook
import io.legado.app.utils.toastOnUi
import io.legado.app.utils.viewbindingdelegate.viewBinding
import kotlin.coroutines.resume
@@ -99,9 +97,7 @@ abstract class BaseImportBookActivity<VM : ViewModel> : VMBaseActivity<ActivityI
abstract fun onSearchTextChange(newText: String?)
protected fun startReadBook(book: Book) {
startReadOrMangaActivity<ReadBookActivity, ReadMangaActivity>(book) {
putExtra("bookUrl", book.bookUrl)
}
startActivityForBook(book)
}
protected fun onArchiveFileClick(fileDoc: FileDoc) {

View File

@@ -67,7 +67,6 @@ import io.legado.app.receiver.NetworkChangedListener
import io.legado.app.receiver.TimeBatteryReceiver
import io.legado.app.service.BaseReadAloudService
import io.legado.app.ui.about.AppLogDialog
import io.legado.app.ui.book.audio.AudioPlayActivity
import io.legado.app.ui.book.bookmark.BookmarkDialog
import io.legado.app.ui.book.changesource.ChangeBookSourceDialog
import io.legado.app.ui.book.changesource.ChangeChapterSourceDialog
@@ -121,6 +120,7 @@ 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.startActivityForBook
import io.legado.app.utils.sysScreenOffTime
import io.legado.app.utils.throttle
import io.legado.app.utils.toastOnUi
@@ -1091,9 +1091,7 @@ class ReadBookActivity : BaseReadBookActivity(),
ReadBook.book?.delete()
appDb.bookDao.insert(book)
}
startActivity<AudioPlayActivity> {
putExtra("bookUrl", book.bookUrl)
}
startActivityForBook(book)
finish()
}
}

View File

@@ -22,21 +22,17 @@ import io.legado.app.data.appDb
import io.legado.app.data.entities.Book
import io.legado.app.data.entities.BookGroup
import io.legado.app.databinding.FragmentBooksBinding
import io.legado.app.help.book.isAudio
import io.legado.app.help.config.AppConfig
import io.legado.app.lib.theme.accentColor
import io.legado.app.lib.theme.primaryColor
import io.legado.app.ui.book.audio.AudioPlayActivity
import io.legado.app.ui.book.info.BookInfoActivity
import io.legado.app.ui.book.manga.ReadMangaActivity
import io.legado.app.ui.book.read.ReadBookActivity
import io.legado.app.ui.main.MainViewModel
import io.legado.app.utils.cnCompare
import io.legado.app.utils.flowWithLifecycleAndDatabaseChangeFirst
import io.legado.app.utils.observeEvent
import io.legado.app.utils.setEdgeEffectColor
import io.legado.app.utils.startActivity
import io.legado.app.utils.startReadOrMangaActivity
import io.legado.app.utils.startActivityForBook
import io.legado.app.utils.viewbindingdelegate.viewBinding
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
@@ -243,16 +239,7 @@ class BooksFragment() : BaseFragment(R.layout.fragment_books),
}
override fun open(book: Book) {
when {
book.isAudio ->
startActivity<AudioPlayActivity> {
putExtra("bookUrl", book.bookUrl)
}
else -> startReadOrMangaActivity<ReadBookActivity, ReadMangaActivity>(book) {
putExtra("bookUrl", book.bookUrl)
}
}
startActivityForBook(book)
}
override fun openBookInfo(book: Book) {

View File

@@ -18,15 +18,11 @@ import io.legado.app.data.appDb
import io.legado.app.data.entities.Book
import io.legado.app.data.entities.BookGroup
import io.legado.app.databinding.FragmentBookshelf2Binding
import io.legado.app.help.book.isAudio
import io.legado.app.help.config.AppConfig
import io.legado.app.lib.theme.accentColor
import io.legado.app.lib.theme.primaryColor
import io.legado.app.ui.book.audio.AudioPlayActivity
import io.legado.app.ui.book.group.GroupEditDialog
import io.legado.app.ui.book.info.BookInfoActivity
import io.legado.app.ui.book.manga.ReadMangaActivity
import io.legado.app.ui.book.read.ReadBookActivity
import io.legado.app.ui.book.search.SearchActivity
import io.legado.app.ui.main.bookshelf.BaseBookshelfFragment
import io.legado.app.utils.cnCompare
@@ -35,7 +31,7 @@ import io.legado.app.utils.observeEvent
import io.legado.app.utils.setEdgeEffectColor
import io.legado.app.utils.showDialogFragment
import io.legado.app.utils.startActivity
import io.legado.app.utils.startReadOrMangaActivity
import io.legado.app.utils.startActivityForBook
import io.legado.app.utils.viewbindingdelegate.viewBinding
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
@@ -213,16 +209,7 @@ class BookshelfFragment2() : BaseBookshelfFragment(R.layout.fragment_bookshelf2)
override fun onItemClick(item: Any) {
when (item) {
is Book -> when {
item.isAudio ->
startActivity<AudioPlayActivity> {
putExtra("bookUrl", item.bookUrl)
}
else -> startReadOrMangaActivity<ReadBookActivity, ReadMangaActivity>(item) {
putExtra("bookUrl", item.bookUrl)
}
}
is Book -> startActivityForBook(item)
is BookGroup -> {
groupId = item.groupId

View File

@@ -40,8 +40,12 @@ import io.legado.app.R
import io.legado.app.constant.AppConst
import io.legado.app.data.entities.Book
import io.legado.app.help.IntentHelp
import io.legado.app.help.book.isAudio
import io.legado.app.help.book.isImage
import io.legado.app.help.config.AppConfig
import io.legado.app.ui.book.audio.AudioPlayActivity
import io.legado.app.ui.book.manga.ReadMangaActivity
import io.legado.app.ui.book.read.ReadBookActivity
import splitties.systemservices.clipboardManager
import splitties.systemservices.connectivityManager
import splitties.systemservices.uiModeManager
@@ -56,13 +60,18 @@ inline fun <reified A : Activity> Context.startActivity(configIntent: Intent.()
startActivity(intent)
}
inline fun <reified A : Activity, reified M : Activity> Context.startReadOrMangaActivity(
fun Context.startActivityForBook(
book: Book,
configIntent: Intent.() -> Unit = {},
) {
val intent =
Intent(this, if (book.isImage && AppConfig.showMangaUi) M::class.java else A::class.java)
val cls = when {
book.isAudio -> AudioPlayActivity::class.java
book.isImage && AppConfig.showMangaUi -> ReadMangaActivity::class.java
else -> ReadBookActivity::class.java
}
val intent = Intent(this, cls)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
intent.putExtra("bookUrl", book.bookUrl)
intent.apply(configIntent)
startActivity(intent)
}

View File

@@ -15,8 +15,12 @@ import androidx.fragment.app.Fragment
import androidx.lifecycle.Lifecycle
import io.legado.app.R
import io.legado.app.data.entities.Book
import io.legado.app.help.book.isAudio
import io.legado.app.help.book.isImage
import io.legado.app.help.config.AppConfig
import io.legado.app.ui.book.audio.AudioPlayActivity
import io.legado.app.ui.book.manga.ReadMangaActivity
import io.legado.app.ui.book.read.ReadBookActivity
import io.legado.app.ui.widget.dialog.TextDialog
inline fun <reified T : DialogFragment> Fragment.showDialogFragment(
@@ -84,15 +88,18 @@ inline fun <reified T : Activity> Fragment.startActivity(
startActivity(Intent(requireContext(), T::class.java).apply(configIntent))
}
inline fun <reified A : Activity, reified M : Activity> Fragment.startReadOrMangaActivity(
fun Fragment.startActivityForBook(
book: Book,
configIntent: Intent.() -> Unit = {},
) {
val intent = Intent(
requireActivity(),
if (book.isImage && AppConfig.showMangaUi) M::class.java else A::class.java
)
val cls = when {
book.isAudio -> AudioPlayActivity::class.java
book.isImage && AppConfig.showMangaUi -> ReadMangaActivity::class.java
else -> ReadBookActivity::class.java
}
val intent = Intent(requireActivity(), cls)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
intent.putExtra("bookUrl", book.bookUrl)
intent.apply(configIntent)
startActivity(intent)
}