From d7fcc5764c3a69034b36dfec716fee22f565a16a Mon Sep 17 00:00:00 2001 From: Xwite <1797350009@qq.com> Date: Sun, 12 Mar 2023 10:00:12 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=B9=A6=E7=B1=8D=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E7=95=8C=E9=9D=A2=E7=82=B9=E5=87=BB=E5=B7=B2=E5=9C=A8=E4=B9=A6?= =?UTF-8?q?=E6=9E=B6=E7=9A=84=E5=BC=80=E5=A7=8B=E9=98=85=E8=AF=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/legado/app/data/dao/BookDao.kt | 3 +++ .../ui/book/import/BaseImportBookActivity.kt | 12 +++++++++++ .../ui/book/import/local/ImportBookAdapter.kt | 20 +++++++++++-------- .../book/import/local/ImportBookViewModel.kt | 9 ++------- .../book/import/remote/RemoteBookAdapter.kt | 8 ++++++++ .../book/import/remote/RemoteBookViewModel.kt | 3 +-- app/src/main/res/values-es-rES/strings.xml | 1 - app/src/main/res/values-ja-rJP/strings.xml | 1 - app/src/main/res/values-pt-rBR/strings.xml | 1 - app/src/main/res/values-zh-rHK/strings.xml | 1 - app/src/main/res/values-zh-rTW/strings.xml | 1 - app/src/main/res/values-zh/strings.xml | 1 - app/src/main/res/values/strings.xml | 1 - 13 files changed, 38 insertions(+), 24 deletions(-) diff --git a/app/src/main/java/io/legado/app/data/dao/BookDao.kt b/app/src/main/java/io/legado/app/data/dao/BookDao.kt index 9633a8b6d..b2d129523 100644 --- a/app/src/main/java/io/legado/app/data/dao/BookDao.kt +++ b/app/src/main/java/io/legado/app/data/dao/BookDao.kt @@ -62,6 +62,9 @@ interface BookDao { @Query("SELECT * FROM books WHERE `name` in (:names)") fun findByName(vararg names: String): List + @Query("select * from books where originName = :fileName") + fun getBookByFileName(fileName: String): Book? + @Query("SELECT * FROM books WHERE bookUrl = :bookUrl") fun getBook(bookUrl: String): Book? 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 2da471c85..6347bcf6f 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 @@ -5,13 +5,17 @@ import androidx.appcompat.widget.SearchView import androidx.lifecycle.ViewModel import io.legado.app.R import io.legado.app.base.VMBaseActivity +import io.legado.app.data.entities.Book import io.legado.app.databinding.ActivityImportBookBinding import io.legado.app.help.config.AppConfig import io.legado.app.lib.dialogs.alert import io.legado.app.lib.theme.primaryTextColor +import io.legado.app.ui.book.read.ReadBookActivity import io.legado.app.ui.document.HandleFileContract import io.legado.app.utils.applyTint +import io.legado.app.utils.startActivity import io.legado.app.utils.viewbindingdelegate.viewBinding + import kotlin.coroutines.resume import kotlin.coroutines.suspendCoroutine @@ -68,6 +72,14 @@ abstract class BaseImportBookActivity : VMBaseActivity { + putExtra("bookUrl", bookUrl) + } + } + private fun initSearchView() { searchView.applyTint(primaryTextColor) searchView.onActionViewExpanded() diff --git a/app/src/main/java/io/legado/app/ui/book/import/local/ImportBookAdapter.kt b/app/src/main/java/io/legado/app/ui/book/import/local/ImportBookAdapter.kt index 259716188..412d86a19 100644 --- a/app/src/main/java/io/legado/app/ui/book/import/local/ImportBookAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/book/import/local/ImportBookAdapter.kt @@ -16,7 +16,7 @@ class ImportBookAdapter(context: Context, val callBack: CallBack) : RecyclerAdapter(context) { val selectedUris = hashSetOf() var checkableCount = 0 - private val bookFileNames = arrayListOf() + private val bookNamesOnBookShelf = arrayListOf() override fun getViewBinding(parent: ViewGroup): ItemImportBookBinding { return ItemImportBookBinding.inflate(inflater, parent, false) @@ -41,7 +41,7 @@ class ImportBookAdapter(context: Context, val callBack: CallBack) : llBrief.gone() cbSelect.isChecked = false } else { - if (bookFileNames.contains(item.name)) { + if (bookNamesOnBookShelf.contains(item.name)) { ivIcon.setImageResource(R.drawable.ic_book_has) ivIcon.visible() cbSelect.invisible() @@ -67,7 +67,7 @@ class ImportBookAdapter(context: Context, val callBack: CallBack) : getItem(holder.layoutPosition)?.let { if (it.isDir) { callBack.nextDoc(it) - } else if (!bookFileNames.contains(it.name)) { + } else if (!bookNamesOnBookShelf.contains(it.name)) { if (!selectedUris.contains(it.toString())) { selectedUris.add(it.toString()) } else { @@ -75,6 +75,9 @@ class ImportBookAdapter(context: Context, val callBack: CallBack) : } notifyItemChanged(holder.layoutPosition, true) callBack.upCountView() + } else { + /* 点击开始阅读 */ + callBack.startRead(it.toString()) } } } @@ -82,10 +85,10 @@ class ImportBookAdapter(context: Context, val callBack: CallBack) : @SuppressLint("NotifyDataSetChanged") fun upBookHas(bookUrls: List) { - bookFileNames.clear() + bookNamesOnBookShelf.clear() bookUrls.forEach { val path = Uri.decode(it) - bookFileNames.add(FileUtils.getName(path)) + bookNamesOnBookShelf.add(FileUtils.getName(path)) } notifyDataSetChanged() upCheckableCount() @@ -94,7 +97,7 @@ class ImportBookAdapter(context: Context, val callBack: CallBack) : private fun upCheckableCount() { checkableCount = 0 getItems().forEach { - if (!it.isDir && !bookFileNames.contains(it.name)) { + if (!it.isDir && !bookNamesOnBookShelf.contains(it.name)) { checkableCount++ } } @@ -105,7 +108,7 @@ class ImportBookAdapter(context: Context, val callBack: CallBack) : fun selectAll(selectAll: Boolean) { if (selectAll) { getItems().forEach { - if (!it.isDir && !bookFileNames.contains(it.name)) { + if (!it.isDir && !bookNamesOnBookShelf.contains(it.name)) { selectedUris.add(it.toString()) } } @@ -118,7 +121,7 @@ class ImportBookAdapter(context: Context, val callBack: CallBack) : fun revertSelection() { getItems().forEach { - if (!it.isDir && !bookFileNames.contains(it.name)) { + if (!it.isDir && !bookNamesOnBookShelf.contains(it.name)) { if (selectedUris.contains(it.toString())) { selectedUris.remove(it.toString()) } else { @@ -141,6 +144,7 @@ class ImportBookAdapter(context: Context, val callBack: CallBack) : interface CallBack { fun nextDoc(fileDoc: FileDoc) fun upCountView() + fun startRead(bookUrl: String) } } \ No newline at end of file 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 328ecfb9d..f4c1d9dbe 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 @@ -149,12 +149,7 @@ class ImportBookViewModel(application: Application) : BaseViewModel(application) } if (docItem.isDir) { scanDoc(docItem, false, scope) - } else if (docItem.name.endsWith(".txt", true) - || docItem.name.endsWith(".epub", true) || docItem.name.endsWith( - ".pdf", - true - ) || docItem.name.endsWith(".umd", true) - ) { + } else if (docItem.name.matches(bookFileRegex)) { list.add(docItem) } } @@ -184,7 +179,7 @@ class ImportBookViewModel(application: Application) : BaseViewModel(application) fun addItems(fileDocs: List) fun clear() - + fun screen(key: String?) } 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 e4e071bdc..785e2db34 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,6 +7,8 @@ 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 import io.legado.app.utils.ConvertUtils @@ -84,6 +86,11 @@ class RemoteBookAdapter(context: Context, val callBack: CallBack) : } notifyItemChanged(holder.layoutPosition, true) callBack.upCountView() + } else { + /* 点击开始阅读 */ + appDb.bookDao.getBookByFileName(it.filename)?.let { + callBack.startRead(it) + } } } } @@ -140,5 +147,6 @@ class RemoteBookAdapter(context: Context, val callBack: CallBack) : interface CallBack { fun openDir(remoteBook: RemoteBook) fun upCountView() + fun startRead(book: Book) } } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/book/import/remote/RemoteBookViewModel.kt b/app/src/main/java/io/legado/app/ui/book/import/remote/RemoteBookViewModel.kt index 96417e2d1..dc7d6d69e 100644 --- a/app/src/main/java/io/legado/app/ui/book/import/remote/RemoteBookViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/import/remote/RemoteBookViewModel.kt @@ -57,7 +57,6 @@ class RemoteBookViewModel(application: Application) : BaseViewModel(application) trySend( list.filter { it.filename.contains(key) } ) - } } } @@ -159,7 +158,7 @@ class RemoteBookViewModel(application: Application) : BaseViewModel(application) fun addItems(remoteFiles: List) fun clear() - + fun screen(key: String?) } diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index f36f051b9..4343c31e6 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -1080,5 +1080,4 @@ 保留分组 服务器配置 Remote webDav url exists, Continue? - Add this book to Bookshelf first diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml index 231d1fd8d..b7885f90e 100644 --- a/app/src/main/res/values-ja-rJP/strings.xml +++ b/app/src/main/res/values-ja-rJP/strings.xml @@ -1083,5 +1083,4 @@ 保留分组 服务器配置 Remote webDav url exists, Continue? - Add this book to Bookshelf first diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 860700a3b..859049346 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -1083,5 +1083,4 @@ 保留分组 服务器配置 Remote webDav url exists, Continue? - Add this book to Bookshelf first diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index c54044683..902830842 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -1080,5 +1080,4 @@ 保留分组 服务器配置 远程webDav链接已存在,是否继续 - 先将书籍加入书架 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 334096671..d90258a84 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -1082,5 +1082,4 @@ 保留分组 服务器配置 远程webDav链接已存在,是否继续 - 先将书籍加入书架 diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index df5d48706..cc4582ccc 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -1082,5 +1082,4 @@ 保留分组 服务器配置 远程webDav链接已存在,是否继续 - 先将书籍加入书架 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 61dae9a73..c4440b8a2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1083,5 +1083,4 @@ Keep group 服务器配置 Remote webDav url exists, Continue? - Add this book to Bookshelf first From c835ff2c33987c836127f91a81029b0d2d21d9e3 Mon Sep 17 00:00:00 2001 From: Xwite <1797350009@qq.com> Date: Sun, 12 Mar 2023 10:14:39 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=B9=A6=E7=B1=8D=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E7=95=8C=E9=9D=A2=E7=82=B9=E5=87=BB=E5=B7=B2=E5=9C=A8=E4=B9=A6?= =?UTF-8?q?=E6=9E=B6=E7=9A=84=E5=BC=80=E5=A7=8B=E9=98=85=E8=AF=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/legado/app/ui/book/import/BaseImportBookActivity.kt | 5 +---- .../io/legado/app/ui/book/import/local/ImportBookActivity.kt | 2 ++ .../legado/app/ui/book/import/remote/RemoteBookActivity.kt | 4 ++++ 3 files changed, 7 insertions(+), 4 deletions(-) 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 6347bcf6f..0367f8631 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 @@ -5,7 +5,6 @@ import androidx.appcompat.widget.SearchView import androidx.lifecycle.ViewModel import io.legado.app.R import io.legado.app.base.VMBaseActivity -import io.legado.app.data.entities.Book import io.legado.app.databinding.ActivityImportBookBinding import io.legado.app.help.config.AppConfig import io.legado.app.lib.dialogs.alert @@ -72,9 +71,7 @@ abstract class BaseImportBookActivity : VMBaseActivity { putExtra("bookUrl", 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 9b2bc907c..cc7d305af 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 @@ -300,4 +300,6 @@ class ImportBookActivity : BaseImportBookActivity(), binding.selectActionBar.upCountView(adapter.selectedUris.size, adapter.checkableCount) } + override fun startRead(bookUrl: String) = startReadBook(bookUrl) + } 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 8c0e41415..2c98422b7 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,6 +9,7 @@ import androidx.activity.viewModels import androidx.core.view.isGone import androidx.recyclerview.widget.LinearLayoutManager import io.legado.app.R +import io.legado.app.data.entities.Book import io.legado.app.help.config.LocalConfig import io.legado.app.lib.theme.backgroundColor import io.legado.app.model.remote.RemoteBook @@ -195,4 +196,7 @@ class RemoteBookActivity : BaseImportBookActivity(), val mdText = String(assets.open("help/${fileName}.md").readBytes()) showDialogFragment(TextDialog(getString(R.string.help), mdText, TextDialog.Mode.MD)) } + + override fun startRead(book: Book) = startReadBook(book.bookUrl) + } \ No newline at end of file