mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-24 07:05:35 +00:00
Build ChatListUI
This commit is contained in:
@@ -0,0 +1,203 @@
|
||||
#import "TGStickerKeyboardTabSettingsCell.h"
|
||||
|
||||
#import "TGStickerKeyboardTabPanel.h"
|
||||
|
||||
#import "LegacyComponentsInternal.h"
|
||||
#import "TGImageUtils.h"
|
||||
#import "TGFont.h"
|
||||
|
||||
#import <LegacyComponents/TGModernButton.h>
|
||||
|
||||
static void setViewFrame(UIView *view, CGRect frame)
|
||||
{
|
||||
CGAffineTransform transform = view.transform;
|
||||
view.transform = CGAffineTransformIdentity;
|
||||
if (!CGRectEqualToRect(view.frame, frame))
|
||||
view.frame = frame;
|
||||
view.transform = transform;
|
||||
}
|
||||
|
||||
@interface TGStickerKeyboardTabSettingsCell () {
|
||||
TGStickerKeyboardViewStyle _style;
|
||||
TGStickerKeyboardPallete *_pallete;
|
||||
|
||||
TGModernButton *_button;
|
||||
|
||||
UIView *_wrapperView;
|
||||
UIImageView *_imageView;
|
||||
UILabel *_badgeLabel;
|
||||
UIImageView *_badgeView;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation TGStickerKeyboardTabSettingsCell
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame {
|
||||
self = [super initWithFrame:frame];
|
||||
if (self != nil) {
|
||||
_button = [[TGModernButton alloc] init];
|
||||
_button.modernHighlight = true;
|
||||
[_button addTarget:self action:@selector(buttonPressed) forControlEvents:UIControlEventTouchUpInside];
|
||||
[self.contentView addSubview:_button];
|
||||
|
||||
_wrapperView = [[UIView alloc] init];
|
||||
_wrapperView.userInteractionEnabled = false;
|
||||
[self.contentView addSubview:_wrapperView];
|
||||
|
||||
_imageView = [[UIImageView alloc] init];
|
||||
_imageView.image = TGComponentsImageNamed(@"StickerKeyboardSettingsIcon.png");
|
||||
_imageView.userInteractionEnabled = false;
|
||||
_imageView.contentMode = UIViewContentModeCenter;
|
||||
[_wrapperView addSubview:_imageView];
|
||||
|
||||
self.selectedBackgroundView = [[UIView alloc] init];
|
||||
self.selectedBackgroundView.backgroundColor = UIColorRGB(0xe6e6e6);
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)setPallete:(TGStickerKeyboardPallete *)pallete
|
||||
{
|
||||
if (pallete == nil || _pallete == pallete)
|
||||
return;
|
||||
|
||||
_pallete = pallete;
|
||||
|
||||
self.selectedBackgroundView.backgroundColor = pallete.selectionColor;
|
||||
_badgeView.image = pallete.badge;
|
||||
_badgeLabel.textColor = pallete.badgeTextColor;
|
||||
}
|
||||
|
||||
- (void)setMode:(TGStickerKeyboardTabSettingsCellMode)mode {
|
||||
_mode = mode;
|
||||
|
||||
if (mode == TGStickerKeyboardTabSettingsCellSettings) {
|
||||
_imageView.image = _pallete != nil ? _pallete.settingsIcon : TGComponentsImageNamed(@"StickerKeyboardSettingsIcon.png");
|
||||
} else if (mode == TGStickerKeyboardTabSettingsCellGifs) {
|
||||
_imageView.image = _pallete != nil ? _pallete.gifIcon : TGComponentsImageNamed(@"StickerKeyboardGifIcon.png");
|
||||
} else {
|
||||
_imageView.image = _pallete != nil ? _pallete.trendingIcon : TGComponentsImageNamed(@"StickerKeyboardTrendingIcon.png");
|
||||
}
|
||||
_button.hidden = mode != TGStickerKeyboardTabSettingsCellSettings;
|
||||
}
|
||||
|
||||
- (void)setInnerAlpha:(CGFloat)innerAlpha
|
||||
{
|
||||
CGAffineTransform transform = CGAffineTransformMakeTranslation(0.0f, 36.0f / 2.0f * (1.0f - innerAlpha));
|
||||
transform = CGAffineTransformScale(transform, innerAlpha, innerAlpha);
|
||||
|
||||
_wrapperView.transform = transform;
|
||||
self.selectedBackgroundView.transform = transform;
|
||||
}
|
||||
|
||||
- (void)setStyle:(TGStickerKeyboardViewStyle)style
|
||||
{
|
||||
_style = style;
|
||||
|
||||
switch (style)
|
||||
{
|
||||
case TGStickerKeyboardViewDarkBlurredStyle:
|
||||
{
|
||||
self.selectedBackgroundView.backgroundColor = UIColorRGB(0x393939);
|
||||
}
|
||||
break;
|
||||
|
||||
case TGStickerKeyboardViewPaintStyle:
|
||||
{
|
||||
self.selectedBackgroundView.backgroundColor = UIColorRGB(0xdadada);
|
||||
self.selectedBackgroundView.layer.cornerRadius = 8.0f;
|
||||
self.selectedBackgroundView.clipsToBounds = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case TGStickerKeyboardViewPaintDarkStyle:
|
||||
{
|
||||
self.selectedBackgroundView.backgroundColor = UIColorRGBA(0xfbfffe, 0.47f);
|
||||
self.selectedBackgroundView.layer.cornerRadius = 8.0f;
|
||||
self.selectedBackgroundView.clipsToBounds = true;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
{
|
||||
self.selectedBackgroundView.backgroundColor = _pallete != nil ? _pallete.selectionColor : UIColorRGB(0xe6e7e9);
|
||||
self.selectedBackgroundView.layer.cornerRadius = 8.0f;
|
||||
self.selectedBackgroundView.clipsToBounds = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
- (void)layoutSubviews {
|
||||
[super layoutSubviews];
|
||||
|
||||
if (_badgeLabel != nil) {
|
||||
CGSize labelSize = _badgeLabel.frame.size;
|
||||
CGFloat badgeWidth = MAX(16.0f, labelSize.width + 6.0);
|
||||
_badgeView.frame = CGRectMake(self.frame.size.width - badgeWidth - 4.0, 6.0f, badgeWidth, 16.0f);
|
||||
_badgeLabel.frame = CGRectMake(CGRectGetMinX(_badgeView.frame) + TGRetinaFloor((badgeWidth - labelSize.width) / 2.0f), CGRectGetMinY(_badgeView.frame) + 1.0f, labelSize.width, labelSize.height);
|
||||
}
|
||||
|
||||
if (_style == TGStickerKeyboardViewDefaultStyle)
|
||||
{
|
||||
setViewFrame(_wrapperView, CGRectOffset(self.bounds, 0.0f, -3.0f));
|
||||
setViewFrame(_imageView, self.bounds);
|
||||
|
||||
_button.frame = self.bounds;
|
||||
|
||||
setViewFrame(self.selectedBackgroundView, CGRectMake(floor((self.frame.size.width - 36.0f) / 2.0f), 0, 36.0f, 36.0f));
|
||||
}
|
||||
else
|
||||
{
|
||||
_wrapperView.frame = self.bounds;
|
||||
_button.frame = self.bounds;
|
||||
_imageView.frame = self.bounds;
|
||||
}
|
||||
}
|
||||
|
||||
- (void)buttonPressed {
|
||||
if (_pressed) {
|
||||
_pressed();
|
||||
}
|
||||
}
|
||||
|
||||
- (void)setBadge:(NSString *)badge {
|
||||
if (badge != nil) {
|
||||
if (_badgeLabel == nil) {
|
||||
_badgeLabel = [[UILabel alloc] init];
|
||||
_badgeLabel.font = TGSystemFontOfSize(12.0);
|
||||
_badgeLabel.backgroundColor = [UIColor clearColor];
|
||||
_badgeLabel.textColor = _pallete != nil ? _pallete.badgeTextColor : [UIColor whiteColor];
|
||||
[_wrapperView addSubview:_badgeLabel];
|
||||
|
||||
static UIImage *badgeImage = nil;
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
UIGraphicsBeginImageContextWithOptions(CGSizeMake(16.0f, 16.0f), false, 0.0f);
|
||||
CGContextRef context = UIGraphicsGetCurrentContext();
|
||||
|
||||
CGContextSetFillColorWithColor(context, UIColorRGB(0xff3b30).CGColor);
|
||||
CGContextFillEllipseInRect(context, CGRectMake(0.0f, 0.0f, 16.0f, 16.0f));
|
||||
|
||||
badgeImage = [UIGraphicsGetImageFromCurrentImageContext() stretchableImageWithLeftCapWidth:7.0f topCapHeight:0.0f];
|
||||
UIGraphicsEndImageContext();
|
||||
});
|
||||
_badgeView = [[UIImageView alloc] initWithImage:_pallete != nil ? _pallete.badge : badgeImage];
|
||||
|
||||
[_wrapperView addSubview:_badgeView];
|
||||
[_wrapperView addSubview:_badgeLabel];
|
||||
}
|
||||
_badgeLabel.text = badge;
|
||||
[_badgeLabel sizeToFit];
|
||||
} else {
|
||||
[_badgeView removeFromSuperview];
|
||||
_badgeView = nil;
|
||||
[_badgeLabel removeFromSuperview];
|
||||
_badgeLabel = nil;
|
||||
}
|
||||
|
||||
[self setNeedsLayout];
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user