@ -6,6 +6,7 @@ import android.os.Bundle
import android.view.Menu
import android.view.Menu
import android.view.MenuItem
import android.view.MenuItem
import android.view.ViewGroup
import android.view.ViewGroup
import androidx.appcompat.widget.SearchView
import io.legado.app.R
import io.legado.app.R
import io.legado.app.base.BaseActivity
import io.legado.app.base.BaseActivity
import io.legado.app.base.adapter.ItemViewHolder
import io.legado.app.base.adapter.ItemViewHolder
@ -16,10 +17,11 @@ import io.legado.app.databinding.ActivityReadRecordBinding
import io.legado.app.databinding.ItemReadRecordBinding
import io.legado.app.databinding.ItemReadRecordBinding
import io.legado.app.help.config.AppConfig
import io.legado.app.help.config.AppConfig
import io.legado.app.lib.dialogs.alert
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.book.read.ReadBookActivity
import io.legado.app.ui.book.search.SearchActivity
import io.legado.app.ui.book.search.SearchActivity
import io.legado.app.utils.applyTint
import io.legado.app.utils.cnCompare
import io.legado.app.utils.cnCompare
import io.legado.app.utils.gone
import io.legado.app.utils.startActivity
import io.legado.app.utils.startActivity
import io.legado.app.utils.viewbindingdelegate.viewBinding
import io.legado.app.utils.viewbindingdelegate.viewBinding
import kotlinx.coroutines.Dispatchers.IO
import kotlinx.coroutines.Dispatchers.IO
@ -30,11 +32,15 @@ class ReadRecordActivity : BaseActivity<ActivityReadRecordBinding>() {
private val adapter by lazy { RecordAdapter ( this ) }
private val adapter by lazy { RecordAdapter ( this ) }
private var sortMode = 0
private var sortMode = 0
private val searchView : SearchView by lazy {
binding . titleBar . findViewById ( R . id . search _view )
}
override val binding by viewBinding ( ActivityReadRecordBinding :: inflate )
override val binding by viewBinding ( ActivityReadRecordBinding :: inflate )
override fun onActivityCreated ( savedInstanceState : Bundle ? ) {
override fun onActivityCreated ( savedInstanceState : Bundle ? ) {
initView ( )
initView ( )
initAllTime ( )
initData ( )
initData ( )
}
}
@ -72,13 +78,10 @@ class ReadRecordActivity : BaseActivity<ActivityReadRecordBinding>() {
return super . onCompatOptionsItemSelected ( item )
return super . onCompatOptionsItemSelected ( item )
}
}
private fun initView ( ) = binding . run {
private fun initView ( ) {
readRecord . tvBookName . setText ( R . string . all _read _time )
initSearchView ( )
readRecord . tvLastReadTimeTag . gone ( )
binding . tvBookName . setText ( R . string . all _read _time )
readRecord . tvLastReadTimeTag . gone ( )
binding . tvRemove . setOnClickListener {
readRecord . tvLastReadTime . gone ( )
recyclerView . adapter = adapter
readRecord . tvRemove . setOnClickListener {
alert ( R . string . delete , R . string . sure _del ) {
alert ( R . string . delete , R . string . sure _del ) {
yesButton {
yesButton {
appDb . readRecordDao . clear ( )
appDb . readRecordDao . clear ( )
@ -87,16 +90,41 @@ class ReadRecordActivity : BaseActivity<ActivityReadRecordBinding>() {
noButton ( )
noButton ( )
}
}
}
}
binding . recyclerView . adapter = adapter
}
private fun initSearchView ( ) {
searchView . applyTint ( primaryTextColor )
searchView . onActionViewExpanded ( )
searchView . isSubmitButtonEnabled = true
searchView . queryHint = getString ( R . string . search )
searchView . clearFocus ( )
searchView . setOnQueryTextListener ( object : SearchView . OnQueryTextListener {
override fun onQueryTextSubmit ( query : String ) : Boolean {
searchView . clearFocus ( )
return false
}
override fun onQueryTextChange ( newText : String ? ) : Boolean {
initData ( newText )
return false
}
} )
}
}
private fun initData ( ) {
private fun initAllTime ( ) {
launch {
launch {
val allTime = withContext ( IO ) {
val allTime = withContext ( IO ) {
appDb . readRecordDao . allTime
appDb . readRecordDao . allTime
}
}
binding . readRecord . tvReadingTime . text = formatDuring ( allTime )
binding . tvReadingTime . text = formatDuring ( allTime )
}
}
private fun initData ( searchKey : String ? = null ) {
launch {
val readRecords = withContext ( IO ) {
val readRecords = withContext ( IO ) {
appDb . readRecordDao . allShow . let { records ->
appDb . readRecordDao . search ( searchKey ?: " " ) . let { records ->
when ( sortMode ) {
when ( sortMode ) {
1 -> records . sortedByDescending { it . readTime }
1 -> records . sortedByDescending { it . readTime }
2 -> records . sortedByDescending { it . lastRead }
2 -> records . sortedByDescending { it . lastRead }