mirror of
https://github.com/danog/Telegram.git
synced 2024-12-03 09:57:46 +01:00
196 lines
6.6 KiB
Objective-C
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
|