YOUPAIZYChatRoomMoreWindow.m 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313
  1. //
  2. // YOUPAIZYChatRoomMoreWindow.m
  3. // VQU
  4. //
  5. // Created by CY on 2021/11/2.
  6. // Copyright © 2021 MS. All rights reserved.
  7. //
  8. #import "YOUPAIZYChatRoomMoreWindow.h"
  9. #define kRowMarge 12.0f
  10. #define kRowHeight 60.0f
  11. #define KColCount 4
  12. @interface YOUPAIZYChatRoomMoreWindow ()
  13. @property (nonatomic, strong) NSMutableArray <NSMutableDictionary *>*youpaipdataSource;
  14. @property (nonatomic, strong) NSMutableArray <NSMutableDictionary *>*youpaipplayTypes; // 玩法类型
  15. @property (nonatomic, strong) YOUPAILZChatRoomModel *youpaipchatroomModel;
  16. @property (nonatomic,strong) YOUPAILZChatRoomMoreModel *youpaipmoreModel;
  17. @end
  18. @implementation YOUPAIZYChatRoomMoreWindow
  19. - (instancetype)initWithModel:(YOUPAILZChatRoomModel *)youpaipchatroomModel youpaipmoreModel:(nonnull YOUPAILZChatRoomMoreModel *)youpaipmoreModel{
  20. if (self = [super init]) {
  21. self.youpaipmoreModel = youpaipmoreModel;
  22. self.youpaipchatroomModel = youpaipchatroomModel;
  23. [self youpaifinitValue];
  24. }
  25. return self;
  26. }
  27. - (void)youpaifinitValue{
  28. self.youpaipdataSource = [NSMutableArray array];
  29. if (self.youpaipchatroomModel.youpaipuserInfo.youpaifroleType != LZUserRoleTypeWithNormal) {
  30. [self.youpaipdataSource addObject:@{
  31. @"title":@"礼物动画",@"selTitle":@"礼物动画",@"image":[UIImage imageNamed:@"vqu_images_chatroom_closeanimation"],@"selImage":[UIImage imageNamed:@"vqu_images_chatroom_openanimation"],@"type":@(LZChatRoomOperationTypeWithAnimation),@"selected":@(self.youpaipmoreModel.youpaipisCloseAnimation)
  32. }.mutableCopy];
  33. [self.youpaipdataSource addObject:@{
  34. @"title":@"自由麦序",@"selTitle":@"关闭自由麦序",@"image":[UIImage imageNamed:@"vqu_images_chatroom_freeseat"],@"selImage":[UIImage imageNamed:@"vqu_images_chatroom_closefreeseat"],@"type":@(LZChatRoomOperationTypeWithFreeSeat),@"selected":@(self.youpaipmoreModel.youpaipisSeatFree)
  35. }.mutableCopy];
  36. [self.youpaipdataSource addObject:@{
  37. @"title":@"清空公屏",@"selTitle":@"清空公屏",@"image":[UIImage imageNamed:@"vqu_images_chatroom_emptychat"],@"selImage":[UIImage imageNamed:@"vqu_images_chatroom_emptychat"],@"type":@(LZChatRoomOperationTypeWithEmptyChat),@"selected":@(NO)
  38. }.mutableCopy];
  39. [self.youpaipdataSource addObject:@{
  40. @"title":@"关闭公屏",@"selTitle":@"开启公屏",@"image":[UIImage imageNamed:@"vqu_images_chatroom_closechat"],@"selImage":[UIImage imageNamed:@"vqu_images_chatroom_openchat"],@"type":@(LZChatRoomOperationTypeWithCloseChat),@"selected":@(self.youpaipmoreModel.youpaipisCloseChatMessage)
  41. }.mutableCopy];
  42. [self.youpaipdataSource addObject:@{
  43. @"title":@"房间上锁",@"selTitle":@"房间解锁",@"image":[UIImage imageNamed:@"vqu_images_chatroom_roomlock"],@"selImage":[UIImage imageNamed:@"vqu_images_chatroom_roomunlock"],@"type":@(LZChatRoomOperationTypeWithRoomLock),@"selected":@(self.youpaipmoreModel.youpaipisLock)
  44. }.mutableCopy];
  45. [self.youpaipdataSource addObject:@{
  46. @"title":@"房间资料",@"selTitle":@"房间资料",@"image":[UIImage imageNamed:@"vqu_images_chatroom_roominfo"],@"selImage":[UIImage imageNamed:@"vqu_images_chatroom_roominfo"],@"type":@(LZChatRoomOperationTypeWithRoomInfo),@"selected":@(NO)
  47. }.mutableCopy];
  48. [self.youpaipdataSource addObject:@{
  49. @"title":@"房间背景",@"selTitle":@"房间背景",@"image":[UIImage imageNamed:@"vqu_images_chatroom_bg_image"],@"selImage":[UIImage imageNamed:@"vqu_images_chatroom_bg_image"],@"type":@(LZChatRoomOperationTypeWithBackgoundImage),@"selected":@(NO)
  50. }.mutableCopy];
  51. [self.youpaipdataSource addObject:@{
  52. @"title":@"禁言管理",@"selTitle":@"禁言管理",@"image":[UIImage imageNamed:@"vqu_images_chatroom_disable_send_message_manage"],@"selImage":[UIImage imageNamed:@"vqu_images_chatroom_disable_send_message_manage"],@"type":@(LZChatRoomOperationTypeWithDisableMessage),@"selected":@(NO)
  53. }.mutableCopy];
  54. [self.youpaipdataSource addObject:@{
  55. @"title":@"房间黑名单",@"selTitle":@"房间黑名单",@"image":[UIImage imageNamed:@"vqu_images_chatroom_roomblocklist"],@"selImage":[UIImage imageNamed:@"vqu_images_chatroom_roomblocklist"],@"type":@(LZChatRoomOperationTypeWithRoomBlockList),@"selected":@(NO)
  56. }.mutableCopy];
  57. [self.youpaipdataSource addObject:@{
  58. @"title":@"静音",@"selTitle":@"静音",@"image":[UIImage imageNamed:@"vqu_images_chatroom_openmute"],@"selImage":[UIImage imageNamed:@"vqu_images_chatroom_closemute"],@"type":@(LZChatRoomOperationTypeWithMute),@"selected":@(self.youpaipmoreModel.youpaipisRemoteAudio)
  59. }.mutableCopy];
  60. if([self.youpaipchatroomModel.youpaiphostSeat.youpaipuserInfo.youpaipid isEqual:self.youpaipchatroomModel.youpaipuserInfo.youpaipid]){
  61. [self.youpaipdataSource addObject:@{
  62. @"title":@"音乐",@"selTitle":@"音乐",@"image":[UIImage imageNamed:@"vqu_images_chatroom_bg_music"],@"selImage":[UIImage imageNamed:@"vqu_images_chatroom_bg_music"],@"type":@(LZChatRoomOperationTypeWithBgMusic),@"selected":@(NO)
  63. }.mutableCopy];
  64. [self youpaifinitPlayTypes];
  65. }
  66. }else{
  67. [self.youpaipdataSource addObject:@{
  68. @"title":@"礼物动画",@"selTitle":@"礼物动画",@"image":[UIImage imageNamed:@"vqu_images_chatroom_closeanimation"],@"selImage":[UIImage imageNamed:@"vqu_images_chatroom_openanimation"],@"type":@(LZChatRoomOperationTypeWithAnimation),@"selected":@(self.youpaipmoreModel.youpaipisCloseAnimation)
  69. }.mutableCopy];
  70. [self.youpaipdataSource addObject:@{
  71. @"title":@"举报",@"selTitle":@"举报",@"image":[UIImage imageNamed:@"vqu_images_chatroom_report"],@"selImage":[UIImage imageNamed:@"vqu_images_chatroom_report"],@"type":@(LZChatRoomOperationTypeWithReport),@"selected":@(NO)
  72. }.mutableCopy];
  73. [self.youpaipdataSource addObject:@{
  74. @"title":@"静音",@"selTitle":@"静音",@"image":[UIImage imageNamed:@"vqu_images_chatroom_openmute"],@"selImage":[UIImage imageNamed:@"vqu_images_chatroom_closemute"],@"type":@(LZChatRoomOperationTypeWithMute),@"selected":@(self.youpaipmoreModel.youpaipisRemoteAudio)
  75. }.mutableCopy];
  76. }
  77. }
  78. - (void)youpaifinitPlayTypes{
  79. self.youpaipplayTypes = [NSMutableArray array];
  80. [self.youpaipplayTypes addObject:@{
  81. @"title":@"开启心动值",@"selTitle":@"关闭心动值",@"image":[UIImage imageNamed:@"vqu_image_chatroom_cardiac_open"],@"selImage":[UIImage imageNamed:@"vqu_image_chatroom_cardiac_close"],@"type":@(LZChatRoomOperationTypeWithCardiac),@"selected":@(self.youpaipmoreModel.youpaipisOpenCardiac)
  82. }.mutableCopy];
  83. if (self.youpaipchatroomModel.youpaipplayType == LZChatRoomPlayTypeWithCardiac) {
  84. [self.youpaipplayTypes addObject:@{
  85. @"title":@"清空心动值",@"selTitle":@"清空心动值",@"image":[UIImage imageNamed:@"vqu_image_chatroom_clear_cardiac"],@"selImage":[UIImage imageNamed:@"vqu_image_chatroom_clear_cardiac"],@"type":@(LZChatRoomOperationTypeWithClearCardiac),@"selected":@(NO)
  86. }.mutableCopy];
  87. }
  88. [self.youpaipplayTypes addObject:@{
  89. @"title":@"开启相亲",@"selTitle":@"关闭相亲",@"image":[UIImage imageNamed:@"vqu_image_chatroom_blinddata_open"],@"selImage":[UIImage imageNamed:@"vqu_image_chatroom_blinddata_close"],@"type":@(LZChatRoomOperationTypeWithBlindDate),@"selected":@(self.youpaipmoreModel.youpaipisOpenBlindDate)
  90. }.mutableCopy];
  91. }
  92. - (void)viewDidLoad {
  93. [super viewDidLoad];
  94. self.baseView.hidden = YES;
  95. [self youpaifinitUI];
  96. }
  97. - (void)youpaifinitUI{
  98. UIView *bgV = [[UIView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, self.youpaiftotalHeight)];
  99. bgV.backgroundColor = HexColorFromRGB(0x2A2935);
  100. [self.view addSubview:bgV];
  101. [bgV mas_makeConstraints:^(MASConstraintMaker *make) {
  102. make.left.right.bottom.offset(0.0f);
  103. make.height.offset(self.youpaiftotalHeight);
  104. }];
  105. [LCTools clipCorner:UIRectCornerTopLeft|UIRectCornerTopRight View:bgV size:CGSizeMake(20.0f, 20.0f)];
  106. CGFloat curHeight = 0.0f;
  107. if (self.youpaipplayTypes.count != 0) {
  108. UIView *headerV = [[UIView alloc] init];
  109. [bgV addSubview:headerV];
  110. [headerV mas_makeConstraints:^(MASConstraintMaker *make) {
  111. make.left.right.top.offset(0.0f);
  112. make.height.offset(49.0f);
  113. }];
  114. UILabel *titleL = [[UILabel alloc] init];
  115. titleL.text = @"房间玩法";
  116. titleL.textColor = [UIColor whiteColor];
  117. titleL.font = LCBoldFont(17.0f);
  118. [headerV addSubview:titleL];
  119. [titleL mas_makeConstraints:^(MASConstraintMaker *make) {
  120. make.left.offset(14.0f);
  121. make.centerY.equalTo(headerV);
  122. }];
  123. UIView *playTpyeBgV = [[UIView alloc] init];
  124. [bgV addSubview:playTpyeBgV];
  125. [playTpyeBgV mas_makeConstraints:^(MASConstraintMaker *make) {
  126. make.top.equalTo(headerV.mas_bottom).offset(0.0f);
  127. make.left.right.offset(0.0f);
  128. make.height.offset(self.youpaifplayTypeHeight);
  129. }];
  130. NSInteger colCount = KColCount;
  131. for (NSInteger i = 0; i < self.youpaipplayTypes.count; i ++) {
  132. NSInteger col = i % colCount;
  133. NSInteger row = i / colCount;
  134. CGFloat width = KScreenWidth / colCount;
  135. NSDictionary *dict = self.youpaipplayTypes[i];
  136. UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
  137. btn.frame = CGRectMake(col * width, row * kRowHeight + row * kRowMarge, width, kRowHeight);
  138. btn.tag = i;
  139. [btn addTarget:self action:@selector(youpaifplayTypeBtnClick:) forControlEvents:UIControlEventTouchUpInside];
  140. [playTpyeBgV addSubview:btn];
  141. UIImageView *imageV = [[UIImageView alloc] initWithFrame:CGRectMake((width - 42.0f) / 2.0f, 0, 42.0f, 42.0f)];
  142. imageV.tag = 8888;
  143. imageV.image = dict[@"image"];
  144. [btn addSubview:imageV];
  145. UILabel *lab = [[UILabel alloc] initWithFrame:CGRectMake(0.0f, imageV.mj_h + 5.0f, btn.mj_w, btn.mj_h - (imageV.mj_h + 5.0f))];
  146. lab.tag = 9999;
  147. lab.font = LCFont(11.0f);
  148. lab.textColor = HexColorFromRGB(0xAAAAAA);
  149. lab.textAlignment = NSTextAlignmentCenter;
  150. lab.text = dict[@"title"];
  151. [btn addSubview:lab];
  152. if ([dict[@"selected"] boolValue]) {
  153. imageV.image = dict[@"selImage"];
  154. lab.text = dict[@"selTitle"];
  155. btn.selected = [dict[@"selected"] boolValue];
  156. }
  157. }
  158. curHeight += 49.0f + self.youpaifplayTypeHeight;
  159. }
  160. UIView *headerV = [[UIView alloc] init];
  161. [bgV addSubview:headerV];
  162. [headerV mas_makeConstraints:^(MASConstraintMaker *make) {
  163. make.left.right.offset(0.0f);
  164. make.top.offset(curHeight);
  165. make.height.offset(49.0f);
  166. }];
  167. UILabel *titleL = [[UILabel alloc] init];
  168. titleL.text = @"房间设置";
  169. titleL.textColor = [UIColor whiteColor];
  170. titleL.font = LCBoldFont(17.0f);
  171. [headerV addSubview:titleL];
  172. [titleL mas_makeConstraints:^(MASConstraintMaker *make) {
  173. make.left.offset(14.0f);
  174. make.centerY.equalTo(headerV);
  175. }];
  176. UIView *contentBgV = [[UIView alloc] init];
  177. [bgV addSubview:contentBgV];
  178. [contentBgV mas_makeConstraints:^(MASConstraintMaker *make) {
  179. make.top.equalTo(headerV.mas_bottom).offset(0.0f);
  180. make.left.right.offset(0.0f);
  181. make.height.offset(self.youpaifcontentHeight);
  182. }];
  183. NSInteger colCount = KColCount;
  184. for (NSInteger i = 0; i < self.youpaipdataSource.count; i ++) {
  185. NSInteger col = i % colCount;
  186. NSInteger row = i / colCount;
  187. CGFloat width = KScreenWidth / colCount;
  188. NSDictionary *dict = self.youpaipdataSource[i];
  189. UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
  190. btn.frame = CGRectMake(col * width, row * kRowHeight + row * kRowMarge, width, kRowHeight);
  191. btn.tag = i;
  192. [btn addTarget:self action:@selector(youpaifbtnClick:) forControlEvents:UIControlEventTouchUpInside];
  193. [contentBgV addSubview:btn];
  194. UIImageView *imageV = [[UIImageView alloc] initWithFrame:CGRectMake((width - 42.0f) / 2.0f, 0, 42.0f, 42.0f)];
  195. imageV.tag = 8888;
  196. imageV.image = dict[@"image"];
  197. [btn addSubview:imageV];
  198. UILabel *lab = [[UILabel alloc] initWithFrame:CGRectMake(0.0f, imageV.mj_h + 5.0f, btn.mj_w, btn.mj_h - (imageV.mj_h + 5.0f))];
  199. lab.tag = 9999;
  200. lab.font = LCFont(11.0f);
  201. lab.textColor = HexColorFromRGB(0xAAAAAA);
  202. lab.textAlignment = NSTextAlignmentCenter;
  203. lab.text = dict[@"title"];
  204. [btn addSubview:lab];
  205. if ([dict[@"selected"] boolValue]) {
  206. imageV.image = dict[@"selImage"];
  207. lab.text = dict[@"selTitle"];
  208. btn.selected = [dict[@"selected"] boolValue];
  209. }
  210. }
  211. }
  212. - (void)youpaifbtnClick:(UIButton *)sender{
  213. sender.selected = !sender.selected;
  214. NSDictionary *dict = self.youpaipdataSource[sender.tag];
  215. UIImageView *imageV = [sender viewWithTag:8888];
  216. UILabel *lab = [sender viewWithTag:9999];
  217. if (sender.selected) {
  218. imageV.image = dict[@"selImage"];
  219. lab.text = dict[@"selTitle"];
  220. }else{
  221. imageV.image = dict[@"image"];
  222. lab.text = dict[@"title"];
  223. }
  224. [self dismissViewControllerAnimated:YES completion:^{
  225. if (self.youpaipitemClickBlock != nil) {
  226. self.youpaipitemClickBlock([dict[@"type"] integerValue], sender.selected);
  227. }
  228. }];
  229. }
  230. - (void)youpaifplayTypeBtnClick:(UIButton *)sender{
  231. sender.selected = !sender.selected;
  232. NSDictionary *dict = self.youpaipplayTypes[sender.tag];
  233. UIImageView *imageV = [sender viewWithTag:8888];
  234. UILabel *lab = [sender viewWithTag:9999];
  235. if (sender.selected) {
  236. imageV.image = dict[@"selImage"];
  237. lab.text = dict[@"selTitle"];
  238. }else{
  239. imageV.image = dict[@"image"];
  240. lab.text = dict[@"title"];
  241. }
  242. [self dismissViewControllerAnimated:YES completion:^{
  243. if (self.youpaipitemClickBlock != nil) {
  244. self.youpaipitemClickBlock([dict[@"type"] integerValue], sender.selected);
  245. }
  246. }];
  247. }
  248. - (CGFloat)youpaiftotalHeight{
  249. CGFloat totalHeight = 0.0f;
  250. if (self.youpaipplayTypes.count != 0) {
  251. totalHeight += self.youpaifplayTypeHeight + 49.0f;
  252. }
  253. totalHeight += self.youpaifcontentHeight + 49.0f;
  254. totalHeight += SafeHeight;
  255. return totalHeight;
  256. }
  257. - (CGFloat)youpaifcontentHeight{
  258. NSInteger col = KColCount;
  259. NSInteger row = (self.youpaipdataSource.count + (col - 1)) / col;
  260. return row * (kRowMarge + kRowHeight);
  261. }
  262. - (CGFloat)youpaifplayTypeHeight{
  263. NSInteger col = KColCount;
  264. NSInteger row = (self.youpaipplayTypes.count + (col - 1)) / col;
  265. return row * (kRowMarge + kRowHeight);
  266. }
  267. - (void)youpaifreloadData{
  268. for (UIView *view in self.view.subviews) {
  269. [view removeFromSuperview];
  270. }
  271. [self youpaifinitValue];
  272. [self youpaifinitUI];
  273. }
  274. @end