diff --git a/app/src/main/java/io/legado/app/data/dao/ReadRecordDao.kt b/app/src/main/java/io/legado/app/data/dao/ReadRecordDao.kt index 7aaaf916e..4deda1386 100644 --- a/app/src/main/java/io/legado/app/data/dao/ReadRecordDao.kt +++ b/app/src/main/java/io/legado/app/data/dao/ReadRecordDao.kt @@ -10,7 +10,7 @@ interface ReadRecordDao { @get:Query("select * from readRecord") val all: List - @get:Query("select bookName, sum(readTime) as readTime from readRecord group by bookName order by bookName collate localized") + @get:Query("select bookName, sum(readTime) as readTime, max(lastRead) as lastRead from readRecord group by bookName order by bookName collate localized") val allShow: List @get:Query("select sum(readTime) from readRecord") diff --git a/app/src/main/java/io/legado/app/data/entities/ReadRecordShow.kt b/app/src/main/java/io/legado/app/data/entities/ReadRecordShow.kt index 79795b0d9..293270276 100644 --- a/app/src/main/java/io/legado/app/data/entities/ReadRecordShow.kt +++ b/app/src/main/java/io/legado/app/data/entities/ReadRecordShow.kt @@ -1,6 +1,7 @@ package io.legado.app.data.entities data class ReadRecordShow( - var bookName: String = "", - var readTime: Long = 0L + var bookName: String, + var readTime: Long, + var lastRead: Long ) \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/about/ReadRecordActivity.kt b/app/src/main/java/io/legado/app/ui/about/ReadRecordActivity.kt index 9a4c6433a..828491935 100644 --- a/app/src/main/java/io/legado/app/ui/about/ReadRecordActivity.kt +++ b/app/src/main/java/io/legado/app/ui/about/ReadRecordActivity.kt @@ -1,6 +1,7 @@ package io.legado.app.ui.about import android.content.Context +import android.icu.text.SimpleDateFormat import android.os.Bundle import android.view.Menu import android.view.MenuItem @@ -18,6 +19,7 @@ import io.legado.app.lib.dialogs.alert import io.legado.app.ui.book.read.ReadBookActivity import io.legado.app.ui.book.search.SearchActivity import io.legado.app.utils.cnCompare +import io.legado.app.utils.gone import io.legado.app.utils.startActivity import io.legado.app.utils.viewbindingdelegate.viewBinding import kotlinx.coroutines.Dispatchers.IO @@ -50,10 +52,17 @@ class ReadRecordActivity : BaseActivity() { when (item.itemId) { R.id.menu_sort_name -> { sortMode = 0 + item.isChecked = true initData() } - R.id.menu_sort_time -> { + R.id.menu_sort_read_long -> { sortMode = 1 + item.isChecked = true + initData() + } + R.id.menu_sort_read_time -> { + sortMode = 2 + item.isChecked = true initData() } R.id.menu_enable_record -> { @@ -65,6 +74,9 @@ class ReadRecordActivity : BaseActivity() { private fun initView() = binding.run { readRecord.tvBookName.setText(R.string.all_read_time) + readRecord.tvLastReadTimeTag.gone() + readRecord.tvLastReadTimeTag.gone() + readRecord.tvLastReadTime.gone() recyclerView.adapter = adapter readRecord.tvRemove.setOnClickListener { alert(R.string.delete, R.string.sure_del) { @@ -82,11 +94,12 @@ class ReadRecordActivity : BaseActivity() { val allTime = withContext(IO) { appDb.readRecordDao.allTime } - binding.readRecord.tvReadTime.text = formatDuring(allTime) + binding.readRecord.tvReadingTime.text = formatDuring(allTime) val readRecords = withContext(IO) { appDb.readRecordDao.allShow.let { records -> when (sortMode) { - 1 -> records.sortedBy { it.readTime } + 1 -> records.sortedByDescending { it.readTime } + 2 -> records.sortedByDescending { it.lastRead } else -> records.sortedWith { o1, o2 -> o1.bookName.cnCompare(o2.bookName) } @@ -100,6 +113,8 @@ class ReadRecordActivity : BaseActivity() { inner class RecordAdapter(context: Context) : RecyclerAdapter(context) { + private val dateFormat = SimpleDateFormat("yyyy-MM-dd") + override fun getViewBinding(parent: ViewGroup): ItemReadRecordBinding { return ItemReadRecordBinding.inflate(inflater, parent, false) } @@ -112,7 +127,8 @@ class ReadRecordActivity : BaseActivity() { ) { binding.apply { tvBookName.text = item.bookName - tvReadTime.text = formatDuring(item.readTime) + tvReadingTime.text = formatDuring(item.readTime) + tvLastReadTime.text = dateFormat.format(item.lastRead) } } diff --git a/app/src/main/res/layout/item_read_record.xml b/app/src/main/res/layout/item_read_record.xml index ef0f5c08c..b414d256d 100644 --- a/app/src/main/res/layout/item_read_record.xml +++ b/app/src/main/res/layout/item_read_record.xml @@ -21,16 +21,50 @@ tools:ignore="RtlHardcoded" /> + + + tools:text="readingTime" /> + + + + + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" /> \ No newline at end of file diff --git a/app/src/main/res/menu/book_read_record.xml b/app/src/main/res/menu/book_read_record.xml index 65c58abb3..38943ba89 100644 --- a/app/src/main/res/menu/book_read_record.xml +++ b/app/src/main/res/menu/book_read_record.xml @@ -1,21 +1,44 @@ + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools"> + android:id="@+id/menu_sort" + android:icon="@drawable/ic_baseline_sort_24" + android:title="@string/sort" + app:showAsAction="always" + tools:ignore="AlwaysShowAction"> - + + + + + + + + + + + + + + \ 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 dff79f2ce..745eeedba 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -999,4 +999,8 @@ Image url is empty, check replacement rules 变量说明(variableComment) 远程书籍 + 阅读时长排序 + 阅读时间排序 + 阅读时长: + 最后阅读时间: diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml index 885d1ded5..0b8f25f64 100644 --- a/app/src/main/res/values-ja-rJP/strings.xml +++ b/app/src/main/res/values-ja-rJP/strings.xml @@ -1002,4 +1002,8 @@ Image url is empty, check replacement rules 变量说明(variableComment) 远程书籍 + 阅读时长排序 + 阅读时间排序 + 阅读时长: + 最后阅读时间: diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 9256586f3..2330320d8 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -1002,4 +1002,8 @@ Image url is empty, check replacement rules 变量说明(variableComment) 远程书籍 + 阅读时长排序 + 阅读时间排序 + 阅读时长: + 最后阅读时间: diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 5e8d2bf0a..0f79c0a58 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -999,4 +999,8 @@ 图片链接为空,检查替换净化规则 变量说明(variableComment) 远程书籍 + 阅读时长排序 + 阅读时间排序 + 阅读时长: + 最后阅读时间: diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 0324be41a..23fbac7a8 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -1001,4 +1001,8 @@ 图片链接为空,检查替换净化规则 变量说明(variableComment) 远程书籍 + 阅读时长排序 + 阅读时间排序 + 阅读时长: + 最后阅读时间: diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index a35c642c2..2128c5fba 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -1001,4 +1001,8 @@ 图片链接为空,检查替换净化规则 变量说明(variableComment) 远程书籍 + 阅读时长排序 + 阅读时间排序 + 阅读时长: + 最后阅读时间: diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index aed09cb39..bde301b76 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1002,4 +1002,8 @@ Image url is empty, check replacement rules 变量说明(variableComment) 远程书籍 + 阅读时长排序 + 阅读时间排序 + 阅读时长: + 最后阅读时间: