Commit 3521ff36 authored by wanglei's avatar wanglei

...

parent 8241b53d
......@@ -43,7 +43,7 @@
<activity
android:name=".ui.main.MainActivity"
android:exported="false"
android:launchMode="singleTop"
android:launchMode="singleTask"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity
......
......@@ -8,7 +8,7 @@ data class DocumentBean(
var type: String = "",
var isBookmarked: Boolean = false,
) {
var uiType: Int = 0//0首页模式 1合并选择模式 2拆分模式 3解锁加锁模式
var uiType: Int = 0//0首页模式 1合并选择模式 2拆分模式 3解锁加锁模式 4搜索模式
var isSelect: Boolean = false
var state: Int = -1//0正常状态 1 锁定
......
......@@ -141,13 +141,23 @@ class DocumentAdapter : BaseQuickAdapter<DocumentBean, DocumentAdapter.DocumentV
itemClick?.invoke(item)
}
}
4 -> {
binding.flBookmark.visibility = View.GONE
binding.flMore.setOnClickListener {
moreAction?.invoke(item)
}
binding.root.setOnClickListener {
itemClick?.invoke(item)
}
}
}
}
private fun checkPwd(item: DocumentBean, iv: ImageView) {
threadPoolExecutor.execute {
item.state = PdfBoxUtils.checkPdfEncryption(item.path)
LogEx.logDebug(TAG, "${item.state}")
LogEx.logDebug(TAG, "checkPwd ${item.state}")
var res = R.mipmap.h_pdfiocn
when (item.state) {
0 -> res = R.mipmap.h_pdfiocn
......
package com.base.pdfviewerscannerwhite.ui.main
import android.annotation.SuppressLint
import android.app.Activity
import android.app.Dialog
import android.content.Context
import android.content.Intent
import androidx.core.content.ContentProviderCompat.requireContext
import androidx.lifecycle.lifecycleScope
import com.base.pdfviewerscannerwhite.bean.DocumentBean
import com.base.pdfviewerscannerwhite.bean.DocumentBean.Companion.TYPE_EXCEL
......@@ -26,7 +29,7 @@ import java.io.File
class DocumentFragment() : BaseFragment<FragmentDocumentBinding>(), DocumentView {
private var type = TYPE_PDF
var type = TYPE_PDF
private var documentList: ArrayList<DocumentBean> = arrayListOf()
private lateinit var adapter: DocumentAdapter
private lateinit var documentPresenter: DocumentPresenter
......@@ -59,49 +62,23 @@ class DocumentFragment() : BaseFragment<FragmentDocumentBinding>(), DocumentView
documentPresenter.saveBookmarkChange(addRemove, path)
}
adapter.itemClick = { item ->
if (type == TYPE_PDF) {
if (item.state == 0) {
startActivity(Intent(requireContext(), PdfActivity::class.java).apply {
putExtra("path", item.path)
})
}
if (item.state == 1) {
requireContext().showPdfPwdDialog(
state = item.state,
path = item.path,
isCheckPwd = true,
verificationAction = { pwd ->
startActivity(Intent(requireContext(), PdfActivity::class.java).apply {
putExtra("path", item.path)
putExtra("pwd", pwd)
})
})
}
}
if (type == TYPE_WORD) {
WordActivity.wordDocumentBean = item
WordActivity.launchDocViewer(requireActivity(), 3, item.path, -1, 100)
}
if (type == TYPE_EXCEL) {
ExcelActivity.excelDocumentBean = item
ExcelActivity.launchDocViewer(requireActivity(), 3, item.path, -1, 100)
}
if (type == TYPE_PPT) {
PptActivity.pptDocumentBean = item
PptActivity.launchDocViewer(requireActivity(), 3, item.path, -1, 100)
}
requireActivity().jumpDocument(item)
}
adapter.moreAction = { item ->
if (item.type == TYPE_PDF) {
requireContext().showPdfHomeMoreDialog(this, item, adapter, dismissAction = { firstDialog = null })
}
if (item.type == TYPE_WORD || item.type == TYPE_EXCEL || item.type == TYPE_PPT) {
firstDialog = requireContext().showDocumentHomeMoreDialog(item, this)
}
documentMoreAction.invoke(item)
}
binding.rv.adapter = adapter
}
var documentMoreAction: (item: DocumentBean) -> Unit = { item ->
if (item.type == TYPE_PDF) {
requireContext().showPdfHomeMoreDialog(this, item, adapter, dismissAction = { firstDialog = null })
}
if (item.type == TYPE_WORD || item.type == TYPE_EXCEL || item.type == TYPE_PPT) {
firstDialog = requireContext().showDocumentHomeMoreDialog(item, this)
}
}
override fun refreshDocumentRv(documentList: List<DocumentBean>, isRefresh: Boolean) {
if (isRefresh) {
this.documentList.clear()
......@@ -174,6 +151,14 @@ class DocumentFragment() : BaseFragment<FragmentDocumentBinding>(), DocumentView
}
}
@SuppressLint("NotifyDataSetChanged")
fun changItemSelect(select: Boolean) {
adapter.items.forEach {
it.isSelect = select
}
adapter.notifyDataSetChanged()
}
fun getSelectItems(): List<DocumentBean> {
return adapter.items.filter { it.isSelect }
}
......@@ -184,4 +169,49 @@ class DocumentFragment() : BaseFragment<FragmentDocumentBinding>(), DocumentView
}
}
fun getSearchItems(search: String): List<DocumentBean> {
if (isVisible) {
return adapter.items.filter { File(it.path).name.contains(search) }
}
return listOf()
}
companion object {
fun Activity.jumpDocument(item: DocumentBean) {
if (item.type == TYPE_PDF) {
if (item.state == 0) {
startActivity(Intent(this, PdfActivity::class.java).apply {
putExtra("path", item.path)
})
}
if (item.state == 1) {
showPdfPwdDialog(
state = item.state,
path = item.path,
isCheckPwd = true,
verificationAction = { pwd ->
startActivity(Intent(this, PdfActivity::class.java).apply {
putExtra("path", item.path)
putExtra("pwd", pwd)
})
})
}
}
if (item.type == TYPE_WORD) {
WordActivity.wordDocumentBean = item
WordActivity.launchDocViewer(this, 3, item.path, -1, 100)
}
if (item.type == TYPE_EXCEL) {
ExcelActivity.excelDocumentBean = item
ExcelActivity.launchDocViewer(this, 3, item.path, -1, 100)
}
if (item.type == TYPE_PPT) {
PptActivity.pptDocumentBean = item
PptActivity.launchDocViewer(this, 3, item.path, -1, 100)
}
}
}
}
\ No newline at end of file
......@@ -3,10 +3,13 @@ package com.base.pdfviewerscannerwhite.utils
import android.content.Context
import android.content.Intent
import android.net.Uri
import androidx.core.content.ContextCompat.startActivity
import androidx.core.content.FileProvider
import com.base.pdfviewerscannerwhite.bean.DocumentBean
import com.base.pdfviewerscannerwhite.bean.DocumentBean.Companion.TYPE_PDF
import java.io.File
object IntentShareUtils {
fun Context.documentShare(documentBean: DocumentBean) {
......@@ -50,6 +53,7 @@ object IntentShareUtils {
return shareIntent
}
fun shareWordIntent(uri: Uri): Intent {
val shareIntent = Intent().apply {
action = Intent.ACTION_SEND
......@@ -81,4 +85,31 @@ object IntentShareUtils {
return intent
}
fun Context.shareMutDocuments(
type: String, uris: ArrayList<Uri>
) {
var desc = "Share PDF files"
val intent = when (type) {
TYPE_PDF -> {
shareMutPdfIntent(uris)
}
else -> shareMutPdfIntent(uris)
}
val chooserIntent = Intent.createChooser(intent, desc)
startActivity(chooserIntent)
}
fun shareMutPdfIntent(uris: ArrayList<Uri>): Intent {
val shareIntent = Intent().apply {
action = Intent.ACTION_SEND_MULTIPLE
type = "application/pdf"
addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // 授权临时权限
putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris)
}
return shareIntent
}
}
\ No newline at end of file
......@@ -31,6 +31,27 @@
tools:ignore="ContentDescription" />
</FrameLayout>
<EditText
android:imeOptions="actionDone"
android:id="@+id/edit_search"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_marginStart="10dp"
android:layout_marginEnd="20dp"
android:background="@drawable/bg_f8f9fe_10"
android:hint="Enter the file name to search for"
android:paddingHorizontal="18dp"
android:singleLine="true"
android:textColor="@color/black"
android:textColorHint="#B8B9BD"
android:textSize="14sp"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/iv_search"
app:layout_constraintStart_toEndOf="@id/fl_fanhui"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="Autofill,HardcodedText,RtlSymmetry,TextFields" />
<TextView
android:id="@+id/tv_tittle"
android:layout_width="wrap_content"
......@@ -45,65 +66,53 @@
app:layout_constraintTop_toTopOf="parent"
tools:ignore="HardcodedText" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_action"
<ImageView
android:id="@+id/iv_paixu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:src="@mipmap/h_paixu"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/iv_paixu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:src="@mipmap/h_paixu"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/iv_xuanze"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/iv_xuanze"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:src="@mipmap/h_xuanze"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/iv_search"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/iv_search"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:src="@mipmap/h_sousuo"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription" />
app:layout_constraintEnd_toStartOf="@id/iv_xuanze"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/iv_all_selector"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/bg_selector_select"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@id/iv_search"
app:layout_constraintStart_toStartOf="@id/iv_search"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/iv_xuanze"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:src="@mipmap/h_xuanze"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/iv_search"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription" />
</androidx.constraintlayout.widget.ConstraintLayout>
<ImageView
android:id="@+id/iv_search"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:src="@mipmap/h_sousuo"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/iv_all_selector"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/bg_selector_select"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@id/iv_search"
app:layout_constraintStart_toStartOf="@id/iv_search"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription" />
</androidx.constraintlayout.widget.ConstraintLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
......@@ -219,7 +228,6 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/ll_bottom"
android:layout_width="match_parent"
......@@ -437,4 +445,50 @@
</androidx.constraintlayout.widget.ConstraintLayout>
<FrameLayout
android:id="@+id/fl_search"
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="@color/white"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/cl_top">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_search"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_document" />
<LinearLayout
android:id="@+id/ll_empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="60dp"
android:orientation="vertical"
android:visibility="gone"
tools:ignore="UseCompoundDrawables,UselessParent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/empty"
tools:ignore="ContentDescription" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp"
android:text="Empty"
android:textColor="#B1B4B9"
android:textSize="16sp"
tools:ignore="HardcodedText" />
</LinearLayout>
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
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