diff --git a/app/src/main/java/com/pbd/psi/ui/scan/ScanFragment.kt b/app/src/main/java/com/pbd/psi/ui/scan/ScanFragment.kt index f34f6ec8913a7ca3854fa2bae9eb437ad3d4ec77..b190738136af2a772e7357e5ee0d263b67de59ca 100644 --- a/app/src/main/java/com/pbd/psi/ui/scan/ScanFragment.kt +++ b/app/src/main/java/com/pbd/psi/ui/scan/ScanFragment.kt @@ -2,14 +2,11 @@ package com.pbd.psi.ui.scan import android.Manifest import android.app.Activity -import android.app.AlertDialog import android.content.Intent import android.graphics.BitmapFactory import android.graphics.drawable.BitmapDrawable import android.net.Uri import android.os.Bundle -import android.os.Handler -import android.os.Looper import android.provider.MediaStore import android.util.Log import android.view.LayoutInflater @@ -22,6 +19,7 @@ import androidx.camera.core.ImageCapture import androidx.camera.core.Preview import androidx.camera.lifecycle.ProcessCameraProvider import androidx.core.content.ContextCompat +import androidx.core.view.isVisible import androidx.fragment.app.Fragment import com.pbd.psi.databinding.FragmentScanBinding @@ -65,6 +63,8 @@ class ScanFragment : Fragment() { permissionLauncher.launch(Manifest.permission.CAMERA) imageCapture = ImageCapture.Builder().build() + binding.sendButton?.isVisible = false + binding.retakeButton?.isVisible = false binding.scanButton?.setOnClickListener { previewMask() @@ -74,6 +74,10 @@ class ScanFragment : Fragment() { openFileExplorer() } + binding.retakeButton?.setOnClickListener{ + previewMask() + } + return root } @@ -86,6 +90,7 @@ class ScanFragment : Fragment() { val preview = Preview.Builder().build().also { mPreview -> if (!previewFrozen) { + binding.scanView?.foreground = null mPreview.setSurfaceProvider(binding.scanView?.surfaceProvider) } else { mPreview.setSurfaceProvider(null) @@ -106,29 +111,19 @@ class ScanFragment : Fragment() { } private fun previewMask() { - binding.scanButton?.isEnabled = false previewFrozen = !previewFrozen + if (!previewFrozen) { + binding.scanButton?.isVisible= true + binding.uploadImage?.isVisible = true + binding.sendButton?.isVisible = false + binding.retakeButton?.isVisible = false + } else { + binding.scanButton?.isVisible= false + binding.uploadImage?.isVisible = false + binding.sendButton?.isVisible = true + binding.retakeButton?.isVisible = true + } startCamera() - - Handler(Looper.getMainLooper()).postDelayed({ - // TO DO: Add modal - val builder: AlertDialog.Builder = AlertDialog.Builder(context) - builder - .setMessage("Do you want to retake the picture?") - .setPositiveButton("Yes") { dialog, which -> - dialog.dismiss() - binding.scanButton?.isEnabled = true - previewFrozen = !previewFrozen - startCamera() - } - .setNegativeButton("No") { dialog, which -> - // TO DO : send a froze preview to the server as img form data - dialog.dismiss() - } - - val dialog: AlertDialog = builder.create() - dialog.show() - }, 1000) } private fun openFileExplorer() { @@ -142,7 +137,8 @@ class ScanFragment : Fragment() { val bitmap = BitmapFactory.decodeStream(inputStream) if (bitmap != null) { val drawable = BitmapDrawable(resources, bitmap) - binding.scanView?.background = drawable + binding.scanView?.foreground = drawable + previewMask() } else { Toast.makeText(requireContext(), "Failed to decode image", Toast.LENGTH_SHORT).show() Log.e("ScanFragment", "Failed to decode image") diff --git a/app/src/main/res/drawable/retake_scan.png b/app/src/main/res/drawable/retake_scan.png new file mode 100644 index 0000000000000000000000000000000000000000..d263141eeb9f84a4a7d68df0842a8ea18c92a9d0 Binary files /dev/null and b/app/src/main/res/drawable/retake_scan.png differ diff --git a/app/src/main/res/drawable/send_button.png b/app/src/main/res/drawable/send_button.png new file mode 100644 index 0000000000000000000000000000000000000000..e7550f144d01931c7a1aa1f0408d0893bc42174e Binary files /dev/null and b/app/src/main/res/drawable/send_button.png differ diff --git a/app/src/main/res/layout-land/fragment_scan.xml b/app/src/main/res/layout-land/fragment_scan.xml index 5b2efcc6216b43bf75aa9283bdb991bb63b97f5f..0893064ba83ed7abcbb086b5c75d7d0ae6ee2e47 100644 --- a/app/src/main/res/layout-land/fragment_scan.xml +++ b/app/src/main/res/layout-land/fragment_scan.xml @@ -52,23 +52,47 @@ android:layout_width="50dip" android:layout_height="50dip" android:contentDescription="@string/upload_image" + app:layout_constraintStart_toEndOf="@id/scan_button" + app:layout_constraintTop_toBottomOf="@+id/guideline"/> + + <ImageButton + android:id="@+id/scan_button" + android:layout_marginVertical="20dp" + android:layout_marginStart="10dp" + android:fontFamily="@font/montserrat" + android:gravity="center_horizontal" + android:background="@drawable/scan_button" + android:layout_width="50dip" + android:layout_height="50dip" + android:contentDescription="@string/upload_image" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/guideline"/> - <TextView - android:id="@+id/scan_description" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="20dp" + <ImageButton + android:id="@+id/retake_button" + android:layout_marginVertical="20dp" android:layout_marginEnd="10dp" android:fontFamily="@font/montserrat" android:gravity="center_horizontal" - android:textSize="15sp" - android:textColor="@color/white" - android:textStyle="normal" + android:background="@drawable/retake_scan" + android:layout_width="50dip" + android:layout_height="50dip" + android:contentDescription="@string/upload_image" + app:layout_constraintEnd_toStartOf="@id/send_button" + app:layout_constraintTop_toBottomOf="@+id/guideline"/> + + <ImageButton + android:id="@+id/send_button" + android:layout_marginVertical="20dp" + android:layout_marginEnd="10dp" + android:fontFamily="@font/montserrat" + android:gravity="center_horizontal" + android:background="@drawable/send_button" + android:layout_width="50dip" + android:layout_height="50dip" + android:contentDescription="@string/upload_image" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toBottomOf="@+id/guideline" - tools:text="@string/error_scan"/> + app:layout_constraintTop_toBottomOf="@+id/guideline"/> <FrameLayout android:id="@+id/frame_layout_camera" diff --git a/app/src/main/res/layout/fragment_scan.xml b/app/src/main/res/layout/fragment_scan.xml index 4c64d8b9e6a4fc27928dbf6257423abc60061c28..6cf56fc8d84369c1b1748359ca9cff81e4402aef 100644 --- a/app/src/main/res/layout/fragment_scan.xml +++ b/app/src/main/res/layout/fragment_scan.xml @@ -68,20 +68,31 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/guideline"/> - <TextView - android:id="@+id/scan_description" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="20dp" + <ImageButton + android:id="@+id/retake_button" + android:layout_marginVertical="20dp" + android:layout_marginEnd="10dp" + android:fontFamily="@font/montserrat" + android:gravity="center_horizontal" + android:background="@drawable/retake_scan" + android:layout_width="50dip" + android:layout_height="50dip" + android:contentDescription="@string/upload_image" + app:layout_constraintEnd_toStartOf="@id/send_button" + app:layout_constraintTop_toBottomOf="@+id/guideline"/> + + <ImageButton + android:id="@+id/send_button" + android:layout_marginVertical="20dp" android:layout_marginEnd="10dp" android:fontFamily="@font/montserrat" android:gravity="center_horizontal" - android:textSize="15sp" - android:textColor="@color/white" - android:textStyle="normal" + android:background="@drawable/send_button" + android:layout_width="50dip" + android:layout_height="50dip" + android:contentDescription="@string/upload_image" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toBottomOf="@+id/guideline" - tools:text="@string/error_scan"/> + app:layout_constraintTop_toBottomOf="@+id/guideline"/> <FrameLayout android:id="@+id/frame_layout_camera"