mirror of https://github.com/oxen-io/session-ios
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
3.5 KiB
Objective-C
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
|