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/java/io/legado/app/ui/book/remote/RemoteBookActivity.kt b/app/src/main/java/io/legado/app/ui/book/remote/RemoteBookActivity.kt index 74413c57f..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 @@ -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,13 +13,19 @@ 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.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 /** * 展示远程书籍 @@ -32,7 +39,9 @@ class RemoteBookActivity : VMBaseActivity() private val adapter by lazy { RemoteBookAdapter(this, this) } private val waitDialog by lazy { WaitDialog(this) } - + private var groupMenu: SubMenu? = null + private var sortKey = Sort.Default + private var sortAscending = false override fun onActivityCreated(savedInstanceState: Bundle?) { binding.titleBar.setTitle(R.string.remote_book) initView() @@ -48,13 +57,62 @@ 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() @@ -75,10 +133,33 @@ class RemoteBookActivity : VMBaseActivity upPath() R.id.menu_log -> showDialogFragment() + R.id.menu_sort_auto -> { + item.isChecked = true + toastOnUi("menu_sort_auto") + sortCheck(Sort.Default) + upPath() + } + R.id.menu_sort_name -> { + item.isChecked = true + toastOnUi("menu_sort_name") + sortCheck(Sort.Name) + upPath() + } + R.id.menu_sort_time -> { + item.isChecked = true + toastOnUi("menu_sort_time") + sortCheck(Sort.UpdateTime) + upPath() + } } 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() } @@ -139,4 +220,8 @@ class RemoteBookActivity : VMBaseActivity + + diff --git a/app/src/main/res/menu/book_remote.xml b/app/src/main/res/menu/book_remote.xml index 59f5ccd42..d291d3f23 100644 --- a/app/src/main/res/menu/book_remote.xml +++ b/app/src/main/res/menu/book_remote.xml @@ -9,11 +9,44 @@ android:icon="@drawable/ic_refresh_black_24dp" android:title="@string/refresh" app:showAsAction="always" /> + + + + + + + + + + + + + + + + \ 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 26fe3f5bc..dff79f2ce 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -347,6 +347,7 @@ 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/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-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/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/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 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" /> - +