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

99 lines
3.5 KiB
Objective-C

#import "CallLogTableViewCell.h"
#import "Environment.h"
#import "ContactsManager.h"
#import "PreferencesUtil.h"
#import "LocalizableText.h"
#import "Util.h"
#define DELETE_IMAGE_VIEW_WIDTH 19.0f
@implementation CallLogTableViewCell
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
self = [NSBundle.mainBundle loadNibNamed:NSStringFromClass(self.class)
owner:self
options:nil][0];
if (self) {
_scrollView.contentSize = CGSizeMake(CGRectGetWidth(_contentContainerView.bounds),
CGRectGetHeight(_scrollView.frame));
_deleteImageView.image = [_deleteImageView.image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
}
return self;
}
- (NSString *)reuseIdentifier {
return NSStringFromClass(self.class);
}
- (void)prepareForReuse {
_scrollView.contentOffset = CGPointMake(0, 0);
[super prepareForReuse];
}
- (void)configureWithRecentCall:(RecentCall *)recentCall {
Contact *contact = [Environment.getCurrent.contactsManager latestContactWithRecordId:recentCall.contactRecordID];
if (contact) {
_contactNameLabel.text = contact.fullName;
} else {
_contactNameLabel.text = UNKNOWN_CONTACT_NAME;
}
if (recentCall.callType == RPRecentCallTypeOutgoing) {
_callTypeImageView.image = [UIImage imageNamed:CALL_TYPE_IMAGE_NAME_OUTGOING];
} else {
_callTypeImageView.image = [UIImage imageNamed:CALL_TYPE_IMAGE_NAME_INCOMING];
}
_contactNumberLabel.text = recentCall.phoneNumber.localizedDescriptionForUser;
if ([DateUtil dateIsOlderThanOneWeek:[recentCall date]]) {
_timeLabel.text = [[DateUtil dateFormatter] stringFromDate:[recentCall date]];
} else {
_timeLabel.text = [[DateUtil weekdayFormatter] stringFromDate:[recentCall date]];
}
}
#pragma mark - UIScrollViewDelegate
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
if (scrollView.contentOffset.x > CGRectGetWidth(_deleteView.frame)) {
_deleteImageView.tintColor = [UIUtil redColor];
_deleteImageView.bounds = CGRectMake(_deleteImageView.bounds.origin.x,
_deleteImageView.bounds.origin.y,
DELETE_IMAGE_VIEW_WIDTH,
_deleteImageView.bounds.size.height);
} else {
double ratio = _scrollView.contentOffset.x / CGRectGetWidth(_deleteView.frame);
double newWidth = DELETE_IMAGE_VIEW_WIDTH/2 + (DELETE_IMAGE_VIEW_WIDTH * ratio)/2.0f;
_deleteImageView.bounds = CGRectMake(_deleteImageView.bounds.origin.x,
_deleteImageView.bounds.origin.y,
(CGFloat)newWidth,
_deleteImageView.bounds.size.height);
_deleteImageView.tintColor = UIColor.whiteColor;
}
}
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView
withVelocity:(CGPoint)velocity
targetContentOffset:(inout CGPoint *)targetContentOffset {
if (scrollView.contentOffset.x > CGRectGetWidth(_deleteView.frame)) {
[_delegate recentCallTableViewCellTappedDelete:self];
} else {
*targetContentOffset = CGPointMake(0, 0);
}
}
#pragma mark - Actions
- (IBAction)phoneCallButtonTapped {
[_delegate recentCallTableViewCellTappedCall:self];
}
@end