From 3e8437ae559487362fae3525beb79c534c213a51 Mon Sep 17 00:00:00 2001 From: 单军华 Date: Thu, 12 Jul 2018 13:44:34 +0800 Subject: [PATCH] bug修复和功能优化 --- screendisplay/Pods/EaseUI/EaseUI/EMUIKit/Model/EaseMessageModel.m | 183 +++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 183 insertions(+), 0 deletions(-) diff --git a/screendisplay/Pods/EaseUI/EaseUI/EMUIKit/Model/EaseMessageModel.m b/screendisplay/Pods/EaseUI/EaseUI/EMUIKit/Model/EaseMessageModel.m new file mode 100755 index 0000000..4134af4 --- /dev/null +++ b/screendisplay/Pods/EaseUI/EaseUI/EMUIKit/Model/EaseMessageModel.m @@ -0,0 +1,183 @@ +/************************************************************ + * * Hyphenate CONFIDENTIAL + * __________________ + * Copyright (C) 2016 Hyphenate Inc. All rights reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Hyphenate Inc. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Hyphenate Inc. + */ + +#import "EaseMessageModel.h" + +#import "EaseEmotionEscape.h" +#import "EaseConvertToCommonEmoticonsHelper.h" + +@implementation EaseMessageModel + +- (instancetype)initWithMessage:(EMMessage *)message +{ + self = [super init]; + if (self) { + _cellHeight = -1; + _message = message; + _firstMessageBody = message.body; + _isMediaPlaying = NO; + + _nickname = message.from; + _isSender = message.direction == EMMessageDirectionSend ? YES : NO; + + switch (_firstMessageBody.type) { + case EMMessageBodyTypeText: + { + EMTextMessageBody *textBody = (EMTextMessageBody *)_firstMessageBody; + NSString *didReceiveText = [EaseConvertToCommonEmoticonsHelper convertToSystemEmoticons:textBody.text]; + self.text = didReceiveText; + } + break; + case EMMessageBodyTypeImage: + { + EMImageMessageBody *imgMessageBody = (EMImageMessageBody *)_firstMessageBody; + NSData *imageData = [NSData dataWithContentsOfFile:imgMessageBody.localPath]; + if (imageData.length) { + self.image = [UIImage imageWithData:imageData]; + } + + if ([imgMessageBody.thumbnailLocalPath length] > 0) { + self.thumbnailImage = [UIImage imageWithContentsOfFile:imgMessageBody.thumbnailLocalPath]; + } + else{ + CGSize size = self.image.size; + self.thumbnailImage = size.width * size.height > 200 * 200 ? [self scaleImage:self.image toScale:sqrt((200 * 200) / (size.width * size.height))] : self.image; + } + + self.thumbnailImageSize = self.thumbnailImage.size; + self.imageSize = imgMessageBody.size; + if (!_isSender) { + self.fileURLPath = imgMessageBody.remotePath; + if ([EMClient sharedClient].options.isAutoDownloadThumbnail) { + self.thumbnailFileURLPath = imgMessageBody.thumbnailRemotePath; + } + } + } + break; + case EMMessageBodyTypeLocation: + { + EMLocationMessageBody *locationBody = (EMLocationMessageBody *)_firstMessageBody; + self.address = locationBody.address; + self.latitude = locationBody.latitude; + self.longitude = locationBody.longitude; + } + break; + case EMMessageBodyTypeVoice: + { + EMVoiceMessageBody *voiceBody = (EMVoiceMessageBody *)_firstMessageBody; + self.mediaDuration = voiceBody.duration; + self.isMediaPlayed = NO; + if (message.ext) { + self.isMediaPlayed = [[message.ext objectForKey:@"isPlayed"] boolValue]; + } + + // audio file path + self.fileURLPath = voiceBody.remotePath; + } + break; + case EMMessageBodyTypeVideo: + { + EMVideoMessageBody *videoBody = (EMVideoMessageBody *)message.body; + self.thumbnailImageSize = videoBody.thumbnailSize; + if ([videoBody.thumbnailLocalPath length] > 0) { + NSData *thumbnailImageData = [NSData dataWithContentsOfFile:videoBody.thumbnailLocalPath]; + if (thumbnailImageData.length) { + self.thumbnailImage = [UIImage imageWithData:thumbnailImageData]; + } + self.image = self.thumbnailImage; + } + + // video file path + self.fileURLPath = videoBody.remotePath; + } + break; + case EMMessageBodyTypeFile: + { + EMFileMessageBody *fileMessageBody = (EMFileMessageBody *)_firstMessageBody; + self.fileIconName = @"EaseUIResource.bundle/chat_item_file"; + self.fileName = fileMessageBody.displayName; + self.fileSize = fileMessageBody.fileLength; + + if (self.fileSize < 1024) { + self.fileSizeDes = [NSString stringWithFormat:@"%fB", self.fileSize]; + } + else if(self.fileSize < 1024 * 1024){ + self.fileSizeDes = [NSString stringWithFormat:@"%.2fkB", self.fileSize / 1024]; + } + else if (self.fileSize < 2014 * 1024 * 1024){ + self.fileSizeDes = [NSString stringWithFormat:@"%.2fMB", self.fileSize / (1024 * 1024)]; + } + } + break; + default: + break; + } + } + + return self; +} + +- (NSString *)messageId +{ + return _message.messageId; +} + +- (EMMessageStatus)messageStatus +{ + return _message.status; +} + +- (EMChatType)messageType +{ + return _message.chatType; +} + +- (EMMessageBodyType)bodyType +{ + return self.firstMessageBody.type; +} + +- (BOOL)isMessageRead +{ + return _message.isReadAcked; +} + +- (NSString *)fileLocalPath +{ + if (_firstMessageBody) { + switch (_firstMessageBody.type) { + case EMMessageBodyTypeVideo: + case EMMessageBodyTypeImage: + case EMMessageBodyTypeVoice: + case EMMessageBodyTypeFile: + { + EMFileMessageBody *fileBody = (EMFileMessageBody *)_firstMessageBody; + return fileBody.localPath; + } + break; + default: + break; + } + } + return nil; +} + +- (UIImage *)scaleImage:(UIImage *)image toScale:(float)scaleSize +{ + UIGraphicsBeginImageContext(CGSizeMake(image.size.width * scaleSize, image.size.height * scaleSize)); + [image drawInRect:CGRectMake(0, 0, image.size.width * scaleSize, image.size.height * scaleSize)]; + UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + return scaledImage; +} + +@end -- Gitblit v1.8.0