mirror of
https://github.com/danog/Telegram.git
synced 2025-01-05 20:48:36 +01:00
75 lines
2.6 KiB
Mathematica
75 lines
2.6 KiB
Mathematica
|
#import "TGNeoSmiliesMessageViewModel.h"
|
||
|
#import "TGNeoBubbleMessageViewModel.h"
|
||
|
#import "TGNeoLabelViewModel.h"
|
||
|
|
||
|
#import "TGBridgeContext.h"
|
||
|
#import "TGBridgeMessage.h"
|
||
|
|
||
|
#import "TGColor.h"
|
||
|
|
||
|
#import "TGPeerIdAdapter.h"
|
||
|
|
||
|
const CGFloat TGNeoSmiliesMessageHeight = 39;
|
||
|
|
||
|
@interface TGNeoSmiliesMessageViewModel ()
|
||
|
{
|
||
|
TGNeoLabelViewModel *_authorNameModel;
|
||
|
TGNeoLabelViewModel *_textModel;
|
||
|
bool _outgoing;
|
||
|
}
|
||
|
@end
|
||
|
|
||
|
@implementation TGNeoSmiliesMessageViewModel
|
||
|
|
||
|
- (instancetype)initWithMessage:(TGBridgeMessage *)message users:(NSDictionary *)users context:(TGBridgeContext *)context
|
||
|
{
|
||
|
self = [super initWithMessage:message users:users context:context];
|
||
|
if (self != nil)
|
||
|
{
|
||
|
_outgoing = message.outgoing;
|
||
|
|
||
|
if (message.cid < 0 && !TGPeerIdIsChannel(message.cid) && !message.outgoing)
|
||
|
{
|
||
|
_authorNameModel = [[TGNeoLabelViewModel alloc] initWithText:[users[@(message.fromUid)] displayName] font:[UIFont systemFontOfSize:14] color:[TGColor colorForUserId:(int32_t)message.fromUid myUserId:context.userId] attributes:nil];
|
||
|
[self addSubmodel:_authorNameModel];
|
||
|
}
|
||
|
|
||
|
_textModel = [[TGNeoLabelViewModel alloc] initWithText:message.text font:[UIFont systemFontOfSize:35] color:[UIColor whiteColor] attributes:nil];
|
||
|
_textModel.multiline = false;
|
||
|
[self addSubmodel:_textModel];
|
||
|
}
|
||
|
return self;
|
||
|
}
|
||
|
|
||
|
- (void)drawInContext:(CGContextRef)context
|
||
|
{
|
||
|
CGContextSetFillColorWithColor(context, [UIColor grayColor].CGColor);
|
||
|
CGContextFillRect(context, self.bounds);
|
||
|
|
||
|
[super drawInContext:context];
|
||
|
}
|
||
|
|
||
|
- (CGSize)layoutWithContainerSize:(CGSize)containerSize
|
||
|
{
|
||
|
CGFloat textTopOffset = 0;
|
||
|
if (_authorNameModel != nil)
|
||
|
{
|
||
|
CGSize nameSize = [_authorNameModel contentSizeWithContainerSize:CGSizeMake(containerSize.width - TGNeoBubbleMessageViewModelInsets.left - TGNeoBubbleMessageViewModelInsets.right, FLT_MAX)];
|
||
|
_authorNameModel.frame = CGRectMake(TGNeoBubbleMessageViewModelInsets.left, floor(TGNeoBubbleMessageViewModelInsets.top / 2.0), nameSize.width, 16.5f);
|
||
|
textTopOffset += CGRectGetMaxY(_authorNameModel.frame) + TGNeoBubbleHeaderSpacing;
|
||
|
}
|
||
|
|
||
|
CGSize size = [_textModel contentSizeWithContainerSize:containerSize];
|
||
|
CGFloat inset = 0; //TGNeoBubbleMessageViewModelInsets.left
|
||
|
if (_outgoing)
|
||
|
size.width += inset;
|
||
|
|
||
|
_textModel.frame = CGRectMake(_outgoing ? 0 : inset, textTopOffset, size.width, size.height);
|
||
|
|
||
|
self.contentSize = CGSizeMake(MAX(CGRectGetMaxX(_authorNameModel.frame), size.width), TGNeoSmiliesMessageHeight + textTopOffset);
|
||
|
|
||
|
return self.contentSize;
|
||
|
}
|
||
|
|
||
|
@end
|