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

196 lines
6.6 KiB
Objective-C

#import "TGFlatActionCell.h"
#import "TGInterfaceAssets.h"
#import "TGImageUtils.h"
#import "TGFont.h"
@interface TGFlatActionCell ()
{
CALayer *_separatorLayer;
}
@property (nonatomic, strong) UILabel *titleLabel;
@property (nonatomic, strong) UIImageView *iconView;
@property (nonatomic) TGFlatActionCellMode mode;
@end
@implementation TGFlatActionCell
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self)
{
UIView *selectedView = [[UIView alloc] init];
selectedView.backgroundColor = TGSelectionColor();
self.selectedBackgroundView = selectedView;
CGFloat originX = TGIsPad() ? 74.0f : 66.0f;
_titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(originX, 14 - TGRetinaPixel + (TGIsPad() ? 4.0f : 0.0f), self.contentView.frame.size.width - originX - 6, 20)];
_titleLabel.contentMode = UIViewContentModeLeft;
_titleLabel.autoresizingMask = UIViewAutoresizingFlexibleWidth;
_titleLabel.font = TGSystemFontOfSize(17);
_titleLabel.backgroundColor = [UIColor whiteColor];
_titleLabel.textColor = TGAccentColor();
[self.contentView addSubview:_titleLabel];
_iconView = [[UIImageView alloc] init];
[self.contentView addSubview:_iconView];
_separatorLayer = [[CALayer alloc] init];
_separatorLayer.backgroundColor = TGSeparatorColor().CGColor;
[self.contentView.layer addSublayer:_separatorLayer];
}
return self;
}
- (void)setMode:(TGFlatActionCellMode)mode
{
_mode = mode;
if (mode == TGFlatActionCellModeInvite)
_titleLabel.text = TGLocalized(@"Contacts.InviteFriends");
else if (mode == TGFlatActionCellModeCreateGroup || mode == TGFlatActionCellModeCreateGroupContacts)
_titleLabel.text = TGLocalized(@"Compose.NewGroup");
else if (mode == TGFlatActionCellModeCreateEncrypted)
_titleLabel.text = TGLocalized(@"Compose.NewEncryptedChat");
else if (mode == TGFlatActionCellModeChannels)
_titleLabel.text = TGLocalized(@"Channels.Title");
else if (mode == TGFlatActionCellModeCreateChannel)
_titleLabel.text = TGLocalized(@"Compose.NewChannelButton");
else if (mode == TGFlatActionCellModeCreateChannelGroup)
_titleLabel.text = TGLocalized(@"Compose.NewChannelGroupButton");
static UIImage *inviteIcon = nil;
static UIImage *friendsIcon = nil;
static UIImage *encryptedIcon = nil;
static UIImage *broadcastsIcon = nil;
if (inviteIcon == nil)
{
inviteIcon = [UIImage imageNamed:@"ModernContactListInviteFriendsIcon.png"];
friendsIcon = [UIImage imageNamed:@"ModernContactListCreateGroupIcon.png"];
encryptedIcon = [UIImage imageNamed:@"ModernContactListCreateSecretChatIcon.png"];
broadcastsIcon = [UIImage imageNamed:@"ModernContactListBroadcastIcon.png"];
}
CGFloat verticalOffset = TGIsPad() ? 4.0f : 0.0f;
CGFloat horizontalOffset = TGIsPad() ? 8.0f : 0.0f;
if (mode == TGFlatActionCellModeInvite)
{
_iconView.image = inviteIcon;
[_iconView sizeToFit];
CGRect iconFrame = _iconView.frame;
iconFrame.origin = CGPointMake(20 - TGRetinaPixel + horizontalOffset, 9 + verticalOffset);
_iconView.frame = iconFrame;
}
else if (mode == TGFlatActionCellModeCreateGroup || mode == TGFlatActionCellModeCreateGroupContacts || mode == TGFlatActionCellModeCreateChannelGroup)
{
_iconView.image = friendsIcon;
[_iconView sizeToFit];
CGRect iconFrame = _iconView.frame;
iconFrame.origin = CGPointMake(20 - TGRetinaPixel + horizontalOffset, 9 + verticalOffset);
_iconView.frame = iconFrame;
}
else if (mode == TGFlatActionCellModeCreateEncrypted)
{
_iconView.image = encryptedIcon;
[_iconView sizeToFit];
CGRect iconFrame = _iconView.frame;
iconFrame.origin = CGPointMake(20 - TGRetinaPixel + horizontalOffset - 1, 8 + verticalOffset);
_iconView.frame = iconFrame;
}
else if (mode == TGFlatActionCellModeChannels || mode == TGFlatActionCellModeCreateChannel)
{
_iconView.image = broadcastsIcon;
[_iconView sizeToFit];
CGRect iconFrame = _iconView.frame;
iconFrame.origin = CGPointMake(20 - TGRetinaPixel + horizontalOffset - 1 + 2, 8 + verticalOffset + 3);
_iconView.frame = iconFrame;
}
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated];
if (selected)
{
CGRect frame = self.selectedBackgroundView.frame;
frame.origin.y = true ? -1 : 0;
frame.size.height = self.frame.size.height + 1;
self.selectedBackgroundView.frame = frame;
[self adjustOrdering];
}
}
- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated
{
[super setHighlighted:highlighted animated:animated];
if (highlighted)
{
CGRect frame = self.selectedBackgroundView.frame;
frame.origin.y = true ? -1 : 0;
frame.size.height = self.frame.size.height + 1;
self.selectedBackgroundView.frame = frame;
[self adjustOrdering];
}
}
- (void)adjustOrdering
{
if ([self.superview isKindOfClass:[UITableView class]])
{
Class UITableViewCellClass = [UITableViewCell class];
Class UISearchBarClass = [UISearchBar class];
int maxCellIndex = 0;
int index = -1;
int selfIndex = 0;
for (UIView *view in self.superview.subviews)
{
index++;
if ([view isKindOfClass:UITableViewCellClass] || [view isKindOfClass:UISearchBarClass])// || ((int)view.frame.size.height) == 25)
{
maxCellIndex = index;
if (view == self)
selfIndex = index;
}
}
if (selfIndex < maxCellIndex)
{
[self.superview insertSubview:self atIndex:maxCellIndex];
}
}
}
- (void)layoutSubviews
{
[super layoutSubviews];
CGFloat separatorHeight = TGIsRetina() ? 0.5f : 1.0f;
CGRect frame = self.selectedBackgroundView.frame;
frame.origin.y = true ? -1 : 0;
frame.size.height = self.frame.size.height + 1;
self.selectedBackgroundView.frame = frame;
CGFloat separatorOrigin = (TGIsPad() ? 74.0f : 65.0f);
_separatorLayer.frame = CGRectMake(separatorOrigin, self.frame.size.height - separatorHeight, self.frame.size.width - separatorOrigin, separatorHeight);
}
@end