diff --git a/app/src/main/assets/storageHelp.md b/app/src/main/assets/storageHelp.md index 8830725fa..7e060c432 100644 --- a/app/src/main/assets/storageHelp.md +++ b/app/src/main/assets/storageHelp.md @@ -1,2 +1,2 @@ * 由于安卓的存储访问限制,阅读需要设置**公共目录下的子目录**来实现书籍拷贝、下载,例如Documents/Books、Download/Books -* 如不设置,将无法正常使用本地书籍、webDav书籍的相关功能 \ No newline at end of file +* 如不设置,将无法正常使用本地书籍、webDav书籍、文件类书源的相关功能 \ No newline at end of file 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 12219caf1..dbb92adfb 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 @@ -8,7 +8,16 @@ import io.legado.app.help.config.AppConfig import io.legado.app.lib.dialogs.alert import io.legado.app.ui.document.HandleFileContract -abstract class BaseImportBookActivity(): VMBaseActivity() { +/** + * 涉及到文件类书源 webDav远程书籍 本地阅读文件 + */ +abstract class BaseImportBookActivity( + fullScreen: Boolean = true, + theme: Theme = Theme.Auto, + toolBarTheme: Theme = Theme.Auto, + transparent: Boolean = false, + imageBg: Boolean = true +) : VMBaseActivity(fullScreen, theme, toolBarTheme, transparent, imageBg) { private val localBookTreeSelect = registerForActivityResult(HandleFileContract()) { it.uri?.let { treeUri -> diff --git a/app/src/main/java/io/legado/app/ui/book/info/BookInfoActivity.kt b/app/src/main/java/io/legado/app/ui/book/info/BookInfoActivity.kt index ef34a006b..7c22135f8 100644 --- a/app/src/main/java/io/legado/app/ui/book/info/BookInfoActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/info/BookInfoActivity.kt @@ -11,7 +11,6 @@ import android.widget.LinearLayout import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.viewModels import io.legado.app.R -import io.legado.app.base.VMBaseActivity import io.legado.app.constant.EventBus import io.legado.app.constant.Theme import io.legado.app.data.appDb @@ -36,6 +35,7 @@ import io.legado.app.ui.book.audio.AudioPlayActivity import io.legado.app.ui.book.changecover.ChangeCoverDialog import io.legado.app.ui.book.changesource.ChangeBookSourceDialog import io.legado.app.ui.book.group.GroupSelectDialog +import io.legado.app.ui.book.import.BaseImportBookActivity import io.legado.app.ui.book.info.edit.BookInfoEditActivity import io.legado.app.ui.book.read.ReadBookActivity import io.legado.app.ui.book.search.SearchActivity @@ -52,7 +52,7 @@ import kotlinx.coroutines.withContext class BookInfoActivity : - VMBaseActivity(toolBarTheme = Theme.Dark), + BaseImportBookActivity(toolBarTheme = Theme.Dark), GroupSelectDialog.CallBack, ChangeBookSourceDialog.CallBack, ChangeCoverDialog.CallBack { @@ -113,6 +113,8 @@ class BookInfoActivity : viewModel.chapterListData.observe(this) { upLoading(false, it) } viewModel.initData(intent) initViewEvent() + //当前书籍可从webDav同步书籍或者为文件类书源 需要设置书籍保存位置 + if (viewModel.isImportBookOnLine || viewModel.isWebDavBook) setBookStorage() } override fun onCompatCreateOptionsMenu(menu: Menu): Boolean { diff --git a/app/src/main/java/io/legado/app/ui/book/info/BookInfoViewModel.kt b/app/src/main/java/io/legado/app/ui/book/info/BookInfoViewModel.kt index 7b67229be..142af9bd2 100644 --- a/app/src/main/java/io/legado/app/ui/book/info/BookInfoViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/info/BookInfoViewModel.kt @@ -38,8 +38,11 @@ class BookInfoViewModel(application: Application) : BaseViewModel(application) { var inBookshelf = false var bookSource: BookSource? = null private var changeSourceCoroutine: Coroutine<*>? = null + val isImportBookOnLine: Boolean get() = bookSource?.bookSourceType == BookSourceType.file + val isWebDavBook: Boolean + get() = bookData.value?.getRemoteUrl() != null fun initData(intent: Intent) { execute { diff --git a/app/src/main/java/io/legado/app/ui/book/read/BaseReadBookActivity.kt b/app/src/main/java/io/legado/app/ui/book/read/BaseReadBookActivity.kt index df6d01744..4ace42201 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/BaseReadBookActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/BaseReadBookActivity.kt @@ -13,7 +13,6 @@ import android.widget.FrameLayout import androidx.activity.viewModels import androidx.core.view.isVisible import io.legado.app.R -import io.legado.app.base.VMBaseActivity import io.legado.app.constant.AppConst.charsets import io.legado.app.constant.PreferKey import io.legado.app.databinding.ActivityBookReadBinding @@ -29,6 +28,7 @@ import io.legado.app.lib.theme.backgroundColor import io.legado.app.lib.theme.bottomBackground import io.legado.app.model.CacheBook import io.legado.app.model.ReadBook +import io.legado.app.ui.book.import.BaseImportBookActivity import io.legado.app.ui.book.read.config.BgTextConfigDialog import io.legado.app.ui.book.read.config.ClickActionConfigDialog import io.legado.app.ui.book.read.config.PaddingConfigDialog @@ -40,7 +40,7 @@ import io.legado.app.utils.viewbindingdelegate.viewBinding * 阅读界面 */ abstract class BaseReadBookActivity : - VMBaseActivity(imageBg = false) { + BaseImportBookActivity(imageBg = false) { override val binding by viewBinding(ActivityBookReadBinding::inflate) override val viewModel by viewModels() @@ -71,6 +71,8 @@ abstract class BaseReadBookActivity : if (!LocalConfig.readHelpVersionIsLast) { showClickRegionalConfig() } + //当前阅读书籍可从webDav同步书籍 需要设置书籍保存位置 + if (ReadBook.book?.getRemoteUrl() != null) setBookStorage() } fun showPaddingConfig() {