1
0
mirror of https://github.com/danog/Telegram.git synced 2024-12-03 09:57:46 +01:00
Telegram/Telegraph/TGNotificationContactPreviewView.m
2016-02-25 01:03:51 +01:00

126 lines
5.0 KiB
Objective-C

#import "TGNotificationContactPreviewView.h"
#import "TGNotificationView.h"
#import "TGContactMediaAttachment.h"
#import "TGUser.h"
#import "TGFont.h"
#import "TGPhoneUtils.h"
#import "TGLetteredAvatarView.h"
@interface TGNotificationContactPreviewView ()
{
UIView *_wrapperView;
TGLetteredAvatarView *_avatarView;
UILabel *_nameLabel;
UILabel *_phoneLabel;
}
@end
@implementation TGNotificationContactPreviewView
- (instancetype)initWithMessage:(TGMessage *)message conversation:(TGConversation *)conversation attachment:(TGContactMediaAttachment *)attachment peers:(NSDictionary *)peers
{
self = [super initWithMessage:message conversation:conversation peers:peers];
if (self != nil)
{
self.userInteractionEnabled = false;
TGUser *user = peers[@(attachment.uid)];
if (user == nil)
{
user = [[TGUser alloc] init];
user.firstName = attachment.firstName;
user.lastName = attachment.lastName;
user.phoneNumber = attachment.phoneNumber;
}
[self setIcon:[UIImage imageNamed:@"MediaContact"] text:TGLocalized(@"Message.Contact")];
_wrapperView = [[UIView alloc] initWithFrame:CGRectMake(TGNotificationPreviewContentInset.left, 0, 0, 29)];
_wrapperView.alpha = 0.0f;
_wrapperView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
_wrapperView.userInteractionEnabled = false;
[self addSubview:_wrapperView];
_avatarView = [[TGLetteredAvatarView alloc] initWithFrame:CGRectMake(0, 0, 29, 29)];
[_avatarView setSingleFontSize:14.0f doubleFontSize:14.0f useBoldFont:true];
[_wrapperView addSubview:_avatarView];
_nameLabel = [[UILabel alloc] initWithFrame:CGRectZero];
_nameLabel.backgroundColor = [UIColor clearColor];
_nameLabel.font = TGMediumSystemFontOfSize(13);
_nameLabel.text = user.displayName;
_nameLabel.textColor = [UIColor whiteColor];
[_wrapperView addSubview:_nameLabel];
[_nameLabel sizeToFit];
_nameLabel.frame = CGRectMake(36, -1, ceil(_nameLabel.frame.size.width), ceil(_nameLabel.frame.size.height));
_phoneLabel = [[UILabel alloc] initWithFrame:CGRectZero];
_phoneLabel.backgroundColor = [UIColor clearColor];
_phoneLabel.font = TGSystemFontOfSize(13);
_phoneLabel.text = [TGPhoneUtils formatPhone:user.phoneNumber forceInternational:user.uid != 0];
_phoneLabel.textColor = [UIColor whiteColor];
[_wrapperView addSubview:_phoneLabel];
[_phoneLabel sizeToFit];
_phoneLabel.frame = CGRectMake(36, 15, ceil(_phoneLabel.frame.size.width), ceil(_phoneLabel.frame.size.height));
static UIImage *placeholder = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^
{
UIGraphicsBeginImageContextWithOptions(CGSizeMake(29.0f, 29.0f), false, 0.0f);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);
CGContextFillEllipseInRect(context, CGRectMake(0.0f, 0.0f, 29.0f, 29.0f));
CGContextSetStrokeColorWithColor(context, UIColorRGB(0xd9d9d9).CGColor);
CGContextSetLineWidth(context, 1.0f);
CGContextStrokeEllipseInRect(context, CGRectMake(0.5f, 0.5f, 28.0f, 28.0f));
placeholder = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
});
if (user.photoUrlSmall != nil)
{
[_avatarView loadImage:user.photoUrlSmall filter:@"circle:44x44" placeholder:placeholder];
}
else
{
[_avatarView loadUserPlaceholderWithSize:CGSizeMake(29.0f, 29.0f) uid:user.uid firstName:user.firstName lastName:user.lastName placeholder:placeholder];
}
}
return self;
}
- (void)setExpandProgress:(CGFloat)progress
{
_expandProgress = progress;
_wrapperView.alpha = progress * progress;
[self _updateExpandProgress:progress hideText:true];
[self setNeedsLayout];
}
- (CGFloat)expandedHeightForContainerSize:(CGSize)containerSize
{
[super expandedHeightForContainerSize:containerSize];
return _headerHeight + TGNotificationDefaultHeight + 2;
}
- (void)layoutSubviews
{
[super layoutSubviews];
_wrapperView.frame = CGRectMake(_wrapperView.frame.origin.x, _textLabel.frame.origin.y + 4, self.frame.size.width - _wrapperView.frame.origin.x - TGNotificationPreviewContentInset.right, _wrapperView.frame.size.height);
_nameLabel.frame = CGRectMake(_nameLabel.frame.origin.x, _nameLabel.frame.origin.y, _wrapperView.frame.size.width - _nameLabel.frame.origin.x, _nameLabel.frame.size.height);
_phoneLabel.frame = CGRectMake(_phoneLabel.frame.origin.x, _phoneLabel.frame.origin.y, _wrapperView.frame.size.width - _phoneLabel.frame.origin.x, _phoneLabel.frame.size.height);
}
@end