From 85eadac3ce9123d39fb9a4185145f6e081a684d8 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Tue, 12 Jun 2012 18:26:21 +0200 Subject: [PATCH] Continue workoing on new ui Add own contact picker (WIP) --- Classes/CallHistoryTableViewController.h | 9 +- Classes/CallHistoryTableViewController.m | 16 +- Classes/CallHistoryTableViewController.xib | 201 -------- ...troller.h => ContactTableViewController.h} | 19 +- Classes/ContactTableViewController.m | 103 ++++ ...bViewController.m => ContactsController.h} | 39 +- Classes/ContactsController.m | 64 +++ Classes/ContactsController.xib | 444 ++++++++++++++++++ Classes/HistoryController.h | 33 ++ Classes/HistoryController.m | 63 +++ Classes/HistoryController.xib | 441 +++++++++++++++++ Classes/LinphoneAppDelegate.m | 1 - .../ContactCell.h} | 21 +- Classes/LinphoneUI/ContactCell.m | 37 ++ Classes/LinphoneUI/ContactCell.xib | 195 ++++++++ Classes/LinphoneUI/LinphoneMainBar.h | 10 + Classes/LinphoneUI/LinphoneMainBar.m | 60 ++- Classes/LinphoneUI/LinphoneMainBar.xib | 169 +++++-- Classes/LinphoneUI/LinphoneStatusBar.h | 19 +- Classes/LinphoneUI/LinphoneStatusBar.m | 73 ++- Classes/LinphoneUI/LinphoneStatusBar.xib | 197 ++++++-- Classes/PhoneMainView.h | 13 +- Classes/PhoneMainView.m | 67 ++- Classes/PhoneMainView.xib | 191 ++++++-- Classes/PhoneViewController.h | 2 - Classes/PhoneViewController.m | 8 +- Classes/StatusSubViewController.m | 99 ---- Classes/StatusSubViewController.xib | 252 ---------- Resources/add-contact-depuis-detail-actif.png | Bin 0 -> 5978 bytes Resources/add-contact-depuis-detail-over.png | Bin 0 -> 5238 bytes Resources/all-call-actif.png | Bin 0 -> 6040 bytes Resources/all-call-selectionne.png | Bin 0 -> 6620 bytes Resources/all-contacts-actif.png | Bin 0 -> 6459 bytes Resources/all-contacts-selectionne.png | Bin 0 -> 7073 bytes Resources/bouton-detail-contact-actif.png | Bin 0 -> 4453 bytes Resources/bouton-detail-contact-over.png | Bin 0 -> 4499 bytes Resources/edit-history-actif.png | Bin 0 -> 4693 bytes Resources/edit-history-over.png | Bin 0 -> 4306 bytes Resources/linphone-actif.png | Bin 0 -> 8575 bytes Resources/linphone-selectionne.png | Bin 0 -> 9428 bytes Resources/missed-actif.png | Bin 0 -> 8044 bytes Resources/missed-selectionne.png | Bin 0 -> 8649 bytes linphone.xcodeproj/project.pbxproj | 206 ++++++-- 43 files changed, 2216 insertions(+), 836 deletions(-) delete mode 100644 Classes/CallHistoryTableViewController.xib rename Classes/{GenericTabViewController.h => ContactTableViewController.h} (73%) create mode 100644 Classes/ContactTableViewController.m rename Classes/{GenericTabViewController.m => ContactsController.h} (62%) create mode 100644 Classes/ContactsController.m create mode 100644 Classes/ContactsController.xib create mode 100644 Classes/HistoryController.h create mode 100644 Classes/HistoryController.m create mode 100644 Classes/HistoryController.xib rename Classes/{StatusSubViewController.h => LinphoneUI/ContactCell.h} (67%) create mode 100644 Classes/LinphoneUI/ContactCell.m create mode 100644 Classes/LinphoneUI/ContactCell.xib delete mode 100644 Classes/StatusSubViewController.m delete mode 100644 Classes/StatusSubViewController.xib create mode 100644 Resources/add-contact-depuis-detail-actif.png create mode 100644 Resources/add-contact-depuis-detail-over.png create mode 100644 Resources/all-call-actif.png create mode 100644 Resources/all-call-selectionne.png create mode 100644 Resources/all-contacts-actif.png create mode 100644 Resources/all-contacts-selectionne.png create mode 100644 Resources/bouton-detail-contact-actif.png create mode 100644 Resources/bouton-detail-contact-over.png create mode 100644 Resources/edit-history-actif.png create mode 100644 Resources/edit-history-over.png create mode 100644 Resources/linphone-actif.png create mode 100644 Resources/linphone-selectionne.png create mode 100644 Resources/missed-actif.png create mode 100644 Resources/missed-selectionne.png diff --git a/Classes/CallHistoryTableViewController.h b/Classes/CallHistoryTableViewController.h index 334c5d3d1..21b4abac5 100644 --- a/Classes/CallHistoryTableViewController.h +++ b/Classes/CallHistoryTableViewController.h @@ -16,14 +16,9 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + #import -#import "GenericTabViewController.h" - -@interface CallHistoryTableViewController : GenericTabViewController { - UIButton* clear; +@interface CallHistoryTableViewController : UITableViewController { } --(void) doAction:(id) sender; - -@property (nonatomic, retain) IBOutlet UIButton* clear; @end diff --git a/Classes/CallHistoryTableViewController.m b/Classes/CallHistoryTableViewController.m index 72633984f..a55c5ffd6 100644 --- a/Classes/CallHistoryTableViewController.m +++ b/Classes/CallHistoryTableViewController.m @@ -22,9 +22,6 @@ @implementation CallHistoryTableViewController - -@synthesize clear; - /* - (id)initWithStyle:(UITableViewStyle)style { // Override initWithStyle: if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad. @@ -33,19 +30,11 @@ return self; } */ - - +/* - (void)viewDidLoad { [super viewDidLoad]; - - UIBarButtonItem* clearButton = [[UIBarButtonItem alloc] - initWithBarButtonSystemItem:UIBarButtonSystemItemTrash - target:self - action:@selector(doAction:)]; - [self.navigationItem setRightBarButtonItem:clearButton]; - [clearButton release]; } - +*/ /* - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; @@ -243,7 +232,6 @@ } */ - - (void)dealloc { [super dealloc]; } diff --git a/Classes/CallHistoryTableViewController.xib b/Classes/CallHistoryTableViewController.xib deleted file mode 100644 index ceb06857e..000000000 --- a/Classes/CallHistoryTableViewController.xib +++ /dev/null @@ -1,201 +0,0 @@ - - - - 784 - 9L31a - 680 - 949.54 - 353.00 - - YES - - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - YES - - YES - - - YES - - - - YES - - IBFilesOwner - - - IBFirstResponder - - - - 292 - {320, 460} - - - 3 - MQA - - NO - YES - NO - - NO - 1 - 0 - YES - 4.400000e+01 - 4.400000e+01 - 2.200000e+01 - - - - - YES - - - view - - - - 5 - - - - dataSource - - - - 6 - - - - delegate - - - - 7 - - - - - YES - - 0 - - YES - - - - - - -1 - - - RmlsZSdzIE93bmVyA - - - -2 - - - - - 4 - - - - - - - YES - - YES - -1.CustomClassName - -2.CustomClassName - 4.IBEditorWindowLastContentRect - 4.IBPluginDependency - - - YES - CallHistoryTableViewController - UIResponder - {{163, 500}, {320, 480}} - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - YES - - YES - - - YES - - - - - YES - - YES - - - YES - - - - 13 - - - - YES - - CallHistoryTableViewController - GenericTabViewController - - doAction: - id - - - clear - UIButton - - - IBProjectSource - Classes/CallHistoryTableViewController.h - - - - GenericTabViewController - UITableViewController - - YES - - YES - header - linphoneDelegate - phoneControllerDelegate - - - YES - UIView - id - id - - - - IBProjectSource - Classes/GenericTabViewController.h - - - - - 0 - ../linphone.xcodeproj - 3 - 3.1 - - diff --git a/Classes/GenericTabViewController.h b/Classes/ContactTableViewController.h similarity index 73% rename from Classes/GenericTabViewController.h rename to Classes/ContactTableViewController.h index 206a3bb6a..5b4bd1a2b 100644 --- a/Classes/GenericTabViewController.h +++ b/Classes/ContactTableViewController.h @@ -1,6 +1,6 @@ -/* GenericTabViewController.h +/* ContactTableViewController.h * - * Copyright (C) 2009 Belledonne Comunications, Grenoble, France + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,14 +18,13 @@ */ #import -#include "linphonecore.h" -#import "PhoneViewController.h" -#import "linphoneAppDelegate.h" +#import +#import -@interface GenericTabViewController : UITableViewController { - LinphoneCore* myLinphoneCore; - IBOutlet UIView* header; +@interface ContactTableViewController : UITableViewController { + NSMutableDictionary* addressBookMap; + + ABAddressBookRef addressBook; } -@property (nonatomic, retain) IBOutlet UIView* header; -@end +@end diff --git a/Classes/ContactTableViewController.m b/Classes/ContactTableViewController.m new file mode 100644 index 000000000..11b639d9f --- /dev/null +++ b/Classes/ContactTableViewController.m @@ -0,0 +1,103 @@ +/* ContactTableViewController.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#include "ContactTableViewController.h" +#import "LinphoneManager.h" +#import "FastAddressBook.h" +#import "ContactCell.h" + +@implementation ContactTableViewController + +#pragma mark Table view methods +NSString *contactTOC = @"ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + +void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void *context) { + ContactTableViewController* controller = (ContactTableViewController*)context; + NSMutableDictionary* lAddressBookMap = controller->addressBookMap; + @synchronized (lAddressBookMap) { + + // Reset Address book + [lAddressBookMap removeAllObjects]; + + for(int i = 0; i < [contactTOC length]; i++) { + [lAddressBookMap setObject: [[NSMutableDictionary alloc] init] forKey:[contactTOC substringWithRange:NSMakeRange(i, 1)]]; + } + + NSArray *lContacts = (NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook); + for (id lPerson in lContacts) { + CFStringRef lValue = ABRecordCopyValue((ABRecordRef)lPerson, kABPersonFirstNameProperty); + CFStringRef lLocalizedLabel = ABAddressBookCopyLocalizedLabel(lValue); + + // Put in correct subDic + NSString *firstChar = [[(NSString *)lLocalizedLabel substringToIndex:1] uppercaseString]; + NSMutableDictionary *subDic =[lAddressBookMap objectForKey: firstChar]; + if(subDic == nil) { + subDic = [[NSMutableDictionary alloc] init]; + [lAddressBookMap setObject: subDic forKey:firstChar]; + } + [subDic setObject:lPerson forKey:[(NSString *)lLocalizedLabel retain]]; + + if (lLocalizedLabel) CFRelease(lLocalizedLabel); + CFRelease(lValue); + } + CFRelease(lContacts); + } + [controller.view reloadData]; +} + +- (void) viewDidLoad { + addressBookMap = [[NSMutableDictionary alloc] init]; + addressBook = ABAddressBookCreate(); + ABAddressBookRegisterExternalChangeCallback (addressBook, sync_toc_address_book, self); + sync_toc_address_book(addressBook, nil, self); +} + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return [contactTOC length]; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return [(NSMutableDictionary *)[addressBookMap objectForKey: [contactTOC substringWithRange:NSMakeRange(section, 1)]] count]; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + ContactCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ContactCell"]; + if (cell == nil) { + cell = [[ContactCell alloc] init]; + } + + NSMutableDictionary *subDic = [addressBookMap objectForKey: [contactTOC substringWithRange:NSMakeRange([indexPath section], 1)]]; + + [cell.label setText: (NSString *)[[subDic allKeys] objectAtIndex:[indexPath row]]]; + return cell; +} + +- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { + return [contactTOC substringWithRange:NSMakeRange(section, 1)]; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { +} + +- (void)dealloc { + [super dealloc]; + [addressBookMap removeAllObjects]; +} + +@end diff --git a/Classes/GenericTabViewController.m b/Classes/ContactsController.h similarity index 62% rename from Classes/GenericTabViewController.m rename to Classes/ContactsController.h index e3dc5a208..2676c9d1b 100644 --- a/Classes/GenericTabViewController.m +++ b/Classes/ContactsController.h @@ -1,6 +1,6 @@ -/* GenericTabViewController.c +/* HistoryController.h * - * Copyright (C) 2009 Belledonne Comunications, Grenoble, France + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -15,31 +15,18 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ + */ -#import "GenericTabViewController.h" +#import - -@implementation GenericTabViewController -@synthesize header; - - -- (void)viewDidLoad { - [super viewDidLoad]; - self.tableView.tableHeaderView=header; +@interface ContactsController : UIViewController { + UITableViewController *tableController; + UIButton *allButton; + UIButton *linphoneButton; } - -- (void)viewDidAppear:(BOOL)animated { - [super viewDidAppear:animated]; - [self.tableView reloadData]; -} - - - -- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath { - - [self tableView:tableView didSelectRowAtIndexPath:indexPath]; -} - +@property (nonatomic, retain) IBOutlet UITableViewController* tableController; +@property (nonatomic, retain) IBOutlet UIButton* allButton; +@property (nonatomic, retain) IBOutlet UIButton* linphoneButton; +-(IBAction) onAllClick: (id) event; +-(IBAction) onLinphoneClick: (id) event; @end - diff --git a/Classes/ContactsController.m b/Classes/ContactsController.m new file mode 100644 index 000000000..515784419 --- /dev/null +++ b/Classes/ContactsController.m @@ -0,0 +1,64 @@ +/* HistoryController.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + + +#import "ContactsController.h" +#import "AddressBook/ABPerson.h" + +@implementation ContactsController + +@synthesize tableController; +@synthesize allButton; +@synthesize linphoneButton; + +typedef enum _HistoryView { + History_All, + History_Linphone, + History_MAX +} HistoryView; + + +- (void) changeView: (HistoryView) view { + if(view == History_All) { + allButton.selected = TRUE; + } else { + allButton.selected = FALSE; + } + + if(view == History_Linphone) { + linphoneButton.selected = TRUE; + } else { + linphoneButton.selected = FALSE; + } +} + +- (void) viewDidLoad { + [super viewDidLoad]; + [self changeView: History_All]; +} + +-(IBAction) onAllClick: (id) event { + [self changeView: History_All]; +} + +-(IBAction) onLinphoneClick: (id) event { + [self changeView: History_Linphone]; +} + +@end diff --git a/Classes/ContactsController.xib b/Classes/ContactsController.xib new file mode 100644 index 000000000..4273e7de4 --- /dev/null +++ b/Classes/ContactsController.xib @@ -0,0 +1,444 @@ + + + + 1296 + 11E53 + 2182 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1181 + + + IBUIButton + IBUITableView + IBUIView + IBUITableViewController + IBProxyObject + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 292 + + + + 274 + + + + 292 + {106, 58} + + + + _NS:9 + NO + + All + + IBCocoaTouchFramework + 0 + 0 + NO + + 3 + MC41AA + + + NSImage + all-contacts-selectionne.png + + + NSImage + all-contacts-actif.png + + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + + 292 + {{106, 0}, {106, 58}} + + + + _NS:9 + NO + + Linphone + + IBCocoaTouchFramework + 0 + 0 + NO + + + NSImage + linphone-selectionne.png + + + NSImage + linphone-actif.png + + + + + + + 292 + {{212, 0}, {108, 58}} + + + + _NS:9 + NO + + Add contact + + IBCocoaTouchFramework + 0 + 0 + NO + + + NSImage + add-contact-depuis-detail-over.png + + + NSImage + add-contact-depuis-detail-actif.png + + + + + + {320, 58} + + + + _NS:9 + + 3 + MQA + + 2 + + + IBCocoaTouchFramework + + + + 274 + {{0, 58}, {320, 402}} + + + _NS:10 + + 3 + MQA + + NO + YES + NO + IBCocoaTouchFramework + YES + YES + NO + 1 + 0 + YES + 44 + 22 + 22 + + + {320, 460} + + + + _NS:9 + + 3 + MQA + + + IBCocoaTouchFramework + + + + + 1 + 1 + + IBCocoaTouchFramework + NO + + + + + + + view + + + + 16 + + + + allButton + + + + 27 + + + + linphoneButton + + + + 31 + + + + tableController + + + + 83 + + + + onAllClick: + + + 7 + + 29 + + + + onLinphoneClick: + + + 7 + + 47 + + + + dataSource + + + + 81 + + + + delegate + + + + 82 + + + + view + + + + 80 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 2 + + + + + + + + + 3 + + + + + + + + header + + + 4 + + + all + + + 5 + + + linphone + + + 6 + + + addContact + + + 69 + + + tableView + + + 76 + + + + tableController + + + + + ContactsController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + ContactTableViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 83 + + + + + ContactTableViewController + UITableViewController + + IBProjectSource + ./Classes/ContactTableViewController.h + + + + ContactsController + UIViewController + + id + id + + + + onAllClick: + id + + + onLinphoneClick: + id + + + + UIButton + UIButton + UITableViewController + + + + allButton + UIButton + + + linphoneButton + UIButton + + + tableController + UITableViewController + + + + IBProjectSource + ./Classes/ContactsController.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + YES + 3 + + {214, 117} + {214, 117} + {213, 117} + {213, 117} + {213, 117} + {213, 117} + + 1181 + + diff --git a/Classes/HistoryController.h b/Classes/HistoryController.h new file mode 100644 index 000000000..265f608ed --- /dev/null +++ b/Classes/HistoryController.h @@ -0,0 +1,33 @@ +/* HistoryController.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import +#import "CallHistoryTableViewController.h" + +@interface HistoryController : UIViewController { + CallHistoryTableViewController *tableController; + UIButton *allButton; + UIButton *missedButton; +} +@property (nonatomic, retain) IBOutlet CallHistoryTableViewController* tableController; +@property (nonatomic, retain) IBOutlet UIButton* allButton; +@property (nonatomic, retain) IBOutlet UIButton* missedButton; +-(IBAction) onAllClick: (id) event; +-(IBAction) onMissedClick: (id) event; +@end diff --git a/Classes/HistoryController.m b/Classes/HistoryController.m new file mode 100644 index 000000000..cdd746907 --- /dev/null +++ b/Classes/HistoryController.m @@ -0,0 +1,63 @@ +/* HistoryController.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + + +#import "HistoryController.h" + + +@implementation HistoryController +@synthesize tableController; +@synthesize allButton; +@synthesize missedButton; + +typedef enum _HistoryView { + History_All, + History_Missed, + History_MAX +} HistoryView; + + +- (void) changeView: (HistoryView) view { + if(view == History_All) { + allButton.selected = TRUE; + } else { + allButton.selected = FALSE; + } + + if(view == History_Missed) { + missedButton.selected = TRUE; + } else { + missedButton.selected = FALSE; + } +} + +- (void) viewDidLoad { + [super viewDidLoad]; + [self changeView: History_All]; +} + +-(IBAction) onAllClick: (id) event { + [self changeView: History_All]; +} + +-(IBAction) onMissedClick: (id) event { + [self changeView: History_Missed]; +} + +@end diff --git a/Classes/HistoryController.xib b/Classes/HistoryController.xib new file mode 100644 index 000000000..3f23429e4 --- /dev/null +++ b/Classes/HistoryController.xib @@ -0,0 +1,441 @@ + + + + 1296 + 11E53 + 2182 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1181 + + + IBUIButton + IBUITableView + IBUIView + IBUITableViewController + IBProxyObject + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 292 + + + + 274 + + + + 292 + {106, 58} + + + + _NS:9 + NO + + All + + IBCocoaTouchFramework + 0 + 0 + NO + + 3 + MC41AA + + + NSImage + all-call-selectionne.png + + + NSImage + all-call-actif.png + + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + + 292 + {{106, 0}, {106, 58}} + + + + _NS:9 + NO + + Missed + + IBCocoaTouchFramework + 0 + 0 + NO + + + NSImage + missed-selectionne.png + + + NSImage + missed-actif.png + + + + + + + 292 + {{212, 0}, {108, 58}} + + + + _NS:9 + NO + + Edit + + IBCocoaTouchFramework + 0 + 0 + NO + + + NSImage + edit-history-over.png + + + NSImage + edit-history-actif.png + + + + + + {320, 58} + + + + _NS:9 + + 3 + MQA + + 2 + + + IBCocoaTouchFramework + + + + 274 + {{0, 58}, {320, 402}} + + + + _NS:9 + + 3 + MQA + + YES + IBCocoaTouchFramework + YES + 1 + 0 + YES + 44 + 22 + 22 + + + {320, 460} + + + + _NS:9 + + 3 + MQA + + + IBCocoaTouchFramework + + + + + 1 + 1 + + IBCocoaTouchFramework + NO + + + + + + + view + + + + 16 + + + + tableController + + + + 26 + + + + allButton + + + + 27 + + + + missedButton + + + + 28 + + + + onAllClick: + + + 7 + + 29 + + + + onMissedClick: + + + 7 + + 30 + + + + dataSource + + + + 23 + + + + delegate + + + + 24 + + + + view + + + + 25 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 2 + + + + + + + + + 3 + + + + + + + + header + + + 4 + + + all + + + 5 + + + missed + + + 6 + + + edit + + + 17 + + + tableView + + + 18 + + + + tableController + + + + + HistoryController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + CallHistoryTableViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + + 30 + + + + + CallHistoryTableViewController + UITableViewController + + IBProjectSource + ./Classes/CallHistoryTableViewController.h + + + + HistoryController + UIViewController + + id + id + + + + onAllClick: + id + + + onMissedClick: + id + + + + UIButton + UIButton + CallHistoryTableViewController + + + + allButton + UIButton + + + missedButton + UIButton + + + tableController + CallHistoryTableViewController + + + + IBProjectSource + ./Classes/HistoryController.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + YES + 3 + + {213, 117} + {213, 117} + {214, 117} + {214, 117} + {213, 117} + {213, 117} + + 1181 + + diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index bd89a845c..468a68302 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -28,7 +28,6 @@ #import "ConsoleViewController.h" #import "MoreViewController.h" -#include "CallHistoryTableViewController.h" #include "LinphoneManager.h" #include "linphonecore.h" diff --git a/Classes/StatusSubViewController.h b/Classes/LinphoneUI/ContactCell.h similarity index 67% rename from Classes/StatusSubViewController.h rename to Classes/LinphoneUI/ContactCell.h index 72e4997eb..fafb4d8cd 100644 --- a/Classes/StatusSubViewController.h +++ b/Classes/LinphoneUI/ContactCell.h @@ -1,6 +1,6 @@ -/* StatusSubViewController.h +/* ContactCell.h * - * Copyright (C) 2011 Belledonne Comunications, Grenoble, France + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -15,20 +15,13 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ -#import -#include "linphonecore.h" + */ -@interface StatusSubViewController : UIViewController { - UIImageView* image; - UIActivityIndicatorView* spinner; - UILabel* label; +#import + +@interface ContactCell : UITableViewCell { + UILabel *label; } -@property (nonatomic, retain) IBOutlet UIImageView* image; -@property (nonatomic, retain) IBOutlet UIActivityIndicatorView* spinner; @property (nonatomic, retain) IBOutlet UILabel* label; - --(BOOL) updateWithRegistrationState:(LinphoneRegistrationState)state message:(NSString*) message; - @end diff --git a/Classes/LinphoneUI/ContactCell.m b/Classes/LinphoneUI/ContactCell.m new file mode 100644 index 000000000..cbc0288b0 --- /dev/null +++ b/Classes/LinphoneUI/ContactCell.m @@ -0,0 +1,37 @@ +/* ContactCell.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "ContactCell.h" + +@implementation ContactCell + +@synthesize label; +- (id) init { + if((self = [super init]) != nil) { + NSArray *arrayOfViews = [[NSBundle mainBundle] loadNibNamed:@"ContactCell" + owner:self + options:nil]; + + if ([arrayOfViews count] >= 1){ + [self addSubview:[[arrayOfViews objectAtIndex:0] retain]]; + } + } + return self; +} +@end diff --git a/Classes/LinphoneUI/ContactCell.xib b/Classes/LinphoneUI/ContactCell.xib new file mode 100644 index 000000000..98886f8ae --- /dev/null +++ b/Classes/LinphoneUI/ContactCell.xib @@ -0,0 +1,195 @@ + + + + 1296 + 11E53 + 2182 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1181 + + + IBProxyObject + IBUILabel + IBUITableViewCell + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 292 + + + + 256 + + + + 274 + {{10, 0}, {310, 39}} + + + _NS:328 + NO + YES + 7 + 2 + NO + IBCocoaTouchFramework + Texte de test + + 1 + MCAwIDAAA + + + 1 + 10 + + 1 + 25 + + + Helvetica + 25 + 16 + + + + {320, 39} + + + + _NS:395 + + 3 + MCAwAA + + NO + YES + 4 + YES + IBCocoaTouchFramework + + + {320, 40} + + + + _NS:384 + IBCocoaTouchFramework + + ConferenceDetailCellIdentifier + + + + + + + + label + + + + 9 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 4 + + + + + + cell + + + 6 + + + label + + + + + ContactCell + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 9 + + + + + ContactCell + UITableViewCell + + label + UILabel + + + label + + label + UILabel + + + + IBProjectSource + ./Classes/ContactCell.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + YES + 3 + 1181 + + diff --git a/Classes/LinphoneUI/LinphoneMainBar.h b/Classes/LinphoneUI/LinphoneMainBar.h index c0edcf6f9..a059fa8a8 100644 --- a/Classes/LinphoneUI/LinphoneMainBar.h +++ b/Classes/LinphoneUI/LinphoneMainBar.h @@ -21,10 +21,20 @@ @interface LinphoneMainBar : UIViewController { UIButton *historyButton; + UIButton *contactsButton; UIButton *dialerButton; + UIButton *settingsButton; + UIButton *chatButton; } @property (nonatomic, retain) IBOutlet UIButton* historyButton; +@property (nonatomic, retain) IBOutlet UIButton* contactsButton; @property (nonatomic, retain) IBOutlet UIButton* dialerButton; +@property (nonatomic, retain) IBOutlet UIButton* settingsButton; +@property (nonatomic, retain) IBOutlet UIButton* chatButton; -(IBAction) onHistoryClick: (id) event; +-(IBAction) onContactsClick: (id) event; +-(IBAction) onDialerClick: (id) event; +-(IBAction) onSettingsClick: (id) event; +-(IBAction) onChatClick: (id) event; @end diff --git a/Classes/LinphoneUI/LinphoneMainBar.m b/Classes/LinphoneUI/LinphoneMainBar.m index 51d0bdf68..3ff7e3060 100644 --- a/Classes/LinphoneUI/LinphoneMainBar.m +++ b/Classes/LinphoneUI/LinphoneMainBar.m @@ -23,8 +23,10 @@ @implementation LinphoneMainBar @synthesize historyButton; +@synthesize contactsButton; @synthesize dialerButton; - +@synthesize settingsButton; +@synthesize chatButton; - (void) viewDidLoad { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveLinphoneMainViewChangeEvent:) name:@"LinphoneMainViewChange" object:nil]; @@ -32,26 +34,64 @@ - (void) receiveLinphoneMainViewChangeEvent: (NSNotification*) notif { PhoneView view = [[notif.userInfo objectForKey: @"PhoneView"] intValue]; - if(view == PhoneView_Main) { - dialerButton.selected = TRUE; - } else { - dialerButton.selected = FALSE; - } - if(view == PhoneView_CallHistory) { + if(view == PhoneView_History) { historyButton.selected = TRUE; } else { historyButton.selected = FALSE; } + if(view == PhoneView_Contacts) { + contactsButton.selected = TRUE; + } else { + contactsButton.selected = FALSE; + } + if(view == PhoneView_Dialer) { + dialerButton.selected = TRUE; + } else { + dialerButton.selected = FALSE; + } + if(view == PhoneView_Settings) { + settingsButton.selected = TRUE; + } else { + settingsButton.selected = FALSE; + } + if(view == PhoneView_Chat) { + chatButton.selected = TRUE; + } else { + chatButton.selected = FALSE; + } +} + +- (void) viewDidUnload { + [[NSNotificationCenter defaultCenter] removeObserver:self]; } - (void) dealloc { - [[NSNotificationCenter defaultCenter] removeObserver:self]; [super dealloc]; + [[NSNotificationCenter defaultCenter] removeObserver:self]; } - (IBAction) onHistoryClick: (id) sender { - // Change to default view - NSDictionary* dict = [NSDictionary dictionaryWithObject: [NSNumber numberWithInt:PhoneView_CallHistory] forKey:@"PhoneView"]; + NSDictionary* dict = [NSDictionary dictionaryWithObject: [NSNumber numberWithInt:PhoneView_History] forKey:@"PhoneView"]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:dict]; +} + +-(IBAction) onContactsClick: (id) event { + NSDictionary* dict = [NSDictionary dictionaryWithObject: [NSNumber numberWithInt:PhoneView_Contacts] forKey:@"PhoneView"]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:dict]; +} + +-(IBAction) onDialerClick: (id) event { + NSDictionary* dict = [NSDictionary dictionaryWithObject: [NSNumber numberWithInt:PhoneView_Dialer] forKey:@"PhoneView"]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:dict]; +} + +-(IBAction) onSettingsClick: (id) event { + NSDictionary* dict = [NSDictionary dictionaryWithObject: [NSNumber numberWithInt:PhoneView_Settings] forKey:@"PhoneView"]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:dict]; +} + +-(IBAction) onChatClick: (id) event { + NSDictionary* dict = [NSDictionary dictionaryWithObject: [NSNumber numberWithInt:PhoneView_Chat] forKey:@"PhoneView"]; [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:dict]; } diff --git a/Classes/LinphoneUI/LinphoneMainBar.xib b/Classes/LinphoneUI/LinphoneMainBar.xib index ae4a512fa..e22c6d913 100644 --- a/Classes/LinphoneUI/LinphoneMainBar.xib +++ b/Classes/LinphoneUI/LinphoneMainBar.xib @@ -215,7 +215,7 @@ _NS:9 NO - Tchat + Chat IBCocoaTouchFramework 0 @@ -258,14 +258,6 @@ - - - dialerButton - - - - 12 - historyButton @@ -274,6 +266,14 @@ 13 + + + dialerButton + + + + 12 + view @@ -282,14 +282,74 @@ 14 + + + contactsButton + + + + 27 + + + + chatButton + + + + 28 + + + + settingsButton + + + + 29 + + + + onChatClick: + + + 7 + + 26 + onHistoryClick: - 1 + 7 - 15 + 22 + + + + onDialerClick: + + + 7 + + 24 + + + + onContactsClick: + + + 7 + + 23 + + + + onSettingsClick: + + + 7 + + 25 @@ -326,22 +386,16 @@ mainTabBar - 9 - + 4 + - settings + mask - 8 - + 5 + - contacts - - - 7 - - - dialer + chat 6 @@ -350,16 +404,22 @@ history - 5 - + 7 + - tchat + dialer - 4 - + 8 + - mask + contacts + + + 9 + + + settings @@ -386,29 +446,58 @@ - 16 + 29 LinphoneMainBar UIViewController - - onHistoryClick: - id - - - onHistoryClick: - + + id + id + id + id + id + + + + onChatClick: + id + + + onContactsClick: + id + + + onDialerClick: + id + + onHistoryClick: id - + + onSettingsClick: + id + + + UIButton + UIButton UIButton UIButton + UIButton + + chatButton + UIButton + + + contactsButton + UIButton + dialerButton UIButton @@ -417,6 +506,10 @@ historyButton UIButton + + settingsButton + UIButton + IBProjectSource diff --git a/Classes/LinphoneUI/LinphoneStatusBar.h b/Classes/LinphoneUI/LinphoneStatusBar.h index a041cb37e..bbd2d02c2 100644 --- a/Classes/LinphoneUI/LinphoneStatusBar.h +++ b/Classes/LinphoneUI/LinphoneStatusBar.h @@ -1,6 +1,6 @@ -/* LinphoneStatusBar.h +/* StatusSubViewController.h * - * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * Copyright (C) 2011 Belledonne Comunications, Grenoble, France * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -15,13 +15,18 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - + */ #import +#include "linphonecore.h" -@interface LinphoneStatusBar : UIView { - UIView *test; +@interface LinphoneStatusBar : UIViewController { + UIImageView* image; + UIActivityIndicatorView* spinner; + UILabel* label; } -@property (nonatomic, retain) IBOutlet UIView* test; +@property (nonatomic, retain) IBOutlet UIImageView* image; +@property (nonatomic, retain) IBOutlet UIActivityIndicatorView* spinner; +@property (nonatomic, retain) IBOutlet UILabel* label; + @end diff --git a/Classes/LinphoneUI/LinphoneStatusBar.m b/Classes/LinphoneUI/LinphoneStatusBar.m index 21057ad58..f721064a5 100644 --- a/Classes/LinphoneUI/LinphoneStatusBar.m +++ b/Classes/LinphoneUI/LinphoneStatusBar.m @@ -1,6 +1,6 @@ -/* LinphoneStatusBar.m +/* StatusSubViewController.h * - * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * Copyright (C) 2011 Belledonne Comunications, Grenoble, France * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -15,20 +15,69 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ + */ #import "LinphoneStatusBar.h" @implementation LinphoneStatusBar -@synthesize test; -- (id) awakeAfterUsingCoder:(NSCoder*)aDecoder { - NSArray *arrayOfViews = [[NSBundle mainBundle] loadNibNamed:@"LinphoneStatusBar" - owner:nil - options:nil]; + +@synthesize image; +@synthesize spinner; +@synthesize label; + +- (void)viewDidLoad +{ + [super viewDidLoad]; - if ([arrayOfViews count] >= 1){ - [self addSubview:[[arrayOfViews objectAtIndex:0] retain]]; - } - return self; + // Set observer + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(registrationStateChange:) name:@"LinphoneRegistrationStateChange" object:nil]; } + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation +{ + return (interfaceOrientation == UIInterfaceOrientationPortrait); +} + +- (void) registrationStateChange: (NSNotification*) notif { + LinphoneRegistrationState state = [[notif.userInfo objectForKey: @"state"] intValue]; + NSString* message = [notif.userInfo objectForKey: @"message"]; + label.hidden = NO; + switch(state) { + case LinphoneRegistrationCleared: +/* image.hidden = NO; + [image setImage:[UIImage imageNamed:@"status_orange.png"]]; + [spinner stopAnimating]; + [label setText:message != nil ? message : NSLocalizedString(@"No SIP account defined", nil)];*/ + case LinphoneRegistrationFailed: + image.hidden = NO; + [image setImage:[UIImage imageNamed:@"status_red.png"]]; + [spinner stopAnimating]; + [label setText:message]; + case LinphoneRegistrationNone: + image.hidden = NO; + [image setImage:[UIImage imageNamed:@"status_gray.png"]]; + [spinner stopAnimating]; + [label setText:message]; + case LinphoneRegistrationProgress: + image.hidden = YES; + spinner.hidden = NO; + [spinner startAnimating]; + [label setText:message]; + case LinphoneRegistrationOk: + image.hidden = NO; + [image setImage:[UIImage imageNamed:@"status_green.png"]]; + [spinner stopAnimating]; + [label setText:message]; + } +} + +- (void) viewDidUnload { + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +- (void) dealloc { + [super dealloc]; + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + @end diff --git a/Classes/LinphoneUI/LinphoneStatusBar.xib b/Classes/LinphoneUI/LinphoneStatusBar.xib index 7cd51fd02..11c18af81 100644 --- a/Classes/LinphoneUI/LinphoneStatusBar.xib +++ b/Classes/LinphoneUI/LinphoneStatusBar.xib @@ -11,9 +11,11 @@ 1181 - IBProxyObject - IBUIView IBUIImageView + IBUIActivityIndicatorView + IBUIView + IBUILabel + IBProxyObject com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -31,16 +33,17 @@ IBFirstResponder IBCocoaTouchFramework - + 292 - - - 274 + + + 292 {320, 23} - + + _NS:9 NO IBCocoaTouchFramework @@ -49,24 +52,112 @@ barre-noire-top.png + + + -2147483356 + {{0, -1}, {25, 23}} + + + + _NS:567 + NO + IBCocoaTouchFramework + + NSImage + status_gray.png + + + + + -2147483356 + {{0, 1}, {20, 20}} + + + + _NS:1030 + NO + IBCocoaTouchFramework + 2 + + + + -2147483356 + {{28, 0}, {280, 21}} + + + + _NS:328 + NO + YES + 7 + NO + IBCocoaTouchFramework + CARAMBA + + 3 + MC42NjY2NjY2NjY3AA + + + 1 + 10 + + 1 + 17 + + + Helvetica + 17 + 16 + + {320, 23} - - _NS:9 + + _NS:196 3 - MQA - - 2 - + MCAwAA IBCocoaTouchFramework - + + + + image + + + + 8 + + + + label + + + + 9 + + + + spinner + + + + 10 + + + + view + + + + 11 + + @@ -87,17 +178,38 @@ - 3 - + 4 + - + + + + - 4 - - + 7 + + + spin + + + 6 + + + label + + + 5 + + + image + + + 12 + + background @@ -107,31 +219,42 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 4 + 12 LinphoneStatusBar - UIView - - test - UIView - - - test - - test - UIView + UIViewController + + UIImageView + UILabel + UIActivityIndicatorView + + + + image + UIImageView - + + label + UILabel + + + spinner + UIActivityIndicatorView + + IBProjectSource ./Classes/LinphoneStatusBar.h @@ -147,10 +270,10 @@ YES 3 - - barre-noire-top.png - {640, 46} - + + {640, 46} + {25, 23} + 1181 diff --git a/Classes/PhoneMainView.h b/Classes/PhoneMainView.h index d4ad66c97..82531de79 100644 --- a/Classes/PhoneMainView.h +++ b/Classes/PhoneMainView.h @@ -20,8 +20,11 @@ #import typedef enum _PhoneView { - PhoneView_Main, - PhoneView_CallHistory, + PhoneView_Dialer, + PhoneView_History, + PhoneView_Settings, + PhoneView_Chat, + PhoneView_Contacts, PhoneView_END } PhoneView; @@ -35,7 +38,8 @@ typedef enum _PhoneView { NSMutableDictionary *viewDescriptions; NSArray *views; UIView *callTabBar; - UIViewController *mainTabBar; + UIViewController *statusBarController; + UIViewController *mainTabBarController; UIView *incomingTabBar; UIView *addCallTabBar; @@ -45,7 +49,8 @@ typedef enum _PhoneView { @property (nonatomic, retain) IBOutlet UIView* tabBarView; @property (nonatomic, retain) IBOutlet UIView* callTabBar; -@property (nonatomic, retain) IBOutlet UIViewController* mainTabBar; +@property (nonatomic, retain) IBOutlet UIViewController* statusBarController; +@property (nonatomic, retain) IBOutlet UIViewController* mainTabBarController; @property (nonatomic, retain) IBOutlet UIView* incomingTabBar; @property (nonatomic, retain) IBOutlet UIView* addCallTabBar; diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index a442a3209..555802c57 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -18,7 +18,10 @@ */ #import "PhoneMainView.h" -#import "CallHistoryTableViewController.h" +#import "PhoneViewController.h" +#import "HistoryController.h" +#import "ContactsController.h" + typedef enum _TabBar { TabBar_Main, TabBar_END @@ -42,23 +45,27 @@ typedef enum _TabBar { @synthesize tabBarView; @synthesize callTabBar; -@synthesize mainTabBar; +@synthesize statusBarController; +@synthesize mainTabBarController; @synthesize incomingTabBar; @synthesize addCallTabBar; - (void) changeView: (NSNotification*) notif { PhoneView view = [[notif.userInfo objectForKey: @"PhoneView"] intValue]; ViewsDescription *description = [viewDescriptions objectForKey:[NSNumber numberWithInt: view]]; + for (UIView *view in contentView.subviews) { [view removeFromSuperview]; } for (UIView *view in tabBarView.subviews) { [view removeFromSuperview]; } + if(description == nil) + return; [contentView addSubview: description->content.view]; - CGRect contentFrame = contentView.frame; + CGRect contentFrame = contentView.frame; if(description->statusEnabled) { statusBarView.hidden = false; contentFrame.origin.y = statusBarView.frame.size.height + statusBarView.frame.origin.y; @@ -80,11 +87,11 @@ typedef enum _TabBar { for (UIView *view in description->tabBar.view.subviews) { if(view.tag == -1) { contentFrame.size.height = tabFrame.origin.y - contentFrame.origin.y + view.frame.origin.y; + break; } } - - // contentView.frame = contentFrame; + contentView.frame = contentFrame; [tabBarView addSubview: description->tabBar.view]; } @@ -96,40 +103,62 @@ typedef enum _TabBar { viewDescriptions = [[NSMutableDictionary alloc] init]; // Load Bars - dumb = mainTabBar.view; + dumb = mainTabBarController.view; + + // Status Bar + [statusBarView addSubview: statusBarController.view]; // Main View PhoneViewController* myPhoneViewController = [[PhoneViewController alloc] initWithNibName:@"PhoneViewController" bundle:[NSBundle mainBundle]]; - [myPhoneViewController loadView]; + //[myPhoneViewController loadView]; ViewsDescription *mainViewDescription = [ViewsDescription alloc]; mainViewDescription->content = myPhoneViewController; - mainViewDescription->tabBar = mainTabBar; + mainViewDescription->tabBar = mainTabBarController; mainViewDescription->statusEnabled = true; - [viewDescriptions setObject:mainViewDescription forKey:[NSNumber numberWithInt: PhoneView_Main]]; + [viewDescriptions setObject:mainViewDescription forKey:[NSNumber numberWithInt: PhoneView_Dialer]]; + + // Contacts View + ContactsController* myContactsController = [[ContactsController alloc] + initWithNibName:@"ContactsController" + bundle:[NSBundle mainBundle]]; + //[myContactsController loadView]; + ViewsDescription *contactsDescription = [ViewsDescription alloc]; + contactsDescription->content = myContactsController; + contactsDescription->tabBar = mainTabBarController; + contactsDescription->statusEnabled = false; + [viewDescriptions setObject:contactsDescription forKey:[NSNumber numberWithInt: PhoneView_Contacts]]; // Call History View - CallHistoryTableViewController* myCallHistoryTableViewController = [[CallHistoryTableViewController alloc] - initWithNibName:@"CallHistoryTableViewController" + HistoryController* myHistoryController = [[HistoryController alloc] + initWithNibName:@"HistoryController" bundle:[NSBundle mainBundle]]; - [myCallHistoryTableViewController loadView]; - ViewsDescription *callHistoryDescription = [ViewsDescription alloc]; - callHistoryDescription->content = myCallHistoryTableViewController; - callHistoryDescription->tabBar = mainTabBar; - callHistoryDescription->statusEnabled = true; - [viewDescriptions setObject:callHistoryDescription forKey:[NSNumber numberWithInt: PhoneView_CallHistory]]; + //[myHistoryController loadView]; + ViewsDescription *historyDescription = [ViewsDescription alloc]; + historyDescription->content = myHistoryController; + historyDescription->tabBar = mainTabBarController; + historyDescription->statusEnabled = false; + [viewDescriptions setObject:historyDescription forKey:[NSNumber numberWithInt: PhoneView_History]]; // Set observer [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeView:) name:@"LinphoneMainViewChange" object:nil]; // Change to default view - NSDictionary* dict = [NSDictionary dictionaryWithObject: [NSNumber numberWithInt:PhoneView_Main] forKey:@"PhoneView"]; + NSDictionary* dict = [NSDictionary dictionaryWithObject: [NSNumber numberWithInt:PhoneView_Dialer] forKey:@"PhoneView"]; [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:dict]; } -- (void)dealloc { +- (void) viewDidUnload { + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +- (void) dealloc { [super dealloc]; + [viewDescriptions dealloc]; + [statusBarView dealloc]; + [statusBarController dealloc]; + [mainTabBarController dealloc]; [[NSNotificationCenter defaultCenter] removeObserver:self]; } @end \ No newline at end of file diff --git a/Classes/PhoneMainView.xib b/Classes/PhoneMainView.xib index 7ee290cec..378c59c86 100644 --- a/Classes/PhoneMainView.xib +++ b/Classes/PhoneMainView.xib @@ -40,7 +40,7 @@ 292 YES - + 274 {320, 23} @@ -79,7 +79,6 @@ {{0, 400}, {320, 60}} - _NS:9 1 @@ -92,7 +91,7 @@ {320, 460} - + _NS:9 3 @@ -346,7 +345,6 @@ {{215, 67}, {105, 68}} - _NS:9 NO @@ -446,7 +444,6 @@ {{160, 0}, {160, 77}} - _NS:9 NO @@ -545,7 +542,6 @@ {{192, 0}, {128, 72}} - _NS:9 NO @@ -592,7 +588,7 @@ MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - + NSImage dialer-over.png @@ -600,7 +596,7 @@ NSImage dialer-actif.png - + @@ -617,7 +613,17 @@ NO IBCocoaTouchFramework - + + NO + + + 1 + 1 + + IBCocoaTouchFramework + NO + + NO @@ -683,17 +689,25 @@ statusBarView - + 176 - mainTabBar + mainTabBarController - + - 180 + 192 + + + + statusBarController + + + + 193 @@ -827,7 +841,7 @@ YES - + root @@ -885,15 +899,21 @@ 175 - + statusBar 178 - + - LinphoneMainBar + mainBarController + + + 190 + + + statusBarController @@ -937,10 +957,11 @@ 169.IBPluginDependency 170.IBPluginDependency 172.IBPluginDependency - 175.CustomClassName 175.IBPluginDependency 178.CustomClassName 178.IBPluginDependency + 190.CustomClassName + 190.IBPluginDependency 53.IBPluginDependency @@ -981,10 +1002,11 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - LinphoneStatusBar com.apple.InterfaceBuilder.IBCocoaTouchPlugin LinphoneMainBar com.apple.InterfaceBuilder.IBCocoaTouchPlugin + LinphoneStatusBar + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1000,7 +1022,7 @@ - 181 + 193 @@ -1008,28 +1030,98 @@ LinphoneMainBar UIViewController + + YES + + YES + onChatClick: + onContactsClick: + onDialerClick: + onHistoryClick: + onSettingsClick: + + + YES + id + id + id + id + id + + + + YES + + YES + onChatClick: + onContactsClick: + onDialerClick: + onHistoryClick: + onSettingsClick: + + + YES + + onChatClick: + id + + + onContactsClick: + id + + + onDialerClick: + id + + + onHistoryClick: + id + + + onSettingsClick: + id + + + YES YES + chatButton + contactsButton dialerButton historyButton + settingsButton YES UIButton UIButton + UIButton + UIButton + UIButton YES YES + chatButton + contactsButton dialerButton historyButton + settingsButton YES + + chatButton + UIButton + + + contactsButton + UIButton + dialerButton UIButton @@ -1038,6 +1130,10 @@ historyButton UIButton + + settingsButton + UIButton + @@ -1047,16 +1143,44 @@ LinphoneStatusBar - UIView + UIViewController - test - UIView + YES + + YES + image + label + spinner + + + YES + UIImageView + UILabel + UIActivityIndicatorView + - test - - test - UIView + YES + + YES + image + label + spinner + + + YES + + image + UIImageView + + + label + UILabel + + + spinner + UIActivityIndicatorView + @@ -1075,7 +1199,8 @@ callTabBar contentView incomingTabBar - mainTabBar + mainTabBarController + statusBarController statusBarView tabBarView @@ -1086,6 +1211,7 @@ UIView UIView UIViewController + UIViewController UIView UIView @@ -1098,7 +1224,8 @@ callTabBar contentView incomingTabBar - mainTabBar + mainTabBarController + statusBarController statusBarView tabBarView @@ -1121,7 +1248,11 @@ UIView - mainTabBar + mainTabBarController + UIViewController + + + statusBarController UIViewController diff --git a/Classes/PhoneViewController.h b/Classes/PhoneViewController.h index 27b93562c..7d76898f3 100644 --- a/Classes/PhoneViewController.h +++ b/Classes/PhoneViewController.h @@ -21,7 +21,6 @@ #import "linphonecore.h" #import "UILinphone.h" #import "CallDelegate.h" -#import "StatusSubViewController.h" @class MainScreenWithVideoPreview; @class IncallViewController; @@ -64,7 +63,6 @@ FirstLoginViewController* myFirstLoginViewController; IncallViewController* mIncallViewController; MainScreenWithVideoPreview* mMainScreenWithVideoPreview; - StatusSubViewController* statusSubViewController; UIButton* switchCamera; } diff --git a/Classes/PhoneViewController.m b/Classes/PhoneViewController.m index 91872a2c4..a97e57584 100644 --- a/Classes/PhoneViewController.m +++ b/Classes/PhoneViewController.m @@ -93,7 +93,9 @@ } } - enableCallButtons = [statusSubViewController updateWithRegistrationState:s message:m]; + // Change to registration state + NSDictionary* dict = [[NSDictionary alloc] initWithObjectsAndKeys: [NSNumber numberWithInt:s], @"state", m, @"message", nil]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneRegistrationStatusChange" object:self userInfo:dict]; [callLarge setEnabled:enableCallButtons]; [callShort setEnabled:enableCallButtons]; @@ -169,11 +171,11 @@ mIncallViewController = [[IncallViewController alloc] initWithNibName:[LinphoneManager runningOnIpad]?@"InCallViewController-ipad":@"IncallViewController" bundle:[NSBundle mainBundle]]; - if (statusSubViewController == nil) { + /*if (statusSubViewController == nil) { statusSubViewController = [[StatusSubViewController alloc] initWithNibName:@"StatusSubViewController" bundle:[NSBundle mainBundle]]; [statusViewHolder addSubview:statusSubViewController.view]; - } + }*/ [self updateCallAndBackButtons]; } diff --git a/Classes/StatusSubViewController.m b/Classes/StatusSubViewController.m deleted file mode 100644 index dd2a5e569..000000000 --- a/Classes/StatusSubViewController.m +++ /dev/null @@ -1,99 +0,0 @@ -/* StatusSubViewController.h - * - * Copyright (C) 2011 Belledonne Comunications, Grenoble, France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Library General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#import "StatusSubViewController.h" - -@implementation StatusSubViewController - -@synthesize image; -@synthesize spinner; -@synthesize label; - -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - if (self) { - // Custom initialization - } - return self; -} - -- (void)didReceiveMemoryWarning -{ - // Releases the view if it doesn't have a superview. - [super didReceiveMemoryWarning]; - - // Release any cached data, images, etc that aren't in use. -} - -#pragma mark - View lifecycle - -- (void)viewDidLoad -{ - [super viewDidLoad]; -} - -- (void)viewDidUnload -{ - [super viewDidUnload]; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation -{ - return (interfaceOrientation == UIInterfaceOrientationPortrait); -} - --(BOOL) updateWithRegistrationState:(LinphoneRegistrationState)state message:(NSString*) message { - label.hidden = NO; - switch(state) { - case LinphoneRegistrationCleared: -/* image.hidden = NO; - [image setImage:[UIImage imageNamed:@"status_orange.png"]]; - [spinner stopAnimating]; - [label setText:message != nil ? message : NSLocalizedString(@"No SIP account defined", nil)]; - return YES;*/ - case LinphoneRegistrationFailed: - image.hidden = NO; - [image setImage:[UIImage imageNamed:@"status_red.png"]]; - [spinner stopAnimating]; - [label setText:message]; - return NO; - case LinphoneRegistrationNone: - image.hidden = NO; - [image setImage:[UIImage imageNamed:@"status_gray.png"]]; - [spinner stopAnimating]; - [label setText:message]; - return NO; - case LinphoneRegistrationProgress: - image.hidden = YES; - spinner.hidden = NO; - [spinner startAnimating]; - [label setText:message]; - return NO; - case LinphoneRegistrationOk: - image.hidden = NO; - [image setImage:[UIImage imageNamed:@"status_green.png"]]; - [spinner stopAnimating]; - [label setText:message]; - return YES; - } - return NO; -} - -@end diff --git a/Classes/StatusSubViewController.xib b/Classes/StatusSubViewController.xib deleted file mode 100644 index 9ce474c3b..000000000 --- a/Classes/StatusSubViewController.xib +++ /dev/null @@ -1,252 +0,0 @@ - - - - 1280 - 11C74 - 1938 - 1138.23 - 567.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 933 - - - IBUIImageView - IBUIActivityIndicatorView - IBUIView - IBUILabel - IBProxyObject - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 292 - - - - -2147483356 - {{0, -1}, {25, 23}} - - - - _NS:567 - NO - IBCocoaTouchFramework - - NSImage - status_gray.png - - - - - -2147483356 - {{0, 1}, {20, 20}} - - - - _NS:1030 - NO - IBCocoaTouchFramework - 2 - - - - -2147483356 - {{28, 0}, {280, 21}} - - - _NS:328 - NO - YES - 7 - NO - IBCocoaTouchFramework - CARAMBA - - 3 - MC42NjY2NjY2NjY3AA - - - 1 - 10 - - 1 - 17 - - - Helvetica - 17 - 16 - - - - {255, 23} - - - - _NS:196 - - 3 - MCAwAA - - IBCocoaTouchFramework - - - - - - - image - - - - 8 - - - - label - - - - 9 - - - - spinner - - - - 10 - - - - view - - - - 11 - - - - - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - - - - - - status_view - - - 7 - - - status_spin - - - 6 - - - status_label - - - 5 - - - status_image - - - - - StatusSubViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 11 - - - - - StatusSubViewController - UIViewController - - UIImageView - UILabel - UIActivityIndicatorView - - - - image - UIImageView - - - label - UILabel - - - spinner - UIActivityIndicatorView - - - - IBProjectSource - ./Classes/StatusSubViewController.h - - - - - 0 - IBCocoaTouchFramework - YES - 3 - - status_gray.png - {25, 23} - - 933 - - diff --git a/Resources/add-contact-depuis-detail-actif.png b/Resources/add-contact-depuis-detail-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..7863899300be2a5743a2da209ad9574756ae99d1 GIT binary patch literal 5978 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 literal 0 HcmV?d00001 diff --git a/Resources/add-contact-depuis-detail-over.png b/Resources/add-contact-depuis-detail-over.png new file mode 100644 index 0000000000000000000000000000000000000000..24777743051d07c1d45a90e635668493766ce8b0 GIT binary patch literal 5238 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 literal 0 HcmV?d00001 diff --git a/Resources/all-call-actif.png b/Resources/all-call-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..fe9f61f2f8fce2e1b9e0e73866eb95e562e1749e GIT binary patch literal 6040 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 N)6ux2Uae{y^*`;~2ax~( literal 0 HcmV?d00001 diff --git a/Resources/bouton-detail-contact-actif.png b/Resources/bouton-detail-contact-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..a4856294d3158e975d17da8c4cb1f6263bca7ed7 GIT binary patch literal 4453 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 literal 0 HcmV?d00001 diff --git a/Resources/edit-history-actif.png b/Resources/edit-history-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..da43affc21b8c450819f24e3a9a0ee03c8394d89 GIT binary patch literal 4693 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 literal 0 HcmV?d00001 diff --git a/Resources/edit-history-over.png b/Resources/edit-history-over.png new file mode 100644 index 0000000000000000000000000000000000000000..032bc901d42e25433c27f27a06e86a86a6326d6a GIT binary patch literal 4306 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 OiBMKhm#>$#2>U->8TZ`) literal 0 HcmV?d00001 diff --git a/Resources/linphone-selectionne.png b/Resources/linphone-selectionne.png new file mode 100644 index 0000000000000000000000000000000000000000..0a75d15f05bd419973490c1d3e7bad04df91830d GIT binary patch literal 9428 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 literal 0 HcmV?d00001 diff --git a/Resources/missed-actif.png b/Resources/missed-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..0f2f99b4ef3f5ed365c096da5152b4c9dac7d0d8 GIT binary patch literal 8044 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 literal 0 HcmV?d00001 diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 772028bb3..a2b3c88fe 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -73,7 +73,6 @@ 223963171393CFAF001DE689 /* FastAddressBook.m in Sources */ = {isa = PBXBuildFile; fileRef = 223963161393CFAF001DE689 /* FastAddressBook.m */; }; 2242D91610D66BF300E9963F /* in_call.png in Resources */ = {isa = PBXBuildFile; fileRef = 2242D91410D66BF300E9963F /* in_call.png */; }; 2242D91710D66BF300E9963F /* out_call.png in Resources */ = {isa = PBXBuildFile; fileRef = 2242D91510D66BF300E9963F /* out_call.png */; }; - 2242D9C910D691F900E9963F /* GenericTabViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2242D9C810D691F900E9963F /* GenericTabViewController.m */; }; 2242E313125235120061DDCE /* oldphone-mono-30s.caf in Resources */ = {isa = PBXBuildFile; fileRef = 2242E312125235120061DDCE /* oldphone-mono-30s.caf */; }; 2245671D107699F700F10948 /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 2245671C107699F700F10948 /* Settings.bundle */; }; 224567C2107B968500F10948 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 224567C1107B968500F10948 /* AVFoundation.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; @@ -97,8 +96,6 @@ 2274401A106F31BD006EC466 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22744019106F31BD006EC466 /* CoreAudio.framework */; }; 2274402F106F335E006EC466 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2274402E106F335E006EC466 /* AudioToolbox.framework */; }; 2274550810700509006EC466 /* linphonerc in Resources */ = {isa = PBXBuildFile; fileRef = 2274550710700509006EC466 /* linphonerc */; }; - 227BCDC210D4004600FBFD76 /* CallHistoryTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 227BCDC010D4004600FBFD76 /* CallHistoryTableViewController.m */; }; - 227BCDC310D4004600FBFD76 /* CallHistoryTableViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 227BCDC110D4004600FBFD76 /* CallHistoryTableViewController.xib */; }; 228697C411AC29B800E9E0CA /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 228697C311AC29B800E9E0CA /* CFNetwork.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; 228B19AF130290C500F154D3 /* iTunesArtwork in Resources */ = {isa = PBXBuildFile; fileRef = 228B19AE130290C500F154D3 /* iTunesArtwork */; }; 22968A5F12F875C600588287 /* UISpeakerButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 22968A5E12F875C600588287 /* UISpeakerButton.m */; }; @@ -118,7 +115,6 @@ 22D8F121147548E2008C97DB /* ringback.wav in Resources */ = {isa = PBXBuildFile; fileRef = 22F254801073D99800AC9B3F /* ringback.wav */; }; 22D8F124147548E2008C97DB /* untitled.plist in Resources */ = {isa = PBXBuildFile; fileRef = 22F51EF5107FA66500F98953 /* untitled.plist */; }; 22D8F125147548E2008C97DB /* oldphone-mono.wav in Resources */ = {isa = PBXBuildFile; fileRef = 2237D4081084D7A9001383EE /* oldphone-mono.wav */; }; - 22D8F126147548E2008C97DB /* CallHistoryTableViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 227BCDC110D4004600FBFD76 /* CallHistoryTableViewController.xib */; }; 22D8F127147548E2008C97DB /* in_call.png in Resources */ = {isa = PBXBuildFile; fileRef = 2242D91410D66BF300E9963F /* in_call.png */; }; 22D8F128147548E2008C97DB /* out_call.png in Resources */ = {isa = PBXBuildFile; fileRef = 2242D91510D66BF300E9963F /* out_call.png */; }; 22D8F12D147548E2008C97DB /* ConsoleViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22E0A81E111C44E100B04932 /* ConsoleViewController.xib */; }; @@ -143,8 +139,6 @@ 22D8F145147548E2008C97DB /* LinphoneAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* LinphoneAppDelegate.m */; }; 22D8F146147548E2008C97DB /* PhoneViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22F2508C107141E100AC9B3F /* PhoneViewController.m */; }; 22D8F147147548E2008C97DB /* ContactPickerDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 22B5EFE410CE5E5800777D97 /* ContactPickerDelegate.m */; }; - 22D8F148147548E2008C97DB /* CallHistoryTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 227BCDC010D4004600FBFD76 /* CallHistoryTableViewController.m */; }; - 22D8F149147548E2008C97DB /* GenericTabViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2242D9C810D691F900E9963F /* GenericTabViewController.m */; }; 22D8F14A147548E2008C97DB /* MoreViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22E0A81C111C44E100B04932 /* MoreViewController.m */; }; 22D8F14B147548E2008C97DB /* ConsoleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22E0A81F111C44E100B04932 /* ConsoleViewController.m */; }; 22D8F14C147548E2008C97DB /* UIDigitButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2248E90D12F7E4CF00220D9C /* UIDigitButton.m */; }; @@ -216,10 +210,6 @@ 340A75B114C0670B006AA708 /* ConferenceCallDetailView-ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 340A75AF14C0670A006AA708 /* ConferenceCallDetailView-ipad.xib */; }; 3418843714C58BB100EA48C7 /* nowebcamCIF.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 3418843614C58BB100EA48C7 /* nowebcamCIF.jpg */; }; 3418843814C58BB100EA48C7 /* nowebcamCIF.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 3418843614C58BB100EA48C7 /* nowebcamCIF.jpg */; }; - 3418844814C6CAD300EA48C7 /* StatusSubViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3418844614C6CAD300EA48C7 /* StatusSubViewController.m */; }; - 3418844914C6CAD300EA48C7 /* StatusSubViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3418844614C6CAD300EA48C7 /* StatusSubViewController.m */; }; - 3418844A14C6CAD300EA48C7 /* StatusSubViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3418844714C6CAD300EA48C7 /* StatusSubViewController.xib */; }; - 3418844B14C6CAD300EA48C7 /* StatusSubViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3418844714C6CAD300EA48C7 /* StatusSubViewController.xib */; }; 3418844D14C6D1CE00EA48C7 /* startcall-gray.png in Resources */ = {isa = PBXBuildFile; fileRef = 3418844C14C6D1CE00EA48C7 /* startcall-gray.png */; }; 3418844E14C6D1CE00EA48C7 /* startcall-gray.png in Resources */ = {isa = PBXBuildFile; fileRef = 3418844C14C6D1CE00EA48C7 /* startcall-gray.png */; }; 3418845314C6F66F00EA48C7 /* status_green.png in Resources */ = {isa = PBXBuildFile; fileRef = 3418844F14C6F66E00EA48C7 /* status_green.png */; }; @@ -271,6 +261,32 @@ D347347A1580DDF1003C7B8C /* PhoneMainView.xib in Resources */ = {isa = PBXBuildFile; fileRef = D34734791580DDF1003C7B8C /* PhoneMainView.xib */; }; D347347E1580E5F8003C7B8C /* history-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D347347C1580E5F8003C7B8C /* history-actif.png */; }; D347347F1580E5F8003C7B8C /* history-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D347347D1580E5F8003C7B8C /* history-selectionne.png */; }; + D35497FE15875372000081D8 /* ContactsController.m in Sources */ = {isa = PBXBuildFile; fileRef = D35497FC15875372000081D8 /* ContactsController.m */; }; + D35497FF15875372000081D8 /* ContactsController.m in Sources */ = {isa = PBXBuildFile; fileRef = D35497FC15875372000081D8 /* ContactsController.m */; }; + D354980015875372000081D8 /* ContactsController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35497FD15875372000081D8 /* ContactsController.xib */; }; + D354980115875372000081D8 /* ContactsController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35497FD15875372000081D8 /* ContactsController.xib */; }; + D354980615875534000081D8 /* all-contacts-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980215875534000081D8 /* all-contacts-actif.png */; }; + D354980715875534000081D8 /* all-contacts-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980215875534000081D8 /* all-contacts-actif.png */; }; + D354980815875534000081D8 /* all-contacts-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980315875534000081D8 /* all-contacts-selectionne.png */; }; + D354980915875534000081D8 /* all-contacts-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980315875534000081D8 /* all-contacts-selectionne.png */; }; + D354980A15875534000081D8 /* linphone-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980415875534000081D8 /* linphone-actif.png */; }; + D354980B15875534000081D8 /* linphone-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980415875534000081D8 /* linphone-actif.png */; }; + D354980C15875534000081D8 /* linphone-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980515875534000081D8 /* linphone-selectionne.png */; }; + D354980D15875534000081D8 /* linphone-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980515875534000081D8 /* linphone-selectionne.png */; }; + D354981015875608000081D8 /* add-contact-depuis-detail-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980E15875608000081D8 /* add-contact-depuis-detail-actif.png */; }; + D354981115875608000081D8 /* add-contact-depuis-detail-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980E15875608000081D8 /* add-contact-depuis-detail-actif.png */; }; + D354981215875608000081D8 /* add-contact-depuis-detail-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980F15875608000081D8 /* add-contact-depuis-detail-over.png */; }; + D354981315875608000081D8 /* add-contact-depuis-detail-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980F15875608000081D8 /* add-contact-depuis-detail-over.png */; }; + D3549816158761D0000081D8 /* ContactTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3549815158761D0000081D8 /* ContactTableViewController.m */; }; + D3549817158761D0000081D8 /* ContactTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3549815158761D0000081D8 /* ContactTableViewController.m */; }; + D354981A15876FE7000081D8 /* bouton-detail-contact-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D354981815876FE7000081D8 /* bouton-detail-contact-actif.png */; }; + D354981B15876FE7000081D8 /* bouton-detail-contact-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D354981815876FE7000081D8 /* bouton-detail-contact-actif.png */; }; + D354981C15876FE7000081D8 /* bouton-detail-contact-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D354981915876FE7000081D8 /* bouton-detail-contact-over.png */; }; + D354981D15876FE7000081D8 /* bouton-detail-contact-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D354981915876FE7000081D8 /* bouton-detail-contact-over.png */; }; + D35498211587716B000081D8 /* LinphoneStatusBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D354981F1587716B000081D8 /* LinphoneStatusBar.m */; }; + D35498221587716B000081D8 /* LinphoneStatusBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D354981F1587716B000081D8 /* LinphoneStatusBar.m */; }; + D35498231587716B000081D8 /* LinphoneStatusBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35498201587716B000081D8 /* LinphoneStatusBar.xib */; }; + D35498241587716B000081D8 /* LinphoneStatusBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35498201587716B000081D8 /* LinphoneStatusBar.xib */; }; D38327F31580FE3A00FA0D23 /* contacts-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327EB1580FE3A00FA0D23 /* contacts-actif.png */; }; D38327F41580FE3A00FA0D23 /* contacts-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327EC1580FE3A00FA0D23 /* contacts-selectionne.png */; }; D38327F51580FE3A00FA0D23 /* dialer-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327ED1580FE3A00FA0D23 /* dialer-actif.png */; }; @@ -283,16 +299,16 @@ D3832801158100E400FA0D23 /* history-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FD158100E400FA0D23 /* history-over.png */; }; D3832802158100E400FA0D23 /* settings-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FE158100E400FA0D23 /* settings-over.png */; }; D3832803158100E400FA0D23 /* tchat-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FF158100E400FA0D23 /* tchat-over.png */; }; + D3A55FBC15877E5E003FD403 /* ContactCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3A55FBB15877E5E003FD403 /* ContactCell.m */; }; + D3A55FBD15877E5E003FD403 /* ContactCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3A55FBB15877E5E003FD403 /* ContactCell.m */; }; + D3A55FBF15877E69003FD403 /* ContactCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A55FBE15877E69003FD403 /* ContactCell.xib */; }; + D3A55FC015877E69003FD403 /* ContactCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A55FBE15877E69003FD403 /* ContactCell.xib */; }; D3ED3E411585FB4A006C0DE4 /* fond-clavier.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E401585FB4A006C0DE4 /* fond-clavier.png */; }; D3ED3E421585FB4A006C0DE4 /* fond-clavier.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E401585FB4A006C0DE4 /* fond-clavier.png */; }; D3ED3E451585FB8C006C0DE4 /* champ-saisie-numero.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E441585FB8C006C0DE4 /* champ-saisie-numero.png */; }; D3ED3E461585FB8C006C0DE4 /* champ-saisie-numero.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E441585FB8C006C0DE4 /* champ-saisie-numero.png */; }; D3ED3E521585FFFD006C0DE4 /* barre-noire-top.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E511585FFFD006C0DE4 /* barre-noire-top.png */; }; D3ED3E531585FFFD006C0DE4 /* barre-noire-top.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E511585FFFD006C0DE4 /* barre-noire-top.png */; }; - D3ED3E61158603F5006C0DE4 /* LinphoneStatusBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E60158603F5006C0DE4 /* LinphoneStatusBar.xib */; }; - D3ED3E62158603F5006C0DE4 /* LinphoneStatusBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E60158603F5006C0DE4 /* LinphoneStatusBar.xib */; }; - D3ED3E6515860404006C0DE4 /* LinphoneStatusBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3E6415860404006C0DE4 /* LinphoneStatusBar.m */; }; - D3ED3E6615860404006C0DE4 /* LinphoneStatusBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3E6415860404006C0DE4 /* LinphoneStatusBar.m */; }; D3ED3E6A15861A53006C0DE4 /* add-contact-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E6715861A53006C0DE4 /* add-contact-actif.png */; }; D3ED3E6B15861A53006C0DE4 /* add-contact-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E6715861A53006C0DE4 /* add-contact-actif.png */; }; D3ED3E6C15861A53006C0DE4 /* add-contact-inactif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E6815861A53006C0DE4 /* add-contact-inactif.png */; }; @@ -311,6 +327,24 @@ D3ED3E881586291E006C0DE4 /* LinphoneMainBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3E851586291B006C0DE4 /* LinphoneMainBar.m */; }; D3ED3E891586291E006C0DE4 /* LinphoneMainBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E861586291C006C0DE4 /* LinphoneMainBar.xib */; }; D3ED3E8A1586291E006C0DE4 /* LinphoneMainBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E861586291C006C0DE4 /* LinphoneMainBar.xib */; }; + D3ED3E9815872EF1006C0DE4 /* all-call-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9215872EF1006C0DE4 /* all-call-actif.png */; }; + D3ED3E9915872EF1006C0DE4 /* all-call-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9215872EF1006C0DE4 /* all-call-actif.png */; }; + D3ED3E9A15872EF1006C0DE4 /* all-call-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9315872EF1006C0DE4 /* all-call-selectionne.png */; }; + D3ED3E9B15872EF1006C0DE4 /* all-call-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9315872EF1006C0DE4 /* all-call-selectionne.png */; }; + D3ED3E9C15872EF1006C0DE4 /* edit-history-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9415872EF1006C0DE4 /* edit-history-actif.png */; }; + D3ED3E9D15872EF1006C0DE4 /* edit-history-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9415872EF1006C0DE4 /* edit-history-actif.png */; }; + D3ED3E9E15872EF1006C0DE4 /* edit-history-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9515872EF1006C0DE4 /* edit-history-over.png */; }; + D3ED3E9F15872EF1006C0DE4 /* edit-history-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9515872EF1006C0DE4 /* edit-history-over.png */; }; + D3ED3EA015872EF1006C0DE4 /* missed-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9615872EF1006C0DE4 /* missed-actif.png */; }; + D3ED3EA115872EF1006C0DE4 /* missed-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9615872EF1006C0DE4 /* missed-actif.png */; }; + D3ED3EA215872EF1006C0DE4 /* missed-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9715872EF1006C0DE4 /* missed-selectionne.png */; }; + D3ED3EA315872EF1006C0DE4 /* missed-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9715872EF1006C0DE4 /* missed-selectionne.png */; }; + D3ED3EA71587334E006C0DE4 /* CallHistoryTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3EA51587334C006C0DE4 /* CallHistoryTableViewController.m */; }; + D3ED3EA81587334E006C0DE4 /* CallHistoryTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3EA51587334C006C0DE4 /* CallHistoryTableViewController.m */; }; + D3ED3EB3158738FB006C0DE4 /* HistoryController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3EB2158738FA006C0DE4 /* HistoryController.xib */; }; + D3ED3EB4158738FB006C0DE4 /* HistoryController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3EB2158738FA006C0DE4 /* HistoryController.xib */; }; + D3ED3EB81587392C006C0DE4 /* HistoryController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3EB615873929006C0DE4 /* HistoryController.m */; }; + D3ED3EB91587392C006C0DE4 /* HistoryController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3EB615873929006C0DE4 /* HistoryController.m */; }; D3F83EEC1582021700336684 /* InCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83EEA1582021700336684 /* InCallViewController.m */; }; D3F83EED1582021700336684 /* InCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83EEA1582021700336684 /* InCallViewController.m */; }; D3F83EEE1582021700336684 /* InCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EEB1582021700336684 /* InCallViewController.xib */; }; @@ -618,8 +652,6 @@ 223963161393CFAF001DE689 /* FastAddressBook.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FastAddressBook.m; sourceTree = ""; }; 2242D91410D66BF300E9963F /* in_call.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = in_call.png; path = Resources/in_call.png; sourceTree = ""; }; 2242D91510D66BF300E9963F /* out_call.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = out_call.png; path = Resources/out_call.png; sourceTree = ""; }; - 2242D9C710D691F900E9963F /* GenericTabViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GenericTabViewController.h; sourceTree = ""; }; - 2242D9C810D691F900E9963F /* GenericTabViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GenericTabViewController.m; sourceTree = ""; }; 2242E312125235120061DDCE /* oldphone-mono-30s.caf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "oldphone-mono-30s.caf"; path = "liblinphone-sdk/apple-darwin/share/sounds/linphone/rings/oldphone-mono-30s.caf"; sourceTree = ""; }; 2245671C107699F700F10948 /* Settings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = Settings.bundle; sourceTree = ""; }; 224567C1107B968500F10948 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; @@ -647,9 +679,6 @@ 22744043106F33FC006EC466 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; }; 22744056106F9BC9006EC466 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; }; 2274550710700509006EC466 /* linphonerc */ = {isa = PBXFileReference; explicitFileType = text; fileEncoding = 4; path = linphonerc; sourceTree = ""; }; - 227BCDBF10D4004600FBFD76 /* CallHistoryTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CallHistoryTableViewController.h; sourceTree = ""; }; - 227BCDC010D4004600FBFD76 /* CallHistoryTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CallHistoryTableViewController.m; sourceTree = ""; }; - 227BCDC110D4004600FBFD76 /* CallHistoryTableViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CallHistoryTableViewController.xib; sourceTree = ""; }; 228697C311AC29B800E9E0CA /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; }; 228B19AE130290C500F154D3 /* iTunesArtwork */ = {isa = PBXFileReference; lastKnownFileType = text; name = iTunesArtwork; path = Resources/iTunesArtwork; sourceTree = ""; }; 22968A5D12F875C600588287 /* UISpeakerButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UISpeakerButton.h; sourceTree = ""; }; @@ -768,9 +797,6 @@ 340751E6150F38FD00B89C47 /* UIToggleVideoButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIToggleVideoButton.m; sourceTree = ""; }; 340A75AF14C0670A006AA708 /* ConferenceCallDetailView-ipad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "ConferenceCallDetailView-ipad.xib"; sourceTree = ""; }; 3418843614C58BB100EA48C7 /* nowebcamCIF.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = nowebcamCIF.jpg; path = submodules/linphone/mediastreamer2/src/nowebcamCIF.jpg; sourceTree = ""; }; - 3418844514C6CAD300EA48C7 /* StatusSubViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StatusSubViewController.h; sourceTree = ""; }; - 3418844614C6CAD300EA48C7 /* StatusSubViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StatusSubViewController.m; sourceTree = ""; }; - 3418844714C6CAD300EA48C7 /* StatusSubViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = StatusSubViewController.xib; sourceTree = ""; }; 3418844C14C6D1CE00EA48C7 /* startcall-gray.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "startcall-gray.png"; path = "Resources/startcall-gray.png"; sourceTree = ""; }; 3418844F14C6F66E00EA48C7 /* status_green.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = status_green.png; path = Resources/status_green.png; sourceTree = ""; }; 3418845114C6F66F00EA48C7 /* status_orange.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = status_orange.png; path = Resources/status_orange.png; sourceTree = ""; }; @@ -808,6 +834,22 @@ D34734791580DDF1003C7B8C /* PhoneMainView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PhoneMainView.xib; sourceTree = ""; }; D347347C1580E5F8003C7B8C /* history-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "history-actif.png"; path = "Resources/history-actif.png"; sourceTree = ""; }; D347347D1580E5F8003C7B8C /* history-selectionne.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "history-selectionne.png"; path = "Resources/history-selectionne.png"; sourceTree = ""; }; + D35497FB15875372000081D8 /* ContactsController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactsController.h; sourceTree = ""; }; + D35497FC15875372000081D8 /* ContactsController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactsController.m; sourceTree = ""; }; + D35497FD15875372000081D8 /* ContactsController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ContactsController.xib; sourceTree = ""; }; + D354980215875534000081D8 /* all-contacts-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "all-contacts-actif.png"; path = "Resources/all-contacts-actif.png"; sourceTree = ""; }; + D354980315875534000081D8 /* all-contacts-selectionne.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "all-contacts-selectionne.png"; path = "Resources/all-contacts-selectionne.png"; sourceTree = ""; }; + D354980415875534000081D8 /* linphone-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "linphone-actif.png"; path = "Resources/linphone-actif.png"; sourceTree = ""; }; + D354980515875534000081D8 /* linphone-selectionne.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "linphone-selectionne.png"; path = "Resources/linphone-selectionne.png"; sourceTree = ""; }; + D354980E15875608000081D8 /* add-contact-depuis-detail-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "add-contact-depuis-detail-actif.png"; path = "Resources/add-contact-depuis-detail-actif.png"; sourceTree = ""; }; + D354980F15875608000081D8 /* add-contact-depuis-detail-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "add-contact-depuis-detail-over.png"; path = "Resources/add-contact-depuis-detail-over.png"; sourceTree = ""; }; + D3549814158761CF000081D8 /* ContactTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactTableViewController.h; sourceTree = ""; }; + D3549815158761D0000081D8 /* ContactTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactTableViewController.m; sourceTree = ""; }; + D354981815876FE7000081D8 /* bouton-detail-contact-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "bouton-detail-contact-actif.png"; path = "Resources/bouton-detail-contact-actif.png"; sourceTree = ""; }; + D354981915876FE7000081D8 /* bouton-detail-contact-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "bouton-detail-contact-over.png"; path = "Resources/bouton-detail-contact-over.png"; sourceTree = ""; }; + D354981E1587716B000081D8 /* LinphoneStatusBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinphoneStatusBar.h; sourceTree = ""; }; + D354981F1587716B000081D8 /* LinphoneStatusBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LinphoneStatusBar.m; sourceTree = ""; }; + D35498201587716B000081D8 /* LinphoneStatusBar.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LinphoneStatusBar.xib; sourceTree = ""; }; D38327EB1580FE3A00FA0D23 /* contacts-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "contacts-actif.png"; path = "Resources/contacts-actif.png"; sourceTree = ""; }; D38327EC1580FE3A00FA0D23 /* contacts-selectionne.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "contacts-selectionne.png"; path = "Resources/contacts-selectionne.png"; sourceTree = ""; }; D38327ED1580FE3A00FA0D23 /* dialer-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "dialer-actif.png"; path = "Resources/dialer-actif.png"; sourceTree = ""; }; @@ -820,12 +862,12 @@ D38327FD158100E400FA0D23 /* history-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "history-over.png"; path = "Resources/history-over.png"; sourceTree = ""; }; D38327FE158100E400FA0D23 /* settings-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "settings-over.png"; path = "Resources/settings-over.png"; sourceTree = ""; }; D38327FF158100E400FA0D23 /* tchat-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "tchat-over.png"; path = "Resources/tchat-over.png"; sourceTree = ""; }; + D3A55FBA15877E5E003FD403 /* ContactCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactCell.h; sourceTree = ""; }; + D3A55FBB15877E5E003FD403 /* ContactCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactCell.m; sourceTree = ""; }; + D3A55FBE15877E69003FD403 /* ContactCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ContactCell.xib; sourceTree = ""; }; D3ED3E401585FB4A006C0DE4 /* fond-clavier.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "fond-clavier.png"; path = "Resources/fond-clavier.png"; sourceTree = ""; }; D3ED3E441585FB8C006C0DE4 /* champ-saisie-numero.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "champ-saisie-numero.png"; path = "Resources/champ-saisie-numero.png"; sourceTree = ""; }; D3ED3E511585FFFD006C0DE4 /* barre-noire-top.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "barre-noire-top.png"; path = "Resources/barre-noire-top.png"; sourceTree = ""; }; - D3ED3E60158603F5006C0DE4 /* LinphoneStatusBar.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LinphoneStatusBar.xib; sourceTree = ""; }; - D3ED3E6315860404006C0DE4 /* LinphoneStatusBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinphoneStatusBar.h; sourceTree = ""; }; - D3ED3E6415860404006C0DE4 /* LinphoneStatusBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LinphoneStatusBar.m; sourceTree = ""; }; D3ED3E6715861A53006C0DE4 /* add-contact-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "add-contact-actif.png"; path = "Resources/add-contact-actif.png"; sourceTree = ""; }; D3ED3E6815861A53006C0DE4 /* add-contact-inactif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "add-contact-inactif.png"; path = "Resources/add-contact-inactif.png"; sourceTree = ""; }; D3ED3E6915861A53006C0DE4 /* add-contact-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "add-contact-over.png"; path = "Resources/add-contact-over.png"; sourceTree = ""; }; @@ -836,6 +878,17 @@ D3ED3E841586291B006C0DE4 /* LinphoneMainBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinphoneMainBar.h; sourceTree = ""; }; D3ED3E851586291B006C0DE4 /* LinphoneMainBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LinphoneMainBar.m; sourceTree = ""; }; D3ED3E861586291C006C0DE4 /* LinphoneMainBar.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LinphoneMainBar.xib; sourceTree = ""; }; + D3ED3E9215872EF1006C0DE4 /* all-call-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "all-call-actif.png"; path = "Resources/all-call-actif.png"; sourceTree = ""; }; + D3ED3E9315872EF1006C0DE4 /* all-call-selectionne.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "all-call-selectionne.png"; path = "Resources/all-call-selectionne.png"; sourceTree = ""; }; + D3ED3E9415872EF1006C0DE4 /* edit-history-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "edit-history-actif.png"; path = "Resources/edit-history-actif.png"; sourceTree = ""; }; + D3ED3E9515872EF1006C0DE4 /* edit-history-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "edit-history-over.png"; path = "Resources/edit-history-over.png"; sourceTree = ""; }; + D3ED3E9615872EF1006C0DE4 /* missed-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "missed-actif.png"; path = "Resources/missed-actif.png"; sourceTree = ""; }; + D3ED3E9715872EF1006C0DE4 /* missed-selectionne.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "missed-selectionne.png"; path = "Resources/missed-selectionne.png"; sourceTree = ""; }; + D3ED3EA41587334B006C0DE4 /* CallHistoryTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CallHistoryTableViewController.h; sourceTree = ""; }; + D3ED3EA51587334C006C0DE4 /* CallHistoryTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CallHistoryTableViewController.m; sourceTree = ""; }; + D3ED3EB2158738FA006C0DE4 /* HistoryController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HistoryController.xib; sourceTree = ""; }; + D3ED3EB515873928006C0DE4 /* HistoryController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryController.h; sourceTree = ""; }; + D3ED3EB615873929006C0DE4 /* HistoryController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryController.m; sourceTree = ""; }; D3F83EE91582021700336684 /* InCallViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InCallViewController.h; sourceTree = ""; }; D3F83EEA1582021700336684 /* InCallViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InCallViewController.m; sourceTree = ""; }; D3F83EEB1582021700336684 /* InCallViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = InCallViewController.xib; sourceTree = ""; }; @@ -999,9 +1052,8 @@ children = ( 340751E4150E4D0200B89C47 /* CallDelegate.h */, 2211DBBB14769C8200DEE054 /* CallDelegate.m */, - 227BCDBF10D4004600FBFD76 /* CallHistoryTableViewController.h */, - 227BCDC010D4004600FBFD76 /* CallHistoryTableViewController.m */, - 227BCDC110D4004600FBFD76 /* CallHistoryTableViewController.xib */, + D3ED3EA41587334B006C0DE4 /* CallHistoryTableViewController.h */, + D3ED3EA51587334C006C0DE4 /* CallHistoryTableViewController.m */, 344ABD79147FD32B007420B6 /* ConferenceCallDetailCell.xib */, 340A75AF14C0670A006AA708 /* ConferenceCallDetailView-ipad.xib */, 344ABD75147FCB68007420B6 /* ConferenceCallDetailView.h */, @@ -1012,11 +1064,17 @@ 22E0A81E111C44E100B04932 /* ConsoleViewController.xib */, 22B5EFE310CE5E5800777D97 /* ContactPickerDelegate.h */, 22B5EFE410CE5E5800777D97 /* ContactPickerDelegate.m */, + D35497FB15875372000081D8 /* ContactsController.h */, + D35497FC15875372000081D8 /* ContactsController.m */, + D35497FD15875372000081D8 /* ContactsController.xib */, + D3549814158761CF000081D8 /* ContactTableViewController.h */, + D3549815158761D0000081D8 /* ContactTableViewController.m */, 2218A92212FBE1340088A667 /* FirstLoginViewController.h */, 2218A92312FBE1340088A667 /* FirstLoginViewController.m */, 2218A92412FBE1340088A667 /* FirstLoginViewController.xib */, - 2242D9C710D691F900E9963F /* GenericTabViewController.h */, - 2242D9C810D691F900E9963F /* GenericTabViewController.m */, + D3ED3EB515873928006C0DE4 /* HistoryController.h */, + D3ED3EB615873929006C0DE4 /* HistoryController.m */, + D3ED3EB2158738FA006C0DE4 /* HistoryController.xib */, 3422AA4F14975EC9000D4E8A /* InCallViewController-ipad.xib */, D3F83EE91582021700336684 /* InCallViewController.h */, D3F83EEA1582021700336684 /* InCallViewController.m */, @@ -1038,9 +1096,6 @@ 22F2508B107141E100AC9B3F /* PhoneViewController.h */, 22F2508C107141E100AC9B3F /* PhoneViewController.m */, 22F2508D107141E100AC9B3F /* PhoneViewController.xib */, - 3418844514C6CAD300EA48C7 /* StatusSubViewController.h */, - 3418844614C6CAD300EA48C7 /* StatusSubViewController.m */, - 3418844714C6CAD300EA48C7 /* StatusSubViewController.xib */, 34CA8534148F669900503C01 /* VideoViewController-ipad.xib */, 22E028B413B4CCBD0068A713 /* VideoViewController.h */, 22E028B513B4CCBD0068A713 /* VideoViewController.m */, @@ -1259,6 +1314,9 @@ 2214EB7012F84668002A5394 /* LinphoneUI */ = { isa = PBXGroup; children = ( + D3A55FBA15877E5E003FD403 /* ContactCell.h */, + D3A55FBB15877E5E003FD403 /* ContactCell.m */, + D3A55FBE15877E69003FD403 /* ContactCell.xib */, 223963151393CFAE001DE689 /* FastAddressBook.h */, 223963161393CFAF001DE689 /* FastAddressBook.m */, D3ED3E841586291B006C0DE4 /* LinphoneMainBar.h */, @@ -1266,9 +1324,9 @@ D3ED3E861586291C006C0DE4 /* LinphoneMainBar.xib */, 2248E99D12F801C200220D9C /* LinphoneManager.h */, 2248E99E12F801C200220D9C /* LinphoneManager.m */, - D3ED3E6315860404006C0DE4 /* LinphoneStatusBar.h */, - D3ED3E6415860404006C0DE4 /* LinphoneStatusBar.m */, - D3ED3E60158603F5006C0DE4 /* LinphoneStatusBar.xib */, + D354981E1587716B000081D8 /* LinphoneStatusBar.h */, + D354981F1587716B000081D8 /* LinphoneStatusBar.m */, + D35498201587716B000081D8 /* LinphoneStatusBar.xib */, 2218A5C412F9597B0088A667 /* LinphoneUIDelegates.h */, 2218A5CE12F973450088A667 /* LogView.h */, 22C7555E1317E59C007BC101 /* UIBluetoothButton.h */, @@ -1476,14 +1534,22 @@ D3F83EF0158205A100336684 /* add-call-actif.png */, D3F83EF1158205A100336684 /* add-call-over.png */, D3ED3E6715861A53006C0DE4 /* add-contact-actif.png */, + D354980E15875608000081D8 /* add-contact-depuis-detail-actif.png */, + D354980F15875608000081D8 /* add-contact-depuis-detail-over.png */, D3ED3E6815861A53006C0DE4 /* add-contact-inactif.png */, D3ED3E6915861A53006C0DE4 /* add-contact-over.png */, 2211DBCA1476BE7300DEE054 /* ajouter.png */, + D3ED3E9215872EF1006C0DE4 /* all-call-actif.png */, + D3ED3E9315872EF1006C0DE4 /* all-call-selectionne.png */, + D354980215875534000081D8 /* all-contacts-actif.png */, + D354980315875534000081D8 /* all-contacts-selectionne.png */, D3ED3E7015861ABD006C0DE4 /* appeler-actif.png */, D3ED3E7115861ABD006C0DE4 /* appeler-over.png */, D3ED3E7615861B1B006C0DE4 /* backspace-actif.png */, D3ED3E7715861B1B006C0DE4 /* backspace-over.png */, D3ED3E511585FFFD006C0DE4 /* barre-noire-top.png */, + D354981815876FE7000081D8 /* bouton-detail-contact-actif.png */, + D354981915876FE7000081D8 /* bouton-detail-contact-over.png */, D3F83F801582278D00336684 /* cancel-actif.png */, D3F83F811582278D00336684 /* cancel-over.png */, D3ED3E441585FB8C006C0DE4 /* champ-saisie-numero.png */, @@ -1507,6 +1573,8 @@ D38327EE1580FE3A00FA0D23 /* dialer-over.png */, D3F83F401582223B00336684 /* diese-actif.png */, D3F83F411582223B00336684 /* diese-over.png */, + D3ED3E9415872EF1006C0DE4 /* edit-history-actif.png */, + D3ED3E9515872EF1006C0DE4 /* edit-history-over.png */, 2211DBCD1476BE7300DEE054 /* effacer.png */, D3F83F421582223B00336684 /* etoile-actif.png */, D3F83F431582223B00336684 /* etoile-over.png */, @@ -1523,8 +1591,10 @@ 2242D91410D66BF300E9963F /* in_call.png */, 3485649D152C423F003FE041 /* in_call_video.png */, 228B19AE130290C500F154D3 /* iTunesArtwork */, + D354980415875534000081D8 /* linphone-actif.png */, 225CB2F911ABB76400628906 /* linphone-banner.png */, 8D1107310486CEB800E47090 /* linphone-Info.plist */, + D354980515875534000081D8 /* linphone-selectionne.png */, 2274550710700509006EC466 /* linphonerc */, 341FCA8D149798210084BC26 /* linphonerc-ipad */, D3F83EF4158205A100336684 /* micro-OFF-actif.png */, @@ -1533,6 +1603,8 @@ D3F83EF7158205A100336684 /* micro-ON-over.png */, 2211DBD21476BE7300DEE054 /* micro.png */, 2211DBD11476BE7300DEE054 /* micro_inverse.png */, + D3ED3E9615872EF1006C0DE4 /* missed-actif.png */, + D3ED3E9715872EF1006C0DE4 /* missed-selectionne.png */, 22E19E47138A67A000FBFE87 /* missed_call.png */, 3418843614C58BB100EA48C7 /* nowebcamCIF.jpg */, 2242E312125235120061DDCE /* oldphone-mono-30s.caf */, @@ -1670,7 +1742,6 @@ 2245671D107699F700F10948 /* Settings.bundle in Resources */, 22F51EF6107FA66500F98953 /* untitled.plist in Resources */, 2237D4091084D7A9001383EE /* oldphone-mono.wav in Resources */, - 227BCDC310D4004600FBFD76 /* CallHistoryTableViewController.xib in Resources */, 2242D91610D66BF300E9963F /* in_call.png in Resources */, 2242D91710D66BF300E9963F /* out_call.png in Resources */, 22E0A823111C44E100B04932 /* ConsoleViewController.xib in Resources */, @@ -1718,7 +1789,6 @@ 1AE0A4A214AC5C64002C99BD /* stat_sys_signal_4.png in Resources */, 340A75B014C0670B006AA708 /* ConferenceCallDetailView-ipad.xib in Resources */, 3418843714C58BB100EA48C7 /* nowebcamCIF.jpg in Resources */, - 3418844A14C6CAD300EA48C7 /* StatusSubViewController.xib in Resources */, 3418844D14C6D1CE00EA48C7 /* startcall-gray.png in Resources */, 3418845314C6F66F00EA48C7 /* status_green.png in Resources */, 3418845714C6F66F00EA48C7 /* status_orange.png in Resources */, @@ -1802,7 +1872,6 @@ D3ED3E411585FB4A006C0DE4 /* fond-clavier.png in Resources */, D3ED3E451585FB8C006C0DE4 /* champ-saisie-numero.png in Resources */, D3ED3E521585FFFD006C0DE4 /* barre-noire-top.png in Resources */, - D3ED3E61158603F5006C0DE4 /* LinphoneStatusBar.xib in Resources */, D3ED3E6A15861A53006C0DE4 /* add-contact-actif.png in Resources */, D3ED3E6C15861A53006C0DE4 /* add-contact-inactif.png in Resources */, D3ED3E6E15861A53006C0DE4 /* add-contact-over.png in Resources */, @@ -1811,6 +1880,24 @@ D3ED3E7815861B1B006C0DE4 /* backspace-actif.png in Resources */, D3ED3E7A15861B1B006C0DE4 /* backspace-over.png in Resources */, D3ED3E891586291E006C0DE4 /* LinphoneMainBar.xib in Resources */, + D3ED3E9815872EF1006C0DE4 /* all-call-actif.png in Resources */, + D3ED3E9A15872EF1006C0DE4 /* all-call-selectionne.png in Resources */, + D3ED3E9C15872EF1006C0DE4 /* edit-history-actif.png in Resources */, + D3ED3E9E15872EF1006C0DE4 /* edit-history-over.png in Resources */, + D3ED3EA015872EF1006C0DE4 /* missed-actif.png in Resources */, + D3ED3EA215872EF1006C0DE4 /* missed-selectionne.png in Resources */, + D3ED3EB3158738FB006C0DE4 /* HistoryController.xib in Resources */, + D354980015875372000081D8 /* ContactsController.xib in Resources */, + D354980615875534000081D8 /* all-contacts-actif.png in Resources */, + D354980815875534000081D8 /* all-contacts-selectionne.png in Resources */, + D354980A15875534000081D8 /* linphone-actif.png in Resources */, + D354980C15875534000081D8 /* linphone-selectionne.png in Resources */, + D354981015875608000081D8 /* add-contact-depuis-detail-actif.png in Resources */, + D354981215875608000081D8 /* add-contact-depuis-detail-over.png in Resources */, + D354981A15876FE7000081D8 /* bouton-detail-contact-actif.png in Resources */, + D354981C15876FE7000081D8 /* bouton-detail-contact-over.png in Resources */, + D35498231587716B000081D8 /* LinphoneStatusBar.xib in Resources */, + D3A55FBF15877E69003FD403 /* ContactCell.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1823,7 +1910,6 @@ 22D8F121147548E2008C97DB /* ringback.wav in Resources */, 22D8F124147548E2008C97DB /* untitled.plist in Resources */, 22D8F125147548E2008C97DB /* oldphone-mono.wav in Resources */, - 22D8F126147548E2008C97DB /* CallHistoryTableViewController.xib in Resources */, 22D8F127147548E2008C97DB /* in_call.png in Resources */, 22D8F128147548E2008C97DB /* out_call.png in Resources */, 22D8F12D147548E2008C97DB /* ConsoleViewController.xib in Resources */, @@ -1871,7 +1957,6 @@ 1AE0A4A314AC5C64002C99BD /* stat_sys_signal_4.png in Resources */, 340A75B114C0670B006AA708 /* ConferenceCallDetailView-ipad.xib in Resources */, 3418843814C58BB100EA48C7 /* nowebcamCIF.jpg in Resources */, - 3418844B14C6CAD300EA48C7 /* StatusSubViewController.xib in Resources */, 3418844E14C6D1CE00EA48C7 /* startcall-gray.png in Resources */, 3418845414C6F66F00EA48C7 /* status_green.png in Resources */, 3418845814C6F66F00EA48C7 /* status_orange.png in Resources */, @@ -1936,7 +2021,6 @@ D3ED3E421585FB4A006C0DE4 /* fond-clavier.png in Resources */, D3ED3E461585FB8C006C0DE4 /* champ-saisie-numero.png in Resources */, D3ED3E531585FFFD006C0DE4 /* barre-noire-top.png in Resources */, - D3ED3E62158603F5006C0DE4 /* LinphoneStatusBar.xib in Resources */, D3ED3E6B15861A53006C0DE4 /* add-contact-actif.png in Resources */, D3ED3E6D15861A53006C0DE4 /* add-contact-inactif.png in Resources */, D3ED3E6F15861A53006C0DE4 /* add-contact-over.png in Resources */, @@ -1945,6 +2029,24 @@ D3ED3E7915861B1B006C0DE4 /* backspace-actif.png in Resources */, D3ED3E7B15861B1B006C0DE4 /* backspace-over.png in Resources */, D3ED3E8A1586291E006C0DE4 /* LinphoneMainBar.xib in Resources */, + D3ED3E9915872EF1006C0DE4 /* all-call-actif.png in Resources */, + D3ED3E9B15872EF1006C0DE4 /* all-call-selectionne.png in Resources */, + D3ED3E9D15872EF1006C0DE4 /* edit-history-actif.png in Resources */, + D3ED3E9F15872EF1006C0DE4 /* edit-history-over.png in Resources */, + D3ED3EA115872EF1006C0DE4 /* missed-actif.png in Resources */, + D3ED3EA315872EF1006C0DE4 /* missed-selectionne.png in Resources */, + D3ED3EB4158738FB006C0DE4 /* HistoryController.xib in Resources */, + D354980115875372000081D8 /* ContactsController.xib in Resources */, + D354980715875534000081D8 /* all-contacts-actif.png in Resources */, + D354980915875534000081D8 /* all-contacts-selectionne.png in Resources */, + D354980B15875534000081D8 /* linphone-actif.png in Resources */, + D354980D15875534000081D8 /* linphone-selectionne.png in Resources */, + D354981115875608000081D8 /* add-contact-depuis-detail-actif.png in Resources */, + D354981315875608000081D8 /* add-contact-depuis-detail-over.png in Resources */, + D354981B15876FE7000081D8 /* bouton-detail-contact-actif.png in Resources */, + D354981D15876FE7000081D8 /* bouton-detail-contact-over.png in Resources */, + D35498241587716B000081D8 /* LinphoneStatusBar.xib in Resources */, + D3A55FC015877E69003FD403 /* ContactCell.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1959,8 +2061,6 @@ 1D3623260D0F684500981E51 /* LinphoneAppDelegate.m in Sources */, 22F2508E107141E100AC9B3F /* PhoneViewController.m in Sources */, 22B5EFE510CE5E5800777D97 /* ContactPickerDelegate.m in Sources */, - 227BCDC210D4004600FBFD76 /* CallHistoryTableViewController.m in Sources */, - 2242D9C910D691F900E9963F /* GenericTabViewController.m in Sources */, 22E0A822111C44E100B04932 /* MoreViewController.m in Sources */, 22E0A824111C44E100B04932 /* ConsoleViewController.m in Sources */, 2248E90E12F7E4CF00220D9C /* UIDigitButton.m in Sources */, @@ -1980,13 +2080,17 @@ 2211DBBE14769C8300DEE054 /* CallDelegate.m in Sources */, 344ABD77147FCB68007420B6 /* ConferenceCallDetailView.m in Sources */, 34CA8539148F692A00503C01 /* MainScreenWithVideoPreview.m in Sources */, - 3418844814C6CAD300EA48C7 /* StatusSubViewController.m in Sources */, 340751E7150F38FD00B89C47 /* UIToggleVideoButton.m in Sources */, 34216F401547EBCD00EA9777 /* VideoZoomHandler.m in Sources */, D3F83EEC1582021700336684 /* InCallViewController.m in Sources */, D3F83F8E15822ABE00336684 /* PhoneMainView.m in Sources */, - D3ED3E6515860404006C0DE4 /* LinphoneStatusBar.m in Sources */, D3ED3E871586291E006C0DE4 /* LinphoneMainBar.m in Sources */, + D3ED3EA71587334E006C0DE4 /* CallHistoryTableViewController.m in Sources */, + D3ED3EB81587392C006C0DE4 /* HistoryController.m in Sources */, + D35497FE15875372000081D8 /* ContactsController.m in Sources */, + D3549816158761D0000081D8 /* ContactTableViewController.m in Sources */, + D35498211587716B000081D8 /* LinphoneStatusBar.m in Sources */, + D3A55FBC15877E5E003FD403 /* ContactCell.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1998,8 +2102,6 @@ 22D8F145147548E2008C97DB /* LinphoneAppDelegate.m in Sources */, 22D8F146147548E2008C97DB /* PhoneViewController.m in Sources */, 22D8F147147548E2008C97DB /* ContactPickerDelegate.m in Sources */, - 22D8F148147548E2008C97DB /* CallHistoryTableViewController.m in Sources */, - 22D8F149147548E2008C97DB /* GenericTabViewController.m in Sources */, 22D8F14A147548E2008C97DB /* MoreViewController.m in Sources */, 22D8F14B147548E2008C97DB /* ConsoleViewController.m in Sources */, 22D8F14C147548E2008C97DB /* UIDigitButton.m in Sources */, @@ -2019,13 +2121,17 @@ 2211DBBF14769C8300DEE054 /* CallDelegate.m in Sources */, 344ABD78147FCB68007420B6 /* ConferenceCallDetailView.m in Sources */, 34CA853A148F692A00503C01 /* MainScreenWithVideoPreview.m in Sources */, - 3418844914C6CAD300EA48C7 /* StatusSubViewController.m in Sources */, 340751E8150F38FD00B89C47 /* UIToggleVideoButton.m in Sources */, 34216F411547EBCD00EA9777 /* VideoZoomHandler.m in Sources */, D3F83EED1582021700336684 /* InCallViewController.m in Sources */, D3F83F8F15822ABE00336684 /* PhoneMainView.m in Sources */, - D3ED3E6615860404006C0DE4 /* LinphoneStatusBar.m in Sources */, D3ED3E881586291E006C0DE4 /* LinphoneMainBar.m in Sources */, + D3ED3EA81587334E006C0DE4 /* CallHistoryTableViewController.m in Sources */, + D3ED3EB91587392C006C0DE4 /* HistoryController.m in Sources */, + D35497FF15875372000081D8 /* ContactsController.m in Sources */, + D3549817158761D0000081D8 /* ContactTableViewController.m in Sources */, + D35498221587716B000081D8 /* LinphoneStatusBar.m in Sources */, + D3A55FBD15877E5E003FD403 /* ContactCell.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; };