// // SubCellFromAnswerCell.m // ThePaperBase // // Created by zhousan on 15/7/31. // Copyright (c) 2015年 scar1900. All rights reserved. // #import "SubCellFromAnswerCell.h" #import "commentTableController.h" #import "askTableController.h" @interface SubCellFromAnswerCell () @end @implementation SubCellFromAnswerCell @synthesize commentBO; @synthesize cellHeight; #pragma mark - menu tap handler - (void)menuTap:(UIButton*)btn { [self becomeFirstResponder]; UIMenuItem *commentBack = [[UIMenuItem alloc] initWithTitle:@"回复"action:@selector(commentBack:)]; UIMenuItem *copy = [[UIMenuItem alloc] initWithTitle:@"复制"action:@selector(copyText:)]; UIMenuItem *praise = [[UIMenuItem alloc] initWithTitle:@"点赞"action:@selector(praise:)]; UIMenuItem *delete = [[UIMenuItem alloc] initWithTitle:@"删除"action:@selector(deleteComment:)]; UIMenuController *menu = [UIMenuController sharedMenuController]; if (menu.menuVisible) { [menu setMenuVisible:NO animated:YES]; return; } NSDictionary *userInfo = self.commentBO.userInfo; userBO *user = setJsonDicToDataModel(userInfo, [userBO class]); // NSLog(@"%lld %lld",[user.userId longLongValue],[[TPUserDefault instance].userBO.userId longLongValue]); if ([TPUserDefault instance].userBO && [user.userId longLongValue] == [[TPUserDefault instance].userBO.userId longLongValue]) { [menu setMenuItems:[NSArray arrayWithObjects:delete,commentBack, copy, praise, nil]]; }else { [menu setMenuItems:[NSArray arrayWithObjects:commentBack, copy, praise, nil]]; } [menu setTargetRect:self.aswerContentLabel.frame inView:self]; [menu setMenuVisible:YES animated:YES]; } - (BOOL)canBecomeFirstResponder{ [super canBecomeFirstResponder]; return YES; } #pragma mark - 回复 - (void)commentBack:(id)sender { UIMenuController *menu = [UIMenuController sharedMenuController]; if (menu.menuVisible) { [menu setMenuVisible:NO animated:YES]; } if ([self.delegate respondsToSelector:@selector(gotoCommentWith:)]) { [self.delegate gotoCommentWith:self.commentBO]; } } - (BOOL)canPerformAction:(SEL)action withSender:(id)sender { [super canPerformAction:action withSender:sender]; if ( action == @selector(commentBack:) || action == @selector(copyText:) || action == @selector(praise:) || action == @selector(deleteComment:)) { return YES; } else { return NO; } } - (void)copyText:(id)sender { UIPasteboard *pasteboard = [UIPasteboard generalPasteboard]; pasteboard.string = self.aswerContentLabel.text; ShowMessage(@"复制成功", YES); } - (void)praise:(id)sender { if (self.OkButton.selected) { return; } [self.OkButton setSelected:YES animated:YES]; NSDictionary *dic = @{@"commentId":self.commentBO.commentId}; __weak typeof(self) Self = self; [Remote doJsonActionWithBlock:2000 requestUrl:commentPraiseURL parameter:dic withWaitCursor:NO completion:^(BOOL success, NSString *message, id responseData) { if (success) { NSString *praseNumStr = responseData[@"praiseTimes"]; Self.OkButton.text = praseNumStr; Self.commentBO.isPraised = @"1"; Self.commentBO.praiseTimes = praseNumStr; if ([Self.delegate respondsToSelector:@selector(hasPraisedAnswer:withCommentBO:)]) { [Self.delegate hasPraisedAnswer:Self.indexPath withCommentBO:Self.commentBO]; } TPLOG(@"点赞成功"); }else { TPLOG(@"点赞失败"); } }]; } - (void)setCommentBO:(commentObjectVO *)data { commentBO = data; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ userBO *user = setJsonDicToDataModel(data.userInfo, [userBO class]); NSString *nameStr = user.sname?[NSString stringWithFormat:@"%@:",user.sname]:@""; CGFloat trueContentHeight= returnTextHeightWithRTLabel(data.content, rect_screen.size.width-20-20, appFont(13, NO),7); if (!data.isExpand || [data.isExpand intValue] == 0) { cellHeight = trueContentHeight>getLineHeightWithCountAndFontWidth(4, 10, TEXT_FOUR_LEVELSIZE)?getLineHeightWithCountAndFontWidth(4, 10, TEXT_FOUR_LEVELSIZE):trueContentHeight; }else { cellHeight = trueContentHeight; } NSString *praiseNum = data.praiseTimes; dispatch_async(dispatch_get_main_queue(), ^{ self.anserNameLabel.text = nameStr; self.aswerContentLabel.text = data.content; if (trueContentHeight > getLineHeightWithCountAndFontWidth(4, 10, TEXT_FOUR_LEVELSIZE)) { self.expandBtn.hidden = NO; }else self.expandBtn.hidden = YES; self.timeLabel.text = data.pubTime; if (!isBlankString(praiseNum)) { self.OkButton.text = praiseNum; } if (data.isPraised && [data.isPraised intValue] == 1) { [self.OkButton setSelected:YES]; }else { [self.OkButton setSelected:NO]; } [self reLayoutSubViews]; }); }); // self.anserNameLabel.text = data.userName?[NSString stringWithFormat:@"%@:",data.userName]:@""; self.aswerContentLabel.text = data?data.content:@""; self.OkButton.text = data.praiseTimes; if (data.quoteInfo && data.quoteInfo.allKeys.count>0) { NSDictionary *dic = data.quoteInfo; commentObjectVO *quoBO = setJsonDicToDataModel(dic, [commentObjectVO class]); self.triangleImg.hidden = NO; self.commentBack.hidden = NO; self.commentBack.userInteractionEnabled = YES; self.quoNameLable.hidden = NO; self.quoContentLabel.hidden = NO; self.quoNameLable.text = [NSString stringWithFormat:@"%@:",quoBO.userName]; self.quoContentLabel.text = quoBO.content; self.quoContentHeight = returnTextHeightWithRTLabel(quoBO.content, rect_screen.size.width-20-20-16, appFont(13, NO), 5); if (self.quoContentHeight <= getLineHeightWithCountAndFontWidth(2, 10, TEXT_FOUR_LEVELSIZE)) { self.commentBack.userInteractionEnabled = NO; } if (!data.isQuoExpand || [data.isQuoExpand intValue] == 0) { if (self.quoContentHeight > getLineHeightWithCountAndFontWidth(2, 10, TEXT_FOUR_LEVELSIZE)) { self.diandiandianLabel.hidden = NO; }else { self.diandiandianLabel.hidden = YES; } self.quoContentHeight = self.quoContentHeight>getLineHeightWithCountAndFontWidth(2, 10, TEXT_FOUR_LEVELSIZE)?getLineHeightWithCountAndFontWidth(2, 10, TEXT_FOUR_LEVELSIZE):self.quoContentHeight; } }else { self.commentBack.hidden = YES; self.quoNameLable.hidden = YES; self.quoContentLabel.hidden = YES; self.triangleImg.hidden = YES; self.commentBack.userInteractionEnabled = NO; } [self reLayoutSubViews]; } - (void)subLayoutSubViews { __weak typeof(self) weakSelf = self; [self.backView makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(weakSelf.left).offset(10); make.top.equalTo(weakSelf.top); make.right.mas_equalTo(weakSelf.right).offset(-10); make.bottom.equalTo(weakSelf.bottom); }]; [self.answerIcon makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(self.backView).offset(10); make.top.equalTo(self.backView).offset(7); make.width.mas_equalTo(0); make.height.mas_equalTo(0); }]; [self.verifyTag makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(self.backView.left).offset(28); make.top.equalTo(self.backView.top).offset(28); make.height.mas_equalTo(0); make.width.mas_equalTo(0); }]; // [self.anserNameLabel makeConstraints:^(MASConstraintMaker *make) { // make.top.mas_equalTo(9); // make.left.mas_equalTo(10); // make.width.mas_equalTo(rect_screen.size.width/2); // make.height.mas_equalTo(12); // }]; [self.timeImg makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(weakSelf.anserNameLabel); make.top.mas_equalTo(weakSelf.anserNameLabel.bottom).offset(6); make.height.mas_equalTo(10); make.width.mas_equalTo(10); }]; [self.timeLabel makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(weakSelf.timeImg.right).offset(5); make.top.mas_equalTo(weakSelf.anserNameLabel.bottom).offset(6); make.height.mas_equalTo(9); make.width.mas_equalTo(rect_screen.size.width/2); }]; [self.OkButton makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(weakSelf.backView.right).offset(-40); make.top.mas_equalTo(weakSelf.anserNameLabel.top).offset(-2); make.width.mas_equalTo(30); make.height.mas_equalTo(35); }]; [self.menuButton makeConstraints:^(MASConstraintMaker *make) { make.edges.mas_equalTo(weakSelf.aswerContentLabel); }]; [self.hostLabel makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(weakSelf.anserNameLabel.right).offset(5); make.top.mas_equalTo(weakSelf.anserNameLabel.top); make.width.mas_equalTo(27); make.height.mas_equalTo(12); }]; [self.aswerContentLabel makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(10); make.right.mas_equalTo(-10); make.top.mas_equalTo(weakSelf.timeLabel.bottom).offset(10); make.height.mas_equalTo(0); }]; [self.expandBtn makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(weakSelf.backView.left); make.right.mas_equalTo(weakSelf.backView.right); make.top.mas_equalTo(weakSelf.aswerContentLabel.bottom); make.height.mas_equalTo(25); }]; [self.commentBack makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(weakSelf.aswerContentLabel.left); make.top.mas_equalTo(weakSelf.aswerContentLabel.bottom).offset(15); make.right.mas_equalTo(weakSelf.aswerContentLabel.right); make.height.mas_equalTo(100); }]; [self.backView addSubview:self.triangleImg]; [self.triangleImg makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(self.commentBack.left).offset(55/2); make.width.equalTo(@7); make.top.equalTo(self.commentBack.top).offset(-6); make.height.equalTo(@7); }]; [self.quoNameLable makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(weakSelf.commentBack.left).offset(10); make.top.equalTo(weakSelf.commentBack.top).offset(10); make.width.equalTo(weakSelf.commentBack.width).offset(-15); make.height.mas_equalTo(25/2); }]; self.lineView.hidden = YES; } - (void)reLayoutSubViews { __weak typeof(self) weakSelf = self; CGFloat nameWidth = returnTextWidthWithRTLabel(self.anserNameLabel.text, 12, appFont(TEXT_SIX_LEVELSIZE, NO), 0); [self.anserNameLabel remakeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(weakSelf.backView.top).offset(9); make.left.equalTo(weakSelf.backView.left).offset(10); make.width.mas_equalTo(nameWidth+40); make.height.mas_equalTo(14); }]; CGFloat answerContentHeight = self.aswerContentLabel.optimumSize.height; CGFloat tempTop = 0; if (answerContentHeight > getLineHeightWithCountAndFontWidth(4, 10, TEXT_FOUR_LEVELSIZE)) { self.expandBtn.hidden = NO; tempTop = 24; }else self.expandBtn.hidden = YES; if (!self.commentBO.isExpand || [self.commentBO.isExpand intValue] == 0) { answerContentHeight = answerContentHeight>getLineHeightWithCountAndFontWidth(4, 10, TEXT_FOUR_LEVELSIZE)?getLineHeightWithCountAndFontWidth(4, 10, TEXT_FOUR_LEVELSIZE):answerContentHeight; [self.expandBtn setImage:Image(@"detailPage/expandArrow.png") forState:UIControlStateNormal]; }else { [self.expandBtn setImage:Image(@"detailPage/expandArrowUp.png") forState:UIControlStateNormal]; } [self.aswerContentLabel remakeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(weakSelf.backView.left).offset(10); make.right.mas_equalTo(weakSelf.backView.right).offset(-10); make.top.mas_equalTo(weakSelf.timeLabel.bottom).offset(10); make.height.mas_equalTo(answerContentHeight); }]; CGFloat backHeight = 0; CGFloat tmp = 0; if (!self.commentBO.isQuoExpand || [self.commentBO.isQuoExpand intValue] == 0) { CGFloat labeHeight = returnTextHeightWithRTLabel(self.quoContentLabel.text, rect_screen.size.width-20-20-16, appFont(13, NO), 5); if (labeHeight > getLineHeightWithCountAndFontWidth(2, 10, TEXT_FOUR_LEVELSIZE)) { tmp = 15; } backHeight = labeHeight > getLineHeightWithCountAndFontWidth(2, 10, TEXT_FOUR_LEVELSIZE)?(getLineHeightWithCountAndFontWidth(2, 10, TEXT_FOUR_LEVELSIZE)+tmp):labeHeight; backHeight += 35; }else { CGFloat labeHeight = returnTextHeightWithRTLabel(self.quoContentLabel.text, rect_screen.size.width-20-20-16, appFont(13, NO), 5); backHeight = labeHeight + 35; tmp = 0; self.diandiandianLabel.hidden = YES; } [self.commentBack remakeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(weakSelf.aswerContentLabel.left); make.top.mas_equalTo(weakSelf.aswerContentLabel.bottom).offset(10+tempTop); make.right.mas_equalTo(weakSelf.aswerContentLabel.right); make.height.mas_equalTo(backHeight); }]; [self.diandiandianLabel remakeConstraints:^(MASConstraintMaker *make) { make.bottom.equalTo(self.commentBack).offset(-5); make.centerX.equalTo(self.commentBack); make.size.mas_equalTo(CGSizeMake(100, 15)); }]; [self.quoContentLabel remakeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(weakSelf.commentBack.left).offset(8); make.top.mas_equalTo(weakSelf.quoNameLable.bottom).offset(5); make.right.mas_equalTo(weakSelf.commentBack.right).offset(-8); make.bottom.mas_equalTo(weakSelf.commentBack.bottom).offset(-3-tmp); }]; } - (void)deleteComment:(id)sender { UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"" message:@"是否确认删除此发言?" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"删除",nil]; [alert show]; } - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { if (buttonIndex != 0) { NSDictionary *dic = @{@"commentIds":self.commentBO.commentId,@"commentType":@"1"}; __weak typeof(self) Self = self; [Remote doJsonActionWithBlock:2001 requestUrl:removeCommentmspURL parameter:dic withWaitCursor:YES completion:^(BOOL success, NSString *message, id responseData) { if (success) { if ([Self.delegate isKindOfClass:[commentTableController class]]) { if ([Self.delegate respondsToSelector:@selector(deleteCommentSuccess)]) { [Self.delegate deleteCommentSuccess]; } }else { if ([Self.delegate respondsToSelector:@selector(deleteAnswerSuccess)]) { [Self.delegate deleteAnswerSuccess]; } } ShowMessage(@"删除成功",YES); }else { ShowMessage(@"删除失败", NO); } }]; } } @end