@@ -8,7 +8,6 @@ import android.os.Build
88import android.os.Bundle
99import android.os.Environment
1010import android.provider.Settings
11- import android.util.Log
1211import android.view.View
1312import android.webkit.MimeTypeMap
1413import androidx.activity.result.contract.ActivityResultContracts
@@ -21,7 +20,6 @@ import com.lassi.common.utils.KeyUtils
2120import com.lassi.data.media.MiMedia
2221import com.lassi.domain.media.LassiOption
2322import com.lassi.domain.media.MediaType
24- import com.lassi.domain.media.MultiLangConfig
2523import com.lassi.domain.media.SortingOption
2624import com.lassi.presentation.builder.Lassi
2725import com.lassi.presentation.common.decoration.GridSpacingItemDecoration
@@ -31,9 +29,9 @@ import java.util.Locale
3129
3230class MainActivity : AppCompatActivity (), View.OnClickListener {
3331 private var _binding : ActivityMainBinding ? = null
34- protected val binding get() = _binding !!
32+ private val binding get() = _binding !!
3533 private val selectedMediaAdapter by lazy { SelectedMediaAdapter (this ::onItemClicked) }
36- lateinit var lassi: Lassi
34+ private lateinit var lassi: Lassi
3735
3836 override fun onCreate (savedInstanceState : Bundle ? ) {
3937 super .onCreate(savedInstanceState)
@@ -47,7 +45,9 @@ class MainActivity : AppCompatActivity(), View.OnClickListener {
4745 it.btnImageCapture.setOnClickListener(this )
4846 it.btnVideoCapture.setOnClickListener(this )
4947 it.btnDocumentSystemIntent.setOnClickListener(this )
48+ it.btnPhotoVideoPicker.setOnClickListener(this )
5049 it.btnPhotoPicker.setOnClickListener(this )
50+ it.btnVideoMediaPicker.setOnClickListener(this )
5151 it.rvSelectedMedia.adapter = selectedMediaAdapter
5252 it.rvSelectedMedia.addItemDecoration(GridSpacingItemDecoration (2 , 10 ))
5353 }
@@ -72,13 +72,13 @@ class MainActivity : AppCompatActivity(), View.OnClickListener {
7272 setSortByDateLbl = " Trier par date"
7373 )
7474 }
75- binding.btnPhotoPicker .visibility = View .VISIBLE
75+ binding.btnPhotoVideoPicker .visibility = View .VISIBLE
7676 }
7777
7878 override fun onClick (v : View ? ) {
7979 when (v?.id) {
8080 R .id.btnImagePicker -> {
81- val intent = lassi.with (LassiOption .CAMERA_AND_GALLERY ).setMaxCount(1 )
81+ val intent = lassi.with (LassiOption .CAMERA_AND_GALLERY ).setMaxCount(4 )
8282 .setAscSort(SortingOption .ASCENDING ).setGridSize(2 )
8383 .setMediaType(MediaType .IMAGE )
8484 .setPlaceHolder(R .drawable.ic_image_placeholder)
@@ -94,6 +94,7 @@ class MainActivity : AppCompatActivity(), View.OnClickListener {
9494 .setCropType(CropImageView .CropShape .OVAL ).setCropAspectRatio(1 , 1 )
9595 .setCompressionRatio(10 ).setMinFileSize(0 ).setMaxFileSize(Int .MAX_VALUE .toLong())
9696 .enableActualCircleCrop()
97+ .disableCrop()
9798 .setSupportedFileTypes(" jpg" , " jpeg" , " png" , " webp" , " gif" ).enableFlip()
9899 .enableRotate().build()
99100 receiveData.launch(intent)
@@ -214,9 +215,42 @@ class MainActivity : AppCompatActivity(), View.OnClickListener {
214215 receiveData.launch(intent)
215216 }
216217
218+ R .id.btnPhotoVideoPicker -> {
219+ val intent = lassi.with (LassiOption .CAMERA_AND_GALLERY ).setMaxCount(4 )
220+ .setMediaType(MediaType .PHOTO_VIDEO_PICKER )
221+ .setStatusBarColor(R .color.colorPrimaryDark)
222+ .setToolbarColor(R .color.colorPrimary)
223+ .setToolbarResourceColor(android.R .color.white)
224+ .setProgressBarColor(R .color.colorAccent)
225+ .setGalleryBackgroundColor(R .color.colorGrey)
226+ .setCustomLimitExceedingErrorMessage(" Selected item exceeded the limit!" )
227+ .build()
228+ receiveData.launch(intent)
229+ }
230+
217231 R .id.btnPhotoPicker -> {
218232 val intent = lassi.with (LassiOption .CAMERA_AND_GALLERY ).setMaxCount(4 )
233+ .setAscSort(SortingOption .ASCENDING ).setGridSize(2 )
219234 .setMediaType(MediaType .PHOTO_PICKER )
235+ .setPlaceHolder(R .drawable.ic_image_placeholder)
236+ .setErrorDrawable(R .drawable.ic_image_placeholder)
237+ .setSelectionDrawable(R .drawable.ic_checked_media)
238+ .setStatusBarColor(R .color.colorPrimaryDark)
239+ .setToolbarColor(R .color.colorPrimary)
240+ .setToolbarResourceColor(android.R .color.white)
241+ .setAlertDialogNegativeButtonColor(R .color.cherry_red)
242+ .setAlertDialogPositiveButtonColor(R .color.emerald_green)
243+ .setProgressBarColor(R .color.colorAccent)
244+ .setGalleryBackgroundColor(R .color.colorGrey)
245+ .enableMultiSelection()
246+ .setCustomLimitExceedingErrorMessage(" Selected item exceeded the limit!" )
247+ .build()
248+ receiveData.launch(intent)
249+ }
250+
251+ R .id.btnVideoMediaPicker -> {
252+ val intent = lassi.with (LassiOption .CAMERA_AND_GALLERY ).setMaxCount(4 )
253+ .setMediaType(MediaType .VIDEO_PICKER )
220254 .setStatusBarColor(R .color.colorPrimaryDark)
221255 .setToolbarColor(R .color.colorPrimary)
222256 .setToolbarResourceColor(android.R .color.white)
@@ -247,9 +281,14 @@ class MainActivity : AppCompatActivity(), View.OnClickListener {
247281 private val receiveData =
248282 registerForActivityResult(ActivityResultContracts .StartActivityForResult ()) {
249283 if (it.resultCode == Activity .RESULT_OK ) {
250- val selectedMedia =
251- it.data?.getSerializableExtra(KeyUtils .SELECTED_MEDIA ) as ArrayList <MiMedia >
252- if (selectedMedia.isNotEmpty()) {
284+ val selectedMedia = if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .TIRAMISU ) {
285+ it.data?.getParcelableArrayListExtra(KeyUtils .SELECTED_MEDIA , MiMedia ::class .java)
286+ } else {
287+ @Suppress(" DEPRECATION" )
288+ it.data?.getParcelableArrayListExtra(KeyUtils .SELECTED_MEDIA )
289+ }
290+
291+ if (! selectedMedia.isNullOrEmpty()) {
253292 binding.ivEmpty.isVisible = selectedMedia.isEmpty()
254293 selectedMediaAdapter.setList(selectedMedia)
255294 }
0 commit comments