diff --git a/app/src/main/java/io/legado/app/ui/about/ReadRecordActivity.kt b/app/src/main/java/io/legado/app/ui/about/ReadRecordActivity.kt index 516b04afe..6b6c32414 100644 --- a/app/src/main/java/io/legado/app/ui/about/ReadRecordActivity.kt +++ b/app/src/main/java/io/legado/app/ui/about/ReadRecordActivity.kt @@ -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() { if (book == null) { SearchActivity.start(this@ReadRecordActivity, item.bookName) } else { - startReadOrMangaActivity(book) { - putExtra("bookUrl", book.bookUrl) - } + startActivityForBook(book) } } } diff --git a/app/src/main/java/io/legado/app/ui/association/FileAssociationActivity.kt b/app/src/main/java/io/legado/app/ui/association/FileAssociationActivity.kt index fbcfb8523..268bcc387 100644 --- a/app/src/main/java/io/legado/app/ui/association/FileAssociationActivity.kt +++ b/app/src/main/java/io/legado/app/ui/association/FileAssociationActivity.kt @@ -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(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 diff --git a/app/src/main/java/io/legado/app/ui/book/audio/AudioPlayActivity.kt b/app/src/main/java/io/legado/app/ui/book/audio/AudioPlayActivity.kt index bab16cdab..dad48f006 100644 --- a/app/src/main/java/io/legado/app/ui/book/audio/AudioPlayActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/audio/AudioPlayActivity.kt @@ -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(book) { - putExtra("bookUrl", book.bookUrl) - } + startActivityForBook(book) finish() } } diff --git a/app/src/main/java/io/legado/app/ui/book/import/BaseImportBookActivity.kt b/app/src/main/java/io/legado/app/ui/book/import/BaseImportBookActivity.kt index d61d298d6..b7f7f24a7 100644 --- a/app/src/main/java/io/legado/app/ui/book/import/BaseImportBookActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/import/BaseImportBookActivity.kt @@ -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 : VMBaseActivity(book) { - putExtra("bookUrl", book.bookUrl) - } + startActivityForBook(book) } protected fun onArchiveFileClick(fileDoc: FileDoc) { diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt index 4e9ab0c4b..83847fb06 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt @@ -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 { - putExtra("bookUrl", book.bookUrl) - } + startActivityForBook(book) finish() } } diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksFragment.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksFragment.kt index 0a806d535..34d944450 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksFragment.kt @@ -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 { - putExtra("bookUrl", book.bookUrl) - } - - else -> startReadOrMangaActivity(book) { - putExtra("bookUrl", book.bookUrl) - } - } + startActivityForBook(book) } override fun openBookInfo(book: Book) { diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/style2/BookshelfFragment2.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/style2/BookshelfFragment2.kt index 4eda4b594..ae9bd379d 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/style2/BookshelfFragment2.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/style2/BookshelfFragment2.kt @@ -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 { - putExtra("bookUrl", item.bookUrl) - } - - else -> startReadOrMangaActivity(item) { - putExtra("bookUrl", item.bookUrl) - } - } + is Book -> startActivityForBook(item) is BookGroup -> { groupId = item.groupId diff --git a/app/src/main/java/io/legado/app/utils/ContextExtensions.kt b/app/src/main/java/io/legado/app/utils/ContextExtensions.kt index 874e49654..1811f670a 100644 --- a/app/src/main/java/io/legado/app/utils/ContextExtensions.kt +++ b/app/src/main/java/io/legado/app/utils/ContextExtensions.kt @@ -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 Context.startActivity(configIntent: Intent.() startActivity(intent) } -inline fun 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) } diff --git a/app/src/main/java/io/legado/app/utils/FragmentExtensions.kt b/app/src/main/java/io/legado/app/utils/FragmentExtensions.kt index 9a143d5cc..c6df0bd79 100644 --- a/app/src/main/java/io/legado/app/utils/FragmentExtensions.kt +++ b/app/src/main/java/io/legado/app/utils/FragmentExtensions.kt @@ -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 Fragment.showDialogFragment( @@ -84,15 +88,18 @@ inline fun Fragment.startActivity( startActivity(Intent(requireContext(), T::class.java).apply(configIntent)) } -inline fun 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) }