diff --git a/app/src/main/java/com/all/pdfreader/pro/app/ui/dialog/ListMoreDialogFragment.kt b/app/src/main/java/com/all/pdfreader/pro/app/ui/dialog/ListMoreDialogFragment.kt index 338d2d3..588626a 100644 --- a/app/src/main/java/com/all/pdfreader/pro/app/ui/dialog/ListMoreDialogFragment.kt +++ b/app/src/main/java/com/all/pdfreader/pro/app/ui/dialog/ListMoreDialogFragment.kt @@ -2,6 +2,7 @@ package com.all.pdfreader.pro.app.ui.dialog import android.net.Uri import android.os.Bundle +import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -13,7 +14,9 @@ import com.all.pdfreader.pro.app.model.PrintResult import com.all.pdfreader.pro.app.model.RenameType import com.all.pdfreader.pro.app.room.entity.PdfDocumentEntity import com.all.pdfreader.pro.app.ui.act.SplitPdfActivity +import com.all.pdfreader.pro.app.ui.fragment.FavoriteFrag import com.all.pdfreader.pro.app.ui.fragment.HomeFrag +import com.all.pdfreader.pro.app.ui.fragment.RecentlyFrag import com.all.pdfreader.pro.app.util.AppUtils.dpToPx import com.all.pdfreader.pro.app.util.AppUtils.printPdfFile import com.all.pdfreader.pro.app.util.AppUtils.setClickWithAnimation @@ -73,12 +76,16 @@ class ListMoreDialogFragment(val filePath: String) : BottomSheetDialogFragment() } private fun initUi() { - if (tag == HomeFrag().tag) { - binding.removeRecentBtn.visibility = View.GONE - } else { - if (pdfDocument.lastOpenedTime > 0) { + when (tag) { + HomeFrag.FRAG_TAG -> { + binding.removeRecentBtn.visibility = View.GONE + } + + RecentlyFrag.FRAG_TAG -> { binding.removeRecentBtn.visibility = View.VISIBLE - } else { + } + + FavoriteFrag.FRAG_TAG -> { binding.removeRecentBtn.visibility = View.GONE } } @@ -108,8 +115,7 @@ class ListMoreDialogFragment(val filePath: String) : BottomSheetDialogFragment() } binding.renameFileBtn.setOnClickListener { RenameDialogFragment(RenameType.FILE).show( - parentFragmentManager, - "ListMoreDialogFragment" + parentFragmentManager, "ListMoreDialogFragment" ) dismiss() } @@ -135,9 +141,7 @@ class ListMoreDialogFragment(val filePath: String) : BottomSheetDialogFragment() when (result) { PrintResult.DeviceNotSupported -> { Toast.makeText( - context, - R.string.device_does_not_support_printing, - Toast.LENGTH_LONG + context, R.string.device_does_not_support_printing, Toast.LENGTH_LONG ).show() } @@ -153,9 +157,7 @@ class ListMoreDialogFragment(val filePath: String) : BottomSheetDialogFragment() PrintResult.PasswordRequired -> { Toast.makeText( - context, - R.string.pdf_cant_print_password_protected, - Toast.LENGTH_LONG + context, R.string.pdf_cant_print_password_protected, Toast.LENGTH_LONG ).show() } diff --git a/app/src/main/java/com/all/pdfreader/pro/app/ui/fragment/FavoriteFrag.kt b/app/src/main/java/com/all/pdfreader/pro/app/ui/fragment/FavoriteFrag.kt index f1f79dc..d1cb4d9 100644 --- a/app/src/main/java/com/all/pdfreader/pro/app/ui/fragment/FavoriteFrag.kt +++ b/app/src/main/java/com/all/pdfreader/pro/app/ui/fragment/FavoriteFrag.kt @@ -5,10 +5,26 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.lifecycleScope +import androidx.lifecycle.repeatOnLifecycle +import androidx.recyclerview.widget.LinearLayoutManager import com.all.pdfreader.pro.app.databinding.FragmentFavoriteBinding +import com.all.pdfreader.pro.app.room.repository.PdfRepository +import com.all.pdfreader.pro.app.ui.act.PdfViewActivity +import com.all.pdfreader.pro.app.ui.adapter.PdfAdapter +import com.all.pdfreader.pro.app.ui.dialog.ListMoreDialogFragment +import kotlinx.coroutines.launch + +class FavoriteFrag : BaseFrag() { + override val TAG: String = "FavoriteFrag" + + companion object { + const val FRAG_TAG = "FavoriteFrag" + } -class FavoriteFrag : Fragment() { private lateinit var binding: FragmentFavoriteBinding + private lateinit var adapter: PdfAdapter override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? @@ -20,9 +36,41 @@ class FavoriteFrag : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) initView() + observeDocuments() } private fun initView() { + adapter = PdfAdapter(pdfList = mutableListOf(), onItemClick = { pdf -> + val intent = PdfViewActivity.createIntent(requireContext(), pdf.filePath) + startActivity(intent) + }, onMoreClick = { pdf -> + ListMoreDialogFragment(pdf.filePath).show(parentFragmentManager, FRAG_TAG) + }) + binding.recyclerView.layoutManager = LinearLayoutManager(requireContext()) + binding.recyclerView.adapter = adapter + + // 下拉刷新示例 + binding.swipeRefreshLayout.setOnRefreshListener { + observeDocuments { + binding.swipeRefreshLayout.isRefreshing = false + } + } + } + + private fun observeDocuments(onComplete: () -> Unit = {}) { + lifecycleScope.launch { + viewLifecycleOwner.lifecycle.repeatOnLifecycle(Lifecycle.State.STARTED) { + PdfRepository.getInstance().getFavoriteDocuments().collect { list -> + if (list.isNotEmpty()) { + adapter.updateData(list) + onComplete() + binding.noFilesLayout.visibility = View.GONE + } else { + binding.noFilesLayout.visibility = View.VISIBLE + } + } + } + } } } \ No newline at end of file diff --git a/app/src/main/java/com/all/pdfreader/pro/app/ui/fragment/HomeFrag.kt b/app/src/main/java/com/all/pdfreader/pro/app/ui/fragment/HomeFrag.kt index 0673c78..7f1145c 100644 --- a/app/src/main/java/com/all/pdfreader/pro/app/ui/fragment/HomeFrag.kt +++ b/app/src/main/java/com/all/pdfreader/pro/app/ui/fragment/HomeFrag.kt @@ -21,6 +21,11 @@ import kotlinx.coroutines.launch class HomeFrag : BaseFrag(), MainActivity.SortableFragment { override val TAG: String = "HomeFrag" + + companion object { + const val FRAG_TAG = "HomeFrag" + } + private lateinit var binding: FragmentHomeBinding private lateinit var adapter: PdfAdapter override fun onCreateView( @@ -41,7 +46,7 @@ class HomeFrag : BaseFrag(), MainActivity.SortableFragment { val intent = PdfViewActivity.createIntent(requireContext(), pdf.filePath) startActivity(intent) }, onMoreClick = { pdf -> - ListMoreDialogFragment(pdf.filePath).show(parentFragmentManager, TAG) + ListMoreDialogFragment(pdf.filePath).show(parentFragmentManager, FRAG_TAG) }) binding.recyclerView.layoutManager = LinearLayoutManager(requireContext()) diff --git a/app/src/main/java/com/all/pdfreader/pro/app/ui/fragment/RecentlyFrag.kt b/app/src/main/java/com/all/pdfreader/pro/app/ui/fragment/RecentlyFrag.kt index 23bfb28..07a03b1 100644 --- a/app/src/main/java/com/all/pdfreader/pro/app/ui/fragment/RecentlyFrag.kt +++ b/app/src/main/java/com/all/pdfreader/pro/app/ui/fragment/RecentlyFrag.kt @@ -17,6 +17,11 @@ import kotlinx.coroutines.launch class RecentlyFrag : BaseFrag() { override val TAG: String = "RecentlyFrag" + + companion object { + const val FRAG_TAG = "RecentlyFrag" + } + private lateinit var binding: FragmentRecentlyBinding private lateinit var adapter: PdfAdapter @@ -38,7 +43,7 @@ class RecentlyFrag : BaseFrag() { val intent = PdfViewActivity.createIntent(requireContext(), pdf.filePath) startActivity(intent) }, onMoreClick = { pdf -> - ListMoreDialogFragment(pdf.filePath).show(parentFragmentManager, TAG) + ListMoreDialogFragment(pdf.filePath).show(parentFragmentManager, FRAG_TAG) }) binding.recyclerView.layoutManager = LinearLayoutManager(requireContext()) @@ -63,7 +68,6 @@ class RecentlyFrag : BaseFrag() { } else { binding.noFilesLayout.visibility = View.VISIBLE } - logDebug("更新adapter数据") } } } diff --git a/app/src/main/res/layout/fragment_favorite.xml b/app/src/main/res/layout/fragment_favorite.xml index fb3ce0e..7cf3ad2 100644 --- a/app/src/main/res/layout/fragment_favorite.xml +++ b/app/src/main/res/layout/fragment_favorite.xml @@ -10,9 +10,40 @@ android:layout_width="match_parent" android:layout_height="0dp" /> - + + + + + + + + + + + + \ No newline at end of file