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 025a3eba6..796cb077e 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 @@ -14,6 +14,7 @@ import io.legado.app.help.config.AppConfig 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.read.ReadBookActivity import io.legado.app.ui.document.HandleFileContract import io.legado.app.utils.* @@ -93,7 +94,7 @@ abstract class BaseImportBookActivity : VMBaseActivity : VMBaseActivity Unit ) { + LocalBook.importArchiveFile(fileDoc.uri, fileName) { + it.contains(fileName) + }.firstOrNull()?.run { + onSuccess.invoke(bookUrl) + } } /* 提示是否重新导入所点击的压缩文件 */ diff --git a/app/src/main/java/io/legado/app/ui/book/import/local/ImportBookActivity.kt b/app/src/main/java/io/legado/app/ui/book/import/local/ImportBookActivity.kt index ecf7db588..a61413848 100644 --- a/app/src/main/java/io/legado/app/ui/book/import/local/ImportBookActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/import/local/ImportBookActivity.kt @@ -303,11 +303,4 @@ class ImportBookActivity : BaseImportBookActivity(), } } - override fun addArchiveToBookShelf( - fileDoc: FileDoc, - fileName: String, - onSuccess: (String) -> Unit - ) { - viewModel.addArchiveToBookShelf(fileDoc, fileName, onSuccess) - } } diff --git a/app/src/main/java/io/legado/app/ui/book/import/local/ImportBookViewModel.kt b/app/src/main/java/io/legado/app/ui/book/import/local/ImportBookViewModel.kt index 054913c9f..7ec591001 100644 --- a/app/src/main/java/io/legado/app/ui/book/import/local/ImportBookViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/import/local/ImportBookViewModel.kt @@ -97,18 +97,6 @@ class ImportBookViewModel(application: Application) : BaseViewModel(application) } } - fun addArchiveToBookShelf( - fileDoc: FileDoc, - fileName: String, - onSuccess: (String) -> Unit - ) { - LocalBook.importArchiveFile(fileDoc.uri, fileName) { - it.contains(fileName) - }.firstOrNull()?.run { - onSuccess.invoke(bookUrl) - } - } - fun deleteDoc(uriList: HashSet, finally: () -> Unit) { execute { uriList.forEach { diff --git a/app/src/main/java/io/legado/app/ui/book/import/remote/RemoteBookActivity.kt b/app/src/main/java/io/legado/app/ui/book/import/remote/RemoteBookActivity.kt index 2c98422b7..de8356fc9 100644 --- a/app/src/main/java/io/legado/app/ui/book/import/remote/RemoteBookActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/import/remote/RemoteBookActivity.kt @@ -9,7 +9,9 @@ import androidx.activity.viewModels import androidx.core.view.isGone import androidx.recyclerview.widget.LinearLayoutManager import io.legado.app.R +import io.legado.app.data.appDb import io.legado.app.data.entities.Book +import io.legado.app.help.config.AppConfig import io.legado.app.help.config.LocalConfig import io.legado.app.lib.theme.backgroundColor import io.legado.app.model.remote.RemoteBook @@ -17,6 +19,8 @@ import io.legado.app.ui.about.AppLogDialog import io.legado.app.ui.book.import.BaseImportBookActivity import io.legado.app.ui.widget.SelectActionBar import io.legado.app.ui.widget.dialog.TextDialog +import io.legado.app.utils.FileDoc +import io.legado.app.utils.find import io.legado.app.utils.showDialogFragment import kotlinx.coroutines.delay import kotlinx.coroutines.flow.conflate @@ -197,6 +201,41 @@ class RemoteBookActivity : BaseImportBookActivity(), showDialogFragment(TextDialog(getString(R.string.help), mdText, TextDialog.Mode.MD)) } - override fun startRead(book: Book) = startReadBook(book.bookUrl) + private fun showRemoteBookDownloadAlert( + remoteBook: RemoteBook, + onDownloadFinish: (() -> Unit)? = null + ) { + alert( + R.string.draw, + R.string.archive_not_found + ) { + okButton { + viewModel.addToBookshelf(hashSetOf(remoteBook) { + onDownloadFinish?.invoke() + } + } + noButton() + } + } + + override fun startRead(remoteBook: RemoteBook) { + val downloadFileName = remoteBook.filename + if (!ArchiveUtils.isArchive(downloadFileName)) { + appDb.bookDao.getBookByFileName(downloadFileName)?.let { + startReadBook(it.bookUrl) + } + } else { + AppConfig.defaultBookTreeUri ?: return + val downloadArchiveFileDoc = FileDoc.fromUri(Uri.parse(AppConfig.defaultBookTreeUri), true) + .find(downloadFileName) + if (downloadArchiveFileDoc == null) { + showRemoteBookDownloadAlert(remoteBook) { + startRead(remoteBook) + } + } else { + onArchiveFileClick(downloadArchiveFileDoc) + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/book/import/remote/RemoteBookAdapter.kt b/app/src/main/java/io/legado/app/ui/book/import/remote/RemoteBookAdapter.kt index 785e2db34..04f569940 100644 --- a/app/src/main/java/io/legado/app/ui/book/import/remote/RemoteBookAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/book/import/remote/RemoteBookAdapter.kt @@ -7,7 +7,6 @@ import io.legado.app.R import io.legado.app.base.adapter.ItemViewHolder import io.legado.app.base.adapter.RecyclerAdapter import io.legado.app.constant.AppConst -import io.legado.app.data.appDb import io.legado.app.data.entities.Book import io.legado.app.databinding.ItemImportBookBinding import io.legado.app.model.remote.RemoteBook @@ -88,9 +87,7 @@ class RemoteBookAdapter(context: Context, val callBack: CallBack) : callBack.upCountView() } else { /* 点击开始阅读 */ - appDb.bookDao.getBookByFileName(it.filename)?.let { - callBack.startRead(it) - } + callBack.startRead(it) } } } @@ -147,6 +144,6 @@ class RemoteBookAdapter(context: Context, val callBack: CallBack) : interface CallBack { fun openDir(remoteBook: RemoteBook) fun upCountView() - fun startRead(book: Book) + fun startRead(remoteBook: RemoteBook) } } \ No newline at end of file diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index aee4526de..927902142 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -1084,4 +1084,5 @@ 没有设置书籍保存位置! 删除提醒 No book found in bookshelf, import again ? + Can not find archive selected, continue to download ? diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml index 3e4b09c5b..a54be5b30 100644 --- a/app/src/main/res/values-ja-rJP/strings.xml +++ b/app/src/main/res/values-ja-rJP/strings.xml @@ -1087,4 +1087,5 @@ 没有设置书籍保存位置! 删除提醒 No book found in bookshelf, import again ? + Can not find archive selected, continue to download ? diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index f4e418de3..1b0012e37 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -1087,4 +1087,5 @@ 没有设置书籍保存位置! 删除提醒 No book found in bookshelf, import again ? + Can not find archive selected, continue to download ? diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index a8dfa2332..8f31bac58 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -1084,4 +1084,5 @@ 没有设置书籍保存位置! 删除提醒 未在书架上找到所选书籍, 是否重新导入? + 未能在书籍保存目录找到压缩文件,是否重新导入? diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 9aa5c09b4..c90d71c01 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -1086,4 +1086,5 @@ 没有设置书籍保存位置! 删除提醒 未在书架上找到所选书籍, 是否重新导入? + 未能在书籍保存目录找到压缩文件,是否重新导入? diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index 94df3e65d..f7b42db3f 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -1086,4 +1086,5 @@ 没有设置书籍保存位置! 删除提醒 未在书架上找到所选书籍, 是否重新导入? + 未能在书籍保存目录找到压缩文件,是否重新导入? diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 0dbc8a774..aa1f00d8c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1087,4 +1087,5 @@ 没有设置书籍保存位置! 删除提醒 No book found in bookshelf, import again ? + Can not find archive selected, continue to download ?