Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@ internal class ExternalCredentialScanOcrFragment : Fragment(R.layout.fragment_ex
instructionsText.text = getString(IDR.string.mfid_scan_instructions, documentTypeText)
instructionsText.setTextColor(ContextCompat.getColor(requireContext(), IDR.color.simprints_text_white))
documentScannerArea.isVisible = true
progressContainer.isVisible = false
progressContainer.isInvisible = true
buttonScan.isVisible = true
buttonScan.setOnClickListener {
viewModel.ocrStarted()
Expand All @@ -238,7 +238,7 @@ internal class ExternalCredentialScanOcrFragment : Fragment(R.layout.fragment_ex
private fun renderNoPermission(shouldOpenPhoneSettings: Boolean) {
with(binding) {
instructionsText.isVisible = false
progressContainer.isVisible = false
progressContainer.isInvisible = true
documentScannerArea.isInvisible = true
buttonScan.isVisible = false
val documentTypeText = viewModel.getDocumentTypeRes().run(::getString)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,13 +69,18 @@ class DocumentScanMaskView @JvmOverloads constructor(
(parent as ViewGroup).findViewById<View>(targetViewId)?.let { targetView ->
canvas.drawRect(0f, 0f, width.toFloat(), height.toFloat(), bgPaint)

// Calculating target view position relative to this view
rect.setEmpty()
targetView.getGlobalVisibleRect(rect)
val offset = IntArray(2)
getLocationOnScreen(offset)
rect.offset(-offset[0], -offset[1])
// // Calculating target view position relative to this view
val targetLocation = IntArray(2)
val maskLocation = IntArray(2)
targetView.getLocationInWindow(targetLocation)
getLocationInWindow(maskLocation)

rect.set(
targetLocation[0] - maskLocation[0],
targetLocation[1] - maskLocation[1],
targetLocation[0] - maskLocation[0] + targetView.width,
targetLocation[1] - maskLocation[1] + targetView.height,
)
// Apply inset if specified. This might be useful for QR scanners to create sense of depth
insetValue?.let { inset ->
val insetInt = inset.toInt()
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">

<androidx.camera.view.PreviewView
android:id="@+id/preview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitCenter"
tools:background="@tools:sample/backgrounds/scenic" />

<com.simprints.feature.externalcredential.view.DocumentScanMaskView
android:id="@+id/viewfinderMask"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:alpha="0.5"
android:clickable="false"
android:focusable="false"
app:cornerRadius="16dp"
app:maskColor="@color/simprints_black"
app:targetViewId="@+id/documentScannerArea"
tools:visibility="visible" />

<TextView
android:id="@+id/instructionsText"
style="@style/Text.Headline5.White"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginHorizontal="@dimen/padding_default"
android:visibility="gone"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@+id/documentScannerArea"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
tools:text="Place document code in window"
tools:visibility="visible" />

<View
android:id="@+id/documentScannerArea"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="@dimen/margin_large"
android:background="@drawable/viewfinder_border"
android:visibility="invisible"
app:layout_constraintBottom_toTopOf="@+id/progressContainer"
app:layout_constraintDimensionRatio="16:10"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/instructionsText"
tools:visibility="visible" />

<LinearLayout
android:id="@+id/progressContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingHorizontal="@dimen/padding_default"
android:layout_marginBottom="@dimen/margin_large"
android:visibility="invisible"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
tools:visibility="visible">

<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">

<com.google.android.material.progressindicator.LinearProgressIndicator
android:id="@+id/progressBar"
style="@style/Widget.Simprints.LinearProgressIndicator.Blue.Large"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/connect_title"
tools:progress="43" />

<ImageView
android:id="@+id/iconScanComplete"
android:layout_width="36dp"
android:layout_height="36dp"
android:alpha="0"
tools:alpha="1"
android:layout_gravity="center"
android:importantForAccessibility="no"
android:src="@drawable/ic_checked_green_large"/>
</FrameLayout>

<TextView
android:id="@+id/scanInstructions"
style="@style/Text.Body1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:paddingTop="@dimen/padding_default"
android:text="@string/mfid_ocr_progress_title" />

</LinearLayout>

<com.simprints.infra.view.PermissionRequestView
android:id="@+id/permissionRequestView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="@dimen/margin_large"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:visibility="gone" />

<Button
android:id="@+id/buttonScan"
style="@style/Widget.Simprints.Button.Blue"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:text="@string/face_capture_start_capture"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
tools:visibility="visible" />

</androidx.constraintlayout.widget.ConstraintLayout>
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">

<androidx.camera.view.PreviewView
android:id="@+id/qrScannerPreview"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:visibility="gone" />

<com.simprints.feature.externalcredential.view.DocumentScanMaskView
android:id="@+id/viewfinderMask"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:alpha="0.5"
android:clickable="false"
android:focusable="false"
app:inset="8dp"
app:maskColor="@color/simprints_black"
app:targetViewId="@+id/qrScannerArea"
tools:visibility="visible" />

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical"
app:layout_constraintBottom_toTopOf="@+id/buttonScan"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">

<TextView
android:id="@+id/qrInstructionsText"
style="@style/Text.Headline5.White"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/padding_default"
tools:text="Place QR code in window" />

<ImageView
android:id="@+id/qrScannerArea"
android:layout_width="200dp"
android:layout_height="200dp"
android:importantForAccessibility="no"
android:src="@drawable/ic_camera_focus_blue" />

<com.google.android.material.card.MaterialCardView
android:id="@+id/qrPreviewCard"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="16dp"
android:visibility="gone"
app:cardBackgroundColor="@color/simprints_blue"
app:cardUseCompatPadding="true"
tools:visibility="visible">

<TextView
android:id="@+id/qrPreviewText"
android:gravity="center"
style="@style/Text.Body1.White"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="8dp"
tools:text="QR_CODE" />
</com.google.android.material.card.MaterialCardView>
</LinearLayout>

<Button
android:id="@+id/buttonScan"
style="@style/Widget.Simprints.Button.Blue"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:layout_marginBottom="16dp"
android:enabled="false"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
tools:text="No QR code detected" />

<com.simprints.infra.view.PermissionRequestView
android:id="@+id/permissionRequestView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="@dimen/margin_large"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:visibility="gone" />
</androidx.constraintlayout.widget.ConstraintLayout>
Loading