RQVideoDetailSubPageCell.m 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. //
  2. // RQVideoDetailSubPageCell.m
  3. // JSJP
  4. //
  5. // Created by 张嵘 on 2021/11/5.
  6. //
  7. #import "RQVideoDetailSubPageCell.h"
  8. @interface RQVideoDetailSubPageCell ()
  9. @property (nonatomic, readwrite, strong) RQVideoDetailSubPageItemViewModel *viewModel;
  10. @property (weak, nonatomic) IBOutlet UIView *topLine;
  11. @property (weak, nonatomic) IBOutlet UILabel *indexLabel;
  12. @property (weak, nonatomic) IBOutlet UIView *bottomLine;
  13. @property (weak, nonatomic) IBOutlet UIButton *stateBtn;
  14. @property (weak, nonatomic) IBOutlet UILabel *titleLabel;
  15. @property (weak, nonatomic) IBOutlet UILabel *subTitleLabel;
  16. @property (weak, nonatomic) IBOutlet UIImageView *videoImageView;
  17. @property (weak, nonatomic) IBOutlet UIButton *isLearningBtn;
  18. @property (weak, nonatomic) IBOutlet QMUIButton *tryLookBtn;
  19. @property (weak, nonatomic) IBOutlet UIButton *vipBtn;
  20. @property (nonatomic, readwrite, strong) RQVideoPermissionStateModel *videoPermissionStateModel;
  21. @end
  22. @implementation RQVideoDetailSubPageCell
  23. #pragma mark - PublicMethods
  24. + (instancetype)cellWithTableView:(UITableView *)tableView {
  25. static NSString *ID = @"RQVideoDetailSubPageCell";
  26. RQVideoDetailSubPageCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
  27. if (!cell) {
  28. cell = [self rq_viewFromXib];
  29. cell.selectionStyle = UITableViewCellSelectionStyleNone;
  30. [cell.stateBtn borderColor:RQ_MAIN_COLOR width:1 cornorRadius:8];
  31. [cell.stateBtn setTitleColor:RQ_MAIN_COLOR forState:UIControlStateNormal];
  32. cell.indexLabel.textColor = RQ_MAIN_COLOR;
  33. }
  34. return cell;
  35. }
  36. - (void)bindViewModel:(RQVideoDetailSubPageItemViewModel *)viewModel {
  37. @weakify(self)
  38. _viewModel = viewModel;
  39. _indexLabel.text = [NSString stringWithFormat:@"%ld",viewModel.videosItem.index];
  40. _topLine.hidden = viewModel.videosItem.index == 1;
  41. _bottomLine.hidden = viewModel.videosItem.totalNum == viewModel.videosItem.index;
  42. _titleLabel.text = viewModel.videosItem.title;
  43. _subTitleLabel.text = viewModel.videosItem.videoDescribe? : @"";
  44. [_videoImageView yy_setImageWithURL:[NSURL URLWithString:viewModel.videosItem.coverFileUrl] placeholder:RQWebVideoImagePlaceholder()];
  45. // NSLog(@"permission=====%zd",viewModel.videosItem.permission);
  46. [[RACObserve(viewModel.videosItem, isPlaying) takeUntil:self.rac_prepareForReuseSignal] subscribeNext:^(id _Nullable x) {
  47. @strongify(self)
  48. if (viewModel.videosItem.isPlaying) {
  49. self.isLearningBtn.hidden = NO;
  50. self.titleLabel.textColor = RQ_MAIN_COLOR;
  51. self.subTitleLabel.textColor = RQ_MAIN_COLOR;
  52. } else {
  53. self.isLearningBtn.hidden = YES;
  54. self.titleLabel.textColor = RQ_MAIN_TEXT_COLOR_1;
  55. self.subTitleLabel.textColor = RQ_MAIN_TEXT_COLOR_3;
  56. }
  57. }];
  58. // if (!RQ_COMMON_MANAGER.APP_SWITCH) {
  59. [[RACSignal combineLatest:@[RACObserve(RQ_VIP_Module, isSubject2Vip), RACObserve(RQ_VIP_Module, isSubject3Vip)] reduce:^id (NSNumber *isSubjectTwoVip, NSNumber *isSubjectThreeVip) {
  60. @strongify(self)
  61. if ((viewModel.videosItem.subject == 1 && RQ_VIP_Module.isSubject2Vip) || (viewModel.videosItem.subject == 2 && RQ_VIP_Module.isSubject3Vip)) {
  62. self.videoPermissionStateModel.tryLookShow = NO;
  63. self.videoPermissionStateModel.vipShow = NO;
  64. } else {
  65. self.videoPermissionStateModel.tryLookShow = (viewModel.videosItem.permission == 1);
  66. self.videoPermissionStateModel.vipShow = (viewModel.videosItem.permission == 2);
  67. }
  68. return self.videoPermissionStateModel;
  69. }] subscribeNext:^(RQVideoPermissionStateModel *videoPermissionStateModel) {
  70. @strongify(self)
  71. self.tryLookBtn.hidden = !videoPermissionStateModel.tryLookShow;
  72. self.vipBtn.hidden = !videoPermissionStateModel.vipShow;
  73. }];
  74. // }
  75. // [[[RACObserve(viewModel.videosItem.placeVideoListModel, permission) deliverOnMainThread] takeUntil:self.rac_prepareForReuseSignal] subscribeNext:^(id _Nullable x) {
  76. // @strongify(self)
  77. // self.vipBtn.hidden = NO;
  78. // if ([viewModel.videosItem.placeVideoListModel.permission isEqualToString:@"0"]) {
  79. // self.vipBtn.hidden = YES;
  80. // self.tryLookBtn.hidden = YES;
  81. // } else if ([viewModel.videosItem.placeVideoListModel.permission isEqualToString:@"1"]) {
  82. // self.vipBtn.hidden = YES;
  83. // self.tryLookBtn.hidden = NO;
  84. // } else if ([viewModel.videosItem.placeVideoListModel.permission isEqualToString:@"2"]) {
  85. // self.vipBtn.hidden = NO;
  86. // self.tryLookBtn.hidden = YES;
  87. // } else {
  88. // self.vipBtn.hidden = YES;
  89. // self.tryLookBtn.hidden = YES;
  90. // }
  91. // if (viewModel.videosItem.placeVideoListModel.placeListModel.isCheckVip) {
  92. // self.vipBtn.hidden = YES;
  93. // self.tryLookBtn.hidden = YES;
  94. // }
  95. // }];
  96. [[[RACObserve(viewModel.videosItem, permission) deliverOnMainThread] takeUntil:self.rac_prepareForReuseSignal] subscribeNext:^(id _Nullable x) {
  97. @strongify(self)
  98. self.vipBtn.hidden = NO;
  99. if (viewModel.videosItem.permission == 0) {
  100. self.vipBtn.hidden = YES;
  101. self.tryLookBtn.hidden = YES;
  102. } else if (viewModel.videosItem.permission == 1) {
  103. self.vipBtn.hidden = YES;
  104. self.tryLookBtn.hidden = NO;
  105. } else if (viewModel.videosItem.permission == 2) {
  106. self.vipBtn.hidden = NO;
  107. self.tryLookBtn.hidden = YES;
  108. } else {
  109. self.vipBtn.hidden = YES;
  110. self.tryLookBtn.hidden = YES;
  111. }
  112. if (viewModel.videosItem.placeVideoListModel.placeListModel.isCheckVip) {
  113. self.vipBtn.hidden = YES;
  114. self.tryLookBtn.hidden = YES;
  115. }
  116. }];
  117. }
  118. #pragma mark - SystemMethods
  119. - (void)awakeFromNib {
  120. [super awakeFromNib];
  121. _tryLookBtn.spacingBetweenImageAndTitle = 3;
  122. [_tryLookBtn setBackgroundColor:[UIColor rq_colorGradientChangeWithFrame:_tryLookBtn.frame startPoint:CGPointMake(0, 0.5) endPoint:CGPointMake(1, 0.5) startColor:RQColorFromHexString(@"#FF4C52") endColor:RQColorFromHexString(@"#FC8269")]];
  123. }
  124. - (void)setSelected:(BOOL)selected animated:(BOOL)animated {
  125. [super setSelected:selected animated:animated];
  126. // Configure the view for the selected state
  127. }
  128. #pragma mark - LazyLoad
  129. - (RQVideoPermissionStateModel *)videoPermissionStateModel {
  130. if (!_videoPermissionStateModel) {
  131. _videoPermissionStateModel = [[RQVideoPermissionStateModel alloc] init];
  132. }
  133. return _videoPermissionStateModel;
  134. }
  135. @end