|
//
// 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
|