-
Notifications
You must be signed in to change notification settings - Fork 47
Expand file tree
/
Copy pathMRZDialogFragment.kt
More file actions
77 lines (61 loc) · 2.55 KB
/
Copy pathMRZDialogFragment.kt
File metadata and controls
77 lines (61 loc) · 2.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
package io.scanbot.example.fragments
import android.annotation.SuppressLint
import android.app.Dialog
import android.content.ClipData
import android.content.ClipboardManager
import android.content.Context
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.appcompat.app.AlertDialog
import io.scanbot.example.R
import io.scanbot.sdk.genericdocument.entity.*
class MRZDialogFragment : androidx.fragment.app.DialogFragment() {
companion object {
const val MRZ_DATA = "MRZ_DATA"
const val NAME = "MRZDialogFragment"
@JvmStatic
fun newInstance(data: GenericDocument?): MRZDialogFragment {
val frag = MRZDialogFragment()
val args = Bundle()
args.putParcelable(MRZ_DATA, data)
frag.arguments = args
return frag
}
}
private var mrzGenericDocument: GenericDocument? = null
private fun addContentView(inflater: LayoutInflater, container: ViewGroup?): View? {
mrzGenericDocument = requireArguments().getParcelable(MRZ_DATA)
val view = inflater.inflate(R.layout.fragment_mrz_dialog, container)
view.findViewById<TextView>(R.id.tv_data).text = extractData(mrzGenericDocument!!)
return view
}
@SuppressLint("InflateParams")
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val builder = AlertDialog.Builder(this.requireActivity())
val inflater = LayoutInflater.from(activity)
val contentContainer = inflater.inflate(R.layout.holo_dialog_frame, null, false) as ViewGroup
addContentView(inflater, contentContainer)
builder.setView(contentContainer)
builder.setPositiveButton(getString(R.string.cancel_dialog_button)) { _, _ ->
dismiss()
}
builder.setNegativeButton(R.string.copy_dialog_button) { _, _ ->
val clipboard = context?.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
if (mrzGenericDocument != null) {
val data = extractData(mrzGenericDocument!!)
val clip = ClipData.newPlainText(data, data)
clipboard.setPrimaryClip(clip)
}
dismiss()
}
val dialog = builder.create()
dialog.setCanceledOnTouchOutside(true)
return dialog
}
private fun extractData(document: GenericDocument?): String {
return document?.fields?.joinToString("\n") { "${it.type.name}: ${it.value?.text}" } ?: ""
}
}