新增删除rss阅读记录功能 (#4451)

* 新增删除rss阅读记录功能

* 优化
This commit is contained in:
niuhb
2024-12-21 18:22:10 +08:00
committed by GitHub
parent da54129a37
commit 70979de5d9
13 changed files with 48 additions and 27 deletions
@@ -41,5 +41,10 @@ interface RssArticleDao {
@Insert(onConflict = OnConflictStrategy.IGNORE)
fun insertRecord(vararg rssReadRecord: RssReadRecord)
@get:Query("select count(1) from rssReadRecords")
val countRead: Int
@Query("delete from rssReadRecords")
fun deleteRecord()
}
@@ -14,6 +14,7 @@ import io.legado.app.R
import io.legado.app.base.VMBaseActivity
import io.legado.app.databinding.ActivityRssArtivlesBinding
import io.legado.app.help.source.sortUrls
import io.legado.app.lib.dialogs.alert
import io.legado.app.lib.theme.accentColor
import io.legado.app.ui.login.SourceLoginActivity
import io.legado.app.ui.rss.source.edit.RssSourceEditActivity
@@ -90,6 +91,10 @@ class RssSortActivity : VMBaseActivity<ActivityRssArtivlesBinding, RssSortViewMo
viewModel.switchLayout()
upFragments()
}
R.id.menu_del_read_record -> {
delReadRecord()
}
}
return super.onCompatOptionsItemSelected(item)
}
@@ -109,6 +114,17 @@ class RssSortActivity : VMBaseActivity<ActivityRssArtivlesBinding, RssSortViewMo
}
}
private fun delReadRecord() {
alert(R.string.draw) {
val countRead = viewModel.countRead()
setMessage(getString(R.string.sure_del) + "\n" + countRead + " " + getString(R.string.read_record))
noButton()
yesButton(){
viewModel.delReadRecord()
}
}
}
private fun setSourceVariable() {
lifecycleScope.launch {
val source = viewModel.rssSource
@@ -72,4 +72,14 @@ class RssSortViewModel(application: Application) : BaseViewModel(application) {
}
}
fun countRead() : Int{
return appDb.rssArticleDao.countRead
}
fun delReadRecord() {
execute {
appDb.rssArticleDao.deleteRecord()
}
}
}
@@ -9,7 +9,6 @@ import android.view.SubMenu
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentStatePagerAdapter
import androidx.lifecycle.lifecycleScope
import androidx.viewpager.widget.ViewPager
import io.legado.app.R
import io.legado.app.base.BaseActivity
import io.legado.app.constant.AppLog
@@ -35,7 +34,6 @@ class RssFavoritesActivity : BaseActivity<ActivityRssFavoritesBinding>() {
private val adapter by lazy { TabFragmentPageAdapter() }
private var groupList = mutableListOf<String>()
private var groupsMenu: SubMenu? = null
private var currentGroup = ""
override fun onActivityCreated(savedInstanceState: Bundle?) {
initView()
@@ -44,21 +42,6 @@ class RssFavoritesActivity : BaseActivity<ActivityRssFavoritesBinding>() {
private fun initView() {
binding.viewPager.adapter = adapter
binding.viewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
override fun onPageScrolled(
position: Int,
positionOffset: Float,
positionOffsetPixels: Int
) {
}
override fun onPageSelected(position: Int) {
currentGroup = groupList[position]
}
override fun onPageScrollStateChanged(state: Int) {}
})
binding.tabLayout.setupWithViewPager(binding.viewPager)
binding.tabLayout.setSelectedTabIndicatorColor(accentColor)
}
@@ -105,12 +88,6 @@ class RssFavoritesActivity : BaseActivity<ActivityRssFavoritesBinding>() {
upGroupsMenu()
}
adapter.notifyDataSetChanged()
val item = groupList.indexOf(currentGroup)
if (item > -1) {
binding.viewPager.setCurrentItem(item)
} else if (groupList.isNotEmpty()) {
currentGroup = groupList[binding.viewPager.currentItem]
}
}
}
}
@@ -119,7 +96,7 @@ class RssFavoritesActivity : BaseActivity<ActivityRssFavoritesBinding>() {
alert(R.string.draw) {
val item = binding.viewPager.currentItem
val group = groupList[item]
setMessage(getString(R.string.sure_del) + "\n" + group + " 分组的收藏")
setMessage(getString(R.string.sure_del) + "\n<" + group + ">" + getString(R.string.group))
noButton()
yesButton {
appDb.rssStarDao.deleteByGroup(group)
@@ -129,7 +106,7 @@ class RssFavoritesActivity : BaseActivity<ActivityRssFavoritesBinding>() {
private fun deleteAll() {
alert(R.string.draw) {
setMessage(getString(R.string.sure_del) + "\n" + "所有收藏")
setMessage(getString(R.string.sure_del) + "\n<" + getString(R.string.all) + ">" + getString(R.string.favorite))
noButton()
yesButton {
appDb.rssStarDao.deleteAll()