From 368d6fa90a3f5a1679dd98351b7a9ff3255a8bf5 Mon Sep 17 00:00:00 2001 From: Christophe Deschamps Date: Mon, 11 Jul 2022 23:42:52 +0200 Subject: [PATCH] ICS Reply --- .../Base.lproj/UIChatReplyBubbleView.xib | 10 ++++++++-- Classes/LinphoneUI/UIChatReplyBubbleView.h | 1 + Classes/LinphoneUI/UIChatReplyBubbleView.m | 7 ++++++- .../Conference/Views/ICSBubbleView.swift | 12 ++++++++++++ Classes/Swift/Voip/Theme/VoipTheme.swift | 2 +- Resources/images/voip_meeting_schedule.png | Bin 2596 -> 3841 bytes 6 files changed, 28 insertions(+), 4 deletions(-) diff --git a/Classes/LinphoneUI/Base.lproj/UIChatReplyBubbleView.xib b/Classes/LinphoneUI/Base.lproj/UIChatReplyBubbleView.xib index 86911cf6e..8db8e4bf0 100644 --- a/Classes/LinphoneUI/Base.lproj/UIChatReplyBubbleView.xib +++ b/Classes/LinphoneUI/Base.lproj/UIChatReplyBubbleView.xib @@ -1,9 +1,9 @@ - + - + @@ -13,6 +13,7 @@ + @@ -68,6 +69,10 @@ + + + + @@ -77,6 +82,7 @@ + diff --git a/Classes/LinphoneUI/UIChatReplyBubbleView.h b/Classes/LinphoneUI/UIChatReplyBubbleView.h index b9c175ae2..81f8b7f8c 100644 --- a/Classes/LinphoneUI/UIChatReplyBubbleView.h +++ b/Classes/LinphoneUI/UIChatReplyBubbleView.h @@ -33,6 +33,7 @@ NS_ASSUME_NONNULL_BEGIN @property (weak, nonatomic) IBOutlet UICollectionView *contentCollection; @property NSArray *dataContent; @property (weak, nonatomic) IBOutlet UILabel *originalMessageGone; +@property (weak, nonatomic) IBOutlet UIImageView *icsIcon; -(void) configureForMessage:(LinphoneChatMessage *)message withDimissBlock:(void (^)(void))dismissBlock hideDismiss:(BOOL)hideDismiss withClickBlock:(void (^)(void))clickBlock; @end diff --git a/Classes/LinphoneUI/UIChatReplyBubbleView.m b/Classes/LinphoneUI/UIChatReplyBubbleView.m index a63a7dc47..c9890977e 100644 --- a/Classes/LinphoneUI/UIChatReplyBubbleView.m +++ b/Classes/LinphoneUI/UIChatReplyBubbleView.m @@ -40,6 +40,7 @@ -(void) viewDidLoad { _contentCollection.dataSource = self; + [_icsIcon setImageNamed:@"voip_meeting_schedule" tintColor:VoipTheme.voip_dark_gray]; [_contentCollection registerClass:UICollectionViewCell.class forCellWithReuseIdentifier:@"dataContent"]; } @@ -51,6 +52,7 @@ _contentCollection.hidden = true; _senderName.hidden = true; _originalMessageGone.hidden = false; + _icsIcon.hidden = true; return; } if (hideDismiss) { @@ -60,9 +62,12 @@ _originalMessageGone.hidden = true; self.message = message; self.dataContent = [self loadDataContent]; + BOOL isIcal = [ICSBubbleView isConferenceInvitationMessageWithCmessage:message]; + _icsIcon.hidden = !isIcal; + NSString *sender = [FastAddressBook displayNameForAddress:linphone_chat_message_get_from_address(message)]; _senderName.text = sender; - const char * text = linphone_chat_message_get_text_content(message); + const char * text = isIcal ? [ICSBubbleView getSubjectFromContentWithCmessage:message].UTF8String : linphone_chat_message_get_text_content(message); if (text && strlen(text) == 0) text = nil; _textContent.text = text ? [NSString stringWithUTF8String:text] : @""; diff --git a/Classes/Swift/Conference/Views/ICSBubbleView.swift b/Classes/Swift/Conference/Views/ICSBubbleView.swift index 54adc6a9b..a4cebbef5 100644 --- a/Classes/Swift/Conference/Views/ICSBubbleView.swift +++ b/Classes/Swift/Conference/Views/ICSBubbleView.swift @@ -169,5 +169,17 @@ import EventKitUI controller.dismiss(animated: true, completion: nil) } + @objc static func getSubjectFromContent(cmessage: OpaquePointer) -> String { + let message = ChatMessage.getSwiftObject(cObject: cmessage) + var subject = "" + message.contents.forEach { content in + if (content.isIcalendar) { + if let conferenceInfo = try? Factory.Instance.createConferenceInfoFromIcalendarContent(content: content) { + subject = conferenceInfo.subject + } + } + } + return subject + } } diff --git a/Classes/Swift/Voip/Theme/VoipTheme.swift b/Classes/Swift/Voip/Theme/VoipTheme.swift index 723e35818..0d0ab2dfa 100644 --- a/Classes/Swift/Voip/Theme/VoipTheme.swift +++ b/Classes/Swift/Voip/Theme/VoipTheme.swift @@ -26,7 +26,7 @@ import UIKit static let voip_gray_blue_color = UIColor(hex:"#798791") static let voip_light_gray = UIColor(hex:"#D0D8DE") @objc static let voip_dark_gray = UIColor(hex:"#4B5964") - static let voip_gray = UIColor(hex:"#96A5B1") + @objc static let voip_gray = UIColor(hex:"#96A5B1") static let voip_gray_background = UIColor(hex:"#AFAFAF") static let voip_call_record_background = UIColor(hex:"#EBEBEB") static let voip_calls_list_inactive_background = UIColor(hex:"#F0F1F2") diff --git a/Resources/images/voip_meeting_schedule.png b/Resources/images/voip_meeting_schedule.png index f24ee373d35e992bd362ee4bb2995e52a17232b5..168e3460f62d0f9f3d272d0b44666c2cd0bbae6b 100644 GIT binary patch delta 3473 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 literal 2596 zcmbVM2{@Gd8vmGKG)9u85oM4iOU)o#DGXyIOJiS(Sq!rpW5kTzm>FBA6j#WWQc5b7 z5M`@NA&C~1)8T~5a-3YLROfS^=bU@H=iKL}_j`Wd|IPC9a8ZD- zhXVkh;EH!5fL?uN$w9#PTdUZ;03ek}!(zQ?WHJC4<|XCX;XCa$Z-qYC?QFDKO+~54 ztJEYj+nTPL?WH{gKW}?1a4NnNslzEgc)XMRNt&7;VAwUCp>F~WC)6Aevya)-qSq>$|TEcI^s|zoSYJ((v$iRjIrzHrSC2zK$isT zCIdfDe%5?WA0^q_Zz>~-Y04LrJy|2NlSyNS#yv*!HuGm(*KJDvv3YD>WAemZ>3g}w zMGKnI`2i*kmj-XwQs`YryD+{FHivc#YPq9hwFT#D`JSIU@cTpekJAF-Tm7)P?F4I@T$mxxH1=3iWSbUxeR34-#cXZ{2(Zu-&gYNk+=e zNgpg8Pt@A(F%Fg63Go-)4XuGZC_niqC}>)4>WS=@y5Qn^Sja5!$y3a{Q>SurvkJWJ zqk59}>Zw+lX1~_a;*ZuzfZ34mYgub+C@wp{b>i)8|KjLpy9d*AFjE)ap^WGf*AWiq$avAmOBB zMkQx56C{iTF*89#=S!%uIcz}|J0Xj~7qj_U^aK$*E{h=$F%m$N&;?>nY&KIMVhhBy z_zXH<#7Y#i;?ms&tM2Z`?`()e+#zvyM0SeP@2D6^bg2Ca94!>vut$!zgq&O{8P-|4gN=}h=L}@ zm9a12-`2+?czA>UuO9u=BPHv%T^kh0OGjR$Hu^wipsR$HQRY$xF`d~;rPmMjGBjI5 zRSm1ov{|0JnvyE&N!!(R_R4A&^G?IvASfiOyQyOb)SGO5t=y?q9DHC5 zI4>WqEGb9Bl6Wu(DG4kfL?Ta&bsl~U#7cot6OnFF2Y(~jw4FBIO_|mYDvRAp6yMJ zd?k5TQlFiNtIUYwgR6 z^xQbinz;3VBuAj4M7=NapXSVVL>i;fK=M#f#sUZCEV- zsMGQVzhKn00J~L#^1r!!vH;ZbU#?CLK8E+mVPO=4-(Fwu2nv--B@Pb^4L&4N00_=< zpIs6Jt4mf^R`xcJk#}=9#^DYesK~u~@O){juC+RL+3s(Sv8{Dsfz*lGCoxF%V8NuBM@gY=)J{iSTziKfPQTK5XO6mhp~*~; z_;BFpd4vA$wr0{xql)%(#*a`GW_4|NK5%F1!ja?m8e13}9H~h!1-Ol}mCn)fRwl=4 zE=Ma5oc1c}^Zprm3VHI{<1GtMnv zC){hbe^FC5Jk!%{XrM?qbsa_0>a71%bGfCxVzRAWFE_WNJ~tQssaR5tK~KD!4V00U z#90S!EK(e*yi5&$xL02m2MrjkNtu38oIBoMW3XsuWQGEC$9udT?1D~XoBJ&=Mi>A< zbY2z9yy=(&@3$V$IeKd5!uOON gz5@bQ{|<`v3p{