WIP 2 agregar foto

This commit is contained in:
Erik Everardo 2023-11-22 00:57:18 -06:00
parent a07a323f1d
commit dacba723b0
8 changed files with 121 additions and 3 deletions

View File

@ -36,6 +36,7 @@
<activity android:name=".about.AboutActivity" android:theme="@style/Theme.Isolaatti"/>
<activity android:name=".images.picture_viewer.ui.PictureViewerActivity" android:theme="@style/Theme.Isolaatti"/>
<activity android:name=".sign_up.ui.SignUpActivity" android:theme="@style/Theme.Isolaatti"/>
<activity android:name=".images.image_maker.ui.ImageMakerActivity" android:theme="@style/Theme.Isolaatti"/>
<provider
android:authorities="com.isolaatti.provider"
android:name="androidx.core.content.FileProvider"

View File

@ -21,6 +21,7 @@ import com.isolaatti.databinding.FragmentImagesBinding
import com.isolaatti.images.image_list.domain.entity.Image
import com.isolaatti.images.image_list.presentation.ImageListViewModel
import com.isolaatti.images.image_list.presentation.ImagesAdapter
import com.isolaatti.images.image_maker.ui.ImageMakerContract
import com.isolaatti.images.picture_viewer.ui.PictureViewerActivity
import com.isolaatti.utils.Resource
import dagger.hilt.android.AndroidEntryPoint
@ -40,12 +41,19 @@ class ImagesFragment : Fragment() {
PictureViewerActivity.startActivityWithImages(requireContext(), images.toTypedArray(), position)
}
private val imageMakerLauncher = registerForActivityResult(ImageMakerContract()) {
}
private val choosePictureLauncher = registerForActivityResult(ActivityResultContracts.PickVisualMedia()) {
// use uri
imageMakerLauncher.launch(it)
}
private val takePhotoLauncher = registerForActivityResult(ActivityResultContracts.TakePicture()) {
// use cameraPhotoUri if success
if(it && cameraPhotoUri != null) {
imageMakerLauncher.launch(cameraPhotoUri)
}
}
private fun makePhotoUri(): Uri {

View File

@ -0,0 +1,9 @@
package com.isolaatti.images.image_maker.presentation
import androidx.lifecycle.ViewModel
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject
@HiltViewModel
class ImageMakerViewModel @Inject constructor() : ViewModel() {
}

View File

@ -0,0 +1,21 @@
package com.isolaatti.images.image_maker.ui
import android.os.Bundle
import coil.load
import com.isolaatti.common.IsolaattiBaseActivity
import com.isolaatti.databinding.ActivityImageMakerBinding
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
class ImageMakerActivity : IsolaattiBaseActivity() {
private lateinit var binding: ActivityImageMakerBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityImageMakerBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.imagePreview.load(intent.data)
}
}

View File

@ -0,0 +1,20 @@
package com.isolaatti.images.image_maker.ui
import android.content.Context
import android.content.Intent
import android.net.Uri
import androidx.activity.result.contract.ActivityResultContract
import com.isolaatti.images.image_list.domain.entity.Image
class ImageMakerContract : ActivityResultContract<Uri, Image?>() {
override fun createIntent(context: Context, input: Uri): Intent {
val intent = Intent(context, ImageMakerActivity::class.java)
intent.data = input
return intent
}
override fun parseResult(resultCode: Int, intent: Intent?): Image? {
return null
}
}

View File

@ -1,5 +1,5 @@
<vector android:autoMirrored="true" android:height="24dp"
android:tint="#000000" android:viewportHeight="24"
android:tint="@color/on_surface" android:viewportHeight="24"
android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8 8,8 1.41,-1.41L7.83,13H20v-2z"/>
</vector>

View File

@ -0,0 +1,58 @@
<?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">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/materialToolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:navigationIcon="@drawable/baseline_arrow_back_24"
app:title="@string/upload_a_picture"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/textImageName"
style="?attr/textInputOutlinedStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/materialToolbar">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="match_parent"
android:maxLines="1" />
</com.google.android.material.textfield.TextInputLayout>
<ImageView
android:id="@+id/image_preview"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="32dp"
app:layout_constraintBottom_toTopOf="@+id/postButton"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textImageName" />
<com.google.android.material.button.MaterialButton
android:id="@+id/postButton"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/upload_photo"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -117,4 +117,5 @@
<string name="email_used">Email is in use already</string>
<string name="upload_a_picture">Upload a picture</string>
<string name="take_a_photo">Take a photo</string>
<string name="upload_photo">Upload picture</string>
</resources>