4.1: new ChatsListView

This commit is contained in:
Danmei Chen 2018-10-23 17:23:40 +02:00
parent 9503782650
commit d2ac41082a
22 changed files with 176 additions and 36 deletions

View file

@ -1,17 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13771" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" colorMatched="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14113" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" colorMatched="YES">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13772"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14088"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="ChatsListView">
<connections>
<outlet property="addButton" destination="Z5G-IF-PBY" id="Tzw-rz-Bwe"/>
<outlet property="addGroupChatButton" destination="glf-ni-nqe" id="0hy-5m-7C7"/>
<outlet property="backToCallButton" destination="Fac-hy-za4" id="8I3-TM-oJ7"/>
<outlet property="tableController" destination="4" id="18"/>
<outlet property="view" destination="5" id="14"/>
@ -35,7 +36,7 @@
<rect key="frame" x="0.0" y="0.0" width="375" height="66"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" heightSizable="YES"/>
</imageView>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" id="Z5G-IF-PBY" userLabel="addButton">
<button opaque="NO" contentMode="scaleToFill" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" id="Z5G-IF-PBY" userLabel="addButton">
<rect key="frame" x="0.0" y="0.0" width="75" height="66"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" heightSizable="YES"/>
<accessibility key="accessibilityConfiguration" label="New discussion"/>
@ -44,12 +45,27 @@
<state key="normal" image="chat_add_default.png">
<color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</state>
<state key="disabled" image="chat_add_disabled.png"/>
<state key="disabled" image="chat_add_default.png"/>
<state key="highlighted" backgroundImage="color_E.png"/>
<connections>
<action selector="onAddClick:" destination="-1" eventType="touchUpInside" id="g4q-By-6nW"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" id="glf-ni-nqe" userLabel="addGroupButton">
<rect key="frame" x="76" y="0.0" width="75" height="66"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" heightSizable="YES"/>
<accessibility key="accessibilityConfiguration" label="New discussion"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<inset key="titleEdgeInsets" minX="0.0" minY="18" maxX="0.0" maxY="0.0"/>
<state key="normal" image="chat_add_group.png">
<color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</state>
<state key="disabled" image="chat_add_group.png"/>
<state key="highlighted" backgroundImage="color_E.png"/>
<connections>
<action selector="onAddGroupChatClick:" destination="-1" eventType="touchUpInside" id="tem-mm-w62"/>
</connections>
</button>
<button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="KhE-c3-2Zj" userLabel="cancelButton" customClass="UIIconButton">
<rect key="frame" x="0.0" y="0.0" width="75" height="66"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" heightSizable="YES"/>
@ -181,8 +197,8 @@
<image name="call_back_disabled.png" width="38" height="27"/>
<image name="cancel_edit_default.png" width="29" height="29"/>
<image name="cancel_edit_disabled.png" width="29" height="29"/>
<image name="chat_add_default.png" width="33" height="29"/>
<image name="chat_add_disabled.png" width="33" height="29"/>
<image name="chat_add_default.png" width="45" height="40"/>
<image name="chat_add_group.png" width="60" height="40"/>
<image name="color_E.png" width="2" height="2"/>
<image name="color_F.png" width="2" height="2"/>
<image name="delete_default.png" width="21" height="28"/>

View file

@ -68,6 +68,7 @@
@property (weak, nonatomic) IBOutlet UIView *imagesView;
+ (void)markAsRead:(LinphoneChatRoom *)chatRoom;
+ (UIImage *)getSecurityImageForChatRoom:(LinphoneChatRoom *)chatRoom;
- (void)configureForRoom:(BOOL)editing;
- (IBAction)onBackClick:(id)event;

View file

@ -83,6 +83,24 @@ static UICompositeViewDescription *compositeDescription = nil;
[PhoneMainView.instance updateApplicationBadgeNumber];
}
+ (UIImage *)getSecurityImageForChatRoom:(LinphoneChatRoom *)chatRoom {
if (!chatRoom)
return nil;
LinphoneChatRoomSecurityLevel securityLevel = linphone_chat_room_get_security_level(chatRoom);
switch (securityLevel) {
case LinphoneChatRoomSecurityLevelUnsafe:
return [UIImage imageNamed:@"security_alert_indicator.png"];
case LinphoneChatRoomSecurityLevelEncrypted:
return [UIImage imageNamed:@"security_1_indicator.png.png"];
case LinphoneChatRoomSecurityLevelSafe:
return [UIImage imageNamed:@"security_2_indicator.png.png"];
default:
return nil;
}
}
#pragma mark - ViewController Functions
- (void)viewDidLoad {

View file

@ -216,6 +216,10 @@ static int sorted_history_comparison(LinphoneChatRoom *to_insert, LinphoneChatRo
return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(nonnull NSIndexPath *)indexPath {
return 86.0;
}
#pragma mark - UITableViewDelegate Functions
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

View file

@ -30,9 +30,11 @@
@property(nonatomic, strong) IBOutlet ChatsListTableView *tableController;
@property(weak, nonatomic) IBOutlet UIButton *addButton;
@property (weak, nonatomic) IBOutlet UIButton *addGroupChatButton;
@property(weak, nonatomic) IBOutlet UIBackToCallButton *backToCallButton;
@property (weak, nonatomic) IBOutlet UIView *waitView;
- (IBAction)onAddGroupChatClick:(id)sender;
- (IBAction)onAddClick:(id)event;
- (IBAction)onEditionChangeClick:(id)sender;
- (IBAction)onDeleteClick:(id)sender;

View file

@ -80,7 +80,17 @@ static UICompositeViewDescription *compositeDescription = nil;
#pragma mark - Action Functions
- (IBAction)onAddGroupChatClick:(id)sender {
// TODO create group chat
ChatConversationCreateView *view = VIEW(ChatConversationCreateView);
view.isForEditing = false;
view.tableController.notFirstTime = FALSE;
[view.tableController.contactsGroup removeAllObjects];
[PhoneMainView.instance changeCurrentView:view.compositeViewDescription];
}
- (IBAction)onAddClick:(id)event {
// TODO create one-to-one chat
ChatConversationCreateView *view = VIEW(ChatConversationCreateView);
view.isForEditing = false;
view.tableController.notFirstTime = FALSE;

View file

@ -16,40 +16,45 @@
<outlet property="chatContentLabel" destination="21" id="24"/>
<outlet property="chatLatestTimeLabel" destination="r7A-Mk-LQX" id="J0r-yr-YLk"/>
<outlet property="imdmIcon" destination="aa2-Kl-c1H" id="rnr-XY-r9K"/>
<outlet property="securityImage" destination="kdl-Ln-eWv" id="S9v-cN-u4w"/>
<outlet property="unreadCountLabel" destination="ZXq-Do-7Ua" id="anx-Na-sYz"/>
<outlet property="unreadCountView" destination="7DE-KJ-9Q3" id="hkt-rA-EKa"/>
</connections>
</placeholder>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<view contentMode="scaleToFill" id="17">
<rect key="frame" x="0.0" y="0.0" width="375" height="60"/>
<view contentMode="scaleToFill" misplaced="YES" id="17">
<rect key="frame" x="0.0" y="0.0" width="375" height="86"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" image="avatar.png" id="19" userLabel="avatarImage" customClass="UIRoundedImageView">
<rect key="frame" x="8" y="2" width="43" height="43"/>
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" misplaced="YES" image="avatar.png" id="19" userLabel="avatarImage" customClass="UIRoundedImageView">
<rect key="frame" x="10" y="11" width="42" height="42"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
</imageView>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" tag="2" contentMode="left" text="11:15" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" minimumFontSize="1" id="r7A-Mk-LQX" userLabel="chatLatestTimeLabel">
<rect key="frame" x="8" y="45" width="43" height="15"/>
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" misplaced="YES" image="security_1_indicator.png" id="kdl-Ln-eWv" userLabel="securityImage">
<rect key="frame" x="41" y="11" width="18" height="22"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
</imageView>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" tag="2" contentMode="left" misplaced="YES" text="11:15" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" minimumFontSize="1" id="r7A-Mk-LQX" userLabel="chatLatestTimeLabel">
<rect key="frame" x="8" y="57" width="44" height="19"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<accessibility key="accessibilityConfiguration" label=""/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="25"/>
<color key="textColor" red="0.98766469955444336" green="0.27512490749359131" blue="0.029739789664745331" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" tag="2" contentMode="left" text="John Doe" lineBreakMode="tailTruncation" minimumFontSize="10" adjustsFontSizeToFit="NO" id="20" userLabel="addressLabel">
<rect key="frame" x="59" y="0.0" width="275" height="31"/>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" tag="2" contentMode="left" misplaced="YES" text="John Doe" lineBreakMode="tailTruncation" minimumFontSize="1" id="20" userLabel="addressLabel">
<rect key="frame" x="69" y="17" width="255" height="23"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
<accessibility key="accessibilityConfiguration" label="Contact name"/>
<fontDescription key="fontDescription" type="system" pointSize="25"/>
<fontDescription key="fontDescription" name=".SFNSDisplay" family=".SF NS Display" pointSize="21"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<view hidden="YES" autoresizesSubviews="NO" userInteractionEnabled="NO" tag="7" contentMode="scaleToFill" id="7DE-KJ-9Q3" userLabel="unreadCountView" customClass="UIBouncingView">
<rect key="frame" x="350" y="7" width="21" height="22"/>
<view hidden="YES" autoresizesSubviews="NO" userInteractionEnabled="NO" tag="7" contentMode="scaleToFill" misplaced="YES" id="7DE-KJ-9Q3" userLabel="unreadCountView" customClass="UIBouncingView">
<rect key="frame" x="350" y="12" width="21" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
<subviews>
<imageView userInteractionEnabled="NO" tag="8" contentMode="scaleAspectFit" image="history_chat_indicator.png" id="NXj-A8-YLh" userLabel="unreadCountImage">
<imageView userInteractionEnabled="NO" tag="8" contentMode="scaleAspectFit" image="chat_list_indicator.png" id="NXj-A8-YLh" userLabel="unreadCountImage">
<rect key="frame" x="0.0" y="0.0" width="21" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
</imageView>
@ -68,17 +73,17 @@
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
</view>
<imageView hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" misplaced="YES" image="chat_read.png" id="aa2-Kl-c1H" userLabel="imdmIcon">
<rect key="frame" x="59" y="39" width="13" height="13"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<rect key="frame" x="69" y="55" width="13" height="13"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES"/>
<accessibility key="accessibilityConfiguration" label="Delivery failed">
<accessibilityTraits key="traits" button="YES" image="YES"/>
</accessibility>
</imageView>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" tag="2" contentMode="left" misplaced="YES" text="This is a placeholder message" lineBreakMode="tailTruncation" numberOfLines="3" adjustsFontSizeToFit="NO" id="21" userLabel="chatContentLabel">
<rect key="frame" x="80" y="31" width="316" height="29"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" heightSizable="YES"/>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" tag="2" contentMode="left" misplaced="YES" text="This is a placeholder message" lineBreakMode="tailTruncation" numberOfLines="2" adjustsFontSizeToFit="NO" id="21" userLabel="chatContentLabel">
<rect key="frame" x="85" y="43" width="262" height="37"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" heightSizable="YES"/>
<accessibility key="accessibilityConfiguration" label="Message"/>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
@ -90,7 +95,8 @@
</objects>
<resources>
<image name="avatar.png" width="259" height="259"/>
<image name="chat_list_indicator.png" width="17" height="17"/>
<image name="chat_read.png" width="24" height="24"/>
<image name="history_chat_indicator.png" width="14" height="13"/>
<image name="security_1_indicator.png" width="27" height="32"/>
</resources>
</document>

View file

@ -30,6 +30,7 @@
}
@property(nonatomic, strong) IBOutlet UIRoundedImageView *avatarImage;
@property (weak, nonatomic) IBOutlet UIImageView *securityImage;
@property(nonatomic, strong) IBOutlet UILabel *addressLabel;
@property(nonatomic, strong) IBOutlet UILabel *chatContentLabel;
@property(weak, nonatomic) IBOutlet UILabel *chatLatestTimeLabel;

View file

@ -81,6 +81,8 @@
_addressLabel.text = [NSString stringWithUTF8String:subject ?: LINPHONE_DUMMY_SUBJECT];
[_avatarImage setImage:[UIImage imageNamed:@"chat_group_avatar.png"] bordered:NO withRoundedRadius:YES];
}
// TODO update security image when security level changed
[_securityImage setImage:[ChatConversationView getSecurityImageForChatRoom:chatRoom]];
_chatLatestTimeLabel.text = [LinphoneUtils timeToString:linphone_chat_room_get_last_update_time(chatRoom) withFormat:LinphoneDateChatList];
@ -92,8 +94,8 @@
NSString *text = [UIChatBubbleTextCell TextMessageForChat:last_msg];
if (outgoing) {
// shorten long messages
if ([text length] > 50)
text = [[text substringToIndex:50] stringByAppendingString:@"[...]"];
/*if ([text length] > 50)
text = [[text substringToIndex:50] stringByAppendingString:@"[...]"];*/
_chatContentLabel.attributedText = nil;
_chatContentLabel.text = text;
} else {
@ -105,10 +107,10 @@
UIFont *boldFont = [UIFont boldSystemFontOfSize:fontSize];
NSMutableAttributedString *boldText = [[NSMutableAttributedString alloc] initWithString:name attributes:@{ NSFontAttributeName : boldFont }];
text = [@" : " stringByAppendingString:text];
NSString *fullText = [name stringByAppendingString:text];
if ([fullText length] > 50) {
//NSString *fullText = [name stringByAppendingString:text];
/*if ([fullText length] > 50) {
text = [[text substringToIndex: (50 - [name length])] stringByAppendingString:@"[...]"];
}
}*/
[boldText appendAttributedString:[[NSAttributedString alloc] initWithString:text]];
_chatContentLabel.text = nil;
_chatContentLabel.attributedText = boldText;
@ -119,24 +121,24 @@
if (outgoing && (state == LinphoneChatMessageStateDeliveredToUser || state == LinphoneChatMessageStateDisplayed || state == LinphoneChatMessageStateNotDelivered || state == LinphoneChatMessageStateFileTransferError)) {
[self displayImdmStatus:state];
CGRect newFrame = _chatContentLabel.frame;
newFrame.origin.x = 80;
newFrame.origin.x = 89;
_chatContentLabel.frame = newFrame;
} else {
// We displace the message 20 pixels to the left
[_imdmIcon setHidden:TRUE];
CGRect newFrame = _chatContentLabel.frame;
newFrame.origin.x = 60;
newFrame.origin.x = 69;
_chatContentLabel.frame = newFrame;
}
} else {
NSString *text = [[FastAddressBook displayNameForAddress:linphone_chat_message_get_from_address(last_msg)]
stringByAppendingFormat:@" : %@", [UIChatBubbleTextCell TextMessageForChat:last_msg]];
// shorten long messages
if ([text length] > 50)
text = [[text substringToIndex:50] stringByAppendingString:@"[...]"];
/*if ([text length] > 50)
text = [[text substringToIndex:50] stringByAppendingString:@"[...]"];*/
[_imdmIcon setHidden:TRUE];
CGRect newFrame = _chatContentLabel.frame;
newFrame.origin.x = 60;
newFrame.origin.x = 69;
_chatContentLabel.frame = newFrame;
_chatContentLabel.text = text;
}
@ -156,7 +158,7 @@
} else {
[_unreadCountView stopAnimating:YES];
}
UIFont *addressFont = (count <= 0) ? [UIFont systemFontOfSize:25] : [UIFont boldSystemFontOfSize:25];
UIFont *addressFont = (count <= 0) ? [UIFont systemFontOfSize:21] : [UIFont boldSystemFontOfSize:21];
_addressLabel.font = addressFont;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 512 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 512 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -84,6 +84,26 @@
5EEE8F9F20C80C23006E4176 /* TodayViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5EEE8F9E20C80C23006E4176 /* TodayViewController.m */; };
5EEE8FA220C80C23006E4176 /* MainInterface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5EEE8FA020C80C23006E4176 /* MainInterface.storyboard */; };
5EEE8FA620C80C23006E4176 /* latestCallsWidget.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 5EEE8F9A20C80C23006E4176 /* latestCallsWidget.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
61586B81217A16EE0038AC45 /* menu_about.png in Resources */ = {isa = PBXBuildFile; fileRef = 61586B7A217A16EE0038AC45 /* menu_about.png */; };
61586B83217A16FD0038AC45 /* menu_about@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 61586B82217A16FD0038AC45 /* menu_about@2x.png */; };
61586B85217A17070038AC45 /* menu_assistant.png in Resources */ = {isa = PBXBuildFile; fileRef = 61586B84217A17070038AC45 /* menu_assistant.png */; };
61586B87217A17160038AC45 /* menu_assistant@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 61586B86217A17150038AC45 /* menu_assistant@2x.png */; };
61586B89217A17220038AC45 /* menu_link_account.png in Resources */ = {isa = PBXBuildFile; fileRef = 61586B88217A17220038AC45 /* menu_link_account.png */; };
61586B8B217A17320038AC45 /* menu_link_account@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 61586B8A217A17320038AC45 /* menu_link_account@2x.png */; };
61586B8D217A173F0038AC45 /* menu_options.png in Resources */ = {isa = PBXBuildFile; fileRef = 61586B8C217A173F0038AC45 /* menu_options.png */; };
61586B8F217A174F0038AC45 /* menu_options@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 61586B8E217A174F0038AC45 /* menu_options@2x.png */; };
61586B91217A175D0038AC45 /* menu_recordings.png in Resources */ = {isa = PBXBuildFile; fileRef = 61586B90217A175C0038AC45 /* menu_recordings.png */; };
61586B93217A17700038AC45 /* menu_recordings@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 61586B92217A176F0038AC45 /* menu_recordings@2x.png */; };
615A280F217F1FD50060F920 /* chat_add_group.png in Resources */ = {isa = PBXBuildFile; fileRef = 615A2808217F1FD40060F920 /* chat_add_group.png */; };
615A2811217F1FDE0060F920 /* chat_add_group@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 615A2810217F1FDE0060F920 /* chat_add_group@2x.png */; };
615A2813217F24D40060F920 /* security_1_indicator.png in Resources */ = {isa = PBXBuildFile; fileRef = 615A2812217F24D40060F920 /* security_1_indicator.png */; };
615A2815217F24E00060F920 /* security_1_indicator@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 615A2814217F24E00060F920 /* security_1_indicator@2x.png */; };
615A2817217F280C0060F920 /* chat_list_indicator.png in Resources */ = {isa = PBXBuildFile; fileRef = 615A2816217F280C0060F920 /* chat_list_indicator.png */; };
615A2819217F28160060F920 /* chat_list_indicator@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 615A2818217F28160060F920 /* chat_list_indicator@2x.png */; };
615A281B217F6F9C0060F920 /* security_2_indicator.png in Resources */ = {isa = PBXBuildFile; fileRef = 615A281A217F6F9B0060F920 /* security_2_indicator.png */; };
615A281D217F6FA80060F920 /* security_2_indicator@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 615A281C217F6FA80060F920 /* security_2_indicator@2x.png */; };
615A281F217F6FB40060F920 /* security_alert_indicator.png in Resources */ = {isa = PBXBuildFile; fileRef = 615A281E217F6FB30060F920 /* security_alert_indicator.png */; };
615A2821217F6FBF0060F920 /* security_alert_indicator@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 615A2820217F6FBF0060F920 /* security_alert_indicator@2x.png */; };
61AE364F20C00B370089D9D3 /* ShareViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 61AE364E20C00B370089D9D3 /* ShareViewController.m */; };
61AE365220C00B370089D9D3 /* MainInterface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 61AE365020C00B370089D9D3 /* MainInterface.storyboard */; };
61AE365620C00B370089D9D3 /* linphoneExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 61AE364B20C00B370089D9D3 /* linphoneExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
@ -1115,6 +1135,26 @@
5EEE8FA320C80C23006E4176 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
5EEE8FB320C81334006E4176 /* latestCallsWidget.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = latestCallsWidget.entitlements; sourceTree = "<group>"; };
5EF0C33820C806A5005081B0 /* NotificationCenter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = NotificationCenter.framework; path = System/Library/Frameworks/NotificationCenter.framework; sourceTree = SDKROOT; };
61586B7A217A16EE0038AC45 /* menu_about.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_about.png; sourceTree = "<group>"; };
61586B82217A16FD0038AC45 /* menu_about@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "menu_about@2x.png"; sourceTree = "<group>"; };
61586B84217A17070038AC45 /* menu_assistant.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_assistant.png; sourceTree = "<group>"; };
61586B86217A17150038AC45 /* menu_assistant@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "menu_assistant@2x.png"; sourceTree = "<group>"; };
61586B88217A17220038AC45 /* menu_link_account.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_link_account.png; sourceTree = "<group>"; };
61586B8A217A17320038AC45 /* menu_link_account@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "menu_link_account@2x.png"; sourceTree = "<group>"; };
61586B8C217A173F0038AC45 /* menu_options.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_options.png; sourceTree = "<group>"; };
61586B8E217A174F0038AC45 /* menu_options@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "menu_options@2x.png"; sourceTree = "<group>"; };
61586B90217A175C0038AC45 /* menu_recordings.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_recordings.png; sourceTree = "<group>"; };
61586B92217A176F0038AC45 /* menu_recordings@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "menu_recordings@2x.png"; sourceTree = "<group>"; };
615A2808217F1FD40060F920 /* chat_add_group.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = chat_add_group.png; sourceTree = "<group>"; };
615A2810217F1FDE0060F920 /* chat_add_group@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "chat_add_group@2x.png"; sourceTree = "<group>"; };
615A2812217F24D40060F920 /* security_1_indicator.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = security_1_indicator.png; sourceTree = "<group>"; };
615A2814217F24E00060F920 /* security_1_indicator@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "security_1_indicator@2x.png"; sourceTree = "<group>"; };
615A2816217F280C0060F920 /* chat_list_indicator.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = chat_list_indicator.png; sourceTree = "<group>"; };
615A2818217F28160060F920 /* chat_list_indicator@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "chat_list_indicator@2x.png"; sourceTree = "<group>"; };
615A281A217F6F9B0060F920 /* security_2_indicator.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = security_2_indicator.png; sourceTree = "<group>"; };
615A281C217F6FA80060F920 /* security_2_indicator@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "security_2_indicator@2x.png"; sourceTree = "<group>"; };
615A281E217F6FB30060F920 /* security_alert_indicator.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = security_alert_indicator.png; sourceTree = "<group>"; };
615A2820217F6FBF0060F920 /* security_alert_indicator@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "security_alert_indicator@2x.png"; sourceTree = "<group>"; };
61AE364B20C00B370089D9D3 /* linphoneExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = linphoneExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
61AE364D20C00B370089D9D3 /* ShareViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ShareViewController.h; sourceTree = "<group>"; };
61AE364E20C00B370089D9D3 /* ShareViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ShareViewController.m; sourceTree = "<group>"; };
@ -2825,6 +2865,8 @@
633FEC4D1D3CD5570014B822 /* chat_add_default@2x.png */,
633FEC4E1D3CD5570014B822 /* chat_add_disabled.png */,
633FEC4F1D3CD5570014B822 /* chat_add_disabled@2x.png */,
615A2808217F1FD40060F920 /* chat_add_group.png */,
615A2810217F1FDE0060F920 /* chat_add_group@2x.png */,
633FEC501D3CD5570014B822 /* chat_attachment_default.png */,
633FEC511D3CD5570014B822 /* chat_attachment_default@2x.png */,
633FEC521D3CD5570014B822 /* chat_attachment_disabled.png */,
@ -2839,6 +2881,8 @@
8C2A81931F87B7FF0012A66B /* chat_group_avatar@2x.png */,
8CF25D9B1F9F76BC00BEA0C1 /* chat_group_informations.png */,
8CF25D9C1F9F76BD00BEA0C1 /* chat_group_informations@2x.png */,
615A2816217F280C0060F920 /* chat_list_indicator.png */,
615A2818217F28160060F920 /* chat_list_indicator@2x.png */,
633FEC561D3CD5570014B822 /* chat_list_indicator~ipad.png */,
633FEC571D3CD5570014B822 /* chat_list_indicator~ipad@2x.png */,
633FEC581D3CD5570014B822 /* chat_message_not_delivered.png */,
@ -2980,6 +3024,16 @@
633FECD71D3CD5580014B822 /* list_details_over@2x.png */,
633FECD81D3CD5580014B822 /* menu.png */,
633FECD91D3CD5580014B822 /* menu@2x.png */,
61586B7A217A16EE0038AC45 /* menu_about.png */,
61586B82217A16FD0038AC45 /* menu_about@2x.png */,
61586B84217A17070038AC45 /* menu_assistant.png */,
61586B86217A17150038AC45 /* menu_assistant@2x.png */,
61586B88217A17220038AC45 /* menu_link_account.png */,
61586B8A217A17320038AC45 /* menu_link_account@2x.png */,
61586B8C217A173F0038AC45 /* menu_options.png */,
61586B8E217A174F0038AC45 /* menu_options@2x.png */,
61586B90217A175C0038AC45 /* menu_recordings.png */,
61586B92217A176F0038AC45 /* menu_recordings@2x.png */,
633FECDA1D3CD5580014B822 /* micro_default.png */,
633FECDB1D3CD5580014B822 /* micro_default@2x.png */,
633FECDC1D3CD5580014B822 /* micro_disabled.png */,
@ -3154,6 +3208,12 @@
633FED7D1D3CD5590014B822 /* routes_disabled@2x.png */,
633FED7E1D3CD5590014B822 /* routes_selected.png */,
633FED7F1D3CD5590014B822 /* routes_selected@2x.png */,
615A2812217F24D40060F920 /* security_1_indicator.png */,
615A2814217F24E00060F920 /* security_1_indicator@2x.png */,
615A281A217F6F9B0060F920 /* security_2_indicator.png */,
615A281C217F6FA80060F920 /* security_2_indicator@2x.png */,
615A281E217F6FB30060F920 /* security_alert_indicator.png */,
615A2820217F6FBF0060F920 /* security_alert_indicator@2x.png */,
633FED801D3CD5590014B822 /* security_ko.png */,
633FED811D3CD5590014B822 /* security_ko@2x.png */,
633FED821D3CD5590014B822 /* security_ok.png */,
@ -3744,6 +3804,7 @@
633FEDC61D3CD5590014B822 /* call_incoming.png in Resources */,
633FEF2D1D3CD55A0014B822 /* route_earpiece_selected@2x.png in Resources */,
638F1A621C2021B2004B8E02 /* DialerView~ipad.xib in Resources */,
615A2817217F280C0060F920 /* chat_list_indicator.png in Resources */,
633FEEFF1D3CD55A0014B822 /* options_add_call_disabled@2x.png in Resources */,
633FEF091D3CD55A0014B822 /* options_start_conference_disabled@2x.png in Resources */,
633FEE051D3CD5590014B822 /* cancel_edit_disabled@2x.png in Resources */,
@ -3806,6 +3867,7 @@
633FEF191D3CD55A0014B822 /* pause_small_over_selected@2x.png in Resources */,
633FEDA71D3CD5590014B822 /* back_disabled@2x.png in Resources */,
633FEDBD1D3CD5590014B822 /* call_audio_start_disabled@2x.png in Resources */,
615A2815217F24E00060F920 /* security_1_indicator@2x.png in Resources */,
633FEE981D3CD55A0014B822 /* micro_selected.png in Resources */,
633FEEB51D3CD55A0014B822 /* numpad_3_over.png in Resources */,
633FEE041D3CD5590014B822 /* cancel_edit_disabled.png in Resources */,
@ -3826,6 +3888,7 @@
633FEE491D3CD5590014B822 /* delete_default@2x.png in Resources */,
633FEF291D3CD55A0014B822 /* route_earpiece_default@2x.png in Resources */,
633FEE271D3CD5590014B822 /* checkbox_checked@2x.png in Resources */,
61586B85217A17070038AC45 /* menu_assistant.png in Resources */,
633FEDCC1D3CD5590014B822 /* call_quality_indicator_0.png in Resources */,
633FEDEB1D3CD5590014B822 /* call_status_outgoing@2x.png in Resources */,
633FEDEE1D3CD5590014B822 /* call_transfer_default.png in Resources */,
@ -3861,6 +3924,7 @@
633FEE381D3CD5590014B822 /* contact_add_default.png in Resources */,
633FEE6F1D3CD5590014B822 /* footer_history_default@2x.png in Resources */,
633FEF201D3CD55A0014B822 /* presence_unregistered.png in Resources */,
61586B8D217A173F0038AC45 /* menu_options.png in Resources */,
633FEF341D3CD55A0014B822 /* routes_default.png in Resources */,
633FEE061D3CD5590014B822 /* chat_add_default.png in Resources */,
633FEDF21D3CD5590014B822 /* call_video_start_default.png in Resources */,
@ -3875,6 +3939,7 @@
633FEE2D1D3CD5590014B822 /* color_E.png in Resources */,
633FEED01D3CD55A0014B822 /* numpad_6_over~ipad@2x.png in Resources */,
633FEEC81D3CD55A0014B822 /* numpad_5_over~ipad@2x.png in Resources */,
61586B91217A175D0038AC45 /* menu_recordings.png in Resources */,
633FEF1B1D3CD55A0014B822 /* presence_away@2x.png in Resources */,
633FEE281D3CD5590014B822 /* checkbox_unchecked.png in Resources */,
633FEE9D1D3CD55A0014B822 /* numpad_0_over.png in Resources */,
@ -3890,9 +3955,11 @@
633FEE3B1D3CD5590014B822 /* contact_add_disabled@2x.png in Resources */,
633FEF011D3CD55A0014B822 /* options_default@2x.png in Resources */,
633FEEC01D3CD55A0014B822 /* numpad_4_over~ipad@2x.png in Resources */,
61586B8B217A17320038AC45 /* menu_link_account@2x.png in Resources */,
63CDC4661C3BDE370085F529 /* shortring.caf in Resources */,
633FEDD51D3CD5590014B822 /* call_quality_indicator_4@2x.png in Resources */,
633FEDE71D3CD5590014B822 /* call_status_missed@2x.png in Resources */,
615A2821217F6FBF0060F920 /* security_alert_indicator@2x.png in Resources */,
633FEE1E1D3CD5590014B822 /* chat_start_body_disabled.png in Resources */,
639CEB001A1DF4E4004DE38F /* UIHistoryCell.xib in Resources */,
633FEE841D3CD5590014B822 /* led_error.png in Resources */,
@ -3912,6 +3979,7 @@
D38187B115FE340500C3EDCA /* ChatsListView.xib in Resources */,
633FEDA41D3CD5590014B822 /* back_default.png in Resources */,
633FEE2C1D3CD5590014B822 /* color_D.png in Resources */,
615A280F217F1FD50060F920 /* chat_add_group.png in Resources */,
633FEEC41D3CD55A0014B822 /* numpad_5_default@2x.png in Resources */,
633FEDAC1D3CD5590014B822 /* backspace_over.png in Resources */,
639E9C9D1C0DB7DF00019A75 /* UICallPausedCell.xib in Resources */,
@ -3931,6 +3999,7 @@
633FEF0A1D3CD55A0014B822 /* options_transfer_call_default.png in Resources */,
633FEDA51D3CD5590014B822 /* back_default@2x.png in Resources */,
633FEF311D3CD55A0014B822 /* route_speaker_disabled@2x.png in Resources */,
61586B81217A16EE0038AC45 /* menu_about.png in Resources */,
633FEEE41D3CD55A0014B822 /* numpad_9_default@2x.png in Resources */,
8C2A81961F87B8000012A66B /* chat_group_avatar.png in Resources */,
633FEDA31D3CD5590014B822 /* avatar~ipad@2x.png in Resources */,
@ -3959,6 +4028,7 @@
633FEEAD1D3CD55A0014B822 /* numpad_2_over.png in Resources */,
633FEE801D3CD5590014B822 /* led_connected.png in Resources */,
633FEEF41D3CD55A0014B822 /* numpad_star_default.png in Resources */,
61586B93217A17700038AC45 /* menu_recordings@2x.png in Resources */,
633FEDDE1D3CD5590014B822 /* call_start_body_over.png in Resources */,
24BFAAA0209B0630004F47A7 /* contacts_sip_default@2x.png in Resources */,
8CF25D9D1F9F76BD00BEA0C1 /* chat_group_informations.png in Resources */,
@ -3971,7 +4041,9 @@
633FEE031D3CD5590014B822 /* cancel_edit_default@2x.png in Resources */,
633FEDE01D3CD5590014B822 /* call_start_body_over~ipad.png in Resources */,
8CBD7BA920B6B82A00E5DCC0 /* UIChatConversationImdnTableViewCell.xib in Resources */,
615A2813217F24D40060F920 /* security_1_indicator.png in Resources */,
24BFAAA7209B0630004F47A7 /* callkit_logo.png in Resources */,
615A2811217F1FDE0060F920 /* chat_add_group@2x.png in Resources */,
D34F6F9E1594D3FB0095705B /* InAppSettings.bundle in Resources */,
633FEE4D1D3CD5590014B822 /* delete_field_default@2x.png in Resources */,
639CEB091A1DF4FA004DE38F /* UIChatCell.xib in Resources */,
@ -4002,6 +4074,7 @@
633FEF271D3CD55A0014B822 /* route_bluetooth_selected@2x.png in Resources */,
633FEE111D3CD5590014B822 /* chat_list_indicator~ipad@2x.png in Resources */,
633FEEFC1D3CD55A0014B822 /* options_add_call_default.png in Resources */,
615A2819217F28160060F920 /* chat_list_indicator@2x.png in Resources */,
24BFAAA5209B0630004F47A7 /* contacts_sip_default.png in Resources */,
633FEF441D3CD55A0014B822 /* speaker_default.png in Resources */,
639CEB031A1DF4EB004DE38F /* UICompositeView.xib in Resources */,
@ -4024,6 +4097,7 @@
633FEE3D1D3CD5590014B822 /* contacts_all_default@2x.png in Resources */,
633FEF251D3CD55A0014B822 /* route_bluetooth_disabled@2x.png in Resources */,
633FEDD81D3CD5590014B822 /* call_start_body_default~ipad.png in Resources */,
61586B83217A16FD0038AC45 /* menu_about@2x.png in Resources */,
633FEED81D3CD55A0014B822 /* numpad_7_over~ipad@2x.png in Resources */,
633FEDD71D3CD5590014B822 /* call_start_body_default@2x.png in Resources */,
633FEE571D3CD5590014B822 /* dialer_back_disabled@2x.png in Resources */,
@ -4052,7 +4126,9 @@
633FEDF01D3CD5590014B822 /* call_transfer_disabled.png in Resources */,
633FEE351D3CD5590014B822 /* conference_exit_default@2x.png in Resources */,
633FEECF1D3CD55A0014B822 /* numpad_6_over~ipad.png in Resources */,
61586B87217A17160038AC45 /* menu_assistant@2x.png in Resources */,
633FEE9A1D3CD55A0014B822 /* nowebcamCIF.jpg in Resources */,
61586B89217A17220038AC45 /* menu_link_account.png in Resources */,
633FEF351D3CD55A0014B822 /* routes_default@2x.png in Resources */,
633FEEDB1D3CD55A0014B822 /* numpad_8_default.png in Resources */,
633FEE5C1D3CD5590014B822 /* edit_disabled.png in Resources */,
@ -4199,6 +4275,7 @@
633FEECB1D3CD55A0014B822 /* numpad_6_default.png in Resources */,
633FEDC71D3CD5590014B822 /* call_incoming@2x.png in Resources */,
633FEDB81D3CD5590014B822 /* call_alt_start_disabled.png in Resources */,
615A281D217F6FA80060F920 /* security_2_indicator@2x.png in Resources */,
633FEF3C1D3CD55A0014B822 /* security_ok.png in Resources */,
633FEEAF1D3CD55A0014B822 /* numpad_2_over~ipad.png in Resources */,
633FEEB81D3CD55A0014B822 /* numpad_3_over~ipad@2x.png in Resources */,
@ -4209,9 +4286,11 @@
639E9CA91C0DB7FB00019A75 /* UIConfirmationDialog.xib in Resources */,
633FEF111D3CD55A0014B822 /* pause_big_disabled@2x.png in Resources */,
633FEE321D3CD5590014B822 /* color_L.png in Resources */,
615A281F217F6FB40060F920 /* security_alert_indicator.png in Resources */,
CF7602F5210898CC00749F76 /* rec_off_default@2x.png in Resources */,
633FEDB41D3CD5590014B822 /* call_alt_back_disabled.png in Resources */,
633FEE631D3CD5590014B822 /* footer_chat_default@2x.png in Resources */,
615A281B217F6F9C0060F920 /* security_2_indicator.png in Resources */,
633FEE661D3CD5590014B822 /* footer_contacts_default.png in Resources */,
633FEDC11D3CD5590014B822 /* call_back_disabled@2x.png in Resources */,
633FEEEE1D3CD55A0014B822 /* numpad_hash_over@2x.png in Resources */,
@ -4222,6 +4301,7 @@
633FEDF31D3CD5590014B822 /* call_video_start_default@2x.png in Resources */,
24BFAAA2209B0630004F47A7 /* linphone_user~ipad@2x.png in Resources */,
633FEDBA1D3CD5590014B822 /* call_audio_start_default.png in Resources */,
61586B8F217A174F0038AC45 /* menu_options@2x.png in Resources */,
633FEE131D3CD5590014B822 /* chat_message_not_delivered@2x.png in Resources */,
63AADBF51B6A0FF200AA16FD /* linphonerc in Resources */,
633FEF0C1D3CD55A0014B822 /* options_transfer_call_disabled.png in Resources */,