书架刷新设置 #128
This commit is contained in:
10 files changed
+84
-35
No files matched your search
@@ -206,4 +206,5 @@ object PreferKey {
|
|||||||
const val labelVisibilityMode = "labelVisibilityMode"
|
const val labelVisibilityMode = "labelVisibilityMode"
|
||||||
const val menuAlpha = "menuAlpha"
|
const val menuAlpha = "menuAlpha"
|
||||||
const val colorImage = "colorImage"
|
const val colorImage = "colorImage"
|
||||||
|
const val bookshelfRefreshingLimit = "bookshelfRefreshingLimit"
|
||||||
}
|
}
|
||||||
@@ -831,5 +831,11 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
|||||||
set(value) {
|
set(value) {
|
||||||
appCtx.putPrefString(PreferKey.readSliderMode, value)
|
appCtx.putPrefString(PreferKey.readSliderMode, value)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var bookshelfRefreshingLimit: Int
|
||||||
|
get() = appCtx.getPrefInt(PreferKey.bookshelfRefreshingLimit, 0)
|
||||||
|
set(value) {
|
||||||
|
appCtx.putPrefInt(PreferKey.bookshelfRefreshingLimit, value)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -11,6 +11,7 @@ import io.legato.kazusa.constant.EventBus
|
|||||||
import io.legato.kazusa.databinding.DialogBookshelfConfigBinding
|
import io.legato.kazusa.databinding.DialogBookshelfConfigBinding
|
||||||
import io.legato.kazusa.help.config.AppConfig
|
import io.legato.kazusa.help.config.AppConfig
|
||||||
import io.legato.kazusa.ui.main.MainViewModel
|
import io.legato.kazusa.ui.main.MainViewModel
|
||||||
|
import io.legato.kazusa.ui.widget.number.NumberPickerDialog
|
||||||
import io.legato.kazusa.utils.bookshelfLayoutGrid
|
import io.legato.kazusa.utils.bookshelfLayoutGrid
|
||||||
import io.legato.kazusa.utils.postEvent
|
import io.legato.kazusa.utils.postEvent
|
||||||
import io.legato.kazusa.utils.viewbindingdelegate.viewBinding
|
import io.legato.kazusa.utils.viewbindingdelegate.viewBinding
|
||||||
@@ -38,7 +39,6 @@ class BookshelfConfigBottomSheet : BaseBottomSheetDialogFragment(R.layout.dialog
|
|||||||
|
|
||||||
val columnCount = requireContext().bookshelfLayoutGrid.takeIf { it > 0 } ?: 1
|
val columnCount = requireContext().bookshelfLayoutGrid.takeIf { it > 0 } ?: 1
|
||||||
|
|
||||||
|
|
||||||
val bookshelfSort = AppConfig.bookshelfSort
|
val bookshelfSort = AppConfig.bookshelfSort
|
||||||
|
|
||||||
binding.apply {
|
binding.apply {
|
||||||
@@ -79,8 +79,22 @@ class BookshelfConfigBottomSheet : BaseBottomSheetDialogFragment(R.layout.dialog
|
|||||||
chipGrid.isChecked = isGrid
|
chipGrid.isChecked = isGrid
|
||||||
chipGridCompact.isChecked = isGridCompact
|
chipGridCompact.isChecked = isGridCompact
|
||||||
chipGridCover.isChecked = isGridCover
|
chipGridCover.isChecked = isGridCover
|
||||||
sliderGridCount.value = columnCount.toFloat()
|
sliderGridCount.progress = columnCount
|
||||||
|
|
||||||
|
binding.tvValue.text = if (AppConfig.bookshelfRefreshingLimit <= 0) "无限制"
|
||||||
|
else "${AppConfig.bookshelfRefreshingLimit} 本"
|
||||||
|
|
||||||
|
binding.layoutRefreshLimit.setOnClickListener {
|
||||||
|
NumberPickerDialog(requireContext())
|
||||||
|
.setTitle("书架更新数量限制")
|
||||||
|
.setMinValue(0) // 0 表示无限制
|
||||||
|
.setMaxValue(500) // 可根据需求设定最大值
|
||||||
|
.setValue(AppConfig.bookshelfRefreshingLimit)
|
||||||
|
.show { selected ->
|
||||||
|
AppConfig.bookshelfRefreshingLimit = selected
|
||||||
|
tvValue.text = if (selected <= 0) "无限制" else "$selected 本"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
when (AppConfig.bookshelfSortOrder) {
|
when (AppConfig.bookshelfSortOrder) {
|
||||||
0 -> binding.chipGroupOrder.check(binding.chipAsc.id)
|
0 -> binding.chipGroupOrder.check(binding.chipAsc.id)
|
||||||
@@ -120,7 +134,7 @@ class BookshelfConfigBottomSheet : BaseBottomSheetDialogFragment(R.layout.dialog
|
|||||||
(requireParentFragment() as? BaseBookshelfFragment)?.upSort()
|
(requireParentFragment() as? BaseBookshelfFragment)?.upSort()
|
||||||
}
|
}
|
||||||
|
|
||||||
val selectedColumn = sliderGridCount.value.toInt()
|
val selectedColumn = sliderGridCount.progress
|
||||||
val newLayout = when {
|
val newLayout = when {
|
||||||
chipList.isChecked -> 0
|
chipList.isChecked -> 0
|
||||||
chipGrid.isChecked -> 1
|
chipGrid.isChecked -> 1
|
||||||
|
|||||||
@@ -129,8 +129,14 @@ class BooksFragment() : BaseFragment(R.layout.fragment_books),
|
|||||||
upFastScrollerBar()
|
upFastScrollerBar()
|
||||||
//binding.refreshLayout.setColorSchemeColors(accentColor)
|
//binding.refreshLayout.setColorSchemeColors(accentColor)
|
||||||
binding.refreshLayout.setOnRefreshListener {
|
binding.refreshLayout.setOnRefreshListener {
|
||||||
|
val books = booksAdapter.getItems()
|
||||||
|
val refreshList = if (AppConfig.bookshelfRefreshingLimit > 0) {
|
||||||
|
books.take(AppConfig.bookshelfRefreshingLimit)
|
||||||
|
} else {
|
||||||
|
books
|
||||||
|
}
|
||||||
binding.refreshLayout.isRefreshing = false
|
binding.refreshLayout.isRefreshing = false
|
||||||
activityViewModel.upToc(booksAdapter.getItems())
|
activityViewModel.upToc(refreshList)
|
||||||
}
|
}
|
||||||
binding.rvBookshelf.layoutManager = GridLayoutManager(context, bookshelfLayoutGrid)
|
binding.rvBookshelf.layoutManager = GridLayoutManager(context, bookshelfLayoutGrid)
|
||||||
binding.rvBookshelf.setRecycledViewPool(activityViewModel.booksGridRecycledViewPool)
|
binding.rvBookshelf.setRecycledViewPool(activityViewModel.booksGridRecycledViewPool)
|
||||||
|
|||||||
@@ -121,10 +121,21 @@ class BookshelfFragment2() : BaseBookshelfFragment(R.layout.fragment_bookshelf2)
|
|||||||
initBooksData()
|
initBooksData()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Suppress("UNCHECKED_CAST")
|
||||||
|
fun BaseBooksAdapter<*>.getBookItems(): List<Book> {
|
||||||
|
return getItems() as List<Book>
|
||||||
|
}
|
||||||
|
|
||||||
private fun initRecyclerView() {
|
private fun initRecyclerView() {
|
||||||
binding.refreshLayout.setOnRefreshListener {
|
binding.refreshLayout.setOnRefreshListener {
|
||||||
|
val books = booksAdapter.getBookItems()
|
||||||
|
val refreshList = if (AppConfig.bookshelfRefreshingLimit > 0) {
|
||||||
|
books.take(AppConfig.bookshelfRefreshingLimit)
|
||||||
|
} else {
|
||||||
|
books
|
||||||
|
}
|
||||||
binding.refreshLayout.isRefreshing = false
|
binding.refreshLayout.isRefreshing = false
|
||||||
activityViewModel.upToc(books)
|
activityViewModel.upToc(refreshList)
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.rvBookshelf.layoutManager = GridLayoutManager(context, bookshelfLayoutGrid)
|
binding.rvBookshelf.layoutManager = GridLayoutManager(context, bookshelfLayoutGrid)
|
||||||
|
|||||||
@@ -61,6 +61,7 @@ class DetailSeekBar @JvmOverloads constructor(
|
|||||||
TooltipCompat.setTooltipText(this, title)
|
TooltipCompat.setTooltipText(this, title)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
binding.slider.valueFrom = typedArray.getInteger(R.styleable.DetailSeekBar_min, 0).toFloat()
|
||||||
binding.slider.valueTo = typedArray.getInteger(R.styleable.DetailSeekBar_max, 0).toFloat()
|
binding.slider.valueTo = typedArray.getInteger(R.styleable.DetailSeekBar_max, 0).toFloat()
|
||||||
typedArray.recycle()
|
typedArray.recycle()
|
||||||
|
|
||||||
|
|||||||
@@ -47,30 +47,48 @@
|
|||||||
android:id="@+id/sw_show_unread"
|
android:id="@+id/sw_show_unread"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/show_unread"
|
android:text="@string/show_unread" />
|
||||||
tools:ignore="TouchTargetSizeCheck" />
|
|
||||||
|
|
||||||
<com.google.android.material.materialswitch.MaterialSwitch
|
<com.google.android.material.materialswitch.MaterialSwitch
|
||||||
android:id="@+id/sw_show_last_update_time"
|
android:id="@+id/sw_show_last_update_time"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/show_last_update_time"
|
android:text="@string/show_last_update_time" />
|
||||||
tools:ignore="TouchTargetSizeCheck" />
|
|
||||||
|
|
||||||
<com.google.android.material.materialswitch.MaterialSwitch
|
<com.google.android.material.materialswitch.MaterialSwitch
|
||||||
android:id="@+id/sw_show_wait_up_books"
|
android:id="@+id/sw_show_wait_up_books"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/show_wait_up_count"
|
android:text="@string/show_wait_up_count" />
|
||||||
tools:ignore="TouchTargetSizeCheck" />
|
|
||||||
|
|
||||||
<com.google.android.material.materialswitch.MaterialSwitch
|
<com.google.android.material.materialswitch.MaterialSwitch
|
||||||
android:id="@+id/sw_show_bookshelf_fast_scroller"
|
android:id="@+id/sw_show_bookshelf_fast_scroller"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/show_bookshelf_fast_scroller"
|
android:text="@string/show_bookshelf_fast_scroller" />
|
||||||
tools:ignore="TouchTargetSizeCheck" />
|
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/layout_refresh_limit"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingHorizontal="2dp"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:clickable="true"
|
||||||
|
android:background="?attr/selectableItemBackground">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_title"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:paddingVertical="16dp"
|
||||||
|
android:text="@string/bookshelf_update_limit" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_value"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"/>
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@@ -142,24 +160,14 @@
|
|||||||
android:text="@string/cover_grid" />
|
android:text="@string/cover_grid" />
|
||||||
</com.google.android.material.chip.ChipGroup>
|
</com.google.android.material.chip.ChipGroup>
|
||||||
|
|
||||||
<TextView
|
<io.legato.kazusa.ui.widget.DetailSeekBar
|
||||||
android:id="@+id/slider_text"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:paddingTop="8dp"
|
|
||||||
android:text="@string/number_rows_columns"
|
|
||||||
android:textSize="14sp"
|
|
||||||
android:textStyle="bold" />
|
|
||||||
|
|
||||||
<com.google.android.material.slider.Slider
|
|
||||||
android:id="@+id/slider_grid_count"
|
android:id="@+id/slider_grid_count"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:paddingVertical="8dp"
|
app:title="@string/number_rows_columns"
|
||||||
android:stepSize="1"
|
android:stepSize="1"
|
||||||
android:value="3"
|
app:max="9"
|
||||||
android:valueFrom="1"
|
app:min="1"/>
|
||||||
android:valueTo="9" />
|
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@@ -188,17 +196,20 @@
|
|||||||
|
|
||||||
<com.google.android.material.chip.Chip
|
<com.google.android.material.chip.Chip
|
||||||
android:id="@+id/chip_asc"
|
android:id="@+id/chip_asc"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="34dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:checkable="true"
|
android:checkable="true"
|
||||||
android:text="@string/ascending_order" />
|
android:clickable="true"
|
||||||
|
app:chipIcon="@drawable/ic_arrow_up" />
|
||||||
|
|
||||||
<com.google.android.material.chip.Chip
|
<com.google.android.material.chip.Chip
|
||||||
android:id="@+id/chip_desc"
|
android:id="@+id/chip_desc"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="34dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:checkable="true"
|
android:checkable="true"
|
||||||
android:text="@string/descending_order" />
|
android:clickable="true"
|
||||||
|
app:chipIcon="@drawable/ic_arrow_down" />
|
||||||
|
|
||||||
</com.google.android.material.chip.ChipGroup>
|
</com.google.android.material.chip.ChipGroup>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,6 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_marginVertical="8dp"
|
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
@@ -12,9 +11,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
|
android:paddingVertical="4dp">
|
||||||
android:paddingTop="8dp"
|
|
||||||
android:paddingBottom="4dp">
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/tv_seek_title"
|
android:id="@+id/tv_seek_title"
|
||||||
|
|||||||
@@ -1304,4 +1304,5 @@
|
|||||||
<string name="manga_long_click">长按保存图片</string>
|
<string name="manga_long_click">长按保存图片</string>
|
||||||
<string name="read_type_long">长按设置为全局默认模式</string>
|
<string name="read_type_long">长按设置为全局默认模式</string>
|
||||||
<string name="read_slider_mode">滑动条显示样式</string>
|
<string name="read_slider_mode">滑动条显示样式</string>
|
||||||
|
<string name="bookshelf_update_limit">书架更新数量限制</string>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -1305,4 +1305,5 @@
|
|||||||
<string name="manga_long_click">长按保存图片</string>
|
<string name="manga_long_click">长按保存图片</string>
|
||||||
<string name="read_type_long">长按设置为全局默认模式</string>
|
<string name="read_type_long">长按设置为全局默认模式</string>
|
||||||
<string name="read_slider_mode">滑动条显示样式</string>
|
<string name="read_slider_mode">滑动条显示样式</string>
|
||||||
|
<string name="bookshelf_update_limit">书架更新数量限制</string>
|
||||||
</resources>
|
</resources>
|
||||||
Reference in new issue
Block a user