From d0d88ddd739fa972c863d6491a8fdc9b8899b424 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Tue, 20 Oct 2015 09:57:42 +0200 Subject: [PATCH] History list sections --- Classes/Base.lproj/CallView.xib | 2 +- Classes/Base.lproj/ContactDetailsView.xib | 31 +++++++- Classes/Base.lproj/HistoryListView.xib | 3 +- Classes/ContactDetailsTableView.h | 3 +- Classes/ContactDetailsTableView.m | 16 ++-- Classes/ContactDetailsView.h | 1 + Classes/ContactDetailsView.m | 1 + Classes/HistoryDetailsTableView.h | 5 +- Classes/HistoryDetailsTableView.m | 4 +- Classes/HistoryDetailsView.m | 2 +- Classes/HistoryListTableView.h | 6 +- Classes/HistoryListTableView.m | 77 +++++++++++++++---- .../LinphoneUI/Base.lproj/UIContactCell.xib | 3 +- Classes/LinphoneUI/UIContactCell.m | 1 + Classes/LinphoneUI/UIHistoryCell.m | 2 +- Classes/PhoneMainView.h | 1 - linphone.xcodeproj/project.pbxproj | 24 ------ 17 files changed, 120 insertions(+), 62 deletions(-) diff --git a/Classes/Base.lproj/CallView.xib b/Classes/Base.lproj/CallView.xib index b93eb19b6..0edcae9f7 100644 --- a/Classes/Base.lproj/CallView.xib +++ b/Classes/Base.lproj/CallView.xib @@ -144,7 +144,7 @@ - + diff --git a/Classes/Base.lproj/ContactDetailsView.xib b/Classes/Base.lproj/ContactDetailsView.xib index 47f0c8974..239e01980 100644 --- a/Classes/Base.lproj/ContactDetailsView.xib +++ b/Classes/Base.lproj/ContactDetailsView.xib @@ -11,6 +11,7 @@ + @@ -97,8 +98,36 @@ + - + diff --git a/Classes/Base.lproj/HistoryListView.xib b/Classes/Base.lproj/HistoryListView.xib index 8e8e365ea..818d4839f 100644 --- a/Classes/Base.lproj/HistoryListView.xib +++ b/Classes/Base.lproj/HistoryListView.xib @@ -1,6 +1,7 @@ + @@ -118,7 +119,7 @@ - + diff --git a/Classes/ContactDetailsTableView.h b/Classes/ContactDetailsTableView.h index 35bf74d1a..e521dc505 100644 --- a/Classes/ContactDetailsTableView.h +++ b/Classes/ContactDetailsTableView.h @@ -21,7 +21,6 @@ #import #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 { +@interface ContactDetailsTableView : UITableViewController { @private NSMutableArray *dataCache; NSMutableArray *labelArray; diff --git a/Classes/ContactDetailsTableView.m b/Classes/ContactDetailsTableView.m index 5190a58a7..1426e4bfa 100644 --- a/Classes/ContactDetailsTableView.m +++ b/Classes/ContactDetailsTableView.m @@ -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; } diff --git a/Classes/ContactDetailsView.h b/Classes/ContactDetailsView.h index 8e6f8f272..24593e564 100644 --- a/Classes/ContactDetailsView.h +++ b/Classes/ContactDetailsView.h @@ -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; diff --git a/Classes/ContactDetailsView.m b/Classes/ContactDetailsView.m index 10d6f5014..4584b3d19 100644 --- a/Classes/ContactDetailsView.m +++ b/Classes/ContactDetailsView.m @@ -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) { diff --git a/Classes/HistoryDetailsTableView.h b/Classes/HistoryDetailsTableView.h index 5f5537942..025561893 100644 --- a/Classes/HistoryDetailsTableView.h +++ b/Classes/HistoryDetailsTableView.h @@ -8,9 +8,12 @@ #import +#import "linphone/linphonecore.h" + @interface HistoryDetailsTableView : UITableViewController { @private NSMutableArray *callLogs; } -- (void)loadData; +- (void)loadDataForAddress:(const LinphoneAddress *)peer; + @end diff --git a/Classes/HistoryDetailsTableView.m b/Classes/HistoryDetailsTableView.m index f3a041db9..3c2d98f54 100644 --- a/Classes/HistoryDetailsTableView.m +++ b/Classes/HistoryDetailsTableView.m @@ -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]]; diff --git a/Classes/HistoryDetailsView.m b/Classes/HistoryDetailsView.m index 7b1b6a015..ea48c72f5 100644 --- a/Classes/HistoryDetailsView.m +++ b/Classes/HistoryDetailsView.m @@ -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) diff --git a/Classes/HistoryListTableView.h b/Classes/HistoryListTableView.h index 230fcb15c..dfae042e0 100644 --- a/Classes/HistoryListTableView.h +++ b/Classes/HistoryListTableView.h @@ -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 diff --git a/Classes/HistoryListTableView.m b/Classes/HistoryListTableView.m index 0e64a0c86..768b00464 100644 --- a/Classes/HistoryListTableView.m +++ b/Classes/HistoryListTableView.m @@ -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]; diff --git a/Classes/LinphoneUI/Base.lproj/UIContactCell.xib b/Classes/LinphoneUI/Base.lproj/UIContactCell.xib index b5646d11e..1d290c85b 100644 --- a/Classes/LinphoneUI/Base.lproj/UIContactCell.xib +++ b/Classes/LinphoneUI/Base.lproj/UIContactCell.xib @@ -113,10 +113,9 @@ 297 - {{280, 11}, {25, 22}} + {{310, 11}, {25, 22}} - _NS:9 NO IBCocoaTouchFramework diff --git a/Classes/LinphoneUI/UIContactCell.m b/Classes/LinphoneUI/UIContactCell.m index a5de1bdd4..2fee09d02 100644 --- a/Classes/LinphoneUI/UIContactCell.m +++ b/Classes/LinphoneUI/UIContactCell.m @@ -88,6 +88,7 @@ [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.3]; } + _linphoneImage.alpha = editing ? 0 : 1; if (animated) { [UIView commitAnimations]; } diff --git a/Classes/LinphoneUI/UIHistoryCell.m b/Classes/LinphoneUI/UIHistoryCell.m index 70358eafa..cd0f0c69c 100644 --- a/Classes/LinphoneUI/UIHistoryCell.m +++ b/Classes/LinphoneUI/UIHistoryCell.m @@ -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]; } } diff --git a/Classes/PhoneMainView.h b/Classes/PhoneMainView.h index e18a6afa0..5c44e288b 100644 --- a/Classes/PhoneMainView.h +++ b/Classes/PhoneMainView.h @@ -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" diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index b5c5fa5fd..205fc2330 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -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 = ""; }; D36FB2D31589EF7C0036F6F2 /* UIPauseButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIPauseButton.h; sourceTree = ""; }; D36FB2D41589EF7C0036F6F2 /* UIPauseButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIPauseButton.m; sourceTree = ""; }; - D378906215AC373B00BD776C /* ContactDetailsLabelView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactDetailsLabelView.h; sourceTree = ""; }; - D378906315AC373B00BD776C /* ContactDetailsLabelView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactDetailsLabelView.m; sourceTree = ""; }; D378AB2815DCDB480098505D /* ImagePickerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImagePickerView.h; sourceTree = ""; }; D378AB2915DCDB490098505D /* ImagePickerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ImagePickerView.m; sourceTree = ""; }; D37C639915AADEF4009D0BAC /* ContactDetailsTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactDetailsTableView.h; sourceTree = ""; }; @@ -1135,7 +1131,6 @@ F0938158188E629800A55DFA /* iTunesArtwork */ = {isa = PBXFileReference; lastKnownFileType = file; path = iTunesArtwork; sourceTree = ""; }; F09548181883F15300E8A69B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/ChatConversationView.xib; sourceTree = ""; }; F09548191883F15300E8A69B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/ChatsListView.xib; sourceTree = ""; }; - F095481A1883F15300E8A69B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/ContactDetailsLabelView.xib; sourceTree = ""; }; F095481B1883F15300E8A69B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/ContactDetailsView.xib; sourceTree = ""; }; F095481C1883F15300E8A69B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/ContactsListView.xib; sourceTree = ""; }; F095481D1883F15300E8A69B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/DialerView.xib; sourceTree = ""; }; @@ -1152,8 +1147,6 @@ F09548321883F20A00E8A69B /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/ChatConversationView.strings; sourceTree = ""; }; F09548331883F25C00E8A69B /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/ChatsListView.strings; sourceTree = ""; }; F09548341883F25F00E8A69B /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/ChatsListView.strings; sourceTree = ""; }; - F09548351883F28100E8A69B /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/ContactDetailsLabelView.strings; sourceTree = ""; }; - F09548361883F28400E8A69B /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/ContactDetailsLabelView.strings; sourceTree = ""; }; F09548371883F29500E8A69B /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/ContactDetailsView.strings; sourceTree = ""; }; F09548381883F29C00E8A69B /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/ContactDetailsView.strings; sourceTree = ""; }; F09548391883F2C500E8A69B /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/ContactsListView.strings; sourceTree = ""; }; @@ -1179,7 +1172,6 @@ F0AF06F01A24BA760086C9C1 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/AboutView.strings; sourceTree = ""; }; F0AF06F11A24BA760086C9C1 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/ChatConversationView.strings; sourceTree = ""; }; F0AF06F21A24BA760086C9C1 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/ChatsListView.strings; sourceTree = ""; }; - F0AF06F31A24BA760086C9C1 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/ContactDetailsLabelView.strings; sourceTree = ""; }; F0AF06F41A24BA760086C9C1 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/ContactDetailsView.strings; sourceTree = ""; }; F0AF06F51A24BA760086C9C1 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/ContactsListView.strings; sourceTree = ""; }; F0AF06F61A24BA760086C9C1 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/DialerView.strings; sourceTree = ""; }; @@ -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 = ""; }; - D38187B815FE341B00C3EDCA /* ContactDetailsLabelView.xib */ = { - isa = PBXVariantGroup; - children = ( - F095481A1883F15300E8A69B /* Base */, - F09548351883F28100E8A69B /* fr */, - F09548361883F28400E8A69B /* ru */, - F0AF06F31A24BA760086C9C1 /* ar */, - ); - name = ContactDetailsLabelView.xib; - sourceTree = ""; - }; D38187BC15FE342200C3EDCA /* ContactDetailsView.xib */ = { isa = PBXVariantGroup; children = (