1
0
mirror of https://github.com/danog/Telegram.git synced 2024-12-04 02:17:51 +01:00
Telegram/Watch/Extension/TGNeoTextMessageViewModel.m
2016-02-25 01:03:51 +01:00

64 lines
2.3 KiB
Objective-C

#import "TGNeoTextMessageViewModel.h"
#import "TGNeoLabelViewModel.h"
#import "TGMessageViewModel.h"
#import "TGBridgeMessage.h"
@interface TGNeoTextMessageViewModel ()
{
TGNeoLabelViewModel *_textModel;
}
@end
@implementation TGNeoTextMessageViewModel
- (instancetype)initWithMessage:(TGBridgeMessage *)message type:(TGNeoMessageType)type users:(NSDictionary *)users context:(TGBridgeContext *)context
{
self = [super initWithMessage:message type:type users:users context:context];
if (self != nil)
{
NSString *text = [message.text stringByReplacingOccurrencesOfString:@"/" withString:@"/\u2060"];
CGFloat fontSize = [TGNeoBubbleMessageViewModel bodyTextFontSize];
UIColor *textColor = [self normalColorForMessage:message];
if (message.textCheckingResults.count > 0)
{
_textModel = [[TGNeoLabelViewModel alloc] initWithAttributedText:[TGMessageViewModel attributedTextForMessage:message fontSize:fontSize textColor:textColor]];
}
else
{
_textModel = [[TGNeoLabelViewModel alloc] initWithText:text font:[UIFont systemFontOfSize:fontSize] color:textColor attributes:nil];
}
_textModel.multiline = true;
[self addSubmodel:_textModel];
}
return self;
}
- (CGSize)layoutWithContainerSize:(CGSize)containerSize
{
CGSize contentContainerSize = [self contentContainerSizeWithContainerSize:containerSize];
CGSize headerSize = [self layoutHeaderModelsWithContainerSize:contentContainerSize];
CGFloat maxContentWidth = headerSize.width;
CGFloat textTopOffset = headerSize.height;
CGSize textSize = [_textModel contentSizeWithContainerSize:contentContainerSize];
_textModel.frame = CGRectMake(TGNeoBubbleMessageViewModelInsets.left, textTopOffset, textSize.width, textSize.height);
if (textSize.width > maxContentWidth)
maxContentWidth = textSize.width;
CGSize contentSize = CGSizeZero;
contentSize.width = maxContentWidth + TGNeoBubbleMessageViewModelInsets.left + TGNeoBubbleMessageViewModelInsets.right;
contentSize.height = CGRectGetMaxY(_textModel.frame) + TGNeoBubbleMessageViewModelInsets.bottom;
[super layoutWithContainerSize:contentSize];
return contentSize;
}
@end