Commit ab637fc8 authored by wanglei's avatar wanglei

...

parent 25febf49
......@@ -53,6 +53,18 @@ class PdfLoadingActivity : BaseActivity<ActivityPdfLoadingBinding>() {
}
}
DO_MERGE_PDF -> {
progressFinishAction = {
startActivity(Intent(this, PdfActivity::class.java).apply {
putExtra("path", newPath)
})
finish()
}
pdfPresenter.mergePdf(newPath) {
isFinishBoolean = true
}
}
}
startProgress()
......@@ -84,6 +96,7 @@ class PdfLoadingActivity : BaseActivity<ActivityPdfLoadingBinding>() {
const val DO_SPLIT_PDF = "do_split_pdf"
const val DO_SAVE_PDF = "do_save_pdf"
const val DO_MERGE_PDF = "do_merge_pdf"
}
......
package com.base.pdfviewerscannerwhite.ui.document.pdf
import android.content.Intent
import androidx.activity.addCallback
import androidx.recyclerview.widget.ItemTouchHelper
import com.base.pdfviewerscannerwhite.bean.DocumentBean
import com.base.pdfviewerscannerwhite.databinding.ActivityPdfMergeBinding
import com.base.pdfviewerscannerwhite.helper.BaseActivity
import com.base.pdfviewerscannerwhite.ui.document.pdf.PdfLoadingActivity.Companion.DO_MERGE_PDF
import com.base.pdfviewerscannerwhite.ui.view.DialogView.showDocumentRenameDialog
import com.base.pdfviewerscannerwhite.utils.KotlinExt.toFormatTime2
import com.base.pdfviewerscannerwhite.utils.LogEx
class PdfMergeActivity : BaseActivity<ActivityPdfMergeBinding>() {
......@@ -13,10 +17,12 @@ class PdfMergeActivity : BaseActivity<ActivityPdfMergeBinding>() {
override val binding: ActivityPdfMergeBinding by lazy {
ActivityPdfMergeBinding.inflate(layoutInflater)
}
private lateinit var pdfPresenter: PdfPresenter
private lateinit var adapter: PdfMergeAdapter
override fun initView() {
pdfPresenter = PdfPresenter(this)
initAdapter()
}
......@@ -28,13 +34,30 @@ class PdfMergeActivity : BaseActivity<ActivityPdfMergeBinding>() {
binding.flFanhui.setOnClickListener {
onBackPressedDispatcher.onBackPressed()
}
binding.tvAdd.setOnClickListener {
finish()
}
binding.tvBtnNext.setOnClickListener {
showDocumentRenameDialog(name = "Merge_${System.currentTimeMillis().toFormatTime2()}", okAction = { name ->
startActivity(Intent(this, PdfLoadingActivity::class.java).apply {
putExtra("doWhat", DO_MERGE_PDF)
putExtra("newPath", pdfPresenter.createMergePdf(name))
})
})
}
}
private fun initAdapter() {
val callBack = PdfMergeItemTouchHelperCallBack()
val itemTouchHelper = ItemTouchHelper(callBack)
itemTouchHelper.attachToRecyclerView(binding.rv)
adapter = PdfMergeAdapter(itemTouchHelper,callBack)
adapter = PdfMergeAdapter(itemTouchHelper, callBack)
adapter.removeAction = {
mergePdfList.remove(it)
binding.tvBtnNext.isEnabled = mergePdfList.isNotEmpty()
}
binding.rv.adapter = adapter
callBack.changeListOrder = { olderPosition, newPosition ->
......
......@@ -25,6 +25,7 @@ class PdfMergeAdapter(
private val TAG = "PdfMergeAdapter"
var removeAction: ((item: DocumentBean) -> Unit)? = null
inner class PdfMergeViewHolder(view: View) : RecyclerView.ViewHolder(view)
......@@ -36,6 +37,11 @@ class PdfMergeAdapter(
binding.tvName.text = file.name
binding.tvInfo.text = file.lastModified().toFormatTime4() + " " + file.length().toFormatSize()
binding.flClose.setOnClickListener {
remove(item)
removeAction?.invoke(item)
}
binding.ivMove.setOnTouchListener(object : View.OnTouchListener {
override fun onTouch(v: View?, event: MotionEvent?): Boolean {
if (event?.action == MotionEvent.ACTION_DOWN) {
......
package com.base.pdfviewerscannerwhite.ui.document.pdf
import android.content.Context
import android.os.Environment
import com.artifex.mupdfdemo.MuPDFCore
import com.artifex.mupdfdemo.OutlineActivityData
import com.base.pdfviewerscannerwhite.R
import com.base.pdfviewerscannerwhite.bean.DocumentBean
import com.base.pdfviewerscannerwhite.bean.PdfPageBean
import com.base.pdfviewerscannerwhite.ui.document.pdf.PdfMergeActivity.Companion.mergePdfList
import com.base.pdfviewerscannerwhite.utils.LogEx
import com.base.pdfviewerscannerwhite.utils.PdfBoxUtils
import com.tom_roush.pdfbox.io.MemoryUsageSetting
import com.tom_roush.pdfbox.multipdf.PDFMergerUtility
import com.tom_roush.pdfbox.pdmodel.PDDocument
import java.io.File
......@@ -104,4 +111,43 @@ class PdfPresenter(
val newFile = File(newPath)
}
private fun createAppDocumentDir(): File {
val appName = context.resources.getString(R.string.app_name)
val appDir = File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS), appName)
if (!appDir.exists()) {
appDir.mkdirs()
}
return appDir
}
fun createMergePdf(name: String): String {
val appDir = createAppDocumentDir()
val mergeFile = File(appDir, "$name.pdf")
mergeFile.createNewFile()
LogEx.logDebug(TAG, "mergeFile ${mergeFile.absolutePath}")
return mergeFile.absolutePath
}
fun mergePdf(mergePath: String, finishAction: (success: Boolean) -> Unit) = Thread {
var isSuccess: Boolean = false
try {
val mergerUtility = PDFMergerUtility()
mergerUtility.destinationFileName = mergePath
PdfMergeActivity.mergePdfList.forEach { documentBean ->
mergerUtility.addSource(File(documentBean.path))
}
mergerUtility.mergeDocuments(null)
mergePdfList.clear()
LogEx.logDebug(TAG, "mergePdf finish")
isSuccess = true
} catch (e: Exception) {
}
finishAction.invoke(isSuccess)
}.start()
}
\ No newline at end of file
......@@ -33,7 +33,10 @@ class PdfSelectActivity : BaseActivity<ActivityPdfSelectBinding>(), DocumentView
binding.tvBtnNext.setOnClickListener {
val selectList = adapter.items.filter { it.isSelect }
PdfMergeActivity.mergePdfList.clear()
PdfMergeActivity.mergePdfList.addAll(selectList)
startActivity(Intent(this, PdfMergeActivity::class.java))
}
}
......
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