1
1
package com.margelo.nitro.multipleimagepicker
2
2
3
3
import android.app.Activity
4
+ import android.content.ContentResolver
4
5
import android.content.Context
5
6
import android.content.Intent
6
7
import android.graphics.Color
7
8
import android.net.Uri
8
9
import androidx.core.content.ContextCompat
10
+ import com.facebook.react.bridge.ActivityEventListener
9
11
import com.facebook.react.bridge.BaseActivityEventListener
10
12
import com.facebook.react.bridge.ColorPropConverter
11
13
import com.facebook.react.bridge.ReactApplicationContext
@@ -17,9 +19,9 @@ import com.luck.picture.lib.basic.PictureSelector
17
19
import com.luck.picture.lib.config.PictureMimeType
18
20
import com.luck.picture.lib.config.SelectMimeType
19
21
import com.luck.picture.lib.config.SelectModeConfig
22
+ import com.luck.picture.lib.engine.ImageEngine
20
23
import com.luck.picture.lib.engine.PictureSelectorEngine
21
24
import com.luck.picture.lib.entity.LocalMedia
22
- import com.luck.picture.lib.interfaces.OnCustomLoadingListener
23
25
import com.luck.picture.lib.interfaces.OnMediaEditInterceptListener
24
26
import com.luck.picture.lib.interfaces.OnResultCallbackListener
25
27
import com.luck.picture.lib.language.LanguageConfig
@@ -30,7 +32,6 @@ import com.luck.picture.lib.style.SelectMainStyle
30
32
import com.luck.picture.lib.style.TitleBarStyle
31
33
import com.luck.picture.lib.utils.DateUtils
32
34
import com.luck.picture.lib.utils.DensityUtil
33
- import com.luck.picture.lib.utils.MediaUtils
34
35
import com.yalantis.ucrop.UCrop
35
36
import com.yalantis.ucrop.UCrop.Options
36
37
import com.yalantis.ucrop.UCrop.REQUEST_CROP
@@ -98,8 +99,7 @@ class MultipleImagePickerImp(reactContext: ReactApplicationContext?) :
98
99
.openGallery(chooseMode)
99
100
.setImageEngine(imageEngine)
100
101
.setSelectedData(dataList)
101
- .setSelectorUIStyle(style)
102
- .apply {
102
+ .setSelectorUIStyle(style).apply {
103
103
if (isCrop) {
104
104
setCropOption(config.crop)
105
105
// Disabled force crop engine for multiple
@@ -126,8 +126,7 @@ class MultipleImagePickerImp(reactContext: ReactApplicationContext?) :
126
126
if (videoQuality != null && videoQuality != 1.0 ) {
127
127
setVideoQuality(if (videoQuality > 0.5 ) 1 else 0 )
128
128
}
129
- }
130
- .setImageSpanCount(config.numberOfColumn?.toInt() ? : 3 )
129
+ }.setImageSpanCount(config.numberOfColumn?.toInt() ? : 3 )
131
130
.setMaxSelectNum(maxSelect)
132
131
.isDirectReturnSingle(true )
133
132
.isSelectZoomAnim(true )
@@ -265,60 +264,19 @@ class MultipleImagePickerImp(reactContext: ReactApplicationContext?) :
265
264
266
265
@ReactMethod
267
266
fun openPreview (media : Array <MediaPreview >, config : NitroPreviewConfig ) {
268
- val imageEngine = GlideEngine .createGlideEngine()
269
267
270
- val assets: ArrayList <LocalMedia > = arrayListOf ()
271
-
272
- val previewStyle = PictureSelectorStyle ()
273
- val titleBarStyle = TitleBarStyle ()
274
-
275
- previewStyle.windowAnimationStyle.setActivityEnterAnimation(R .anim.anim_modal_in)
276
- previewStyle.windowAnimationStyle.setActivityExitAnimation(com.luck.picture.lib.R .anim.ps_anim_modal_out)
277
- previewStyle.selectMainStyle.previewBackgroundColor = Color .BLACK
278
-
279
- titleBarStyle.previewTitleBackgroundColor = Color .BLACK
280
- previewStyle.titleBarStyle = titleBarStyle
281
-
282
- media.forEach { mediaItem ->
283
- var asset: LocalMedia ? = null
284
-
285
- mediaItem.path?.let { path ->
286
- // network asset
287
- if (path.startsWith(" https://" ) || path.startsWith(" http://" )) {
288
- val localMedia = LocalMedia .create()
289
- localMedia.path = path
290
- localMedia.mimeType =
291
- if (mediaItem.type == ResultType .VIDEO ) " video/mp4" else MediaUtils .getMimeTypeFromMediaHttpUrl(
292
- path
293
- ) ? : " image/jpg"
294
- asset = localMedia
295
- } else {
296
- asset = LocalMedia .generateLocalMedia(appContext, path)
297
- }
298
- }
268
+ val imageEngine = GlideEngine .createGlideEngine()
299
269
300
- asset?.let { assets.add(it) }
301
- }
270
+ var list: ArrayList <LocalMedia > = arrayListOf ()
302
271
303
272
PictureSelector
304
273
.create(currentActivity)
305
274
.openPreview()
306
275
.setImageEngine(imageEngine)
307
276
.setLanguage(getLanguage(config.language))
308
- .setSelectorUIStyle(previewStyle)
309
- .isPreviewFullScreenMode(true )
310
- .isAutoVideoPlay(true )
311
- .setVideoPlayerEngine(ExoPlayerEngine ())
312
- .isVideoPauseResumePlay(true )
313
- .setCustomLoadingListener(getCustomLoadingListener())
314
- .startActivityPreview(config.index.toInt(), false , assets)
315
- }
316
-
317
- private fun getCustomLoadingListener (): OnCustomLoadingListener {
318
- return OnCustomLoadingListener { context -> LoadingDialog (context) }
277
+ .startFragmentPreview(config.index.toInt(), false , list)
319
278
}
320
279
321
-
322
280
private fun getLanguage (language : Language ): Int {
323
281
return when (language) {
324
282
Language .VI -> LanguageConfig .VIETNAM // -> 🇻🇳 My country. Yeahhh
@@ -385,7 +343,9 @@ class MultipleImagePickerImp(reactContext: ReactApplicationContext?) :
385
343
0 ,
386
344
* ratioList.take(5 ).toTypedArray()
387
345
)
346
+
388
347
}
348
+
389
349
}
390
350
}
391
351
0 commit comments