diff --git a/app/src/main/java/com/isolaatti/images/image_maker/presentation/ImageMakerViewModel.kt b/app/src/main/java/com/isolaatti/images/image_maker/presentation/ImageMakerViewModel.kt
index 557fbca..ed35efe 100644
--- a/app/src/main/java/com/isolaatti/images/image_maker/presentation/ImageMakerViewModel.kt
+++ b/app/src/main/java/com/isolaatti/images/image_maker/presentation/ImageMakerViewModel.kt
@@ -25,7 +25,7 @@ class ImageMakerViewModel @Inject constructor(private val imagesRepository: Imag
return
}
viewModelScope.launch {
- imagesRepository.uploadImage(name!!, imageUri!!, null).onEach {
+ imagesRepository.uploadImage(name!!.trim(), imageUri!!, null).onEach {
image.postValue(it)
}.flowOn(Dispatchers.IO).launchIn(this)
}
diff --git a/app/src/main/java/com/isolaatti/images/image_maker/ui/ImageMakerActivity.kt b/app/src/main/java/com/isolaatti/images/image_maker/ui/ImageMakerActivity.kt
index dbf88cd..1edf802 100644
--- a/app/src/main/java/com/isolaatti/images/image_maker/ui/ImageMakerActivity.kt
+++ b/app/src/main/java/com/isolaatti/images/image_maker/ui/ImageMakerActivity.kt
@@ -4,9 +4,11 @@ import android.app.Activity
import android.content.Intent
import android.os.Bundle
import android.view.View
+import androidx.activity.OnBackPressedCallback
import androidx.activity.viewModels
import androidx.core.widget.doOnTextChanged
import coil.load
+import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.isolaatti.R
import com.isolaatti.common.IsolaattiBaseActivity
import com.isolaatti.databinding.ActivityImageMakerBinding
@@ -25,24 +27,36 @@ class ImageMakerActivity : IsolaattiBaseActivity() {
setContentView(binding.root)
viewModel.imageUri = intent.data
binding.imagePreview.load(intent.data)
-
+ onBackPressedDispatcher.addCallback(onBackPressedCallback)
setupListeners()
setupObservers()
}
+ private val onBackPressedCallback = object: OnBackPressedCallback(true) {
+ override fun handleOnBackPressed() {
+ showExitConfirmationDialog()
+ }
+ }
+
+ private fun showExitConfirmationDialog() {
+ MaterialAlertDialogBuilder(this)
+ .setTitle(R.string.discard_image)
+ .setPositiveButton(R.string.yes_discard_image) {_, _ ->
+ finish()
+ }.setNegativeButton(R.string.no, null)
+ .show()
+ }
+
private fun setupListeners() {
- binding.materialToolbar.setOnMenuItemClickListener {
- when(it.itemId) {
- R.id.upload_picture_item -> {
- viewModel.uploadPicture()
- true
- }
- else -> false
- }
+ binding.uploadPhotoFab.setOnClickListener {
+ viewModel.uploadPicture()
}
binding.textImageName.editText?.doOnTextChanged { text, _, _, _ ->
viewModel.name = text.toString()
}
+ binding.toolbar.setNavigationOnClickListener {
+ showExitConfirmationDialog()
+ }
}
private fun setupObservers() {
@@ -50,9 +64,12 @@ class ImageMakerActivity : IsolaattiBaseActivity() {
when(it) {
is Resource.Error -> {
errorViewModel.error.value = it.errorType
+ binding.progressBarLoading.visibility = View.GONE
+ binding.textImageName.isEnabled = true
}
is Resource.Loading -> {
binding.progressBarLoading.visibility = View.VISIBLE
+ binding.textImageName.isEnabled = false
}
is Resource.Success -> {
binding.progressBarLoading.visibility = View.GONE
diff --git a/app/src/main/res/layout/activity_image_maker.xml b/app/src/main/res/layout/activity_image_maker.xml
index 54a8cd3..3216ffc 100644
--- a/app/src/main/res/layout/activity_image_maker.xml
+++ b/app/src/main/res/layout/activity_image_maker.xml
@@ -4,58 +4,73 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
-
+ app:navigationIcon="@drawable/baseline_close_24"
+ android:background="@color/translucent_purple"
+ app:title="@string/upload_photo"
+ android:translationZ="2dp"/>
-
+
+
-
-
-
-
-
+ android:background="@color/translucent_purple"
+ android:translationZ="2dp">
+
+
+
+
+
+
+
+
+
+
+
-
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 7355806..751fc93 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -122,4 +122,6 @@
Images selected: %d
Picture name
Audio options
+ Yes, discard image
+ Discard image?
\ No newline at end of file