diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a387f240d4897bad1225b51cc879cf950fec9711..ec8ef999956ea013c16cd9e8db87ac35ace976b5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -27,6 +27,7 @@ </activity> <activity android:name=".activities.ExpandImageActivity" /> <activity android:name=".activities.CameraActivity" /> + <activity android:name=".activities.PreviewActivity" /> <meta-data android:name="preloaded_fonts" android:resource="@array/preloaded_fonts" /> diff --git a/app/src/main/java/com/k2_9/omrekap/activities/CameraActivity.kt b/app/src/main/java/com/k2_9/omrekap/activities/CameraActivity.kt index 0c46d012561c781b3ed9b47cb39b586879ce01af..5df0e052a49031f73b90df037ca625094b317186 100644 --- a/app/src/main/java/com/k2_9/omrekap/activities/CameraActivity.kt +++ b/app/src/main/java/com/k2_9/omrekap/activities/CameraActivity.kt @@ -167,12 +167,11 @@ class CameraActivity : AppCompatActivity() { // send URI to MainActivity startActivity( - Intent(this, MainActivity::class.java) + Intent(this, PreviewActivity::class.java) .putExtra(MainActivity.EXTRA_NAME_IMAGE_URI_STRING, uri.toString()) .putExtra(MainActivity.EXTRA_NAME_IS_RESULT, true) .putExtra(MainActivity.EXTRA_NAME_IS_FROM_CAMERA, true) - .putExtra(MainActivity.EXTRA_NAME_IS_RESET, true) - .addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT or Intent.FLAG_ACTIVITY_SINGLE_TOP), + .putExtra(MainActivity.EXTRA_NAME_IS_RESET, true), ) } diff --git a/app/src/main/java/com/k2_9/omrekap/activities/MainActivity.kt b/app/src/main/java/com/k2_9/omrekap/activities/MainActivity.kt index 91024e411374cc6aa1c6acd05f4cbf92faa0805d..dac21913d9d15f84deed6e15f0e9f580e8a15337 100644 --- a/app/src/main/java/com/k2_9/omrekap/activities/MainActivity.kt +++ b/app/src/main/java/com/k2_9/omrekap/activities/MainActivity.kt @@ -61,25 +61,25 @@ class MainActivity : AppCompatActivity() { pickImage.launch(intent) } - private val pickImage = registerForActivityResult( - ActivityResultContracts.StartActivityForResult() - ) { result: ActivityResult -> - if (result.resultCode == RESULT_OK) { - val data: Intent? = result.data - val imageUri: Uri? = data?.data - - if (imageUri != null) { - val intent = Intent(this, MainActivity::class.java) - - intent.putExtra(EXTRA_NAME_IS_RESULT, true) - intent.putExtra(EXTRA_NAME_IS_RESET, true) - intent.putExtra(EXTRA_NAME_IS_FROM_CAMERA, false) - intent.putExtra(EXTRA_NAME_IMAGE_URI_STRING, imageUri.toString()) - - startActivity(intent) + private val pickImage = + registerForActivityResult( + ActivityResultContracts.StartActivityForResult(), + ) { result: ActivityResult -> + if (result.resultCode == RESULT_OK) { + val data: Intent? = result.data + val imageUri: Uri? = data?.data + + if (imageUri != null) { + val intent = Intent(this, PreviewActivity::class.java) + + intent.putExtra(EXTRA_NAME_IS_RESULT, true) + intent.putExtra(EXTRA_NAME_IS_RESET, true) + intent.putExtra(EXTRA_NAME_IS_FROM_CAMERA, false) + intent.putExtra(EXTRA_NAME_IMAGE_URI_STRING, imageUri.toString()) + startActivity(intent) + } } } - } private fun requirePermission( permission: String, @@ -193,6 +193,8 @@ class MainActivity : AppCompatActivity() { override fun onNewIntent(intent: Intent?) { super.onNewIntent(intent) + // Important assumption: home page is always below result page in the activity stack + if (intent != null) { if (isCreated && (isResult.xor(intent.getBooleanExtra(EXTRA_NAME_IS_RESULT, false)))) { // wrong activity reused, restarting the new intent and finishing this activity diff --git a/app/src/main/java/com/k2_9/omrekap/activities/PreviewActivity.kt b/app/src/main/java/com/k2_9/omrekap/activities/PreviewActivity.kt new file mode 100644 index 0000000000000000000000000000000000000000..aceac03c15e6a4a329a0122bdccd16fe0578d325 --- /dev/null +++ b/app/src/main/java/com/k2_9/omrekap/activities/PreviewActivity.kt @@ -0,0 +1,56 @@ +package com.k2_9.omrekap.activities + +import android.content.Intent +import android.net.Uri +import android.os.Bundle +import android.widget.ImageButton +import androidx.appcompat.app.AppCompatActivity +import com.github.chrisbanes.photoview.PhotoView +import com.k2_9.omrekap.R + +class PreviewActivity : AppCompatActivity() { + private var imageUriString: String? = null + private var isFromCamera: Boolean = false + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_preview) + + // display photo + val photoView: PhotoView = findViewById(R.id.preview_content) + + imageUriString = intent.getStringExtra(MainActivity.EXTRA_NAME_IMAGE_URI_STRING) + isFromCamera = intent.getBooleanExtra(MainActivity.EXTRA_NAME_IS_FROM_CAMERA, false) + + if (imageUriString == null) { + throw IllegalArgumentException("Image URI string is null") + } + + photoView.setImageURI(Uri.parse(imageUriString)) + + // set buttons action + val acceptButton = findViewById<ImageButton>(R.id.accept_preview_button) + val rejectButton = findViewById<ImageButton>(R.id.reject_preview_button) + + acceptButton.setOnClickListener { + val newIntent = Intent(this, MainActivity::class.java) + + intent.extras?.let { extras -> + newIntent.putExtras(extras) + } + + if (isFromCamera) { + newIntent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT or Intent.FLAG_ACTIVITY_SINGLE_TOP) + } else { + newIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP) + } + + finish() + startActivity(newIntent) + } + + rejectButton.setOnClickListener { + finish() + } + } +} diff --git a/app/src/main/res/drawable/ic_check.xml b/app/src/main/res/drawable/ic_check.xml new file mode 100644 index 0000000000000000000000000000000000000000..6283bb40c1e5eecab26b42cb3ea580d14fef9810 --- /dev/null +++ b/app/src/main/res/drawable/ic_check.xml @@ -0,0 +1,13 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M5,12l5,5l10,-10" + android:strokeLineJoin="round" + android:strokeWidth="2" + android:fillColor="#00000000" + android:strokeColor="@color/white" + android:strokeLineCap="round"/> +</vector> diff --git a/app/src/main/res/drawable/ic_x.xml b/app/src/main/res/drawable/ic_x.xml new file mode 100644 index 0000000000000000000000000000000000000000..9029a287cc797163ec3596336d6c17f387ab7646 --- /dev/null +++ b/app/src/main/res/drawable/ic_x.xml @@ -0,0 +1,20 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M18,6l-12,12" + android:strokeLineJoin="round" + android:strokeWidth="2" + android:fillColor="#00000000" + android:strokeColor="@color/white" + android:strokeLineCap="round"/> + <path + android:pathData="M6,6l12,12" + android:strokeLineJoin="round" + android:strokeWidth="2" + android:fillColor="#00000000" + android:strokeColor="@color/white" + android:strokeLineCap="round"/> +</vector> diff --git a/app/src/main/res/layout/activity_camera.xml b/app/src/main/res/layout/activity_camera.xml index 6ce9b93c571ad0474677b81e9f0fe60c3338f92d..c50acf38fb6eb74944f8f811d43717eeb73d5ed2 100644 --- a/app/src/main/res/layout/activity_camera.xml +++ b/app/src/main/res/layout/activity_camera.xml @@ -4,7 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="#000000"> + android:background="@color/black"> <androidx.constraintlayout.widget.ConstraintLayout android:id="@+id/camera_image_layout" diff --git a/app/src/main/res/layout/activity_preview.xml b/app/src/main/res/layout/activity_preview.xml new file mode 100644 index 0000000000000000000000000000000000000000..9bb9a82019712bf57500e7dad22ad1c03561f1c9 --- /dev/null +++ b/app/src/main/res/layout/activity_preview.xml @@ -0,0 +1,49 @@ +<?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" + android:background="@color/black" + tools:context=".activities.ExpandImageActivity"> + + <com.github.chrisbanes.photoview.PhotoView + android:id="@+id/preview_content" + android:layout_width="0dp" + android:layout_height="0dp" + android:scaleType="fitCenter" + android:layout_marginTop="59dp" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintRight_toRightOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintDimensionRatio="@string/ratio_image" /> + + <ImageButton + android:id="@+id/accept_preview_button" + android:theme="@style/ThemeOverlay.Omrekap.PreviewPageButtonRoundbackground" + android:layout_width="63dp" + android:layout_height="63dp" + android:background="@drawable/bg_round" + android:contentDescription="@string/desc_accept_preview" + android:layout_marginRight="@dimen/margin_horizontal_preview_button" + android:src="@drawable/ic_check" + app:tint="@color/acceptPreviewButton" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintRight_toRightOf="parent" + app:layout_constraintTop_toBottomOf="@id/preview_content"/> + <ImageButton + android:id="@+id/reject_preview_button" + android:theme="@style/ThemeOverlay.Omrekap.PreviewPageButtonRoundbackground" + android:layout_width="63dp" + android:layout_height="63dp" + android:background="@drawable/bg_round" + android:contentDescription="@string/desc_reject_preview" + android:layout_marginLeft="@dimen/margin_horizontal_preview_button" + android:src="@drawable/ic_x" + app:tint="@color/rejectPreviewButton" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintTop_toBottomOf="@id/preview_content"/> + +</androidx.constraintlayout.widget.ConstraintLayout> diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 8a9cada7e14cec3842acb1f46a726c7b76b3f41a..8dcda9abf7e7ad89ed7490d01c720754dcc607bb 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -12,4 +12,6 @@ <color name="backgroundExpandButton">#11FFFFFF</color> <color name="white_opacity_16">#80FFFFFF</color> <color name="white_opacity_0">#00FFFFFF</color> + <color name="acceptPreviewButton">#00FF00</color> + <color name="rejectPreviewButton">#FF0000</color> </resources> diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 045e125f3d8dad8668061d471dd9869e29e4713a..405cccda97c9ba7fdf006cf3769dad52894e7d48 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -1,3 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> <resources> + <dimen name="margin_horizontal_preview_button">50dp</dimen> </resources> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 783c23ca787cb6cf18850d4bdfe23fac1795a505..e93284ccafd1838b645c8ecb336de1c24bff911f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -10,4 +10,7 @@ <string name="ratio_image">3:4</string> <string name="ratio_square">1:1</string> <string name="img_omr_description">OMR Illustration</string> + <string name="title_activity_preview">PreviewActivity</string> + <string name="desc_accept_preview">accept preview</string> + <string name="desc_reject_preview">reject preview</string> </resources> diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 0b4f70750de71292df97c7864eb2e12a294dae4f..6b5be61a744bea97bedf6711e9ee3043c08c420b 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -17,6 +17,11 @@ <item name="RoundBackgroundColor">@color/backgroundExpandButton</item> </style> + <style name="ThemeOverlay.Omrekap.PreviewPageButtonRoundbackground" parent=""> + <item name="RoundBackgroundRadius">100dp</item> + <item name="RoundBackgroundColor">@color/white</item> + </style> + <style name="TextAppearance.Heading1" parent="@android:style/TextAppearance"> <item name="android:textSize">30sp</item> <item name="android:fontFamily">@font/inter_bold</item>