Contacts detail rework

This commit is contained in:
Gautier Pelloux-Prayer 2015-10-19 15:35:24 +02:00
parent b3eabdf2fe
commit ee138eca7f
17 changed files with 95 additions and 258 deletions

View file

@ -1,74 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="7706" systemVersion="14D136" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="7703"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="ContactDetailsLabelView">
<connections>
<outlet property="tableView" destination="5" id="15"/>
<outlet property="view" destination="4" id="12"/>
</connections>
</placeholder>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<view contentMode="scaleToFill" id="Qsc-w0-kmj" userLabel="iphone6MetricsView">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<view contentMode="scaleToFill" id="4">
<rect key="frame" x="0.0" y="42" width="375" height="559"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<view contentMode="scaleToFill" id="6" userLabel="topBar">
<rect key="frame" x="0.0" y="0.0" width="375" height="42"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="color_F.png" id="fso-nh-iJP" userLabel="backgroundColor">
<rect key="frame" x="0.0" y="1" width="375" height="42"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
</imageView>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" id="bPy-1d-07h" userLabel="backButton">
<rect key="frame" x="0.0" y="1" width="75" height="40"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/>
<accessibility key="accessibilityConfiguration" label="New Discussion"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<inset key="titleEdgeInsets" minX="0.0" minY="18" maxX="0.0" maxY="0.0"/>
<state key="normal" image="back.png">
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<connections>
<action selector="onBackClick:" destination="-1" eventType="touchUpInside" id="4zW-v3-vqp"/>
</connections>
</button>
</subviews>
</view>
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" showsHorizontalScrollIndicator="NO" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="10" sectionFooterHeight="10" id="5" userLabel="tableView">
<rect key="frame" x="0.0" y="42" width="375" height="517"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES" flexibleMaxY="YES"/>
<color key="backgroundColor" red="0.93725490196078431" green="0.93725490196078431" blue="0.95686274509803926" alpha="1" colorSpace="calibratedRGB"/>
<inset key="contentInset" minX="0.0" minY="0.0" maxX="0.0" maxY="10"/>
<inset key="scrollIndicatorInsets" minX="0.0" minY="0.0" maxX="0.0" maxY="10"/>
<connections>
<outlet property="dataSource" destination="-1" id="13"/>
<outlet property="delegate" destination="-1" id="14"/>
</connections>
</tableView>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</view>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<simulatedScreenMetrics key="simulatedDestinationMetrics" type="retina47"/>
</view>
</objects>
<resources>
<image name="back.png" width="25" height="22"/>
<image name="color_F.png" width="1" height="1"/>
</resources>
<simulatedMetricsContainer key="defaultSimulatedMetrics">
<simulatedStatusBarMetrics key="statusBar"/>
<simulatedOrientationMetrics key="orientation"/>
<simulatedScreenMetrics key="destination" type="retina4"/>
</simulatedMetricsContainer>
</document>

View file

@ -97,10 +97,10 @@
<outletCollection property="gestureRecognizers" destination="8bV-f4-pLL" appends="YES" id="4V5-Px-aHT"/>
</connections>
</imageView>
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="grouped" separatorStyle="none" allowsSelectionDuringEditing="YES" rowHeight="44" sectionHeaderHeight="10" sectionFooterHeight="10" id="19" userLabel="tableView">
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="plain" separatorStyle="none" allowsSelectionDuringEditing="YES" rowHeight="44" sectionHeaderHeight="1" sectionFooterHeight="1" id="19" userLabel="tableView">
<rect key="frame" x="0.0" y="132" width="375" height="427"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES" flexibleMaxY="YES"/>
<color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<inset key="contentInset" minX="0.0" minY="0.0" maxX="0.0" maxY="10"/>
<inset key="scrollIndicatorInsets" minX="0.0" minY="0.0" maxX="0.0" maxY="10"/>
<connections>

View file

@ -1,40 +0,0 @@
/* ContactDetailsLabelViewController.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 <UIKit/UIKit.h>
#import "UICompositeView.h"
@protocol ContactDetailsLabelViewDelegate <NSObject>
- (void)changeContactDetailsLabel:(NSString *)label;
@end
@interface ContactDetailsLabelView
: UIViewController <UITableViewDelegate, UITableViewDataSource, UICompositeViewDelegate> {
}
@property(nonatomic, copy) NSString *selectedData;
@property(nonatomic, strong) NSDictionary *dataList;
@property(nonatomic, strong) IBOutlet UITableView *tableView;
@property(nonatomic, strong) id<ContactDetailsLabelViewDelegate> delegate;
- (IBAction)onBackClick:(id)event;
@end

View file

@ -1,115 +0,0 @@
/* ContactDetailsLabelViewController.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 "ContactDetailsLabelView.h"
#import "UACellBackgroundView.h"
#import "Utils.h"
#import "PhoneMainView.h"
@implementation ContactDetailsLabelView
@synthesize dataList;
@synthesize tableView;
@synthesize selectedData;
@synthesize delegate;
#pragma mark - UICompositeViewDelegate Functions
static UICompositeViewDescription *compositeDescription = nil;
+ (UICompositeViewDescription *)compositeViewDescription {
if (compositeDescription == nil) {
compositeDescription = [[UICompositeViewDescription alloc] init:self.class
statusBar:StatusBarView.class
tabBar:TabBarView.class
fullscreen:false
landscapeMode:LinphoneManager.runningOnIpad
portraitMode:true];
}
return compositeDescription;
}
- (UICompositeViewDescription *)compositeViewDescription {
return self.class.compositeViewDescription;
}
#pragma mark -
- (void)dismiss {
if ([[PhoneMainView.instance currentView] equal:ContactDetailsLabelView.compositeViewDescription]) {
[PhoneMainView.instance popCurrentView];
}
}
#pragma mark - Property Functions
- (void)setDataList:(NSDictionary *)adatalist {
if ([dataList isEqualToDictionary:adatalist]) {
return;
}
dataList = adatalist;
[tableView reloadData];
}
- (void)setSelectedData:(NSString *)aselectedData {
selectedData = [[NSString alloc] initWithString:aselectedData];
[tableView reloadData];
}
#pragma mark - UITableViewDataSource Functions
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [dataList count];
}
- (UITableViewCell *)tableView:(UITableView *)atableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *kCellId = @"ContactDetailsLabelCell";
UITableViewCell *cell = [atableView dequeueReusableCellWithIdentifier:kCellId];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:kCellId];
}
NSString *key = [[dataList allKeys] objectAtIndex:[indexPath row]];
[cell.textLabel setText:[dataList objectForKey:key]];
if ([key compare:selectedData] == 0) {
[cell setAccessoryType:UITableViewCellAccessoryCheckmark];
} else {
[cell setAccessoryType:UITableViewCellAccessoryNone];
}
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *key = [[dataList allKeys] objectAtIndex:[indexPath row]];
[self setSelectedData:key];
[delegate changeContactDetailsLabel:key];
[self dismiss];
}
#pragma mark - Action Functions
- (IBAction)onBackClick:(id)event {
[self dismiss];
}
@end

View file

@ -24,7 +24,7 @@
#import "ContactDetailsLabelView.h"
typedef enum _ContactSections {
ContactSections_None = -1,
ContactSections_None = 0, // first section is empty because we cannot set header for first section
ContactSections_First_Name,
ContactSections_Last_Name,
ContactSections_Number,

View file

@ -50,8 +50,8 @@
@implementation ContactDetailsTableView
static const ContactSections_e contactSections[ContactSections_MAX] = {
ContactSections_First_Name, ContactSections_Last_Name, ContactSections_Number, ContactSections_Sip,
ContactSections_Email};
ContactSections_None, ContactSections_First_Name, ContactSections_Last_Name,
ContactSections_Number, ContactSections_Sip, ContactSections_Email};
@synthesize contactDetailsDelegate;
@synthesize contact;
@ -500,7 +500,6 @@ static const ContactSections_e contactSections[ContactSections_MAX] = {
[cell.detailTextField setDelegate:self];
[cell.detailTextField setAutocapitalizationType:UITextAutocapitalizationTypeNone];
[cell.detailTextField setAutocorrectionType:UITextAutocorrectionTypeNo];
[cell setBackgroundColor:[UIColor whiteColor]];
}
NSMutableArray *sectionDict = [self getSectionData:[indexPath section]];
@ -510,11 +509,11 @@ static const ContactSections_e contactSections[ContactSections_MAX] = {
// default label is our app name
NSString *label = [FastAddressBook localizedLabel:[labelArray objectAtIndex:0]];
if (contactSections[[indexPath section]] == ContactSections_First_Name) {
if (contactSections[indexPath.section] == ContactSections_First_Name) {
value =
(__bridge NSString *)(ABRecordCopyValue(contact, [self propertyIDForSection:ContactSections_First_Name]));
label = nil;
} else if (contactSections[[indexPath section]] == ContactSections_Last_Name) {
} else if (contactSections[indexPath.section] == ContactSections_Last_Name) {
value =
(__bridge NSString *)(ABRecordCopyValue(contact, [self propertyIDForSection:ContactSections_Last_Name]));
label = nil;
@ -721,23 +720,38 @@ static const ContactSections_e contactSections[ContactSections_MAX] = {
return UITableViewCellEditingStyleDelete;
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
NSString *text = nil;
if (contactSections[section] == ContactSections_First_Name) {
return NSLocalizedString(@"First name", nil);
text = NSLocalizedString(@"First name", nil);
} else if (contactSections[section] == ContactSections_Last_Name) {
return NSLocalizedString(@"Last name", nil);
text = NSLocalizedString(@"Last name", nil);
} else if ([self getSectionData:section].count > 0) {
if (contactSections[section] == ContactSections_Number) {
text = NSLocalizedString(@"Phone numbers", nil);
} else if (contactSections[section] == ContactSections_Sip) {
text = NSLocalizedString(@"SIP addresses", nil);
} else if (contactSections[section] == ContactSections_Email) {
text = NSLocalizedString(@"Email addresses", nil);
}
}
if ([[self getSectionData:section] count] == 0)
return nil;
if (contactSections[section] == ContactSections_Number) {
return NSLocalizedString(@"Phone numbers", nil);
} else if (contactSections[section] == ContactSections_Sip) {
return NSLocalizedString(@"SIP addresses", nil);
} else if (contactSections[section] == ContactSections_Email) {
return NSLocalizedString(@"Email addresses", nil);
if (!text) {
return nil;
}
return nil;
UIView *tempView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 20)];
tempView.backgroundColor = [UIColor clearColor];
UILabel *tempLabel = [[UILabel alloc] initWithFrame:CGRectMake(15, 5, 300, 10)];
tempLabel.backgroundColor = [UIColor clearColor];
tempLabel.textColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"color_E"]];
tempLabel.text = text.uppercaseString;
tempLabel.textAlignment = NSTextAlignmentLeft;
tempLabel.font = [UIFont systemFontOfSize:12];
[tempView addSubview:tempLabel];
return tempView;
}
#pragma mark - ContactDetailsLabelDelegate Functions
@ -823,4 +837,14 @@ static const ContactSections_e contactSections[ContactSections_MAX] = {
return true;
}
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
return 1e-5;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
if (section == 0)
return 1e-5;
return [self tableView:tableView viewForHeaderInSection:section].frame.size.height;
}
@end

View file

@ -30,15 +30,20 @@
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
UITextField *tf = [[UITextField alloc] init];
[tf setHidden:TRUE];
[tf setClearButtonMode:UITextFieldViewModeWhileEditing];
[tf setContentVerticalAlignment:UIControlContentVerticalAlignmentCenter];
[tf setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft];
tf.hidden = TRUE;
tf.clearButtonMode = UITextFieldViewModeWhileEditing;
tf.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
tf.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
self.detailTextField = tf;
UIFont *font = [UIFont fontWithName:@"Helvetica-Bold" size:[UIFont systemFontSize]];
[self.detailTextLabel setFont:font];
[self.detailTextField setFont:font];
self.detailTextLabel.backgroundColor = self.detailTextField.backgroundColor =
[UIColor colorWithPatternImage:[UIImage imageNamed:@"color_A"]];
[self.contentView addSubview:detailTextField];
// a vertical separator that will come between the text and detailed text
@ -58,10 +63,11 @@
- (void)layoutSubviews {
[super layoutSubviews];
CGRect superframe = [[self.detailTextField superview] frame];
CGRect detailEditFrame;
detailEditFrame.origin.x = 15;
detailEditFrame.origin.y = 0;
detailEditFrame.size.height = 44;
detailEditFrame.origin.y = 5;
detailEditFrame.size.height = superframe.size.height - 10;
if ([[self.textLabel text] length] != 0) {
detailEditFrame.origin.x += [self.textLabel frame].size.width + 8;
@ -79,9 +85,8 @@
}
// put the detailed text edit view at the correct position
CGRect superframe = [[self.detailTextField superview] frame];
detailEditFrame.size.width = superframe.size.width - detailEditFrame.origin.x;
[self.detailTextField setFrame:detailEditFrame];
detailEditFrame.size.width = superframe.size.width - 10 - detailEditFrame.origin.x;
self.detailTextField.frame = detailEditFrame;
}
#pragma mark - UITableViewCell Functions

View file

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="7706" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="7703"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<view contentMode="scaleToFill" id="R4P-di-kSp">
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/>
<subviews>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" minimumFontSize="17" id="dTn-Hc-bGM">
<rect key="frame" x="8" y="6" width="359" height="30"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<color key="backgroundColor" red="0.90588235289999997" green="0.90588235289999997" blue="0.90588235289999997" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits"/>
</textField>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<nil key="simulatedStatusBarMetrics"/>
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
<point key="canvasLocation" x="338.5" y="43"/>
</view>
</objects>
<simulatedMetricsContainer key="defaultSimulatedMetrics">
<simulatedStatusBarMetrics key="statusBar"/>
<simulatedOrientationMetrics key="orientation"/>
<simulatedScreenMetrics key="destination" type="retina4"/>
</simulatedMetricsContainer>
</document>

View file

@ -107,6 +107,7 @@
636BC9971B5F921B00C754CE /* UIIconButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 636BC9961B5F921B00C754CE /* UIIconButton.m */; };
63701DD61BA31DA1006A9AE3 /* UIConfirmationDialog.xib in Resources */ = {isa = PBXBuildFile; fileRef = 63701DD51BA31DA1006A9AE3 /* UIConfirmationDialog.xib */; };
63701DDF1BA32039006A9AE3 /* UIConfirmationDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 63701DDE1BA32039006A9AE3 /* UIConfirmationDialog.m */; };
637144571BD531CE007E7C06 /* UIEditableTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 637144561BD531CE007E7C06 /* UIEditableTableViewCell.xib */; };
637157A11B283FE200C91677 /* FileTransferDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 637157A01B283FE200C91677 /* FileTransferDelegate.m */; };
637527C91BBA8EF700FDEA6F /* add_field_default.png in Resources */ = {isa = PBXBuildFile; fileRef = 6375271A1BBA8EF700FDEA6F /* add_field_default.png */; };
637527CA1BBA8EF700FDEA6F /* add_field_over.png in Resources */ = {isa = PBXBuildFile; fileRef = 6375271B1BBA8EF700FDEA6F /* add_field_over.png */; };
@ -738,6 +739,7 @@
63701DD51BA31DA1006A9AE3 /* UIConfirmationDialog.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIConfirmationDialog.xib; sourceTree = "<group>"; };
63701DDD1BA32039006A9AE3 /* UIConfirmationDialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIConfirmationDialog.h; sourceTree = "<group>"; };
63701DDE1BA32039006A9AE3 /* UIConfirmationDialog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIConfirmationDialog.m; sourceTree = "<group>"; };
637144561BD531CE007E7C06 /* UIEditableTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIEditableTableViewCell.xib; sourceTree = "<group>"; };
6371579F1B283FE200C91677 /* FileTransferDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileTransferDelegate.h; path = Utils/FileTransferDelegate.h; sourceTree = "<group>"; };
637157A01B283FE200C91677 /* FileTransferDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FileTransferDelegate.m; path = Utils/FileTransferDelegate.m; sourceTree = "<group>"; };
6375271A1BBA8EF700FDEA6F /* add_field_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = add_field_default.png; sourceTree = "<group>"; };
@ -1521,6 +1523,7 @@
2248E90D12F7E4CF00220D9C /* UIDigitButton.m */,
D3C6526515AC1A8F0092A874 /* UIEditableTableViewCell.h */,
D3C6526615AC1A8F0092A874 /* UIEditableTableViewCell.m */,
637144561BD531CE007E7C06 /* UIEditableTableViewCell.xib */,
2214EB8712F84EBB002A5394 /* UIHangUpButton.h */,
2214EB8812F84EBB002A5394 /* UIHangUpButton.m */,
D31C9C96158A1CDE00756B45 /* UIHistoryCell.h */,
@ -2374,6 +2377,7 @@
639CEAFD1A1DF4D9004DE38F /* StatusBarView.xib in Resources */,
637527DD1BBA8EF700FDEA6F /* call_status_incoming.png in Resources */,
637528321BBA8EF700FDEA6F /* numpad_3_over.png in Resources */,
637144571BD531CE007E7C06 /* UIEditableTableViewCell.xib in Resources */,
F088488A19FF8C41007FFCF3 /* UIContactCell.xib in Resources */,
637527E51BBA8EF700FDEA6F /* camera_switch_disabled.png in Resources */,
6375280F1BBA8EF700FDEA6F /* delete_field_default.png in Resources */,