123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 |
- //
- // JXAudioCell.m
- // shiku_im
- //
- // Created by Apple on 16/10/10.
- // Copyright © 2016年 Reese. All rights reserved.
- //
- #import "JXAudioCell.h"
- @implementation JXAudioCell
- - (void)awakeFromNib {
- [super awakeFromNib];
- // Initialization code
-
- }
- - (void)creatUI{
- _audioPlayer = [[JXAudioPlayer alloc]initWithParent:self.bubbleBg frame:CGRectNull isLeft:YES];
- _audioPlayer.isOpenProximityMonitoring = YES;
- _audioPlayer.isChatAudio = YES;
- _audioPlayer.delegate = self;
- _audioPlayer.didAudioPlayEnd = @selector(didAudioPlayEnd);
- _audioPlayer.didAudioPlayBegin = @selector(didAudioPlayBegin);
- _audioPlayer.didAudioOpen = @selector(didAudioOpen);
- }
- -(void)dealloc{
- //[g_notify removeObserver:self name:kCellReadDelNotification object:self.msg];
- NSLog(@"JXAudioCell.dealloc");
- // [_audioPlayer release];
- // [super dealloc];
- _audioPlayer = nil;
- }
- - (void)didAudioOpen{
- [self.msg sendAlreadyReadMsg];
- if (self.msg.isGroup) {
- self.msg.isRead = [NSNumber numberWithInt:1];
- [self.msg updateIsRead:nil msgId:self.msg.messageId];
- }
- if ([self.msg.isReadDel boolValue] && !self.msg.isMySend) {
- [self timeGo:self.msg.fileName];
- }
- }
- - (void)setCellData{
- [super setCellData];
- int w = (JX_SCREEN_WIDTH-HEAD_SIZE-INSETS*2-70)/30;
- w = 70+w*[self.msg.timeLen intValue];
- if(w<70)
- w = 70;
- if(w>200)
- w = 200;
-
-
- if(self.msg.isMySend){
- self.bubbleBg.frame=CGRectMake(CGRectGetMinX(self.headImage.frame)-w-CHAT_WIDTH_ICON+2, INSETS, w, 37);
- }
- else{
- self.bubbleBg.frame=CGRectMake(CGRectGetMaxX(self.headImage.frame)+CHAT_WIDTH_ICON, INSETS2(self.msg.isGroup)+8, w, 37);
- }
-
- if (self.msg.isShowTime) {
- CGRect frame = self.bubbleBg.frame;
- frame.origin.y = self.bubbleBg.frame.origin.y + 50;
- self.bubbleBg.frame = frame;
- }
-
- if(self.msg.isMySend && isFileExist(self.msg.fileName))
- _audioPlayer.audioFile = self.msg.fileName;
- else
- _audioPlayer.audioFile = self.msg.content;
- _audioPlayer.timeLen = [self.msg.timeLen intValue];
- _audioPlayer.isLeft = !self.msg.isMySend;
- _audioPlayer.frame = self.bubbleBg.bounds;
- if(self.msg.isMySend)
- _audioPlayer.timeLenView.textColor = [UIColor darkGrayColor];
- else
- _audioPlayer.timeLenView.textColor = [UIColor grayColor];
- if(!self.msg.isMySend)
- [self drawIsRead];
- }
- //语音红点
- -(void)drawIsRead{
- if (self.msg.isMySend) {
- return;
- }
- if([self.msg.isRead boolValue]){
- self.readImage.hidden = YES;
- }
- else{
- if(self.readImage==nil){
- self.readImage=[[UIButton alloc]init];
- [self.contentView addSubview:self.readImage];
- // [self.readImage release];
- }
- [self.readImage setImage:[UIImage imageNamed:@"new_tips"] forState:UIControlStateNormal];
- self.readImage.hidden = NO;
-
- if (self.msg.isGroup && self.msg.showRead) {
- self.readImage.frame = CGRectMake(self.bubbleBg.frame.origin.x+self.bubbleBg.frame.size.width+13, self.bubbleBg.frame.origin.y+22, 8, 8);
- }
- else if ([self.msg.isReadDel boolValue]) {
- self.readImage.frame = CGRectMake(self.bubbleBg.frame.origin.x+self.bubbleBg.frame.size.width+9, self.bubbleBg.frame.origin.y+3, 8, 8);
- }
- else {
- self.readImage.frame = CGRectMake(self.bubbleBg.frame.origin.x+self.bubbleBg.frame.size.width+7, self.bubbleBg.frame.origin.y+13, 8, 8);
- self.readImage.center = CGPointMake(self.readImage.center.x, self.bubbleBg.center.y);
- }
- }
- }
- -(void)didAudioPlayBegin{
- if(!self.msg.isMySend){
- self.msg.isRead = [NSNumber numberWithInt:1];
- [self drawIsRead];
- }
- }
- -(void)didAudioPlayEnd{
- [g_notify postNotificationName:kCellVoiceStartNotifaction object:self];
-
- }
- #pragma mark----开始计时
- - (void)timeGo:(NSString *)fileName{
- //防止删除操作重复调用
- if (_oldFileName) {
- if ([_oldFileName isEqualToString:fileName]) {
- return;
- }else{
- self.oldFileName = fileName;
- }
- }else{
- self.oldFileName = fileName;
-
- }
-
- //阅后即焚图片通知
- [g_notify postNotificationName:kCellReadDelNotification object:self.msg];
-
- //if (self.msg.isReadDel) {
- //计时删除
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)([self.msg.timeLen intValue] * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- if(self.delegate != nil && [self.delegate respondsToSelector:self.readDele]){
- [self deleteMsg];
-
-
- }
- });
- //}
- }
- #pragma mark----阅后即焚
- - (void)deleteMsg{
- //播放删除动画
- // NSString *path = [[NSBundle mainBundle]pathForResource:@"delete.gif" ofType:nil];
- // NSData *gifData = [NSData dataWithContentsOfFile:path];
- // UIWebView *webView = [[UIWebView alloc]initWithFrame:CGRectMake(self.bubbleBg.frame.origin.x, self.bubbleBg.frame.origin.y, self.frame.size.width/3, 37)];
- //
- // webView.scalesPageToFit = YES;
- // [webView loadData:gifData MIMEType:@"image/gif" textEncodingName:nil baseURL:nil];
- // webView.backgroundColor = [UIColor clearColor];
- // webView.opaque = NO;
- // self.bubbleBg.hidden = YES;
- // [self addSubview:webView];
- [UIView animateWithDuration:2 animations:^{
- self.bubbleBg.alpha = 0;
- self.burnImage.alpha = 0;
- }];//渐变隐藏
- //动画结束后删除UI
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- //[webView removeFromSuperview];
- //self.bubbleBg.hidden = NO;
- [self.delegate performSelectorOnMainThread:self.readDele withObject:self.msg waitUntilDone:NO];
- self.bubbleBg.alpha = 1;
- self.burnImage.alpha = 1;
- self.oldFileName = nil;
- });
- }
- + (float)getChatCellHeight:(JXMessageObject *)msg {
-
- if ([msg.chatMsgHeight floatValue] > 1) {
- return [msg.chatMsgHeight floatValue];
- }
-
- float n = 0;
- if (msg.isGroup && !msg.isMySend) {
- if (msg.isShowTime) {
- n = 65 + 40;
- }else {
- n = 65;
- }
- n += GROUP_CHAT_INSET;
- }else {
- if (msg.isShowTime) {
- n = 55 + 40;
- }else {
- n = 55;
- }
- }
-
- msg.chatMsgHeight = [NSString stringWithFormat:@"%f",n];
- if (!msg.isNotUpdateHeight) {
- [msg updateChatMsgHeight];
- }
- return n+10;
- }
- @end
|