From 761570091ab4c1bc1cf2a2bde1856ec6dbb6a8b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A2=E6=84=8F=E5=B8=86?= <1657098617@qq.com> Date: Sun, 3 Jul 2022 00:11:02 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20webdav=E4=B9=A6=E7=B1=8D=E6=8E=92?= =?UTF-8?q?=E5=BA=8F=E9=80=89=E9=A1=B9=E7=9A=84=E9=85=8D=E7=BD=AE=EF=BC=8C?= =?UTF-8?q?=E4=BB=A5=E5=8F=8A=E4=BA=8B=E4=BB=B6=E7=9B=91=E5=90=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/ui/book/remote/RemoteBookActivity.kt | 28 ++++++++++++++- .../main/res/drawable/ic_baseline_sort_24.xml | 5 +++ app/src/main/res/menu/book_remote.xml | 34 ++++++++++++++++++- 3 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 app/src/main/res/drawable/ic_baseline_sort_24.xml diff --git a/app/src/main/java/io/legado/app/ui/book/remote/RemoteBookActivity.kt b/app/src/main/java/io/legado/app/ui/book/remote/RemoteBookActivity.kt index 74413c57f..3b1ab5e53 100644 --- a/app/src/main/java/io/legado/app/ui/book/remote/RemoteBookActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/remote/RemoteBookActivity.kt @@ -3,6 +3,7 @@ package io.legado.app.ui.book.remote import android.os.Bundle import android.view.Menu import android.view.MenuItem +import android.view.SubMenu import androidx.activity.viewModels import androidx.core.view.isGone import androidx.recyclerview.widget.LinearLayoutManager @@ -12,9 +13,11 @@ import io.legado.app.databinding.ActivityImportBookBinding import io.legado.app.lib.theme.backgroundColor import io.legado.app.ui.about.AppLogDialog import io.legado.app.ui.book.remote.manager.RemoteBookWebDav +import io.legado.app.ui.book.source.manage.BookSourceActivity import io.legado.app.ui.widget.SelectActionBar import io.legado.app.ui.widget.dialog.WaitDialog import io.legado.app.utils.showDialogFragment +import io.legado.app.utils.toastOnUi import io.legado.app.utils.viewbindingdelegate.viewBinding import kotlinx.coroutines.flow.conflate import kotlinx.coroutines.launch @@ -32,7 +35,7 @@ class RemoteBookActivity : VMBaseActivity() private val adapter by lazy { RemoteBookAdapter(this, this) } private val waitDialog by lazy { WaitDialog(this) } - + private var groupMenu: SubMenu? = null override fun onActivityCreated(savedInstanceState: Bundle?) { binding.titleBar.setTitle(R.string.remote_book) initView() @@ -75,10 +78,33 @@ class RemoteBookActivity : VMBaseActivity upPath() R.id.menu_log -> showDialogFragment() + R.id.menu_sort_auto -> { + item.isChecked = true + toastOnUi("menu_sort_auto") + //sortCheck(BookSourceActivity.Sort.Weight) + //upBookSource(searchView.query?.toString()) + } + R.id.menu_sort_name -> { + item.isChecked = true + toastOnUi("menu_sort_name") + //sortCheck(BookSourceActivity.Sort.Name) + //upBookSource(searchView.query?.toString()) + } + R.id.menu_sort_time -> { + item.isChecked = true + toastOnUi("menu_sort_time") + //sortCheck(BookSourceActivity.Sort.Update) + //upBookSource(searchView.query?.toString()) + } } return super.onCompatOptionsItemSelected(item) } + override fun onPrepareOptionsMenu(menu: Menu): Boolean { + groupMenu = menu.findItem(R.id.menu_sort)?.subMenu + groupMenu?.setGroupCheckable(R.id.menu_group_sort, true, true) + return super.onPrepareOptionsMenu(menu) + } override fun revertSelection() { adapter.revertSelection() } diff --git a/app/src/main/res/drawable/ic_baseline_sort_24.xml b/app/src/main/res/drawable/ic_baseline_sort_24.xml new file mode 100644 index 000000000..3b184191d --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_sort_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/menu/book_remote.xml b/app/src/main/res/menu/book_remote.xml index 59f5ccd42..6a9c29b0c 100644 --- a/app/src/main/res/menu/book_remote.xml +++ b/app/src/main/res/menu/book_remote.xml @@ -9,11 +9,43 @@ android:icon="@drawable/ic_refresh_black_24dp" android:title="@string/refresh" app:showAsAction="always" /> + + + + + + + + + + + + + + + + \ No newline at end of file From d9e640b86b24c86da714539e12d0d12a9f0366b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A2=E6=84=8F=E5=B8=86?= <1657098617@qq.com> Date: Sun, 3 Jul 2022 15:26:21 +0800 Subject: [PATCH 2/3] =?UTF-8?q?feat:=20webdav=E4=B9=A6=E7=B1=8D=E6=8E=92?= =?UTF-8?q?=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加 按更新时间排序,按文件名排序的选项。 默认排序规则为按文件更新时间倒序排列 --- .../app/ui/book/remote/RemoteBookActivity.kt | 77 ++++++++++++++++--- app/src/main/res/menu/book_remote.xml | 7 +- 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 + 9 files changed, 79 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/book/remote/RemoteBookActivity.kt b/app/src/main/java/io/legado/app/ui/book/remote/RemoteBookActivity.kt index 3b1ab5e53..0dd6ac2ee 100644 --- a/app/src/main/java/io/legado/app/ui/book/remote/RemoteBookActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/remote/RemoteBookActivity.kt @@ -16,12 +16,16 @@ import io.legado.app.ui.book.remote.manager.RemoteBookWebDav import io.legado.app.ui.book.source.manage.BookSourceActivity import io.legado.app.ui.widget.SelectActionBar import io.legado.app.ui.widget.dialog.WaitDialog +import io.legado.app.utils.cnCompare import io.legado.app.utils.showDialogFragment import io.legado.app.utils.toastOnUi import io.legado.app.utils.viewbindingdelegate.viewBinding +import kotlinx.coroutines.delay import kotlinx.coroutines.flow.conflate +import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch import java.io.File +import java.util.ArrayList /** * 展示远程书籍 @@ -36,6 +40,8 @@ class RemoteBookActivity : VMBaseActivity + viewModel.dataFlow.conflate().map { remoteBooks -> + + val dirList = ArrayList() + val bookList = ArrayList() + + remoteBooks.forEach { + if (it.isDir) + dirList.add(it) + else + bookList.add(it) + } + //默认情况下,为按修改时间倒序显示 + if (sortAscending) when (sortKey) { + Sort.Name -> { + dirList.sortedBy { it.filename } + + bookList.sortedBy { it.filename } + } + Sort.UpdateTime -> { + dirList.sortedBy { it.lastModify } + + bookList.sortedBy { it.lastModify } + } + else -> dirList + bookList + } + else when (sortKey) { + + Sort.Name -> { + dirList.sortedByDescending { it.filename } + + bookList.sortedByDescending { it.filename } + } + Sort.UpdateTime -> { + dirList.sortedByDescending { it.lastModify } + + bookList.sortedByDescending { it.lastModify } + } + //按修改时间倒序显示 + else -> { + dirList.sortedByDescending { it.lastModify } + + bookList.sortedByDescending { it.lastModify } + } + } + + }.conflate().collect { sortedRemoteBooks -> binding.refreshProgressBar.isAutoLoading = false - binding.tvEmptyMsg.isGone = remoteBooks.isNotEmpty() - adapter.setItems(remoteBooks) + binding.tvEmptyMsg.isGone = sortedRemoteBooks.isNotEmpty() + adapter.setItems(sortedRemoteBooks) + delay(500) } } upPath() @@ -81,20 +136,20 @@ class RemoteBookActivity : VMBaseActivity { item.isChecked = true toastOnUi("menu_sort_auto") - //sortCheck(BookSourceActivity.Sort.Weight) - //upBookSource(searchView.query?.toString()) + sortCheck(Sort.Default) + upPath() } R.id.menu_sort_name -> { item.isChecked = true toastOnUi("menu_sort_name") - //sortCheck(BookSourceActivity.Sort.Name) - //upBookSource(searchView.query?.toString()) + sortCheck(Sort.Name) + upPath() } R.id.menu_sort_time -> { item.isChecked = true toastOnUi("menu_sort_time") - //sortCheck(BookSourceActivity.Sort.Update) - //upBookSource(searchView.query?.toString()) + sortCheck(Sort.UpdateTime) + upPath() } } return super.onCompatOptionsItemSelected(item) @@ -165,4 +220,8 @@ class RemoteBookActivity : VMBaseActivity @@ -21,9 +21,10 @@ android:checkableBehavior="single"> + android:checked="true" + android:title="@string/sort_default" /> Orden ascendente/descendente Ordenar Ordenar automáticamente + Ordenar por defecto Ordenar manualmente Ordenar por nombre Ir al principio diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml index 4b808acec..885d1ded5 100644 --- a/app/src/main/res/values-ja-rJP/strings.xml +++ b/app/src/main/res/values-ja-rJP/strings.xml @@ -351,6 +351,7 @@ Ascending/Descending order Sort Sort automatically + Sort default Sort manually Sort by name Scroll to the top diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index ce063bdc8..9256586f3 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -349,6 +349,7 @@ Ordem ascendente/descendente Ordenar Ordenar automaticamente + Ordenar por defecto Ordenar manualmente Ordenar por nome Vá ao topo diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index e766a58d6..5e8d2bf0a 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -348,6 +348,7 @@ 倒序-順序 排序 智能排序 + 默認排序 手動排序 名稱排序 滾動到頂部 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index cede2c668..0324be41a 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -350,6 +350,7 @@ 倒序-順序 排序 智慧排序 + 默認排序 手動排序 名稱排序 滾動到頂部 diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index df1d97d84..a35c642c2 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -351,6 +351,7 @@ 排序 智能排序 手动排序 + 默认排序 名称排序 滚动到顶部 滚动到底部 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b245e0419..aed09cb39 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -352,6 +352,7 @@ Sort Sort automatically Sort manually + Sort default Sort by name Scroll to the top Scroll to the bottom From 8ae46da969ae4984922c34564374fd8905cf4f5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A2=E6=84=8F=E5=B8=86?= <1657098617@qq.com> Date: Sun, 3 Jul 2022 20:59:29 +0800 Subject: [PATCH 3/3] =?UTF-8?q?feat:=20=E6=9B=B4=E8=AF=A6=E7=BB=86?= =?UTF-8?q?=E7=9A=84=E6=A8=AA=E7=AB=96=E5=B1=8F=E5=8D=95=E5=8F=8C=E9=A1=B5?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/legado/app/help/config/AppConfig.kt | 4 ++-- .../ui/book/read/page/provider/ChapterProvider.kt | 12 +++++++++--- app/src/main/res/values-zh/arrays.xml | 6 ++++++ app/src/main/res/values/array_values.xml | 6 ++++++ app/src/main/res/values/arrays.xml | 6 ++++++ app/src/main/res/xml/pref_config_read.xml | 9 ++++++--- 6 files changed, 35 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/io/legado/app/help/config/AppConfig.kt b/app/src/main/java/io/legado/app/help/config/AppConfig.kt index 8fa01999a..8be6ccd4f 100644 --- a/app/src/main/java/io/legado/app/help/config/AppConfig.kt +++ b/app/src/main/java/io/legado/app/help/config/AppConfig.kt @@ -312,8 +312,8 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener { val loadCoverOnlyWifi = appCtx.getPrefBoolean(PreferKey.loadCoverOnlyWifi, false) - val doublePageHorizontal: Boolean - get() = appCtx.getPrefBoolean(PreferKey.doublePageHorizontal, true) + val doublePageHorizontal: String? + get() = appCtx.getPrefString(PreferKey.doublePageHorizontal) var searchGroup: String get() = appCtx.getPrefString("searchGroup") ?: "" diff --git a/app/src/main/java/io/legado/app/ui/book/read/page/provider/ChapterProvider.kt b/app/src/main/java/io/legado/app/ui/book/read/page/provider/ChapterProvider.kt index be8eb28b1..5ae48f727 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/page/provider/ChapterProvider.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/page/provider/ChapterProvider.kt @@ -612,9 +612,15 @@ object ChapterProvider { * 更新绘制尺寸 */ fun upLayout() { - doublePage = (viewWidth > viewHeight || appCtx.isPad) - && ReadBook.pageAnim() != 3 - && AppConfig.doublePageHorizontal + when(AppConfig.doublePageHorizontal){ + "0" -> doublePage = false + "1" -> doublePage = true + "2" -> { + doublePage = (viewWidth > viewHeight) + && ReadBook.pageAnim() != 3 + } + } + if (viewWidth > 0 && viewHeight > 0) { paddingLeft = ReadBookConfig.paddingLeft.dpToPx() paddingTop = ReadBookConfig.paddingTop.dpToPx() diff --git a/app/src/main/res/values-zh/arrays.xml b/app/src/main/res/values-zh/arrays.xml index d44eceafb..f88cb19ae 100644 --- a/app/src/main/res/values-zh/arrays.xml +++ b/app/src/main/res/values-zh/arrays.xml @@ -25,6 +25,12 @@ E-Ink(墨水屏) + + 全局单页 + 全局双页 + 横屏双页/竖屏单页 + + 自动 黑色 diff --git a/app/src/main/res/values/array_values.xml b/app/src/main/res/values/array_values.xml index 3793a651c..fe4cf386d 100644 --- a/app/src/main/res/values/array_values.xml +++ b/app/src/main/res/values/array_values.xml @@ -33,6 +33,12 @@ 3 + + 0 + 1 + 2 + + auto zh diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 47dd6b09a..d5202d585 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -61,6 +61,12 @@ @string/screen_sensor + + 全局单页 + 全局双页 + 横屏双页 竖屏单页 + + iconMain icon1 diff --git a/app/src/main/res/xml/pref_config_read.xml b/app/src/main/res/xml/pref_config_read.xml index aeb572e58..db6e8f6ed 100644 --- a/app/src/main/res/xml/pref_config_read.xml +++ b/app/src/main/res/xml/pref_config_read.xml @@ -41,13 +41,16 @@ app:iconSpaceReserved="false" app:isBottomBackground="true" /> - +