session-ios/Signal/src/views/ContactTableViewCell.m

79 lines
3.0 KiB
Objective-C

#import "ContactTableViewCell.h"
#import "UIUtil.h"
#import "Environment.h"
#import "PhoneManager.h"
#define CONTACT_TABLE_CELL_BORDER_WIDTH 1.0f
@interface ContactTableViewCell() {
}
@property(strong,nonatomic) Contact* associatedContact;
@end
@implementation ContactTableViewCell
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
return self;
}
- (NSString *)reuseIdentifier {
return NSStringFromClass(self.class);
}
- (void)configureWithContact:(Contact *)contact {
_callButton.hidden = !contact.isRedPhoneContact;
if(!contact.isTextSecureContact) {
self.selectionStyle = UITableViewCellSelectionStyleNone;
}
_associatedContact = contact;
_nameLabel.attributedText = [self attributedStringForContact:contact];
if (!contact.isTextSecureContact) {
_nameLabel.textColor = [UIColor lightGrayColor];
}
}
- (NSAttributedString *)attributedStringForContact:(Contact *)contact {
NSMutableAttributedString *fullNameAttributedString = [[NSMutableAttributedString alloc] initWithString:contact.fullName];
UIFont *firstNameFont;
UIFont *lastNameFont;
if (ABPersonGetSortOrdering() == kABPersonCompositeNameFormatFirstNameFirst) {
firstNameFont = [UIFont ows_mediumFontWithSize:_nameLabel.font.pointSize];
lastNameFont = [UIFont ows_regularFontWithSize:_nameLabel.font.pointSize];
}
else {
firstNameFont = [UIFont ows_regularFontWithSize:_nameLabel.font.pointSize];
lastNameFont = [UIFont ows_mediumFontWithSize:_nameLabel.font.pointSize];
}
[fullNameAttributedString addAttribute:NSFontAttributeName value:firstNameFont range:NSMakeRange(0, contact.firstName.length)];
[fullNameAttributedString addAttribute:NSFontAttributeName value:lastNameFont range:NSMakeRange(contact.firstName.length + 1, contact.lastName.length)];
[fullNameAttributedString addAttribute:NSForegroundColorAttributeName value:[UIColor blackColor] range:NSMakeRange(0, contact.fullName.length)];
if (ABPersonGetSortOrdering() == kABPersonCompositeNameFormatFirstNameFirst) {
[fullNameAttributedString addAttribute:NSForegroundColorAttributeName value:[UIColor ows_darkGrayColor] range:NSMakeRange(contact.firstName.length + 1, contact.lastName.length)];
}
else {
[fullNameAttributedString addAttribute:NSForegroundColorAttributeName value:[UIColor ows_darkGrayColor] range:NSMakeRange(0, contact.firstName.length)];
}
return fullNameAttributedString;
}
-(IBAction)callContact:(id)sender
{
if (_associatedContact.isRedPhoneContact) {
NSArray *redPhoneIdentifiers = [_associatedContact redPhoneIdentifiers];
[Environment.phoneManager initiateOutgoingCallToContact:_associatedContact atRemoteNumber:[redPhoneIdentifiers firstObject]];
} else{
DDLogWarn(@"Tried to intiate a call but contact has no RedPhone identifier");
}
}
@end