Commit fb4966ef authored by wanglei's avatar wanglei

...

parent a4d8ecd3
......@@ -26,9 +26,9 @@ object ConstObject {
const val DO_LOCK_PDF = "do_lock_pdf"
const val DO_UNLOCK_PDF = "do_unlock_pdf"
const val DOCUMENT_UI_TYPE = "document"
const val RECENT_UI_TYPE = "recent"
const val BOOKMARK_UI_TYPE = "bookmark"
const val DOCUMENT_DATA_TYPE = "document"
const val RECENT_DATA_TYPE = "recent"
const val BOOKMARK_DATA_TYPE = "bookmark"
const val UI_MODE_NORMAL = "ui_mode_normal"
const val UI_MODE_SELECT = "ui_mode_select"
......
......@@ -12,7 +12,7 @@ import com.base.pdfviewerscannerwhite.bean.ConstObject.DO_UNLOCK_PDF
import com.base.pdfviewerscannerwhite.bean.DocumentBean
import com.base.pdfviewerscannerwhite.databinding.ActivityPdfSelectBinding
import com.base.pdfviewerscannerwhite.helper.BaseActivity
import com.base.pdfviewerscannerwhite.ui.adapter.DocumentAdapter
import com.base.pdfviewerscannerwhite.ui.main.DocumentAdapter
import com.base.pdfviewerscannerwhite.ui.main.DocumentPresenter
import com.base.pdfviewerscannerwhite.ui.main.DocumentView
import com.base.pdfviewerscannerwhite.ui.view.PdfDialog.showPdfPwdDialog
......
package com.base.pdfviewerscannerwhite.ui.adapter
package com.base.pdfviewerscannerwhite.ui.main
import android.annotation.SuppressLint
import android.content.Context
......
......@@ -10,64 +10,63 @@ import androidx.viewpager2.widget.ViewPager2
import com.angcyo.tablayout.DslTabIndicator
import com.angcyo.tablayout.delegate2.ViewPager2Delegate
import com.base.pdfviewerscannerwhite.R
import com.base.pdfviewerscannerwhite.bean.ConstObject.BOOKMARK_UI_TYPE
import com.base.pdfviewerscannerwhite.bean.ConstObject.DOCUMENT_UI_TYPE
import com.base.pdfviewerscannerwhite.bean.ConstObject.RECENT_UI_TYPE
import com.base.pdfviewerscannerwhite.bean.ConstObject.BOOKMARK_DATA_TYPE
import com.base.pdfviewerscannerwhite.bean.ConstObject.DOCUMENT_DATA_TYPE
import com.base.pdfviewerscannerwhite.bean.ConstObject.RECENT_DATA_TYPE
import com.base.pdfviewerscannerwhite.bean.ConstObject.UI_MODE_NORMAL
import com.base.pdfviewerscannerwhite.bean.ConstObject.UI_MODE_SEARCH
import com.base.pdfviewerscannerwhite.bean.ConstObject.UI_MODE_SELECT
import com.base.pdfviewerscannerwhite.bean.DocumentBean
import com.base.pdfviewerscannerwhite.databinding.FragmentDocumentBinding
import com.base.pdfviewerscannerwhite.helper.BaseFragment
import com.base.pdfviewerscannerwhite.ui.adapter.DocumentAdapter
import com.base.pdfviewerscannerwhite.ui.main.MainActivity.Companion.jumpDocument
import com.base.pdfviewerscannerwhite.utils.KeyBoardUtils.hideKeyboard
import com.base.pdfviewerscannerwhite.utils.KeyBoardUtils.showKeyBoard
import com.base.pdfviewerscannerwhite.utils.LogEx
class DocumentFragment(
val type: String = ""
val dataType: String = ""
) : BaseFragment<FragmentDocumentBinding>() {
private val TAG = "DocumentFragment"
private val pdfPage: DocumentPageFragment by lazy {
DocumentPageFragment(DocumentBean.TYPE_PDF)
DocumentPageFragment(DocumentBean.TYPE_PDF, dataType)
}
private val wordPage: DocumentPageFragment by lazy {
DocumentPageFragment(DocumentBean.TYPE_WORD)
DocumentPageFragment(DocumentBean.TYPE_WORD, dataType)
}
private val excelPage: DocumentPageFragment by lazy {
DocumentPageFragment(DocumentBean.TYPE_EXCEL)
DocumentPageFragment(DocumentBean.TYPE_EXCEL, dataType)
}
private val pptPage: DocumentPageFragment by lazy {
DocumentPageFragment(DocumentBean.TYPE_PPT)
DocumentPageFragment(DocumentBean.TYPE_PPT, dataType)
}
private val fragments by lazy {
mutableListOf(pdfPage, wordPage, excelPage, pptPage)
}
private var currentFragment: Fragment = pdfPage
var currentPage: DocumentPageFragment = pdfPage
override val binding: FragmentDocumentBinding by lazy {
FragmentDocumentBinding.inflate(layoutInflater)
}
private lateinit var searchAdapter: DocumentAdapter
lateinit var searchAdapter: DocumentAdapter
var uiMode = UI_MODE_NORMAL
@SuppressLint("SetTextI18n")
override fun setView() {
when (type) {
DOCUMENT_UI_TYPE -> {
when (dataType) {
DOCUMENT_DATA_TYPE -> {
binding.tvTittle.text = "Document"
}
RECENT_UI_TYPE -> {
RECENT_DATA_TYPE -> {
binding.tvTittle.text = "Recent"
binding.ivPaixu.visibility = View.INVISIBLE
}
BOOKMARK_UI_TYPE -> {
BOOKMARK_DATA_TYPE -> {
binding.tvTittle.text = "Bookmark"
}
......@@ -81,9 +80,7 @@ class DocumentFragment(
searchAdapter = DocumentAdapter()
binding.rvSearch.adapter = searchAdapter
searchAdapter.moreAction = { item ->
if (currentFragment is DocumentPageFragment) {
(currentFragment as DocumentPageFragment).documentMoreAction.invoke(item)
}
currentPage.documentMoreAction.invoke(item)
}
searchAdapter.itemClick = {
requireActivity().jumpDocument(it)
......@@ -117,7 +114,6 @@ class DocumentFragment(
}
}
private fun initPageViewer() {
binding.viewPager2.run {
isUserInputEnabled = true
......@@ -144,7 +140,7 @@ class DocumentFragment(
}
override fun onPageSelected(position: Int) {
currentFragment = fragments[position]
currentPage = fragments[position]
}
})
}
......@@ -213,8 +209,8 @@ class DocumentFragment(
(requireActivity() as MainActivity).changeSelectUI(true)
if (currentFragment is DocumentPageFragment) {
(currentFragment as DocumentPageFragment).changeSelectUi(true)
if (currentPage is DocumentPageFragment) {
(currentPage as DocumentPageFragment).changeSelectUi(true)
}
} else {
binding.viewPager2.isUserInputEnabled = true
......@@ -223,7 +219,7 @@ class DocumentFragment(
binding.flFanhui.visibility = View.INVISIBLE
binding.ivAllSelector.visibility = View.INVISIBLE
if (type != RECENT_UI_TYPE) {
if (dataType != RECENT_DATA_TYPE) {
binding.ivPaixu.visibility = View.VISIBLE
}
binding.ivXuanze.visibility = View.VISIBLE
......@@ -237,8 +233,8 @@ class DocumentFragment(
}
private fun changePageSelect(select: Boolean) {
if (currentFragment is DocumentPageFragment) {
(currentFragment as DocumentPageFragment).changItemSelect(select)
if (currentPage is DocumentPageFragment) {
(currentPage as DocumentPageFragment).changItemSelect(select)
}
}
......@@ -255,6 +251,7 @@ class DocumentFragment(
binding.flFanhui.visibility = View.VISIBLE
binding.editSearch.visibility = View.VISIBLE
binding.flSearch.visibility = View.VISIBLE
(requireActivity() as MainActivity).changeSearchUI(true)
......@@ -266,15 +263,19 @@ class DocumentFragment(
binding.editSearch.visibility = View.INVISIBLE
binding.flFanhui.visibility = View.INVISIBLE
binding.flSearch.visibility = View.INVISIBLE
binding.tvTittle.visibility = View.VISIBLE
if (dataType != RECENT_DATA_TYPE) {
binding.ivPaixu.visibility = View.VISIBLE
}
binding.ivXuanze.visibility = View.VISIBLE
binding.llMainContent.visibility = View.VISIBLE
(requireActivity() as MainActivity).changeSearchUI(false)
requireContext().hideKeyboard(binding.editSearch)
searchAdapter.submitList(listOf())
}
}
......@@ -283,8 +284,8 @@ class DocumentFragment(
private fun searchDocument() {
if (binding.editSearch.text.isNotEmpty()) {
val search = binding.editSearch.text.toString()
if (currentFragment is DocumentPageFragment) {
val item = (currentFragment as DocumentPageFragment).getSearchItems(search)
if (currentPage is DocumentPageFragment) {
val item = (currentPage as DocumentPageFragment).getSearchItems(search)
if (item.isNotEmpty()) {
item.map { it.uiType = 4 }
searchAdapter.submitList(item)
......@@ -295,4 +296,8 @@ class DocumentFragment(
}
}
fun searchDeleteDocument(item: DocumentBean) {
searchAdapter.remove(item)
}
}
\ No newline at end of file
package com.base.pdfviewerscannerwhite.ui.main
import android.annotation.SuppressLint
import android.app.Activity
import android.content.Intent
import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope
......@@ -13,19 +12,11 @@ import com.base.pdfviewerscannerwhite.bean.DocumentBean.Companion.TYPE_PPT
import com.base.pdfviewerscannerwhite.bean.DocumentBean.Companion.TYPE_WORD
import com.base.pdfviewerscannerwhite.databinding.FragmentDocumentPageBinding
import com.base.pdfviewerscannerwhite.helper.BaseFragment
import com.base.pdfviewerscannerwhite.ui.adapter.DocumentAdapter
import com.base.pdfviewerscannerwhite.ui.document.excel.ExcelActivity
import com.base.pdfviewerscannerwhite.ui.document.pdf.PdfActivity
import com.base.pdfviewerscannerwhite.ui.document.pdf.PdfSelectActivity
import com.base.pdfviewerscannerwhite.ui.document.pdf.PdfSplitActivity
import com.base.pdfviewerscannerwhite.ui.document.ppt.PptActivity
import com.base.pdfviewerscannerwhite.ui.document.word.WordActivity
import com.base.pdfviewerscannerwhite.ui.main.MainActivity.Companion.jumpDocument
import com.base.pdfviewerscannerwhite.ui.view.DialogView.showDocumentHomeMoreDialog
import com.base.pdfviewerscannerwhite.ui.view.PdfDialog.showPdfHomeMoreDialog
import com.base.pdfviewerscannerwhite.ui.view.PdfDialog.showPdfPwdDialog
import com.base.pdfviewerscannerwhite.utils.LogEx
import com.base.pdfviewerscannerwhite.utils.PermissionUtils.checkStorePermission
import java.io.File
import java.util.Locale
......@@ -33,12 +24,14 @@ class DocumentPageFragment() : BaseFragment<FragmentDocumentPageBinding>(), Docu
private val TAG = "DocumentFragment"
var type = TYPE_PDF
var dataType: String = ""
private var documentList: ArrayList<DocumentBean> = arrayListOf()
lateinit var adapter: DocumentAdapter
lateinit var documentPresenter: DocumentPresenter
constructor(type: String) : this() {
constructor(type: String, dataType: String) : this() {
this.type = type
this.dataType = dataType
}
override val binding: FragmentDocumentPageBinding by lazy {
......@@ -53,15 +46,18 @@ class DocumentPageFragment() : BaseFragment<FragmentDocumentPageBinding>(), Docu
override fun onResume() {
super.onResume()
initData()
refreshData()
}
fun initData() {
if (requireContext().checkStorePermission()) {
documentPresenter.initData()
fun refreshData() {
if (isVisible) {
val list = (requireActivity() as MainActivity).mainPresenter.getDataByType(type, dataType)
adapter.submitList(list)
binding.llEmpty.isVisible = list.isEmpty()
}
}
override fun refreshDocumentRv(documentList: List<DocumentBean>) {
binding.llEmpty.isVisible = documentList.isEmpty()
this.documentList.clear()
......@@ -84,15 +80,15 @@ class DocumentPageFragment() : BaseFragment<FragmentDocumentPageBinding>(), Docu
}
var documentMoreAction: (item: DocumentBean) -> Unit = { item ->
val mainActivity = (requireActivity() as MainActivity)
val documentFragment = parentFragment as DocumentFragment
if (item.type == TYPE_PDF) {
requireContext().showPdfHomeMoreDialog(
item, adapter, this, mainActivity
item, adapter, this, documentFragment
)
}
if (item.type == TYPE_WORD || item.type == TYPE_EXCEL || item.type == TYPE_PPT) {
requireContext().showDocumentHomeMoreDialog(item, this, mainActivity)
// requireContext().showDocumentHomeMoreDialog(item, this, documentFragment)
}
}
......@@ -117,34 +113,6 @@ class DocumentPageFragment() : BaseFragment<FragmentDocumentPageBinding>(), Docu
binding.llEmpty.isVisible = adapter.items.isEmpty()
}
fun setRecentList() {
if (isVisible) {
val recentList = documentList.filter {
(System.currentTimeMillis() - File(it.path).lastModified()) < 300L * 24 * 60 * 60 * 1000
}
binding.llEmpty.isVisible = recentList.isEmpty()
adapter.submitList(recentList)
}
}
fun setAllList() {
if (isVisible) {
adapter.submitList(documentList)
binding.llEmpty.isVisible = documentList.isEmpty()
}
}
fun setBookmarkList() {
if (isVisible) {
val bookmarkList = documentList.filter { it.isBookmarked }
binding.llEmpty.isVisible = bookmarkList.isEmpty()
adapter.submitList(bookmarkList)
}
}
@SuppressLint("NotifyDataSetChanged")
fun changeSelectUi(select: Boolean) {
if (isVisible) {
......@@ -185,14 +153,4 @@ class DocumentPageFragment() : BaseFragment<FragmentDocumentPageBinding>(), Docu
return listOf()
}
@SuppressLint("NotifyDataSetChanged")
fun changeHomeUI() {
if (isVisible) {
adapter.items.map { it.uiType == 0 }
adapter.notifyDataSetChanged()
}
}
}
\ No newline at end of file
......@@ -6,10 +6,6 @@ import com.base.pdfviewerscannerwhite.bean.ConstObject
import com.base.pdfviewerscannerwhite.bean.ConstObject.haveSaveDemo
import com.base.pdfviewerscannerwhite.bean.DocumentBean
import com.base.pdfviewerscannerwhite.ui.document.pdf.PdfBoxUtils
import com.base.pdfviewerscannerwhite.utils.AssetUtils.getDemoDocx
import com.base.pdfviewerscannerwhite.utils.AssetUtils.getDemoPdf
import com.base.pdfviewerscannerwhite.utils.AssetUtils.getDemoPptx
import com.base.pdfviewerscannerwhite.utils.AssetUtils.getDemoXlsx
import com.base.pdfviewerscannerwhite.utils.AssetUtils.saveAssetsFile
import com.base.pdfviewerscannerwhite.utils.LogEx
import com.base.pdfviewerscannerwhite.utils.SpStringUtils
......
......@@ -6,11 +6,12 @@ import android.net.Uri
import android.view.View
import androidx.activity.OnBackPressedCallback
import androidx.fragment.app.Fragment
import androidx.lifecycle.lifecycleScope
import com.base.pdfviewerscannerwhite.R
import com.base.pdfviewerscannerwhite.bean.ConstObject
import com.base.pdfviewerscannerwhite.bean.ConstObject.BOOKMARK_UI_TYPE
import com.base.pdfviewerscannerwhite.bean.ConstObject.DOCUMENT_UI_TYPE
import com.base.pdfviewerscannerwhite.bean.ConstObject.RECENT_UI_TYPE
import com.base.pdfviewerscannerwhite.bean.ConstObject.BOOKMARK_DATA_TYPE
import com.base.pdfviewerscannerwhite.bean.ConstObject.DOCUMENT_DATA_TYPE
import com.base.pdfviewerscannerwhite.bean.ConstObject.RECENT_DATA_TYPE
import com.base.pdfviewerscannerwhite.bean.DocumentBean
import com.base.pdfviewerscannerwhite.databinding.ActivityMain2Binding
import com.base.pdfviewerscannerwhite.helper.BaseActivity
......@@ -19,23 +20,25 @@ import com.base.pdfviewerscannerwhite.ui.document.pdf.PdfActivity
import com.base.pdfviewerscannerwhite.ui.document.ppt.PptActivity
import com.base.pdfviewerscannerwhite.ui.document.word.WordActivity
import com.base.pdfviewerscannerwhite.ui.view.DialogView.showDeleteDialog
import com.base.pdfviewerscannerwhite.ui.view.DialogView.showStoragePermission
import com.base.pdfviewerscannerwhite.ui.view.PdfDialog.showPdfPwdDialog
import com.base.pdfviewerscannerwhite.utils.IntentShareUtils.shareMutDocuments
import com.base.pdfviewerscannerwhite.utils.PermissionUtils.checkStorePermission
class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView {
private lateinit var mainPresenter: MainPresenter
lateinit var mainPresenter: MainPresenter
override val binding: ActivityMain2Binding by lazy {
ActivityMain2Binding.inflate(layoutInflater)
}
private val documentFragment: DocumentFragment by lazy {
DocumentFragment(DOCUMENT_UI_TYPE)
DocumentFragment(DOCUMENT_DATA_TYPE)
}
private val recentFragment: DocumentFragment by lazy {
DocumentFragment(RECENT_UI_TYPE)
DocumentFragment(RECENT_DATA_TYPE)
}
private val bookmarkFragment: DocumentFragment by lazy {
DocumentFragment(BOOKMARK_UI_TYPE)
DocumentFragment(BOOKMARK_DATA_TYPE)
}
private val toolFragment: Fragment by lazy {
ToolFragment()
......@@ -43,7 +46,19 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView {
private var currentFragment: Fragment = documentFragment
override fun initView() {
mainPresenter = MainPresenter(this, this)
mainPresenter = MainPresenter(this, this, lifecycleScope)
}
override fun onResume() {
super.onResume()
if (checkStorePermission() && needRefresh) {
mainPresenter.initAllDocumentData()
} else {
showStoragePermission(launcher, allowAction = {
mainPresenter.initAllDocumentData()
})
}
}
var isDocumentAdd: Boolean = false
......@@ -200,13 +215,13 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView {
}
override fun refreshSearchRv() {
override fun refreshPageList() {
if (currentFragment is DocumentFragment) {
(currentFragment as DocumentFragment).currentPage.refreshData()
}
override fun deleteDocument(item: DocumentBean) {
}
fun changeSearchUI(show: Boolean) {
if (show) {
binding.ivScan.visibility = View.INVISIBLE
......@@ -219,6 +234,7 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView {
}
companion object {
var needRefresh: Boolean = true
fun Activity.jumpDocument(item: DocumentBean) {
if (item.type == DocumentBean.TYPE_PDF) {
if (item.state == 0) {
......
......@@ -17,7 +17,7 @@
//import com.base.pdfviewerscannerwhite.bean.DocumentBean
//import com.base.pdfviewerscannerwhite.databinding.ActivityMainBinding
//import com.base.pdfviewerscannerwhite.helper.BaseActivity
//import com.base.pdfviewerscannerwhite.ui.adapter.DocumentAdapter
//import com.base.pdfviewerscannerwhite.ui.main.DocumentAdapter
//import com.base.pdfviewerscannerwhite.ui.main.DocumentPageFragment.Companion.jumpDocument
//import com.base.pdfviewerscannerwhite.ui.view.DialogView.showDeleteDialog
//import com.base.pdfviewerscannerwhite.ui.view.DialogView.showDocumentRenameDialog
......
......@@ -8,8 +8,25 @@ import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.IntentSenderRequest
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.LifecycleCoroutineScope
import com.base.pdfviewerscannerwhite.bean.ConstObject
import com.base.pdfviewerscannerwhite.bean.ConstObject.BOOKMARK_DATA_TYPE
import com.base.pdfviewerscannerwhite.bean.ConstObject.DOCUMENT_DATA_TYPE
import com.base.pdfviewerscannerwhite.bean.ConstObject.MIME_TYPE_DOC
import com.base.pdfviewerscannerwhite.bean.ConstObject.MIME_TYPE_PDF
import com.base.pdfviewerscannerwhite.bean.ConstObject.MIME_TYPE_PPT
import com.base.pdfviewerscannerwhite.bean.ConstObject.MIME_TYPE_XLS
import com.base.pdfviewerscannerwhite.bean.ConstObject.RECENT_DATA_TYPE
import com.base.pdfviewerscannerwhite.bean.DocumentBean
import com.base.pdfviewerscannerwhite.bean.DocumentBean.Companion.TYPE_EXCEL
import com.base.pdfviewerscannerwhite.bean.DocumentBean.Companion.TYPE_PDF
import com.base.pdfviewerscannerwhite.bean.DocumentBean.Companion.TYPE_PPT
import com.base.pdfviewerscannerwhite.bean.DocumentBean.Companion.TYPE_WORD
import com.base.pdfviewerscannerwhite.utils.AssetUtils.saveAssetsFile
import com.base.pdfviewerscannerwhite.utils.SpStringUtils
import com.base.pdfviewerscannerwhite.utils.ToastUtils.toast
import com.base.pdfviewerscannerwhite.utils.getMediaFile
import com.base.pdfviewerscannerwhite.utils.upDateDemoStore
import com.base.pdfviewerscannerwhite.utils.updateMediaStore
import com.google.mlkit.vision.documentscanner.GmsDocumentScannerOptions
import com.google.mlkit.vision.documentscanner.GmsDocumentScanning
......@@ -21,11 +38,219 @@ import java.io.File
class MainPresenter(
val context: Context,
val mainView: MainView
val mainView: MainView,
val lifecycleScope: LifecycleCoroutineScope
) {
//所有fragment的数据,都从这里取
val pdfDocuments = arrayListOf<DocumentBean>()
val wordDocuments = arrayListOf<DocumentBean>()
val excelDocuments = arrayListOf<DocumentBean>()
val pptDocuments = arrayListOf<DocumentBean>()
private lateinit var scannerLauncher: ActivityResultLauncher<IntentSenderRequest>
fun initAllDocumentData() = lifecycleScope.launch(Dispatchers.IO) {
context.upDateDemoStore()
if (!ConstObject.haveSaveDemo) {
context.saveAssetsFile()
ConstObject.haveSaveDemo = true
}
pdfDocuments.addAll(initAllPdfData())
lifecycleScope.launch(Dispatchers.Main) {
mainView.refreshPageList()
}
wordDocuments.addAll(initAllWordData())
lifecycleScope.launch(Dispatchers.Main) {
mainView.refreshPageList()
}
excelDocuments.addAll(initAllExcelData())
lifecycleScope.launch(Dispatchers.Main) {
mainView.refreshPageList()
}
pptDocuments.addAll(initAllPptData())
lifecycleScope.launch(Dispatchers.Main) {
mainView.refreshPageList()
}
}
fun getDataByType(documentType: String, dataType: String): List<DocumentBean> {
val bookmarkList = SpStringUtils.getSpStringList(SpStringUtils.BOOKMARK_KEY)
when (documentType) {
TYPE_PDF -> {
when (dataType) {
DOCUMENT_DATA_TYPE -> {
return pdfDocuments
}
RECENT_DATA_TYPE -> {
return pdfDocuments.filter { recentFilter(it) }
}
BOOKMARK_DATA_TYPE -> {
pdfDocuments.forEach {
it.isBookmarked = bookmarkList.contains(it.path)
}
return pdfDocuments.filter { it.isBookmarked }
}
}
}
TYPE_WORD -> {
when (dataType) {
DOCUMENT_DATA_TYPE -> {
return wordDocuments
}
RECENT_DATA_TYPE -> {
return wordDocuments.filter { recentFilter(it) }
}
BOOKMARK_DATA_TYPE -> {
wordDocuments.forEach {
it.isBookmarked = bookmarkList.contains(it.path)
}
return wordDocuments.filter { it.isBookmarked }
}
}
}
TYPE_EXCEL -> {
when (dataType) {
DOCUMENT_DATA_TYPE -> {
return excelDocuments
}
RECENT_DATA_TYPE -> {
return excelDocuments.filter { recentFilter(it) }
}
BOOKMARK_DATA_TYPE -> {
excelDocuments.forEach {
it.isBookmarked = bookmarkList.contains(it.path)
}
return excelDocuments.filter { it.isBookmarked }
}
}
}
TYPE_PPT -> {
when (dataType) {
DOCUMENT_DATA_TYPE -> {
return pptDocuments
}
RECENT_DATA_TYPE -> {
return pptDocuments.filter { recentFilter(it) }
}
BOOKMARK_DATA_TYPE -> {
pptDocuments.forEach {
it.isBookmarked = bookmarkList.contains(it.path)
}
return pptDocuments.filter { it.isBookmarked }
}
}
}
}
return listOf()
}
fun recentFilter(documentBean: DocumentBean): Boolean {
return (System.currentTimeMillis() - File(documentBean.path).lastModified()) < 300L * 24 * 60 * 60 * 1000
}
private fun initAllPdfData(): MutableList<DocumentBean> {
val demoDocumentBean = DocumentBean()
demoDocumentBean.type = TYPE_PDF
val demoFile = File(context.filesDir, "demo")
val selectionArgs = arrayOf(ConstObject.MIME_TYPE_PDF)
demoDocumentBean.path = demoFile.listFiles()?.find { it.name.contains(".pdf") }?.absolutePath ?: ""
val list = context.getMediaFile(selectionArgs = selectionArgs)
val documentList = list.map {
DocumentBean(it.path, uri = it.uri, type = TYPE_PDF)
}
val new = documentList.toMutableList()
if (File(demoDocumentBean.path).exists()) {
new.add(0, demoDocumentBean)
}
return new
}
private fun initAllWordData(): MutableList<DocumentBean> {
val demoDocumentBean = DocumentBean()
demoDocumentBean.type = TYPE_WORD
val demoFile = File(context.filesDir, "demo")
val selectionArgs = arrayOf(ConstObject.MIME_TYPE_DOC, ConstObject.MIME_TYPE_DOCX)
demoDocumentBean.path = demoFile.listFiles()?.find { it.name.contains(".docx") }?.absolutePath ?: ""
val list = context.getMediaFile(selectionArgs = selectionArgs)
val documentList = list.map {
DocumentBean(it.path, uri = it.uri, type = TYPE_WORD)
}
val new = documentList.toMutableList()
if (File(demoDocumentBean.path).exists()) {
new.add(0, demoDocumentBean)
}
return new
}
private fun initAllExcelData(): MutableList<DocumentBean> {
val demoDocumentBean = DocumentBean()
demoDocumentBean.type = TYPE_EXCEL
val demoFile = File(context.filesDir, "demo")
val selectionArgs = arrayOf(ConstObject.MIME_TYPE_XLS, ConstObject.MIME_TYPE_XLSX)
demoDocumentBean.path = demoFile.listFiles()?.find { it.name.contains(".xlsx") }?.absolutePath ?: ""
val list = context.getMediaFile(selectionArgs = selectionArgs)
val documentList = list.map {
DocumentBean(it.path, uri = it.uri, type = TYPE_EXCEL)
}
val new = documentList.toMutableList()
if (File(demoDocumentBean.path).exists()) {
new.add(0, demoDocumentBean)
}
return new
}
private fun initAllPptData(): MutableList<DocumentBean> {
val demoDocumentBean = DocumentBean()
demoDocumentBean.type = TYPE_PPT
val demoFile = File(context.filesDir, "demo")
val selectionArgs = arrayOf(ConstObject.MIME_TYPE_PPT, ConstObject.MIME_TYPE_PPTX)
demoDocumentBean.path = demoFile.listFiles()?.find { it.name.contains(".pptx") }?.absolutePath ?: ""
val list = context.getMediaFile(selectionArgs = selectionArgs)
val documentList = list.map {
DocumentBean(it.path, uri = it.uri, type = TYPE_PPT)
}
val new = documentList.toMutableList()
if (File(demoDocumentBean.path).exists()) {
new.add(0, demoDocumentBean)
}
return new
}
fun initScannerLauncher(appCompatActivity: AppCompatActivity) {
scannerLauncher =
appCompatActivity.registerForActivityResult(ActivityResultContracts.StartIntentSenderForResult()) { activityResult ->
......
package com.base.pdfviewerscannerwhite.ui.main
import android.net.Uri
import com.base.pdfviewerscannerwhite.bean.DocumentBean
interface MainView {
fun handleActivityGmsScanResult(imageUri: Uri, pdfUri: Uri)
fun refreshSearchRv()
fun deleteDocument(item: DocumentBean)
fun refreshPageList()
}
\ No newline at end of file
......@@ -20,8 +20,8 @@ import com.base.pdfviewerscannerwhite.databinding.DialogDocumentMoreBinding
import com.base.pdfviewerscannerwhite.databinding.DialogDocumentRenameBinding
import com.base.pdfviewerscannerwhite.databinding.DialogPageNumberBinding
import com.base.pdfviewerscannerwhite.databinding.DialogStoragePermissionBinding
import com.base.pdfviewerscannerwhite.ui.main.DocumentFragment
import com.base.pdfviewerscannerwhite.ui.main.DocumentPageFragment
import com.base.pdfviewerscannerwhite.ui.main.MainActivity
import com.base.pdfviewerscannerwhite.utils.ActivityLauncher
import com.base.pdfviewerscannerwhite.utils.IntentShareUtils.documentShare
import com.base.pdfviewerscannerwhite.utils.KotlinExt.toFormatSize
......@@ -101,8 +101,8 @@ object DialogView {
@SuppressLint("SetTextI18n", "NotifyDataSetChanged")
fun Context.showDocumentHomeMoreDialog(
item: DocumentBean,
documentFragment: DocumentPageFragment,
mainActivity: MainActivity,
documentPageFragment: DocumentPageFragment,
documentFragment: DocumentFragment,
): BottomSheetDialog {
val dialog = BottomSheetDialog(this, R.style.BottomSheetDialog)
val binding = DialogDocumentHomeMoreBinding.inflate(LayoutInflater.from(this))
......@@ -140,11 +140,11 @@ object DialogView {
binding.llRename.setOnClickListener {
showDocumentRenameDialog(file.name) { newName ->
dialog.dismiss()
documentFragment.documentPresenter.renameDocumentBean(file, newName) { newPath ->
documentPageFragment.documentPresenter.renameDocumentBean(file, newName) { newPath ->
if (newPath.isNotEmpty()) {
item.path = newPath
documentFragment.adapter.notifyDataSetChanged()
mainActivity.refreshSearchRv()
documentPageFragment.adapter.notifyDataSetChanged()
documentFragment.searchAdapter.notifyDataSetChanged()
}
}
}
......@@ -160,9 +160,9 @@ object DialogView {
showDeleteDialog {
runCatching {
val flag = File(item.path).delete()
if (flag){
documentFragment.deleteDocument(item)
mainActivity.deleteDocument(item)
if (flag) {
documentPageFragment.deleteDocument(item)
documentFragment.searchDeleteDocument(item)
}
}
......
......@@ -15,11 +15,11 @@ import com.base.pdfviewerscannerwhite.bean.DocumentBean
import com.base.pdfviewerscannerwhite.databinding.DialogPdfHomeMoreBinding
import com.base.pdfviewerscannerwhite.databinding.DialogPdfMoreBinding
import com.base.pdfviewerscannerwhite.databinding.DialogPdfPasswordBinding
import com.base.pdfviewerscannerwhite.ui.adapter.DocumentAdapter
import com.base.pdfviewerscannerwhite.ui.main.DocumentAdapter
import com.base.pdfviewerscannerwhite.ui.document.pdf.PdfBoxUtils
import com.base.pdfviewerscannerwhite.ui.document.pdf.PdfView
import com.base.pdfviewerscannerwhite.ui.main.DocumentFragment
import com.base.pdfviewerscannerwhite.ui.main.DocumentPageFragment
import com.base.pdfviewerscannerwhite.ui.main.MainActivity
import com.base.pdfviewerscannerwhite.ui.view.DialogView.showDeleteDialog
import com.base.pdfviewerscannerwhite.ui.view.DialogView.showDocumentDetail
import com.base.pdfviewerscannerwhite.ui.view.DialogView.showDocumentRenameDialog
......@@ -40,8 +40,8 @@ object PdfDialog {
fun Context.showPdfHomeMoreDialog(
item: DocumentBean,
adapter: DocumentAdapter,
documentFragment: DocumentPageFragment,
mainActivity: MainActivity
documentPageFragment: DocumentPageFragment,
documentFragment: DocumentFragment,
): BottomSheetDialog {
val dialog = BottomSheetDialog(this, R.style.BottomSheetDialog)
val binding = DialogPdfHomeMoreBinding.inflate(LayoutInflater.from(this))
......@@ -75,11 +75,11 @@ object PdfDialog {
binding.llRename.setOnClickListener {
showDocumentRenameDialog(file.name) { newName ->
dialog.dismiss()
documentFragment.documentPresenter.renameDocumentBean(file, newName) { newPath ->
documentPageFragment.documentPresenter.renameDocumentBean(file, newName) { newPath ->
if (newPath.isNotEmpty()) {
item.path = newPath
documentFragment.adapter.notifyDataSetChanged()
mainActivity.refreshSearchRv()
documentPageFragment.adapter.notifyDataSetChanged()
documentFragment.searchAdapter.notifyDataSetChanged()
}
}
}
......@@ -89,15 +89,15 @@ object PdfDialog {
if (item.state == 1) {
showPdfPwdDialog(
state = item.state, path = item.path, firstDialog = dialog, isCheckPwd = true, verificationAction = {
documentFragment.splitPdf(item.path, it)
documentPageFragment.splitPdf(item.path, it)
})
} else {
documentFragment.splitPdf(item.path)
documentPageFragment.splitPdf(item.path)
}
}
binding.llMerge.setOnClickListener {
dialog.dismiss()
documentFragment.mergePdf(item.path)
documentPageFragment.mergePdf(item.path)
}
binding.llDelete.setOnClickListener {
dialog.dismiss()
......@@ -105,8 +105,8 @@ object PdfDialog {
runCatching {
val flag = File(item.path).delete()
if (flag) {
documentFragment.deleteDocument(item)
mainActivity.deleteDocument(item)
documentPageFragment.deleteDocument(item)
documentFragment.searchDeleteDocument(item)
}
}
......@@ -130,8 +130,7 @@ object PdfDialog {
binding.llLock.setOnClickListener {
showPdfPwdDialog(state = item.state, path = item.path, firstDialog = dialog, encryptionAction = {
dialog.dismiss()
documentFragment.adapter.notifyDataSetChanged()
mainActivity.refreshSearchRv()
documentPageFragment.adapter.notifyDataSetChanged()
})
}
dialog.setOnDismissListener {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment