Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
DmcSDK committed Nov 11, 2019
2 parents 6786e2b + 9bf7809 commit e89a621
Show file tree
Hide file tree
Showing 12 changed files with 73 additions and 16 deletions.
2 changes: 1 addition & 1 deletion readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ var imgs = document.getElementsByName('imgView');
var args = {
'selectMode': 101, //101=picker image and video , 100=image , 102=video
'maxSelectCount': 40, //default 40 (Optional)
'maxSelectSize': 188743680, //188743680=180M (Optional) only android
'maxSelectSize': 188743680, //188743680=180M (Optional)
};
document.getElementById('openBtn').onclick = function() {
Expand Down
Binary file modified src/ios/DMCMediaPicker/.DS_Store
Binary file not shown.
1 change: 1 addition & 0 deletions src/ios/DMCMediaPicker/DmcPickerViewController.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,5 @@
@property (nonatomic, assign) NSInteger maxSelectCount;
//'selectMode':101,//101=PICKER_IMAGE_VIDEO , 100=PICKER_IMAGE , 102=PICKER_VIDEO
@property (nonatomic, assign) NSInteger selectMode;
@property (nonatomic, assign) NSInteger maxSelectSize;
@end
58 changes: 51 additions & 7 deletions src/ios/DMCMediaPicker/DmcPickerViewController.m
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ @implementation DmcPickerViewController
- (void)viewDidLoad {
//init config
self.maxSelectCount=self.maxSelectCount>0?self.maxSelectCount:15;
self.maxSelectSize=self.maxSelectSize>0?self.maxSelectSize:1048576;
self.selectMode=self.selectMode>0?self.selectMode:101;
//config end

Expand Down Expand Up @@ -379,12 +380,14 @@ -( void )collectionView:( UICollectionView *)collectionView didSelectItemAtIndex
NSInteger i=[self isSelect:asset];
CollectionViewCell *cell = (CollectionViewCell *)[collectionView cellForItemAtIndexPath:indexPath];

if([selectArray count]>=self.maxSelectCount&&i<0){
if([selectArray count] >= self.maxSelectCount && i < 0){
[self alertMax];
}else{
if([selectArray count]>self.maxSelectCount){
if([selectArray count] > self.maxSelectCount){
[self alertMax];
}else{
}else if([self assetFileSize:asset] > self.maxSelectSize) {
[self alertSize];
} else {
i<0?[selectArray addObject:asset]:[selectArray removeObject:asset];
i<0?[self showSelectView:cell]:[self hidenSelectView:cell];
}
Expand Down Expand Up @@ -429,7 +432,40 @@ -(void) previewDonePicker:(NSMutableArray*) srray
[self._delegate resultPicker:srray];
[self dismissViewControllerAnimated:YES completion:nil];
}


-(long) assetFileSize:(PHAsset *)asset
{
__block long imageSize = 0;

if(asset.mediaType == PHAssetMediaTypeVideo) {
PHVideoRequestOptions *options = [[PHVideoRequestOptions alloc] init];
options.version = PHVideoRequestOptionsVersionOriginal;

[[PHImageManager defaultManager] requestAVAssetForVideo:asset options:options resultHandler:^(AVAsset *asset, AVAudioMix *audioMix, NSDictionary *info) {
if([asset isKindOfClass:[AVURLAsset class]]) {
AVURLAsset* urlAsset = (AVURLAsset*)asset;
NSNumber *size;

[urlAsset.URL getResourceValue:&size forKey:NSURLFileSizeKey error:nil];
NSLog(@"%lu", (unsigned long)size);
imageSize = (unsigned long)size;
}
}];
} else {
// Fetch image data to retrieve file size and path
PHImageRequestOptions * options = [[PHImageRequestOptions alloc] init];
options.deliveryMode = PHImageRequestOptionsDeliveryModeHighQualityFormat;
options.resizeMode = PHImageRequestOptionsResizeModeExact;
options.synchronous = YES; //Set this to NO if is needed

[[PHImageManager defaultManager] requestImageDataForAsset:asset options:options resultHandler:^(NSData * _Nullable imageData, NSString * _Nullable dataUTI, UIImageOrientation orientation, NSDictionary * _Nullable info) {
NSLog(@"%lu", (unsigned long)imageData.length);
imageSize = (unsigned long)imageData.length;
}];
}
return imageSize;
}

-(NSInteger)isSelect:(PHAsset *)asset
{
int is=-1;
Expand All @@ -450,15 +486,23 @@ - (void)didReceiveMemoryWarning {
}

-(void)alertMax{
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@""
message:NSLocalizedString(@"maxSelectAlert",nil)
preferredStyle:UIAlertControllerStyleAlert];
NSString *message = [NSString stringWithFormat:NSLocalizedString(@"maxSelectAlert", nil), self.maxSelectCount];
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"" message:message preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *okAction = [UIAlertAction actionWithTitle:NSLocalizedString(@"ok",nil) style:UIAlertActionStyleDefault handler:nil];
[alertController addAction:okAction];

[self presentViewController:alertController animated:YES completion:nil];
}

-(void)alertSize{
NSString *message = [NSString stringWithFormat:NSLocalizedString(@"maxSizeAlert", nil), (float)self.maxSelectSize/1048576];
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"" message:message preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *okAction = [UIAlertAction actionWithTitle:NSLocalizedString(@"ok",nil) style:UIAlertActionStyleDefault handler:nil];
[alertController addAction:okAction];

[self presentViewController:alertController animated:YES completion:nil];
}

- (NSString *)getNewTimeFromDurationSecond:(NSInteger)duration {
NSString *newTime;
if (duration < 10) {
Expand Down
5 changes: 3 additions & 2 deletions src/ios/DMCMediaPicker/de.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@
"Back"="Zurück";
"All"="Alle Fotos";
"Video"="Video";
"maxSelectAlert"="Maximale Anzahl erreicht";
"maxSelectAlert"="Sie können nur %d Bilder auswählen";
"maxSizeAlert"="Sie können nur Bilder mit einer Größe von bis zu %.02f MB auswählen";
"ok"="OK";
"Unable to access album" = "Auf Album kann nicht zugegriffen werden";
"Please allow to access your album" = "Bitte erlaube den Zugriff auf Dein Album in \"Einstellungen -> Datenschutz -> Fotos\"";
"Setting" = "Einstellungen";
"Preview" = "Vorschau";
"Preview" = "Vorschau";
3 changes: 2 additions & 1 deletion src/ios/DMCMediaPicker/en.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@
"Done"="Done";
"All"="All photos";
"Video"="Video";
"maxSelectAlert"="Has reached the maximum number of choices";
"ok"="OK";
"maxSelectAlert"="You can only select %d images";
"maxSizeAlert"="You can only select images up to %.02f mb in size";
"Unable to access album" = "Unable to access album";
"Please allow to access your album" = "Please allow to access your album in \"Settings -> Privacy -> Album\"";
"Setting" = "Setting";
Expand Down
3 changes: 2 additions & 1 deletion src/ios/DMCMediaPicker/es.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
"Done"="hecho";
"All"="Todas las fotos";
"Video"="Video";
"maxSelectAlert"="Has alcanzado el número maximo de selecciones";
"maxSelectAlert"="Solo puedes seleccionar %d imágenes";
"maxSizeAlert"="Solo puede seleccionar imágenes de hasta %.02f mb de tamaño";
"ok"="OK";
"Unable to access album" = "Denegado el acceso al album";
"Please allow to access your album" = "Por favor permita el acceso a sus albums en \"Configuraciones -> Privacidad -> Album\"";
Expand Down
3 changes: 2 additions & 1 deletion src/ios/DMCMediaPicker/pt-BR.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
"Done"="Pronto";
"All"="Todas as fotos";
"Video"="Vídeo";
"maxSelectAlert"="Atingiu o limite máximo de escolhas";
"maxSelectAlert"="Você só pode selecionar %d imagens";
"maxSizeAlert"="Você só pode selecionar imagens com tamanho de até %.02f mb";
"ok"="OK";
"Unable to access album" = "Impossibilitado de acessar o álbum";
"Please allow to access your album" = "Por favor permita acessar o seu álbum em \“Configurações -> Privacidade -> Álbum\"";
Expand Down
3 changes: 2 additions & 1 deletion src/ios/DMCMediaPicker/pt-PT.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
"Done"="Pronto";
"All"="Todas as fotos";
"Video"="Vídeo";
"maxSelectAlert"="Atingiu o limite máximo de escolhas";
"maxSelectAlert"="Você só pode selecionar %d imagens";
"maxSizeAlert"="Você só pode selecionar imagens com tamanho de até %.02f mb";
"ok"="OK";
"Unable to access album" = "Impossibilitado de acessar o álbum";
"Please allow to access your album" = "Por favor permita acessar o seu álbum em \“Configurações -> Privacidade -> Álbum\"";
Expand Down
3 changes: 2 additions & 1 deletion src/ios/DMCMediaPicker/tr.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
"Done"="Bitti";
"All"="Tümü";
"Video"="Video";
"maxSelectAlert"="Maksimum seçime ulaşıldı!";
"maxSelectAlert"="Sadece %d görüntü seçebilirsiniz";
"maxSizeAlert"="Yalnızca %.02f mb boyutunda olan resimleri seçebilirsiniz";
"ok"="Tamam";
"Unable to access album" = "Galerinize erişilemiyor";
"Please allow to access your album" = "Lütfen \"Ayarlar -> Gizlilik -> Fotoğraflar\" menüsünden uygulamaya erişim izni verin.";
Expand Down
3 changes: 2 additions & 1 deletion src/ios/DMCMediaPicker/zh-Hans.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
"Done"="完成";
"All"="所有照片";
"Video"="视频";
"maxSelectAlert"="已达到选择数量上限";
"maxSelectAlert"="您只能选择%d张图片";
"maxSizeAlert"="您只能选择最大%.02f mb的图像";
"ok"="好";
"Unable to access album" = "无法访问相册";
"Please allow to access your album" = "请在设置-隐私-相册中允许访问相册";
Expand Down
5 changes: 5 additions & 0 deletions src/ios/MediaPicker.m
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,11 @@ - (void)getMedias:(CDVInvokedUrlCommand*)command
}@catch (NSException *exception) {
NSLog(@"Exception: %@", exception);
}
@try{
dmc.maxSelectSize=[[options objectForKey:@"maxSelectSize"]integerValue];
}@catch (NSException *exception) {
NSLog(@"Exception: %@", exception);
}
dmc._delegate=self;
[self.viewController presentViewController:[[UINavigationController alloc]initWithRootViewController:dmc] animated:YES completion:nil];
}
Expand Down

0 comments on commit e89a621

Please sign in to comment.