From daadc1023ab61a322e72685e6f4ea70474cb75fc Mon Sep 17 00:00:00 2001 From: Christophe Deschamps Date: Fri, 23 Jul 2021 16:22:02 +0200 Subject: [PATCH] File icons in chat --- Classes/LinphoneUI/UIChatBubblePhotoCell.m | 21 ++++++---- Classes/LinphoneUI/UIChatBubbleTextCell.h | 1 + Classes/LinphoneUI/UIChatBubbleTextCell.m | 29 +++++++++---- Classes/LinphoneUI/UIChatContentView.m | 1 + Classes/SwiftUtil.swift | 46 +++++++++++++++++++++ Resources/images/file_audio_default.png | Bin 0 -> 2483 bytes Resources/images/file_default.png | Bin 0 -> 2227 bytes Resources/images/file_pdf_default.png | Bin 0 -> 2646 bytes Resources/images/file_picture_default.png | Bin 0 -> 2853 bytes Resources/images/file_video_default.png | Bin 0 -> 9006 bytes linphone.xcodeproj/project.pbxproj | 24 +++++++++++ 11 files changed, 105 insertions(+), 17 deletions(-) create mode 100644 Classes/SwiftUtil.swift create mode 100644 Resources/images/file_audio_default.png create mode 100644 Resources/images/file_default.png create mode 100644 Resources/images/file_pdf_default.png create mode 100644 Resources/images/file_picture_default.png create mode 100644 Resources/images/file_video_default.png diff --git a/Classes/LinphoneUI/UIChatBubblePhotoCell.m b/Classes/LinphoneUI/UIChatBubblePhotoCell.m index 4e6766faa..b5a946b01 100644 --- a/Classes/LinphoneUI/UIChatBubblePhotoCell.m +++ b/Classes/LinphoneUI/UIChatBubblePhotoCell.m @@ -28,6 +28,8 @@ #define voicePlayer VIEW(ChatConversationView).sharedVoicePlayer #define chatView VIEW(ChatConversationView) +#define FILE_ICON_TAG 0 +#define REALIMAGE_TAG 1 @@ -105,6 +107,7 @@ } - (void) loadImageAsset:(PHAsset*) asset image:(UIImage *)image { + _finalImage.tag = REALIMAGE_TAG; dispatch_async(dispatch_get_main_queue(), ^{ [_finalImage setImage:image]; [_messageImageView setAsset:asset]; @@ -134,14 +137,10 @@ } - (void) loadFileAsset:(NSString *)name { - NSString *text = [NSString stringWithFormat:@"📎 %@",name]; - _fileName.text = text; - dispatch_async(dispatch_get_main_queue(), ^{ - _fileName.hidden = _fileView.hidden = _fileButton.hidden = NO; - _imageGestureRecognizer.enabled = NO; - _plusLongGestureRecognizer.enabled = NO; - _playButton.hidden = YES; - }); + UIImage *image = [UIChatBubbleTextCell getImageFromFileName:name]; + [self loadImageAsset:nil image:image]; + _imageGestureRecognizer.enabled = YES; + _finalImage.tag = FILE_ICON_TAG; } - (void) loadPlaceholder { @@ -550,6 +549,10 @@ } - (IBAction)onImageClick:(id)event { + if (_finalImage.tag == FILE_ICON_TAG) { + [self onFileClick:nil]; + return; + } LinphoneChatMessageState state = linphone_chat_message_get_state(self.message); if (state == LinphoneChatMessageStateNotDelivered) { [self onResendClick:event]; @@ -690,7 +693,7 @@ CGFloat max_imagesh=0; CGFloat max_imagesw=0; CGFloat originy=0; - CGFloat originx=0; + CGFloat originx=-IMAGE_DEFAULT_MARGIN; CGFloat availableWidth = chatTableView.tableView.frame.size.width-CELL_IMAGE_X_MARGIN; NSMutableArray *fileUrls = [[NSMutableArray alloc] init]; diff --git a/Classes/LinphoneUI/UIChatBubbleTextCell.h b/Classes/LinphoneUI/UIChatBubbleTextCell.h index 062164d5f..e90bf6b44 100644 --- a/Classes/LinphoneUI/UIChatBubbleTextCell.h +++ b/Classes/LinphoneUI/UIChatBubbleTextCell.h @@ -60,6 +60,7 @@ + (CGSize)getMediaMessageSizefromOriginalSize:(CGSize)originalSize withWidth:(int)width; + (UIImage *)getImageFromVideoUrl:(NSURL *)url; + (UIImage *)getImageFromContent:(LinphoneContent *)content filePath:(NSString *)filePath; ++ (UIImage *)getImageFromFileName:(NSString *)fileName; - (void)setEvent:(LinphoneEventLog *)event; - (void)setChatMessageForCbs:(LinphoneChatMessage *)message; diff --git a/Classes/LinphoneUI/UIChatBubbleTextCell.m b/Classes/LinphoneUI/UIChatBubbleTextCell.m index fc3371774..f0d583b5a 100644 --- a/Classes/LinphoneUI/UIChatBubbleTextCell.m +++ b/Classes/LinphoneUI/UIChatBubbleTextCell.m @@ -455,6 +455,23 @@ static const CGFloat CELL_MESSAGE_Y_MARGIN = 44; return size; } + ++ (UIImage *)getImageFromFileName:(NSString *)fileName { + NSString *extension = [[fileName.lowercaseString componentsSeparatedByString:@"."] lastObject]; + UIImage *image; + if ([extension isEqualToString:@"pdf"]) + image = [UIImage imageNamed:@"file_pdf_default"]; + else if ([@[@"png", @"jpg", @"jpeg", @"bmp", @"heic"] containsObject:extension]) + image = [UIImage imageNamed:@"file_picture_default"]; + else if ([@[@"mkv", @"avi", @"mov", @"mp4"] containsObject:extension]) + image = [UIImage imageNamed:@"file_video_default"]; + else if ([@[@"wav", @"au", @"m4a"] containsObject:extension]) + image = [UIImage imageNamed:@"file_audio_default"]; + else + image = [UIImage imageNamed:@"file_default"]; + return [SwiftUtil textToImageWithDrawText:fileName inImage:image]; +} + + (UIImage *)getImageFromContent:(LinphoneContent *)content filePath:(NSString *)filePath; { NSString *type = [NSString stringWithUTF8String:linphone_content_get_type(content)]; NSString *name = [NSString stringWithUTF8String:linphone_content_get_name(content)]; @@ -470,9 +487,7 @@ static const CGFloat CELL_MESSAGE_Y_MARGIN = 44; image = [[UIImage alloc] initWithData:data]; } if (image) return image; - UIImage *basicImage = [ChatConversationView getBasicImage]; - image = [ChatConversationView drawText:[NSString stringWithFormat:@"📎 %@",name] image:basicImage textSize:25]; - return image; + else return [self getImageFromFileName:name]; } +(LinphoneContent *) voiceContent:(LinphoneChatMessage *)message { @@ -652,12 +667,10 @@ static const CGFloat CELL_MESSAGE_Y_MARGIN = 44; NSData *data = [NSData dataWithContentsOfURL:[VIEW(ChatConversationView) getICloudFileUrl:localFile]]; image = [[UIImage alloc] initWithData:data]; } + } else if (voiceContent){ + return [self addVoicePlayerToSize:[self ViewHeightForFile:width] withMargins:true]; } else { - CGSize fileSize = [self ViewHeightForFile:width]; - if (voiceContent) { - fileSize = [self addVoicePlayerToSize:fileSize withMargins:true]; - } - return fileSize; + image = [UIChatBubbleTextCell getImageFromFileName:fileName]; } originalImageSize = image.size; diff --git a/Classes/LinphoneUI/UIChatContentView.m b/Classes/LinphoneUI/UIChatContentView.m index 45882677f..418d3a996 100644 --- a/Classes/LinphoneUI/UIChatContentView.m +++ b/Classes/LinphoneUI/UIChatContentView.m @@ -56,6 +56,7 @@ tapGestureRecognizer.numberOfTapsRequired = 1; tapGestureRecognizer.enabled = YES; [self addGestureRecognizer:tapGestureRecognizer]; + self.userInteractionEnabled = true; } } diff --git a/Classes/SwiftUtil.swift b/Classes/SwiftUtil.swift new file mode 100644 index 000000000..6c9022fac --- /dev/null +++ b/Classes/SwiftUtil.swift @@ -0,0 +1,46 @@ +// +// SwiftUtil.swift +// linphone +// +// Created by Tof on 23/07/2021. +// + +import UIKit + +@objc class SwiftUtil: NSObject { + + @objc static func textToImage(drawText text: String, inImage image: UIImage) -> UIImage { + let textColor = UIColor.black + let textFont = UIFont(name: "Helvetica", size: 12)! + let backgroundColor = UIColor.white + + let size = CGSize(width: 120, height: 120) + + let scale = UIScreen.main.scale + UIGraphicsBeginImageContextWithOptions(size, false, scale) + let context = UIGraphicsGetCurrentContext() + backgroundColor.setFill() + context!.fill(CGRect(x: 0, y: 0, width: size.width, height: size.height)) + + let paragraph = NSMutableParagraphStyle() + paragraph.alignment = .center + + let textFontAttributes = [ + NSAttributedString.Key.font: textFont, + NSAttributedString.Key.foregroundColor: textColor, + NSAttributedString.Key.paragraphStyle: paragraph, + ] as [NSAttributedString.Key : Any] + + image.draw(in: CGRect(origin: CGPoint(x: size.width/2 - (image.size.width)/2,y: 15), size: image.size)) + + let rect = CGRect(origin: CGPoint(x: 0,y: 70), size: size) + text.draw(in: rect, withAttributes: textFontAttributes) + + let newImage = UIGraphicsGetImageFromCurrentImageContext() + UIGraphicsEndImageContext() + + return newImage! + } + +} + diff --git a/Resources/images/file_audio_default.png b/Resources/images/file_audio_default.png new file mode 100644 index 0000000000000000000000000000000000000000..ce5af4fd5a3cca42750cc190deff73a45901539c GIT binary patch literal 2483 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 A;Q#;t literal 0 HcmV?d00001 diff --git a/Resources/images/file_default.png b/Resources/images/file_default.png new file mode 100644 index 0000000000000000000000000000000000000000..f660964fbebc8871ddf082ca3e6d19303ea6c3cb GIT binary patch literal 2227 zcmaJ?dpy%^AO2xALyvP}l{rgjHp!NpnZrnuoF6m8+Gev2ITMv*h#{wn92z++isbM( zL~1%nQPk7p6zYvek<&Z9pZ<8?Ki)sS_x<_Y_jO(0>%RWDzbQ_Rm^~s2A^-sFv9+;u z=I@A|5(e?tCIeG600=;d78XuKJRSfvvrDp0*!4QeT}pD2(i0D;bm#p%q7MXpiT|n9|qxY3W{Ds{nPIm@1ve`a^O0FKVV#T z_tJwcRvhKXL%n_ld$O5CUc{TwlSHHI^={UGzI{{^@vmn{#Xf>&37Z2yqSf$6Z%GIX z>e?9chIge`-0!&EU7HQn_Zcq-8pc*$`paycFML9#$>?}(wgEpaK|gzp zB>=E9RCW@C&}`fp03a&8QvyI?@jm_`m}%=^1)c`WiS9v3JERKn!zDzzxG|k^;V>GV z8bBlyV9W>_0ro3x!;BJV&){B|*v72Pi3@t)4N;DJInH0>65blU4H~(V>tPO=1S7@f z?!I1@ys4a`TmX^X#TBuglTdJ!#_JItKUkPq@KruOGTgzT2K}hFiZQot^qcA{W!Y^f zS6x>~|0d}1@jLf(z^$T{c+)$+2VJTJiyvRiZnXU{i;&(G5Npx2xK^QkzIydehFQeB z-9xb$sW+)(wAv)5*WM0C*RZC-f6heuywsAZV&{#(dB$BS*)7LkK5&;gloZpEFuAB8 zy58#W_kJs7C2syuyEtMyp~%li&Kguc+Apz;R`fU6-FLzl%00Ee77aaEFxZP;IGbYc zvE}V&9IJY%R`;?-P7EBX6)jP!7w23e)lO-jvNuYbd2$m~?#eU9Pc0nx(3d~ho}Ib1 zaeMClaeJujW#eGG@-HP($H1~)yEo?oA_Hf=j}3E>F#>U2ljez_NOu4L1=?Dgxw!Rw zDTu?KA?)innJtZKHHkkAgWXh4FV@is%$dd>;|^TASoD-t*J=<46lS1`f^9s{d6L!= zoj&z*T;oOt>CNQZB)^J7AA3gs*^xXi_i1BoS6w=Rp!=IBpPq-GZJ($&0Mf!EjDHXIFV3>6=} z(;tmU{DIvj@6nbQ38^*knqWY$P#?#F!S6H*>vTo~+jLhI1+s+lYF=c_#NN!Lg`H>o zlrojF5sWXGPoi*H#PP{-LkX3mu>($l0ydj3Ff-AM91Rjka5E=2&AuHX^-U-3th+Ao zb#hQ|_)4Y6;UkOQ=WWCbEJ9H8&L^YLhl3QdOHItA1x@dqH1tEyd#VAU6)w7Rn$5_^ z(+e~S4Oh>qTA>6{4R5Q@(CNr5xALo$@EO@pgu!zH$s>`s2|qR;==)5iEs0V!UI!oq zKry7&eU-TdXwud1hOv-7c3{o)cdVTJLxeHN{5J4B8Pby_O#d3@)v-wzF24gQ=9qYK zqrfc%b0w~*$3ziqiWwd$N^S_+Ej!lM-)!W6x8t!#!>rSeOXqKXF zAi&KJn^gDen^4xHO4*R)p3}P$q#n3CVn&{x{lb#EG2GcPyZNfgD0MBC4WnJq z-8<~Y%A&UI?Ov{9u++H|1H9AV1m{S1vsp#k`Y|@3Z-iR8EQRMqFc1O4crm4-6C>PKLrOag5pWh6M*02zROiI3h=Y9S8NJ|Mr zc-_iA6D4cp);iQg(!ruqX*i2Gpg*+@(z_QtpqUdr{#@?c;`CVj@^H;3bUb3`Tls#F~Lhz|p7e&d$`Rk}k=gsGq^_Uo>oMT&?4{@@XgN2-DU=IiNKz6`E zg|S|LoHd+He{}zK%L%ZLLme*0Sh_-$0Yc} z!imfv7{=DY>1@Iua(s~54#=N>g~tCv00=ljPX~TX2Z40agQF4pXawRg9FB&=o3R!n z|3#os{fPk)|4Trkk$V3jyvzK_A433irvrbopz%~%1f3Wd!~~o|{m4W-%#upM5rgk# z>v{5FsNXPu0s~Jc(wIbQFtB43<`+sNGj)i;FiV4@Fbo|R!NBAA6YJMY7|s}Tn2WPT zt&sIIzKHB^5ehCiGysQZhSCZ2Un&%Jv1Og6W|`*D(i@ltlp+YbZ0y(Pi!BLj=``1$C+T63Xl{yUK2`lst% z`}sF<=N`faBrO9C1@92wgxg|u@6w&kJZGLY5LZXl!TlIzN_{Kz-09|HeU#9Asmm>) zZ#FXf1bmPe+stM4PZo`q{*=2mrw z&hRa{S~vCj*IvNatmaR>Kh;$i&iktE$GY`e)lh#hrFwt@emh+xEnAb77Q2rn$^-!F zGvp5w|p8BrMnu z8;F4rh#?rr@3gfuDE4kaeGt$tQ$#NTwymvWBi3sF^=ABx?o7aBW1g!K?|U9~(8spd zo5#!K(&P$xMY)FgEItZK+6bdznCD%emp*&RAtxsuwFU?5&`o2E%vyXt^i%UM9;DXX zmAw6p-Syq}@QPn$$yS^}qt{7?8urrXN!cwH3rx5$mtU-L``V8x)yUfKjTwf-S?-Zo zl+YW}bO?V@L~HSgx^wS+^o#OmdT33ws>iV1eEi<%7H54=Z_c98i z105Vs4qRZ)BPl5GM3H`N99M#uyz&#fyJTh8OJiN}ilphn47!*L2qu{(Ds0+ja=cG& zQsa}W73dicO-dtSmDJQ4r;&HU@SXq-S3}48BPjC^@J#9+dbwQ%bFyPSdcP3Aw7dGF zbm42khL8dQjE~IOs*-7Vncq|;i%LxMl}8Hc-HA{LcB&+@<)F;fVD{6-9Qq$Re%@R2 z8KQnt&!^GTwHWI-nb@oLMz6A8pxj?_6YNVRFLr2zRZs)PpCVvUJp026d82YTqZjmgW zXkre8Niudiz-Jbn^sU(~5>K(?Ut$3t?O)SH^gR`4{bTW4m!FGU8eNHxdMY+f&o)?w z$8>))m{mb`ZiHSn2ios@Hcd<{fVO4Iaqf|^$%T1o#FBBz8f5 z`oGde>P$W&UD}^)S>jLV=0~`+aQBnQe&Qwh zjYz1Dg1Uri?*V#@n|X7@=Q8N)i=vo3jlfdGkIQ1NO^Vh81nm7~2<_w~P9wHd+q~TqBJ!DO2 zPqn=2iQ5-#p#jkR-wkSAA)=kuGMrZ>d{tr=#PwDJfYjr(z^H0yXK{@Z$MMu`HG^V% z3(gOU?5dSpJ=CjA0e0v*o&T-pz%nuW***Po2wakv@3A9Xiy0ZIq(%Lr!y7=5rg$ty zo1WttYPzubecx_F0fO^2P2L5v`)eZVl@!rhT1R~w@)w1xUwPHu$2aLq3@XxI-@V2Q zNt;GTSO=m@_Z&CE#Ib2@s<%o(E%Hl0qF>h$0@2^`+`^3@-RUQi)q8@(<{nZ5p<6dA ze=zp}gjYRE8UwHyl2?t7W^IZQYMJqUB=FZ+FS+d7uD+batVUYZm8^TVb9DAhw$PCS z2}7?x#^=A>$kZ)ZpLM!{_~`+$=+$T~SL}Bm=5+<^iUz>M^s&Av<=)ZR+^s$%dGI;5 zZCGkwW{Rq76m4q|I#8eNZjWeBsQ7gd+AlhmFKfxyxw`M`SrOvq zc%OVkVlc{WOG!d8NhxU7b(CB)DGI+D#IQemNu22B?oS)fY~;dQcj7W)?DQ)3%iD!1 z1RKDF-f-o5%wrO99-~*bJZ8YiaEUJQME-$g_3O1|noOU<*PP!Xg_8_ln4g?XM$5eDhR1+T#ghUj%HJ;_?;@If? zU_y$;>(M!84N`@E-B}aJL`4mcH?udI={1_C zH z;|!$K4@}g|vx548R{BgS_)i47PoA*B%RxQyr@eV>x&KP4{KkBM|pSf%WD0-bQW*RMp z+WHUIjHRnV5VLcUqyx-yTDT?{m|jr3`pITfAv2zSeQ>=6coWmZ?G0t0Z?WvJFrl{)LqU2yR`FA@^XE5ho`5(HCcf^jeohY2D8#$gz50>&2- zfh7b$P!`s9PVvXYSs=wjkT2^Bf&PsE;7~YB4XULES9gFx5%BW}IQ$G0ihx2ptc)lB zi+~IE#rhHdm!OVNhy8~zoAr}5DF9N3FR+?F0v#Me48!^d5CFSypFk`cViJt=#s=NX zhPkm|I{(0YF?e(sHiUo;4gwC1LVUupfdn;d5X3}N1A+?kCgRcFtfAufPw@6ABZz~& zF^$7)lqDkij|k2?DBRB*O$ZOeg#A{rqLN?ym|2yjku?YA~5o=jsS0OVR5%1%HmAuOw`+kOt6CgHi%mJ{Ab%?b}U+{ zLzyCM8ED9TFLEsGGD`1Zos)^@WPerU_hD7>mq^)y$_B8K9GSDPAS7GFp+01cmfFYV zqifM7{aQ2S75_DBu|=5cne5MFqei`M=5n)vcoS+h1ZUb4bf zweq7E@FR`9_Tsmy{AV>^g~J%v7gptkyUQZoKn@2?Pq#Wl<2WsPA4^kX0H{on`ja3_ zu$glx0I>1?89E^Efza_G6VBWk%CyKN$i~S@_;h3VI9wzi?u4`Rz77h;2Kk`^ksw@T zFcS1PZLO37J6B8}h<$&V?_!+tFD-2wfd;!DvBXKe$$-(CEEgk|c_vl%)y9vTr-~&> zlJ{BoPf}UUSGk34coE9TS8eM{>t2$&qwl*Kf&#YdpwUJq^*#$P3$rbblFA)3rs?;PGFo*<+MM~$-;C}e&Tj~_?LD)e6@^Ml zP;-Vlxm1pb`92pu(j0TIy-QX@%jOj*+EUfFgsGUC3nUQw5|73MW*HVQ4 zmOjR!^jkrcCKJCKMAG+k`Zyiq&@-WdQGC(Mlv;Z84_??+j=j)_sa zw>|be43bFHH&WruX*H$ioj*R}w`@L(G8#i&85C%CzhusEg$8S9j+a0`ZDtM8L0_A! zhgP*+eHmyj2rI>@eQUBN^Yfsk+@X{7)RLE+zKp!AjGp@)X^jSf^Zspd6F=%gWA%T> z?C%{6Y3p=D=z1c_0ThAwsNoyges#Bg#d}4X7@p|-YLKbxG`_X%%=UbogFxpp_aeG- zoh$7KyVTB>zjWR^mypDAzdTOlz>}sA`?}jkyW7eVdm`+Nqr_TSEFR%`DKi_N_vApP zJjIlMh84UQ{IK!}N+~AXb#Z27kcs8;AOF10|K#d){oWF)`)neNC*-dDQ)xif!dBY& zC9~RL^ImO1d7-*nG=-L(lzFy)u0wHqB6kB@Dmj2)yXL=EHul<<<-kC$%Umqt`REx3 z6K=PttyhIC>PF7eqT- z4}S{f#kV&E+oxcjb8NwUK<;sgRZXI&e{Xp8S&KR z3UOHhE--z;_Ry6#<8?V4wvXBm6Kq#IbGjrpO!ca=gx{5SXB@dfjv^*I#3i_F*bQ&d zKX`spuY=D_GrZWjrSR%^#hnMcY*OL^QKF4c!MQ3`r|DMgQz_|bmz$P36>dz{mkum+ z5Of}7LcTj|UVMX~8!l2oCh`+f_h|LG0;HdV^IYG^HD?Z9p@)N@e%H|>W5X&StLY^4 zpm5Q7v&}b!y~*uqO&)mheAUW#P7Td*{lb`qKDZ?aANN}5=%2T!`Ih&s1jGfp`ZywK zZ(IY(0sFZ*Aavn$^LoqSDNkd|mh@6D+kw<387Y9^RkGRU9vv%Q*$}UHk~Lv^AmnO{N_#&>La-c<2G%zT3c12_oH`?(MKD zZ`J-QBIXoXu;+>w>`in)zLjxD8HOkFRFxrPEB>*R0M+PKhx?YjWVD5Jy9Cj@PLxfQ z!|o_?-Lfryv*yJtY`_DRZ*0V82C|wnfD<~dGGAV*LR6S%3VFg?{56CItZ+CoO27;nYI zEf(uJMtB5d@OJR*1ZmG4rpcsw>9(2>nP#jkXs=t@ienJbwNeKRmg&3;1tO-gQtBC5 z&MNfThT*4v3Xe(47@vBop?7nG@I+sUgZEZ?)Kkyzg|(yzX1MWn+f~a#E8@4=JQ*cJ zE|m%H77(ufQE^Z19q++ZC{rb@IjTm~J<+AQ@$>GEs1hcdFXZM(ZG)L!uj@cy{5XLc zoXYQ+@l>hWrd7kC+`XI``-pX~e<^KebTfVQ8e0gQuUFkdFDzg7%P+;5xX3Ar7y?

+t4NEn&|n=`GltcGpDX? zW7(Lni}&5rk<_h7H2)e#k@`@X|;%qY}&(;>hDaBqN zYr^nwxvYaVme*S#8nYs4jc#bxRY}fKpyX#xxKNr0ZM7GN;B6{C=ybfb7=|VGrSnI~ z7xl2VZ6~{QU0=%^j_*(UaU<7oW?<&aF8H08i~OH5G>Lghx7$q zN8tiMrsmc#MZ zS~8Sfk73&X!hDgT2rMcXhYG>~e~f~B!cc)Y1r!Ektf3Av#d=4EBD{|~(%+wi+L;=G z;C7Je6DG$+3gG`&1nrFp^YcdF!mvo}Ulpsu^ud4K|1ooH9vKMy55>p=ocl2WFo)V0 J*BW`n{Ri1W7f}EJ literal 0 HcmV?d00001 diff --git a/Resources/images/file_video_default.png b/Resources/images/file_video_default.png new file mode 100644 index 0000000000000000000000000000000000000000..9a3d1a3014bd81e152e8f691b8fd1596b54e9323 GIT binary patch literal 9006 zcmd6NcU)6Vx9$$TNexYcL_vBBodAL$UFjVWAp{7W5UL_r5J8ZlfKmcdq)3r2h>8V4 z5Kt75Dgsia_m>v2-{wkYxT@kO)Oc5f;sx(x2&HHDO%9F+D=)rXJiDki{ghflh4v#hh_k0u z6jm|qxNE)nk|&_F(jX&f#1&BcT+-=Bx&6&KrX1#gAE1uvjJL4eiD=TBBB3)1qj2LQ>P|m%PQQXO2uoJnuiz zHFw4{Ae~y?`vqpHoZphMP^JPn+HTLEZIxK5A>-ikBex0}~A&%DYIgyU3gk zbx#36NjyKP3u*oIYy$v*o{c0BAU%@{%%sNYpV6lNM$Jjj$W6|;Lj(3MD$K$LXXX?P z_rviE48bfips~erDsWYjkhNU_8+<=os=Cbr^=thMxZfHEerA2L{yp0 z@@>BEJAa4sJzc%8tD?k6sUn-XlmcgOadQ`i)8zM_iLa#PJ>*#l)V zT6bCYxL0%apqG-BCQ_2#F(c)&mGy-bd|Hi%M`1~7uk;!h;4Glhw1G0s7w?L0j^y!B z?dtX>n-*rJ#rS0*sFVp@x5kTZYEk6fK;76tGGO_xj`Mo)beh6SkvvE4w!cQsTgMpM z5geRPToSlmDj6+wJ6xJaRJsk1h%n1y{ZRL8@}}C&sg9n^GArHe>TmPGHSSd}!ua_{ zlO9}H68E-%?LHQXuM6&fqFnSD{XV<@^io&oRyrn2HXQPxY@$6!%0vVl0f;Zw$O6)x z8=MXRls@{WPFm=-)}~^-EG(g|5nE3cwN$c#Tpz{r+F!dOTxB7yR~qE zN8z5r-jc`0968)Q`eYj$9@@CmoobG@?UR7bjBpo=H}*b1$)|jN&*A*q6MDBMQ|^sN zxdBTonXuLueirD=3MHk(8YeNgPim5L$KDsvYsP*Sdfnb$g5BndO11?WbrrI?Xg2hnkx5 zXlR|^^kg*;Do^7f?Fr=8N7jbh+$$-1f>Tx%bVdqPfflD*T}2nHp5)w1!Bpw-p-LW< zBuHDQF<|%?=Tl*Jy-H!C^p%K2ACE6Kq5>SV^o{)B^ZcMI2SF-=aJHoL%#!(=8n@91+* zuVOPa5-rjigT9jwwx*b}`%Atq_YiDlK;=C=bDA@~q4hH>!-ad?Qrhoog$@cl4KKwU z;pgq&3H@HOjZ{p6HBO|osg$s8MmX~diV#lMa`Uurg+8jJwh6`OwD!Jj?NaQ+5V^nj z_FZ&c4H$-*)y)M_bZ;iQk0@3(+{!x@`GI1&s#tfFcetDB^qhp#OXo9Edn0=IDY+I^ zR7K@huLye*=RMX7SBo$98j366&o4Yr3b~g7I(QQ*e55-q z4t2y!^orcP5z1?P9>D~n$+?oF1p=D-7kRynubP`Ra^&* zN6TYwE$oEl_sBf+nMlasZJ?s>zHnSkk5ymNoXBc6dm+c5O#GXlbA_o+X8c-0Q*r5f z*kEE7?NVwvRce~gh31s(WYHO3Gpg{ZbNzgKdx;s>BxU<*rwTZk=nl;LeFSK|wC+5! z7nR?=c4Op~l*>BwR4?*+I$7Mc<`Gw)wG*#K{hecLfQx-DwWDlgGh9BZgW zoohS!PR^Te0G^)A7kqXAXZ&g8!OYYPIomJEiS1%dt^+}Qs|3iZP#-pLHM_RL;zWe zRJDiuNY4W@wS&y#5-VauAzGF0_?LYv6_%DvlV8y7UyFO`dEDMm6e(Rgj61ums_VH% z&-6VWN`*yj23fzJ`_8X&aR8vp?POqrGiy}dgt7s_2W@+VVYLjZO+=EsYVv5+r+RoM zWlSxx!!d-Pvoh^oU4o!OckLmgFvCL~ow{o!Y*l&1soTC3qIfoZZu2~g7K$Bs5^}>q zsWkR>+QqEho$GY+SBE}Z*b*E{2k_2@35;z`aN6M7wFRf{ce|xWgJL_gk{2wJJA^$X zUWt$SR*0M8$2~)L0e}OEw$XRh*B1rAEfAmwmt_h70>)fOEA(%1O)yRdAqU98Fc}m^ z2pPZ%hIc_>1@lRGk{pIm{s>FJIL~kKDljhm8-}Eh0Cf+6VIwFqU>pjDZJ=PHf7Uw; z#-X4wnjbGMEZPZ&c7X?DaPDwj{WB&23@j(r^?OLlgv&@Gq$OqKK#S5c2&A+;5}^b~ zC?F9CBtj7&1Fk1i1KgkvNEd+Q{MlYG`N#9mnn*{2pKT&l_C-F0J3}80U(boYhA`t{Xh(mxDKtn}EO+`sV zO-)TpOGC#1J;Xpy&%n*f#suX(%y)$MFboD4kQ9O+6X%D)gcU`^r4e#+a(qI{YDzMy zlCp9#BqI=7T3QBr2ChSgxMYsPj>`OhKg4E$g$5{sfMkyWWGoPJ76|b*zz4RI67u8u zNd-)kkyB7oQPa@U(Sv|mW>Qa)lTnaUQc{4YSV%Zn4p6XAvK~d8q+&C5qCVyimARaB zpN3zv@&&uuhh+g-XY3VPIu1@Q?!(6gg@i>!<>VCE-)xKBsA>mwW#aSH)3LwZ{JBtO}l$9JvT4E;6Y(gaYJHMEJk-t+NOZ(slCfx)li6O-Sjre|j7R#w;6H#WDncXmmO)P1b^ zLZfis+r1xK)+0J)R;mNtg&fS?Qp1i556bD)CDkVeBy?5NietliOem_2K4v~5PYx+6 z%8jHG{tsg5T$ZG-4S1X^A08^Eh3N{ZUM0v&Mwe(845=RFy_Z?1M}Y#u5)9ttMv82A zybM#goUg5Rt$zvo@y2JPHgk-X>UnZJ_54}2FoVa*9Cc}T9So}0$2O){%2D>qoxM+L zN8bF&0*!G++x*Qw_>ru4!PB z73p>>g>y41ZU1112z+@#kbl)7e!G3OeL>(>OV;pYrE0Qq!08;ur9I6K!leZwurx*l z4y)IQKc8OwLLe}$l(WVHi$vhhjJ&@fzY70v(Pg~vO1&T69I=o?YVt;z?#T?}c$<5$ z+wsp#k2Dcd?pPGRpa}QO?AdoJwjGu0@8=AQUMv4%YIxy}{Y`Fu zJP^cv{*|zgk&IH8w7&+oWo6;;TmJ{=Fs@(E--iwPFvo6Aj?^CRicyL;BqN{+9C}2*O#id+M)>Q4a>~x{~xH-7Z7rUpcGa zTZRa!BnTW#obv}=#v*a36Z;K*UEhWwMO)l|z6H>Ca|$gw?OauZpVD{|tHq6_K0OvR zc_|Rf$28|13gzVB3~FC2S=IMxh6@#UAsIb;?^Cj0*pWoqszA7QNN^kTe@n%v7PG(5eR$eNnj3#+w-VA_|!Bq zw0}3EcY>>ncK-HkPa{LNxmB4j1y6n9y-bu)0if-#jMr#YWxxiQe9#6IE_7t5&==M{ zPUTp=yBOb|8R-{NPG;+Zw@$Uj2n2~QP9Kk%Oumr5D9^M*H4@R!Nzi$000`&C0>b6b z^_C0rHzf!2)0of3&{)LZxpEh_t~#wY-{9?ds!?TX`Ac+;Q?m_j407b@40+2;g=Qa4 zP0A{L%{2CS4PNhU?BE9uC9RS%;PDu%Oz7MhKWmQFL8JFZPh8HrxWHW8Y5{F+s0rln z;t+9NKDSXd{n*Qsdncc)y&?it#q~bwu<7M;&AN-SMBu21`g{z*ITG1usp4S&ekwT@ zc)gPHHp>gr-Nskkz2%u&p7B~?b!2#U^S$H_I^eLRMh9ySLw494PEE|D#$>iM|sGL$Kv*% zZ9EOybqS!A+Y<}n@#%4nJIcRIKA4N&8Ne&q=u-K`9I>zVvGX~pL^cMtnUtHz%Te=0fGmfJCbzc9oCxp-)#9J~W)lG&d6)P97yaW>5wE9HgtnnHY()&Rh3K1}uQyzqLm&p%5;ZS<3Jf5KqKyzI4udt~; z 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 literal 0 HcmV?d00001 diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 035b2db19..b02841227 100644 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -686,6 +686,12 @@ C64A85522667B74100252AD2 /* ephemeral_messages_default.png in Resources */ = {isa = PBXBuildFile; fileRef = C64A85512667B74100252AD2 /* ephemeral_messages_default.png */; }; C666756F264C925800A0273C /* VFSUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6DA657B261C950C0020CB43 /* VFSUtil.swift */; }; C6667571264C925B00A0273C /* VFSUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6DA657B261C950C0020CB43 /* VFSUtil.swift */; }; + C6B4444226AAD0980076C517 /* file_video_default.png in Resources */ = {isa = PBXBuildFile; fileRef = C6B4443D26AAD0970076C517 /* file_video_default.png */; }; + C6B4444326AAD0980076C517 /* file_default.png in Resources */ = {isa = PBXBuildFile; fileRef = C6B4443E26AAD0970076C517 /* file_default.png */; }; + C6B4444426AAD0980076C517 /* file_picture_default.png in Resources */ = {isa = PBXBuildFile; fileRef = C6B4443F26AAD0970076C517 /* file_picture_default.png */; }; + C6B4444526AAD0980076C517 /* file_audio_default.png in Resources */ = {isa = PBXBuildFile; fileRef = C6B4444026AAD0970076C517 /* file_audio_default.png */; }; + C6B4444626AAD0980076C517 /* file_pdf_default.png in Resources */ = {isa = PBXBuildFile; fileRef = C6B4444126AAD0970076C517 /* file_pdf_default.png */; }; + C6B4444826AADA530076C517 /* SwiftUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6B4444726AADA530076C517 /* SwiftUtil.swift */; }; C6DA657C261C950C0020CB43 /* VFSUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6DA657B261C950C0020CB43 /* VFSUtil.swift */; }; C90FAA7915AF54E6002091CB /* HistoryDetailsView.m in Sources */ = {isa = PBXBuildFile; fileRef = C90FAA7715AF54E6002091CB /* HistoryDetailsView.m */; }; CF15F21E20E4F9A3008B1DE6 /* UIImageViewDeletable.m in Sources */ = {isa = PBXBuildFile; fileRef = CF15F21C20E4F9A3008B1DE6 /* UIImageViewDeletable.m */; }; @@ -1730,6 +1736,12 @@ C64A854D2667B67200252AD2 /* EphemeralSettingsView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EphemeralSettingsView.m; sourceTree = ""; }; C64A854F2667B67A00252AD2 /* EphemeralSettingsView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = EphemeralSettingsView.xib; sourceTree = ""; }; C64A85512667B74100252AD2 /* ephemeral_messages_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ephemeral_messages_default.png; sourceTree = ""; }; + C6B4443D26AAD0970076C517 /* file_video_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = file_video_default.png; sourceTree = ""; }; + C6B4443E26AAD0970076C517 /* file_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = file_default.png; sourceTree = ""; }; + C6B4443F26AAD0970076C517 /* file_picture_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = file_picture_default.png; sourceTree = ""; }; + C6B4444026AAD0970076C517 /* file_audio_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = file_audio_default.png; sourceTree = ""; }; + C6B4444126AAD0970076C517 /* file_pdf_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = file_pdf_default.png; sourceTree = ""; }; + C6B4444726AADA530076C517 /* SwiftUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftUtil.swift; sourceTree = ""; }; C6DA657B261C950C0020CB43 /* VFSUtil.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VFSUtil.swift; sourceTree = ""; }; C90FAA7615AF54E6002091CB /* HistoryDetailsView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryDetailsView.h; sourceTree = ""; }; C90FAA7715AF54E6002091CB /* HistoryDetailsView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryDetailsView.m; sourceTree = ""; }; @@ -2459,6 +2471,11 @@ 633FEBE11D3CD5570014B822 /* images */ = { isa = PBXGroup; children = ( + C6B4444026AAD0970076C517 /* file_audio_default.png */, + C6B4443E26AAD0970076C517 /* file_default.png */, + C6B4444126AAD0970076C517 /* file_pdf_default.png */, + C6B4443F26AAD0970076C517 /* file_picture_default.png */, + C6B4443D26AAD0970076C517 /* file_video_default.png */, C622E3EC26A8128F004F5434 /* vr_off.png */, C622E3EB26A8128F004F5434 /* vr_on.png */, C622E3ED26A8128F004F5434 /* vr_pause.png */, @@ -3061,6 +3078,7 @@ 63423C091C4501D000D9A050 /* Contact.m */, 8C1B67081E6718BC001EA2FE /* AudioHelper.h */, 8C1B67051E671826001EA2FE /* AudioHelper.m */, + C6B4444726AADA530076C517 /* SwiftUtil.swift */, ); name = Utils; sourceTree = ""; @@ -3624,6 +3642,7 @@ 633FEDFD1D3CD5590014B822 /* camera_switch_default@2x.png in Resources */, 633FEEC51D3CD55A0014B822 /* numpad_5_over.png in Resources */, 633FEE721D3CD5590014B822 /* history_all_default.png in Resources */, + C6B4444326AAD0980076C517 /* file_default.png in Resources */, 615A283C2180789C0060F920 /* security_toogle_button@2x.png in Resources */, 633FEF0A1D3CD55A0014B822 /* options_transfer_call_default.png in Resources */, 633FEDA51D3CD5590014B822 /* back_default@2x.png in Resources */, @@ -3649,6 +3668,7 @@ 63E27A321C4FECD000D332AE /* LaunchScreen.xib in Resources */, 633FEED11D3CD55A0014B822 /* numpad_6~ipad.png in Resources */, CF7602E82108759A00749F76 /* UIRecordingCell.xib in Resources */, + C6B4444626AAD0980076C517 /* file_pdf_default.png in Resources */, 633FEED21D3CD55A0014B822 /* numpad_6~ipad@2x.png in Resources */, 633FEDCD1D3CD5590014B822 /* call_quality_indicator_0@2x.png in Resources */, 636316D41A1DEC650009B839 /* SettingsView.xib in Resources */, @@ -3764,6 +3784,7 @@ 633FEE001D3CD5590014B822 /* camera_switch_over.png in Resources */, C622E3F126A81290004F5434 /* vr_on.png in Resources */, 633FEF401D3CD55A0014B822 /* select_all_default.png in Resources */, + C6B4444426AAD0980076C517 /* file_picture_default.png in Resources */, 633FEDF01D3CD5590014B822 /* call_transfer_disabled.png in Resources */, 633FEE351D3CD5590014B822 /* conference_exit_default@2x.png in Resources */, 633FEECF1D3CD55A0014B822 /* numpad_6_over~ipad.png in Resources */, @@ -3855,6 +3876,7 @@ 633FEEF71D3CD55A0014B822 /* numpad_star_over@2x.png in Resources */, 633FEEAB1D3CD55A0014B822 /* numpad_2_default.png in Resources */, 633FEE851D3CD5590014B822 /* led_error@2x.png in Resources */, + C6B4444226AAD0980076C517 /* file_video_default.png in Resources */, 633FEDBE1D3CD5590014B822 /* call_back_default.png in Resources */, 633FEF0F1D3CD55A0014B822 /* pause_big_default@2x.png in Resources */, CF7602F6210898CC00749F76 /* rec_on_default@2x.png in Resources */, @@ -3900,6 +3922,7 @@ 633FEF3B1D3CD55A0014B822 /* security_ko@2x.png in Resources */, 633FEE4A1D3CD5590014B822 /* delete_disabled.png in Resources */, 614D09CE21E74D5400C43EDF /* GoogleService-Info.plist in Resources */, + C6B4444526AAD0980076C517 /* file_audio_default.png in Resources */, C61B1BF72667EC6B001A4E4A /* ephemeral_messages_color_A.png in Resources */, 633FEF151D3CD55A0014B822 /* pause_small_default@2x.png in Resources */, 633FEEF91D3CD55A0014B822 /* numpad_star_over~ipad@2x.png in Resources */, @@ -4219,6 +4242,7 @@ 6135761C240E81BB005304D4 /* UIInterfaceStyleButton.m in Sources */, 8CD99A3C2090B9FA008A7CDA /* ChatConversationImdnView.m in Sources */, 1D3623260D0F684500981E51 /* LinphoneAppDelegate.m in Sources */, + C6B4444826AADA530076C517 /* SwiftUtil.swift in Sources */, 614C087A23D1A37400217F80 /* CallManager.swift in Sources */, CF15F21E20E4F9A3008B1DE6 /* UIImageViewDeletable.m in Sources */, 22F2508E107141E100AC9B3F /* DialerView.m in Sources */,