History list sections

This commit is contained in:
Gautier Pelloux-Prayer 2015-10-20 09:57:42 +02:00
parent ee138eca7f
commit d0d88ddd73
17 changed files with 120 additions and 62 deletions

View file

@ -144,7 +144,7 @@
</accessibility>
</view>
<view contentMode="scaleAspectFit" id="127" userLabel="preview">
<rect key="frame" x="254" y="354.99999967643191" width="113" height="140"/>
<rect key="frame" x="254.00000029960563" y="354.99999934763446" width="113" height="140"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMinY="YES" heightSizable="YES"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</view>

View file

@ -11,6 +11,7 @@
<outlet property="backButton" destination="9" id="50"/>
<outlet property="cancelButton" destination="bPQ-aJ-Lk6" id="QHN-qi-QNv"/>
<outlet property="editButton" destination="8" id="31"/>
<outlet property="nameLabel" destination="moZ-Bg-zcv" id="Lt9-h0-2o1"/>
<outlet property="tableController" destination="20" id="27"/>
<outlet property="view" destination="1" id="3"/>
</connections>
@ -97,8 +98,36 @@
<outletCollection property="gestureRecognizers" destination="8bV-f4-pLL" appends="YES" id="4V5-Px-aHT"/>
</connections>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" usesAttributedText="YES" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="moZ-Bg-zcv" userLabel="nameLabel">
<rect key="frame" x="0.0" y="140" width="375" height="58"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<attributedString key="attributedText">
<fragment content="John">
<attributes>
<color key="NSColor" cocoaTouchSystemColor="darkTextColor"/>
<font key="NSFont" size="27" name="HelveticaNeue"/>
<paragraphStyle key="NSParagraphStyle" alignment="center" lineBreakMode="wordWrapping" baseWritingDirection="natural"/>
</attributes>
</fragment>
<fragment content=" ">
<attributes>
<color key="NSColor" cocoaTouchSystemColor="darkTextColor"/>
<font key="NSFont" size="17" name="HelveticaNeue"/>
<paragraphStyle key="NSParagraphStyle" alignment="center" lineBreakMode="wordWrapping" baseWritingDirection="natural"/>
</attributes>
</fragment>
<fragment content="Doe">
<attributes>
<color key="NSColor" cocoaTouchSystemColor="darkTextColor"/>
<font key="NSFont" size="27" name="HelveticaNeue-Bold"/>
<paragraphStyle key="NSParagraphStyle" alignment="center" lineBreakMode="wordWrapping" baseWritingDirection="natural"/>
</attributes>
</fragment>
</attributedString>
<nil key="highlightedColor"/>
</label>
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="plain" separatorStyle="none" allowsSelectionDuringEditing="YES" rowHeight="44" sectionHeaderHeight="1" sectionFooterHeight="1" id="19" userLabel="tableView">
<rect key="frame" x="0.0" y="132" width="375" height="427"/>
<rect key="frame" x="0.0" y="206" width="375" height="353"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES" flexibleMaxY="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<inset key="contentInset" minX="0.0" minY="0.0" maxX="0.0" maxY="10"/>

View file

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="7706" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="7703"/>
</dependencies>
<objects>
@ -118,7 +119,7 @@
</button>
</subviews>
</view>
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="plain" separatorStyle="default" allowsSelectionDuringEditing="YES" allowsMultipleSelectionDuringEditing="YES" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="17" userLabel="tableView">
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="plain" separatorStyle="default" allowsSelectionDuringEditing="YES" allowsMultipleSelectionDuringEditing="YES" rowHeight="44" sectionHeaderHeight="35" sectionFooterHeight="1" id="17" userLabel="tableView">
<rect key="frame" x="0.0" y="40" width="375" height="519"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>

View file

@ -21,7 +21,6 @@
#import <AddressBook/AddressBook.h>
#import "ContactDetailsDelegate.h"
#import "ContactDetailsLabelView.h"
typedef enum _ContactSections {
ContactSections_None = 0, // first section is empty because we cannot set header for first section
@ -33,7 +32,7 @@ typedef enum _ContactSections {
ContactSections_MAX
} ContactSections_e;
@interface ContactDetailsTableView : UITableViewController <ContactDetailsLabelViewDelegate, UITextFieldDelegate> {
@interface ContactDetailsTableView : UITableViewController <UITextFieldDelegate> {
@private
NSMutableArray *dataCache;
NSMutableArray *labelArray;

View file

@ -486,7 +486,8 @@ static const ContactSections_e contactSections[ContactSections_MAX] = {
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if (contactSections[section] == ContactSections_First_Name ||
contactSections[section] == ContactSections_Last_Name) {
return 1;
return 0;
// return (self.tableView.isEditing) ? 1 : 0 /*no first and last name when not editting */;
} else {
return [[self getSectionData:section] count];
}
@ -640,11 +641,6 @@ static const ContactSections_e contactSections[ContactSections_MAX] = {
}
if (key != nil) {
editingIndexPath = indexPath;
ContactDetailsLabelView *view = VIEW(ContactDetailsLabelView);
[PhoneMainView.instance changeCurrentView:view.compositeViewDescription push:TRUE];
[view setDataList:[self getLocalizedLabels]];
[view setSelectedData:key];
[view setDelegate:self];
}
}
}
@ -722,9 +718,9 @@ static const ContactSections_e contactSections[ContactSections_MAX] = {
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
NSString *text = nil;
if (contactSections[section] == ContactSections_First_Name) {
if (contactSections[section] == ContactSections_First_Name && self.tableView.isEditing) {
text = NSLocalizedString(@"First name", nil);
} else if (contactSections[section] == ContactSections_Last_Name) {
} else if (contactSections[section] == ContactSections_Last_Name && self.tableView.isEditing) {
text = NSLocalizedString(@"Last name", nil);
} else if ([self getSectionData:section].count > 0) {
if (contactSections[section] == ContactSections_Number) {
@ -842,8 +838,10 @@ static const ContactSections_e contactSections[ContactSections_MAX] = {
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
if (section == 0)
if (section == 0 || (!self.tableView.isEditing && (contactSections[section] == ContactSections_First_Name ||
contactSections[section] == ContactSections_Last_Name))) {
return 1e-5;
}
return [self tableView:tableView viewForHeaderInSection:section].frame.size.height;
}

View file

@ -38,6 +38,7 @@
@property(nonatomic, strong) IBOutlet UIButton *backButton;
@property(nonatomic, strong) IBOutlet UIButton *cancelButton;
@property(weak, nonatomic) IBOutlet UIRoundedImageView *avatarImage;
@property(weak, nonatomic) IBOutlet UILabel *nameLabel;
- (IBAction)onBackClick:(id)event;
- (IBAction)onCancelClick:(id)event;

View file

@ -113,6 +113,7 @@ static void sync_address_book(ABAddressBookRef addressBook, CFDictionaryRef info
[self resetData];
_contact = acontact;
_avatarImage.image = [FastAddressBook getContactImage:_contact thumbnail:NO];
[ContactDisplay setDisplayNameLabel:_nameLabel forContact:acontact];
[_tableController setContact:_contact];
if (reload) {

View file

@ -8,9 +8,12 @@
#import <UIKit/UIKit.h>
#import "linphone/linphonecore.h"
@interface HistoryDetailsTableView : UITableViewController {
@private
NSMutableArray *callLogs;
}
- (void)loadData;
- (void)loadDataForAddress:(const LinphoneAddress *)peer;
@end

View file

@ -12,13 +12,13 @@
@implementation HistoryDetailsTableView
- (void)loadData {
- (void)loadDataForAddress:(const LinphoneAddress *)peer {
if (callLogs == nil) {
callLogs = [[NSMutableArray alloc] init];
} else {
[callLogs removeAllObjects];
}
const MSList *logs = linphone_core_get_call_logs([LinphoneManager getLc]);
const MSList *logs = linphone_core_get_call_history_for_address([LinphoneManager getLc], peer);
while (logs != NULL) {
LinphoneCallLog *log = (LinphoneCallLog *)logs->data;
[callLogs addObject:[NSValue valueWithPointer:log]];

View file

@ -82,7 +82,7 @@ static UICompositeViewDescription *compositeDescription = nil;
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[_tableView loadData];
[_tableView loadDataForAddress:(callLog ? linphone_call_log_get_remote_address(callLog) : NULL)];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(update)

View file

@ -24,9 +24,9 @@
@interface HistoryListTableView : UICheckBoxTVTableViewController {
}
- (void)loadData;
@property(nonatomic, readonly) NSMutableArray *callLogs;
@property(nonatomic, assign) BOOL missedFilter;
@property(strong, nonatomic) NSMutableDictionary *sections;
@property(strong, nonatomic) NSArray *sortedDays;
@end

View file

@ -31,7 +31,6 @@
#pragma mark - Lifecycle Functions
- (void)initHistoryTableViewController {
_callLogs = [[NSMutableArray alloc] init];
missedFilter = false;
}
@ -94,29 +93,75 @@
#pragma mark - UITableViewDataSource Functions
- (NSDate *)dateAtBeginningOfDayForDate:(NSDate *)inputDate {
NSCalendar *calendar = [NSCalendar currentCalendar];
NSTimeZone *timeZone = [NSTimeZone systemTimeZone];
[calendar setTimeZone:timeZone];
NSDateComponents *dateComps =
[calendar components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:inputDate];
dateComps.hour = dateComps.minute = dateComps.second = 0;
return [calendar dateFromComponents:dateComps];
}
- (void)loadData {
[_callLogs removeAllObjects];
const MSList *logs = linphone_core_get_call_logs([LinphoneManager getLc]);
self.sections = [NSMutableDictionary dictionary];
while (logs != NULL) {
LinphoneCallLog *log = (LinphoneCallLog *)logs->data;
if (missedFilter) {
if (linphone_call_log_get_status(log) == LinphoneCallMissed) {
[_callLogs addObject:[NSValue valueWithPointer:log]];
if (!missedFilter || linphone_call_log_get_status(log) == LinphoneCallMissed) {
NSDate *startDate = [self
dateAtBeginningOfDayForDate:[NSDate
dateWithTimeIntervalSince1970:linphone_call_log_get_start_date(log)]];
NSMutableArray *eventsOnThisDay = [self.sections objectForKey:startDate];
if (eventsOnThisDay == nil) {
eventsOnThisDay = [NSMutableArray array];
[self.sections setObject:eventsOnThisDay forKey:startDate];
}
} else {
[_callLogs addObject:[NSValue valueWithPointer:log]];
[eventsOnThisDay addObject:[NSValue valueWithPointer:log]];
}
logs = ms_list_next(logs);
}
NSArray *unsortedDays = [self.sections allKeys];
self.sortedDays = [unsortedDays sortedArrayUsingComparator:^NSComparisonResult(NSDate *d1, NSDate *d2) {
return ![d1 compare:d2]; // reverse order
}];
[super loadData];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
return _sortedDays.count;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [_callLogs count];
NSArray *logs = [_sections objectForKey:_sortedDays[section]];
return logs.count;
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
UIView *tempView = [[UIView alloc] initWithFrame:CGRectMake(0, 200, 300, 244)];
tempView.backgroundColor = [UIColor clearColor];
UILabel *tempLabel = [[UILabel alloc] initWithFrame:CGRectMake(15, 0, 300, 44)];
tempLabel.backgroundColor = [UIColor clearColor];
tempLabel.textColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"color_A"]];
NSDate *eventDate = _sortedDays[section];
NSDate *currentDate = [self dateAtBeginningOfDayForDate:[NSDate date]];
if ([eventDate isEqualToDate:currentDate]) {
tempLabel.text = NSLocalizedString(@"TODAY", nil);
} else if ([eventDate isEqualToDate:[currentDate dateByAddingTimeInterval:-3600 * 24]]) {
tempLabel.text = NSLocalizedString(@"YESTERDAY", nil);
} else {
tempLabel.text =
[LinphoneUtils timeToString:eventDate.timeIntervalSince1970 withStyle:NSDateFormatterMediumStyle];
}
tempLabel.textAlignment = NSTextAlignmentCenter;
tempLabel.font = [UIFont boldSystemFontOfSize:17];
[tempView addSubview:tempLabel];
return tempView;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
@ -126,7 +171,7 @@
cell = [[UIHistoryCell alloc] initWithIdentifier:kCellId];
}
id logId = [_callLogs objectAtIndex:indexPath.row];
id logId = [_sections objectForKey:_sortedDays[indexPath.section]][indexPath.row];
LinphoneCallLog *log = [logId pointerValue];
[cell setCallLog:log];
[super accessoryForCell:cell atPath:indexPath];
@ -138,7 +183,8 @@
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[super tableView:tableView didSelectRowAtIndexPath:indexPath];
if (![self isEditing]) {
LinphoneCallLog *callLog = [[_callLogs objectAtIndex:[indexPath row]] pointerValue];
id log = [_sections objectForKey:_sortedDays[indexPath.section]][indexPath.row];
LinphoneCallLog *callLog = [log pointerValue];
if (callLog != NULL && linphone_call_log_get_call_id(callLog) != NULL) {
LinphoneAddress *addr = linphone_call_log_get_remote_address(callLog);
char *uri = linphone_address_as_string(addr);
@ -155,9 +201,14 @@
forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
[tableView beginUpdates];
LinphoneCallLog *callLog = [[_callLogs objectAtIndex:[indexPath row]] pointerValue];
id log = [_sections objectForKey:_sortedDays[indexPath.section]][indexPath.row];
LinphoneCallLog *callLog = [log pointerValue];
linphone_core_remove_call_log([LinphoneManager getLc], callLog);
[_callLogs removeObjectAtIndex:[indexPath row]];
[[_sections objectForKey:_sortedDays[indexPath.section]] removeObject:log];
if (((NSArray *)[_sections objectForKey:_sortedDays[indexPath.section]]).count == 0) {
[_sections removeObjectForKey:_sortedDays[indexPath.section]];
}
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
withRowAnimation:UITableViewRowAnimationFade];
[tableView endUpdates];

View file

@ -113,10 +113,9 @@
<object class="IBUIImageView" id="647977481">
<reference key="NSNextResponder" ref="675878782"/>
<int key="NSvFlags">297</int>
<string key="NSFrame">{{280, 11}, {25, 22}}</string>
<string key="NSFrame">{{310, 11}, {25, 22}}</string>
<reference key="NSSuperview" ref="675878782"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>

View file

@ -88,6 +88,7 @@
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.3];
}
_linphoneImage.alpha = editing ? 0 : 1;
if (animated) {
[UIView commitAnimations];
}

View file

@ -58,8 +58,8 @@
if (callLog != NULL && linphone_call_log_get_call_id(callLog) != NULL) {
// Go to History details view
HistoryDetailsView *view = VIEW(HistoryDetailsView);
[PhoneMainView.instance changeCurrentView:view.compositeViewDescription push:TRUE];
[view setCallLogId:[NSString stringWithUTF8String:linphone_call_log_get_call_id(callLog)]];
[PhoneMainView.instance changeCurrentView:view.compositeViewDescription push:TRUE];
}
}

View file

@ -26,7 +26,6 @@
#import "AboutView.h"
#import "ChatConversationView.h"
#import "ChatsListView.h"
#import "ContactDetailsLabelView.h"
#import "ContactDetailsView.h"
#import "ContactsListView.h"
#import "DialerView.h"

View file

@ -388,7 +388,6 @@
D35E7597159460580066B1C1 /* ChatsListView.m in Sources */ = {isa = PBXBuildFile; fileRef = D35E7595159460560066B1C1 /* ChatsListView.m */; };
D35E759F159460B70066B1C1 /* SettingsView.m in Sources */ = {isa = PBXBuildFile; fileRef = D35E759D159460B50066B1C1 /* SettingsView.m */; };
D36FB2D51589EF7C0036F6F2 /* UIPauseButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D36FB2D41589EF7C0036F6F2 /* UIPauseButton.m */; };
D378906515AC373B00BD776C /* ContactDetailsLabelView.m in Sources */ = {isa = PBXBuildFile; fileRef = D378906315AC373B00BD776C /* ContactDetailsLabelView.m */; };
D378AB2A15DCDB4A0098505D /* ImagePickerView.m in Sources */ = {isa = PBXBuildFile; fileRef = D378AB2915DCDB490098505D /* ImagePickerView.m */; };
D37C639B15AADEF6009D0BAC /* ContactDetailsTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = D37C639A15AADEF5009D0BAC /* ContactDetailsTableView.m */; };
D37DC6C11594AE1800B2A5EB /* LinphoneCoreSettingsStore.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6C01594AE1800B2A5EB /* LinphoneCoreSettingsStore.m */; };
@ -417,7 +416,6 @@
D380801315C299D0005BE9BC /* ColorSpaceUtilites.m in Sources */ = {isa = PBXBuildFile; fileRef = D380801215C299D0005BE9BC /* ColorSpaceUtilites.m */; };
D38187AD15FE340100C3EDCA /* ChatConversationView.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187B015FE340100C3EDCA /* ChatConversationView.xib */; };
D38187B115FE340500C3EDCA /* ChatsListView.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187B415FE340500C3EDCA /* ChatsListView.xib */; };
D38187B515FE341B00C3EDCA /* ContactDetailsLabelView.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187B815FE341B00C3EDCA /* ContactDetailsLabelView.xib */; };
D38187B915FE342200C3EDCA /* ContactDetailsView.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187BC15FE342200C3EDCA /* ContactDetailsView.xib */; };
D38187BD15FE342800C3EDCA /* ContactsListView.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187C015FE342800C3EDCA /* ContactsListView.xib */; };
D38187C115FE345B00C3EDCA /* DialerView.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187C415FE345B00C3EDCA /* DialerView.xib */; };
@ -1034,8 +1032,6 @@
D35E759D159460B50066B1C1 /* SettingsView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SettingsView.m; sourceTree = "<group>"; };
D36FB2D31589EF7C0036F6F2 /* UIPauseButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIPauseButton.h; sourceTree = "<group>"; };
D36FB2D41589EF7C0036F6F2 /* UIPauseButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIPauseButton.m; sourceTree = "<group>"; };
D378906215AC373B00BD776C /* ContactDetailsLabelView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactDetailsLabelView.h; sourceTree = "<group>"; };
D378906315AC373B00BD776C /* ContactDetailsLabelView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactDetailsLabelView.m; sourceTree = "<group>"; };
D378AB2815DCDB480098505D /* ImagePickerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImagePickerView.h; sourceTree = "<group>"; };
D378AB2915DCDB490098505D /* ImagePickerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ImagePickerView.m; sourceTree = "<group>"; };
D37C639915AADEF4009D0BAC /* ContactDetailsTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactDetailsTableView.h; sourceTree = "<group>"; };
@ -1135,7 +1131,6 @@
F0938158188E629800A55DFA /* iTunesArtwork */ = {isa = PBXFileReference; lastKnownFileType = file; path = iTunesArtwork; sourceTree = "<group>"; };
F09548181883F15300E8A69B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/ChatConversationView.xib; sourceTree = "<group>"; };
F09548191883F15300E8A69B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/ChatsListView.xib; sourceTree = "<group>"; };
F095481A1883F15300E8A69B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/ContactDetailsLabelView.xib; sourceTree = "<group>"; };
F095481B1883F15300E8A69B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/ContactDetailsView.xib; sourceTree = "<group>"; };
F095481C1883F15300E8A69B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/ContactsListView.xib; sourceTree = "<group>"; };
F095481D1883F15300E8A69B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/DialerView.xib; sourceTree = "<group>"; };
@ -1152,8 +1147,6 @@
F09548321883F20A00E8A69B /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/ChatConversationView.strings; sourceTree = "<group>"; };
F09548331883F25C00E8A69B /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/ChatsListView.strings; sourceTree = "<group>"; };
F09548341883F25F00E8A69B /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/ChatsListView.strings; sourceTree = "<group>"; };
F09548351883F28100E8A69B /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/ContactDetailsLabelView.strings; sourceTree = "<group>"; };
F09548361883F28400E8A69B /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/ContactDetailsLabelView.strings; sourceTree = "<group>"; };
F09548371883F29500E8A69B /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/ContactDetailsView.strings; sourceTree = "<group>"; };
F09548381883F29C00E8A69B /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/ContactDetailsView.strings; sourceTree = "<group>"; };
F09548391883F2C500E8A69B /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/ContactsListView.strings; sourceTree = "<group>"; };
@ -1179,7 +1172,6 @@
F0AF06F01A24BA760086C9C1 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/AboutView.strings; sourceTree = "<group>"; };
F0AF06F11A24BA760086C9C1 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/ChatConversationView.strings; sourceTree = "<group>"; };
F0AF06F21A24BA760086C9C1 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/ChatsListView.strings; sourceTree = "<group>"; };
F0AF06F31A24BA760086C9C1 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/ContactDetailsLabelView.strings; sourceTree = "<group>"; };
F0AF06F41A24BA760086C9C1 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/ContactDetailsView.strings; sourceTree = "<group>"; };
F0AF06F51A24BA760086C9C1 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/ContactsListView.strings; sourceTree = "<group>"; };
F0AF06F61A24BA760086C9C1 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/DialerView.strings; sourceTree = "<group>"; };
@ -1397,9 +1389,6 @@
D35E7595159460560066B1C1 /* ChatsListView.m */,
D38187B415FE340500C3EDCA /* ChatsListView.xib */,
D30BBD1215D3EFEB000F93DD /* ContactDetailsDelegate.h */,
D378906215AC373B00BD776C /* ContactDetailsLabelView.h */,
D378906315AC373B00BD776C /* ContactDetailsLabelView.m */,
D38187B815FE341B00C3EDCA /* ContactDetailsLabelView.xib */,
D37C639915AADEF4009D0BAC /* ContactDetailsTableView.h */,
D37C639A15AADEF5009D0BAC /* ContactDetailsTableView.m */,
D3128FDE15AABC7E00A2147A /* ContactDetailsView.h */,
@ -2462,7 +2451,6 @@
D38187B915FE342200C3EDCA /* ContactDetailsView.xib in Resources */,
6375285D1BBA8EF700FDEA6F /* routes_default.png in Resources */,
637528691BBA8EF700FDEA6F /* status_away.png in Resources */,
D38187B515FE341B00C3EDCA /* ContactDetailsLabelView.xib in Resources */,
6375281B1BBA8EF700FDEA6F /* history_all_selected.png in Resources */,
63AADC001B6A0FF200AA16FD /* assistant_linphone_create.rc in Resources */,
637527F21BBA8EF700FDEA6F /* chat_send_over.png in Resources */,
@ -2732,7 +2720,6 @@
D37C639B15AADEF6009D0BAC /* ContactDetailsTableView.m in Sources */,
63E59A3F1ADE70D900646FB3 /* InAppProductsManager.m in Sources */,
D3C6526715AC1A8F0092A874 /* UIEditableTableViewCell.m in Sources */,
D378906515AC373B00BD776C /* ContactDetailsLabelView.m in Sources */,
631348301B6F7B6600C6BDCB /* UIRoundBorderedButton.m in Sources */,
C90FAA7915AF54E6002091CB /* HistoryDetailsView.m in Sources */,
63FB30351A680E73008CA393 /* UIRoundedImageView.m in Sources */,
@ -3022,17 +3009,6 @@
name = ChatsListView.xib;
sourceTree = "<group>";
};
D38187B815FE341B00C3EDCA /* ContactDetailsLabelView.xib */ = {
isa = PBXVariantGroup;
children = (
F095481A1883F15300E8A69B /* Base */,
F09548351883F28100E8A69B /* fr */,
F09548361883F28400E8A69B /* ru */,
F0AF06F31A24BA760086C9C1 /* ar */,
);
name = ContactDetailsLabelView.xib;
sourceTree = "<group>";
};
D38187BC15FE342200C3EDCA /* ContactDetailsView.xib */ = {
isa = PBXVariantGroup;
children = (