Skip to content

Commit fa27a44

Browse files
authored
Merge pull request #1 from Mindinventory/develop
Removed callback and managed selected media in onActivityResult
2 parents 66f2c2c + 1cd5553 commit fa27a44

File tree

12 files changed

+208
-169
lines changed

12 files changed

+208
-169
lines changed

README.md

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -74,14 +74,18 @@ Lassi is simplest way to pick media (either image or video)
7474
```
7575
7676
77-
* Step 2. Implement Lassi.SelectedMediaCallback and override onMediaSelected function to get Lassi result.
77+
* Step 2. override onActivityResult function to get Lassi result.
7878
79-
```kotlin
80-
MainActivity : AppCompatActivity(), Lassi.SelectedMediaCallback
81-
82-
...
83-
override fun onMediaSelected(selectedMedia: ArrayList<MiMedia>?) {
84-
// Do needful with your selectedMedia
79+
```kotlin
80+
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
81+
super.onActivityResult(requestCode, resultCode, data)
82+
if (resultCode == Activity.RESULT_OK && data != null) {
83+
when (requestCode) {
84+
MEDIA_REQUEST_CODE -> {
85+
val selectedMedia = data.getSerializableExtra(KeyUtils.SELECTED_MEDIA) as ArrayList<MiMedia>
86+
// Do needful with your selectedMedia
87+
}
88+
}
8589
}
8690
8791
...

app/src/main/java/com/lassi/app/MainActivity.kt

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
package com.lassi.app
22

3+
import android.app.Activity
4+
import android.content.Intent
35
import android.os.Bundle
46
import android.view.View
57
import androidx.appcompat.app.AppCompatActivity
68
import com.lassi.app.adapter.SelectedMediaAdapter
9+
import com.lassi.common.utils.KeyUtils
710
import com.lassi.data.media.MiMedia
811
import com.lassi.domain.media.LassiOption
912
import com.lassi.domain.media.MediaType
@@ -12,8 +15,9 @@ import com.lassi.presentation.common.decoration.GridSpacingItemDecoration
1215
import com.lassi.presentation.cropper.CropImageView
1316
import kotlinx.android.synthetic.main.activity_main.*
1417

15-
class MainActivity : AppCompatActivity(), View.OnClickListener, Lassi.SelectedMediaCallback {
18+
class MainActivity : AppCompatActivity(), View.OnClickListener {
1619

20+
private val MEDIA_REQUEST_CODE = 100
1721
private val selectedMediaAdapter by lazy { SelectedMediaAdapter() }
1822

1923
override fun onCreate(savedInstanceState: Bundle?) {
@@ -30,24 +34,25 @@ class MainActivity : AppCompatActivity(), View.OnClickListener, Lassi.SelectedMe
3034
R.id.btnImagePicker -> {
3135
val intent = Lassi(this)
3236
.with(LassiOption.CAMERA_AND_GALLERY)
33-
.setMaxCount(5)
37+
.setMaxCount(1)
3438
.setGridSize(2)
3539
.setPlaceHolder(R.drawable.ic_image_placeholder)
3640
.setErrorDrawable(R.drawable.ic_image_placeholder)
3741
.setStatusBarColor(R.color.colorPrimaryDark)
3842
.setToolbarColor(R.color.colorPrimary)
3943
.setToolbarResourceColor(android.R.color.white)
4044
.setProgressBarColor(R.color.colorAccent)
41-
.setCropType(CropImageView.CropShape.RECTANGLE)
45+
.setCropType(CropImageView.CropShape.OVAL)
4246
.setCropAspectRatio(1, 1)
4347
.setSupportedFileTypes("jpg", "jpeg", "png", "webp", "gif")
4448
.build()
45-
startActivity(intent)
49+
startActivityForResult(intent, MEDIA_REQUEST_CODE)
50+
4651
}
4752
R.id.btnVideoPicker -> {
4853
val intent = Lassi(this)
4954
.with(LassiOption.CAMERA_AND_GALLERY)
50-
.setMaxCount(5)
55+
.setMaxCount(1)
5156
.setGridSize(3)
5257
.setMinTime(15)
5358
.setMaxTime(30)
@@ -61,12 +66,17 @@ class MainActivity : AppCompatActivity(), View.OnClickListener, Lassi.SelectedMe
6166
.setErrorDrawable(R.drawable.ic_image_placeholder)
6267
.setSupportedFileTypes("mp4", "mkv", "webm", "avi", "flv", "3gp")
6368
.build()
64-
startActivity(intent)
69+
startActivityForResult(intent, MEDIA_REQUEST_CODE)
6570
}
6671
}
6772
}
6873

69-
override fun onMediaSelected(selectedMedia: ArrayList<MiMedia>?) {
70-
selectedMediaAdapter.setList(selectedMedia)
74+
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
75+
super.onActivityResult(requestCode, resultCode, data)
76+
if (requestCode == MEDIA_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
77+
val selectedMedia =
78+
data?.getSerializableExtra(KeyUtils.SELECTED_MEDIA) as ArrayList<MiMedia>
79+
selectedMediaAdapter.setList(selectedMedia)
80+
}
7181
}
7282
}

lassi/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ android {
1313
minSdkVersion 17
1414
targetSdkVersion 28
1515
versionCode 1
16-
versionName "0.0.2"
16+
versionName "0.0.3"
1717
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
1818
vectorDrawables.useSupportLibrary = true
1919
}

lassi/src/main/AndroidManifest.xml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,19 @@
88

99
<application android:supportsRtl="true">
1010
<activity
11-
android:name="com.lassi.presentation.mediadirectory.LassiMediaPickerActivity"
11+
android:name=".presentation.mediadirectory.LassiMediaPickerActivity"
1212
android:launchMode="singleTask"
13+
android:screenOrientation="portrait"
1314
android:theme="@style/AppTheme" />
14-
<activity android:name="com.lassi.presentation.camera.CameraActivity" />
1515
<activity
16-
android:name="com.lassi.presentation.cropper.CropImageActivity"
16+
android:name=".presentation.cropper.CropImageActivity"
1717
android:resizeableActivity="false"
1818
android:screenOrientation="portrait"
1919
android:supportsPictureInPicture="false"
2020
android:theme="@style/AppTheme" />
2121
<activity
22-
android:name="com.lassi.presentation.videopreview.VideoPreviewActivity"
22+
android:name=".presentation.videopreview.VideoPreviewActivity"
23+
android:screenOrientation="portrait"
2324
android:theme="@style/AppTheme" />
24-
2525
</application>
2626
</manifest>
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.lassi.common.utils
2+
3+
import android.net.Uri
4+
import androidx.fragment.app.FragmentActivity
5+
import com.lassi.domain.media.LassiConfig
6+
import com.lassi.presentation.cropper.CropImage
7+
import com.lassi.presentation.cropper.CropImageView
8+
9+
object CropUtils {
10+
fun beginCrop(activity: FragmentActivity, source: Uri) {
11+
val lassiConfig = LassiConfig.getConfig()
12+
CropImage.activity(source)
13+
.setGuidelines(CropImageView.Guidelines.ON)
14+
.setAllowFlipping(false)
15+
.setAllowRotation(false)
16+
.setOutputCompressQuality(70)
17+
.setCropShape(lassiConfig.cropType)
18+
.setAspectRatio(lassiConfig.cropAspectRatio)
19+
.setOutputUri(source)
20+
.start(activity)
21+
}
22+
}

lassi/src/main/java/com/lassi/common/utils/KeyUtils.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ package com.lassi.common.utils
33
object KeyUtils {
44
const val REQUEST_PERMISSIONS_REQUEST_CODE = 102
55
const val SELECTED_MEDIA = "selected_media"
6-
const val SELECTED_FOLDER = "selected_folder"
6+
const val MEDIA_PREVIEW = "mediaPreview"
7+
const val SELECTED_FOLDER = "selectedFolder"
8+
const val VIDEO_PATH = "videoPath"
79
const val DEFAULT_MEDIA_COUNT = 1
810
const val DEFAULT_GRID_SIZE = 2
911
const val MAX_GRID_SIZE = 4

lassi/src/main/java/com/lassi/presentation/builder/Lassi.kt

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,16 @@ import android.content.Intent
55
import androidx.annotation.ColorRes
66
import androidx.annotation.DrawableRes
77
import com.lassi.common.utils.KeyUtils
8-
import com.lassi.data.media.MiMedia
98
import com.lassi.domain.media.LassiConfig
109
import com.lassi.domain.media.LassiOption
1110
import com.lassi.domain.media.MediaType
12-
import com.lassi.presentation.camera.CameraActivity
1311
import com.lassi.presentation.cameraview.controls.AspectRatio
1412
import com.lassi.presentation.cropper.CropImageView
1513
import com.lassi.presentation.mediadirectory.LassiMediaPickerActivity
1614

1715
class Lassi(private val context: Context) {
18-
private var lassiConfig = LassiConfig()
19-
20-
companion object {
21-
var selectedMediaCallback: SelectedMediaCallback? = null
22-
}
2316

24-
init {
25-
selectedMediaCallback = context as? SelectedMediaCallback
26-
}
17+
private var lassiConfig = LassiConfig()
2718

2819
/**
2920
* Limit max item selection
@@ -79,6 +70,9 @@ class Lassi(private val context: Context) {
7970
return this
8071
}
8172

73+
/**
74+
* Add comma separated supported files types ex. png, jpeg
75+
*/
8276
fun setSupportedFileTypes(vararg fileTypes: String): Lassi {
8377
lassiConfig.supportedFileType = fileTypes.toMutableList()
8478
return this
@@ -153,13 +147,6 @@ class Lassi(private val context: Context) {
153147
*/
154148
fun build(): Intent {
155149
LassiConfig.setConfig(lassiConfig)
156-
return if (lassiConfig.lassiOption == LassiOption.CAMERA)
157-
Intent(context, CameraActivity::class.java)
158-
else
159-
Intent(context, LassiMediaPickerActivity::class.java)
160-
}
161-
162-
interface SelectedMediaCallback {
163-
fun onMediaSelected(media: ArrayList<MiMedia>? = ArrayList())
150+
return Intent(context, LassiMediaPickerActivity::class.java)
164151
}
165152
}

0 commit comments

Comments
 (0)