AlarmDetectViewController.mm 10.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266
  1. //
  2. // AlarmDetectViewController.m
  3. // FunSDKDemo
  4. //
  5. // Created by Levi on 2018/5/21.
  6. // Copyright © 2018年 Levi. All rights reserved.
  7. //
  8. #import "AlarmLevelViewController.h"
  9. #import "AlarmConfigTableViewCell.h"
  10. #import "AlarmDetectViewController.h"
  11. #import "AlarmManager.h"
  12. #import "AlarmDetectConfig.h" //移动侦测
  13. #import "Header.h"
  14. @interface AlarmDetectViewController ()<UITableViewDelegate,UITableViewDataSource,AlarmDetectConfigDelegate>
  15. //灵敏度Lab
  16. @property (nonatomic, strong) UILabel *alarmSensitivityLab;
  17. @property (nonatomic, strong) UITableView *alarmTableView;
  18. //表视图数据源
  19. @property (nonatomic, strong) NSMutableDictionary *dateSourceDic;
  20. @property (nonatomic, strong) AlarmDetectConfig *alarmDetectConfig;
  21. @property (nonatomic,strong) AlarmManager *alarmManager;
  22. @end
  23. @implementation AlarmDetectViewController{
  24. BOOL test;
  25. }
  26. - (UILabel *)alarmSensitivityLab {
  27. if (!_alarmSensitivityLab) {
  28. _alarmSensitivityLab = [UILabel new];
  29. _alarmSensitivityLab.textAlignment = NSTextAlignmentRight;
  30. }
  31. return _alarmSensitivityLab;
  32. }
  33. - (UITableView *)alarmTableView {
  34. if (!_alarmTableView) {
  35. _alarmTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, ScreenWidth, ScreenHeight) style:UITableViewStylePlain];
  36. _alarmTableView.delegate = self;
  37. _alarmTableView.dataSource = self;
  38. _alarmTableView.tableFooterView = [UIView new];
  39. [_alarmTableView registerClass:[AlarmConfigTableViewCell class] forCellReuseIdentifier:@"cell"];
  40. }
  41. return _alarmTableView;
  42. }
  43. - (void)viewDidLoad {
  44. [super viewDidLoad];
  45. //设置导航栏样式
  46. [self setNaviStyle];
  47. [self configSubView];
  48. //向SDK请求报警数据
  49. [self getDataSource];
  50. }
  51. - (void)viewWillDisappear:(BOOL)animated{
  52. //有加载状态、则取消加载
  53. if ([SVProgressHUD isVisible]){
  54. [SVProgressHUD dismiss];
  55. }
  56. }
  57. -(void)getDataSource{
  58. self.dateSourceDic = [@{
  59. @"0":@[@"Video_loss_alarm"],
  60. @"1":@[@"Alarm_function",@"Alarm_video",@"Alarm_picture",@"Send_to_phone",@"Alarm_Sensitivity"],
  61. @"2":@[@"Alarm_function",@"Alarm_video",@"Alarm_picture",@"Send_to_phone"],
  62. }
  63. mutableCopy];
  64. //获取报警配置
  65. [SVProgressHUD showWithStatus:TS("")];
  66. if (_alarmDetectConfig == nil) {
  67. _alarmDetectConfig = [[AlarmDetectConfig alloc] init];
  68. _alarmDetectConfig.delegate = self;
  69. }
  70. [_alarmDetectConfig getDeviceAlarmDetectConfig];
  71. }
  72. - (void)setNaviStyle {
  73. self.navigationItem.title = TS("报警配置");
  74. UIBarButtonItem *rightBtn = [[UIBarButtonItem alloc] initWithTitle:TS("保存") style:UIBarButtonItemStyleDone target:self action:@selector(saveConfig)];
  75. self.navigationItem.rightBarButtonItem = rightBtn;
  76. }
  77. - (void)configSubView {
  78. [self.view addSubview:self.alarmTableView];
  79. }
  80. #pragma mark -- UITableViewDelegate/DataSource
  81. -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
  82. return 3;
  83. }
  84. -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
  85. if (section == 0) {
  86. return 1;
  87. }else if(section == 1){
  88. return 5;
  89. }else if(section == 2){
  90. return 4;
  91. }else{
  92. return 0;
  93. }
  94. }
  95. -(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
  96. if (section == 1 || section == 2){
  97. return 50;
  98. }
  99. return 0;
  100. }
  101. -(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
  102. UIView *headView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, ScreenWidth, 50)];
  103. headView.backgroundColor = [UIColor colorWithRed:217/255.0 green:217/255.0 blue:217/255.0 alpha:0.7];
  104. UILabel *headLab = [[UILabel alloc] initWithFrame:CGRectMake(20, 0, ScreenWidth, 50)];
  105. if (section == 0) {
  106. return nil;
  107. }else if (section == 1){
  108. headLab.text = TS("Motion_detection");
  109. }else if (section == 2){
  110. headLab.text = TS("Video_block");
  111. }
  112. [headView addSubview:headLab];
  113. return headView;
  114. }
  115. -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
  116. AlarmConfigTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
  117. cell.selectionStyle = UITableViewCellSelectionStyleNone;
  118. NSArray *dataSourceArray = [self.dateSourceDic objectForKey:[NSString stringWithFormat:@"%ld",(long)indexPath.section]];
  119. cell.textLabel.text = TS([[dataSourceArray objectAtIndex:indexPath.row] UTF8String]);
  120. BOOL AlarmSensitivity = (indexPath.section == 1 && indexPath.row == 4);
  121. if (!AlarmSensitivity) {
  122. cell.mySwitch.tag = (indexPath.section + 1)*100 +indexPath.row;
  123. if (cell.mySwitch.tag == 100) { //视频丢失报警开关
  124. [cell.mySwitch setOn:[self.alarmDetectConfig getLossEnable]];
  125. }else if (cell.mySwitch.tag == 200){ //移动侦测报警功能开关
  126. [cell.mySwitch setOn:[self.alarmDetectConfig getMotionEnable]];
  127. }else if (cell.mySwitch.tag == 201){ //移动侦测报警录像开关
  128. [cell.mySwitch setOn:[self.alarmDetectConfig getMotionRecordEnable]];
  129. }else if (cell.mySwitch.tag == 202){ //移动侦测报警抓图开关
  130. [cell.mySwitch setOn:[self.alarmDetectConfig getMotionSnapEnable]];
  131. }else if (cell.mySwitch.tag == 203){ //移动侦测手机推送开关
  132. [cell.mySwitch setOn:[self.alarmDetectConfig getMotionMessageEnable]];
  133. }else if (cell.mySwitch.tag == 300){ //视频遮挡报警功能开关
  134. [cell.mySwitch setOn:[self.alarmDetectConfig getBlindEnable]];
  135. }else if (cell.mySwitch.tag == 301){ //视频遮挡报警录像开关
  136. [cell.mySwitch setOn:[self.alarmDetectConfig getBlindRecordEnable]];
  137. }else if (cell.mySwitch.tag == 302){ //视频遮挡报警抓图开关
  138. [cell.mySwitch setOn:[self.alarmDetectConfig getBlindSnapEnable]];
  139. }else if (cell.mySwitch.tag == 303){ //视频遮挡手机推送开关
  140. [cell.mySwitch setOn:[self.alarmDetectConfig getBlindMessageEnable]];
  141. }
  142. }else{ //移动侦测灵敏度显示刷新
  143. self.alarmSensitivityLab.frame = CGRectMake(ScreenWidth - 100, 7, 80, 30);
  144. [cell.contentView addSubview:self.alarmSensitivityLab];
  145. cell.mySwitch.hidden = YES;
  146. int bum = [_alarmDetectConfig getMotionlevel];
  147. if (bum == 1 || bum == 2) {
  148. self.alarmSensitivityLab.text = TS("Alarm_Lower");
  149. }else if (bum == 3 || bum == 4){
  150. self.alarmSensitivityLab.text = TS("Alarm_Middle");
  151. }else if (bum == 5 || bum == 6){
  152. self.alarmSensitivityLab.text = TS("Alarm_Anvanced");
  153. }
  154. }
  155. return cell;
  156. }
  157. -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
  158. if (indexPath.section ==1 && indexPath.row == 4) {
  159. AlarmLevelViewController *viewController = [AlarmLevelViewController new];
  160. __weak typeof(self) weakSelf = self;
  161. viewController.alarmLevelBlock = ^(NSString *iLevel) {
  162. weakSelf.alarmSensitivityLab.text = iLevel;
  163. };
  164. [self.navigationController pushViewController:viewController animated:NO];
  165. }
  166. return;
  167. }
  168. #pragma mark -- 获取报警配置代理回调
  169. - (void)getAlarmDetectConfigResult:(NSInteger)result{
  170. if (result >0) {
  171. [SVProgressHUD dismiss];
  172. [self.alarmTableView reloadData];
  173. }else{
  174. [MessageUI ShowErrorInt:(int)result];
  175. }
  176. }
  177. #pragma mark -- 保存报警配置
  178. -(void)saveConfig{
  179. //视频丢失报警保存
  180. UISwitch *videoLossSwitch = [self.view viewWithTag:100];
  181. [_alarmDetectConfig setLossEnable:videoLossSwitch.on];
  182. //移动侦测配置保存
  183. UISwitch *alarmFunctionSwitch = [self.view viewWithTag:200];
  184. UISwitch *alarmRecodeSwitch = [self.view viewWithTag:201];
  185. UISwitch *alarmSnapSwitch = [self.view viewWithTag:202];
  186. UISwitch *alarmMessageSwitch = [self.view viewWithTag:203];
  187. [_alarmDetectConfig setMotionEnable: alarmFunctionSwitch.on];
  188. [_alarmDetectConfig setMotionRecordEnable: alarmRecodeSwitch.on];
  189. [_alarmDetectConfig setMotionSnapEnable: alarmSnapSwitch.on];
  190. [_alarmDetectConfig setMotionMessageEnable: alarmMessageSwitch.on];
  191. //灵敏度保存
  192. if ([self.alarmSensitivityLab.text isEqualToString:TS("Alarm_Lower")]) {
  193. [_alarmDetectConfig setMotionlevel: 1];
  194. }else if ([self.alarmSensitivityLab.text isEqualToString:TS("Alarm_Middle")]){
  195. [_alarmDetectConfig setMotionlevel: 3];
  196. }else if ([self.alarmSensitivityLab.text isEqualToString:TS("Alarm_Anvanced")]){
  197. [_alarmDetectConfig setMotionlevel: 5];
  198. }
  199. //视频遮挡配置保存
  200. UISwitch *alarmFunctionSwitch2 = [self.view viewWithTag:300];
  201. UISwitch *alarmRecodeSwitch2 = [self.view viewWithTag:301];
  202. UISwitch *alarmSnapSwitch2 = [self.view viewWithTag:302];
  203. UISwitch *alarmMessageSwitch2 = [self.view viewWithTag:303];
  204. [_alarmDetectConfig setBlindEnable: alarmFunctionSwitch2.on];
  205. [_alarmDetectConfig setBlindRecordEnable: alarmRecodeSwitch2.on];
  206. [_alarmDetectConfig setBlindSnapEnable: alarmSnapSwitch2.on];
  207. [_alarmDetectConfig setBlindMessageEnable: alarmMessageSwitch2.on];
  208. //发送保存配置命令
  209. [_alarmDetectConfig setDeviceAlarmDetectConfig];
  210. ChannelObject *channel = [[DeviceControl getInstance] getSelectChannel];
  211. UISwitch *messageSwitch = [self.view viewWithTag:203];
  212. if (messageSwitch.on) {
  213. [[AlarmManager getInstance] LinkAlarm:channel.deviceMac DeviceName:@""];
  214. }else{
  215. [[AlarmManager getInstance] UnlinkAlarm:channel.deviceMac];
  216. }
  217. [SVProgressHUD showWithStatus:TS("")];
  218. }
  219. //保存配置结果回调
  220. -(void)setAlarmDetectConfigResult:(NSInteger)result{
  221. if (result>0) {
  222. [SVProgressHUD showSuccessWithStatus:TS("Success")];
  223. }else{
  224. [MessageUI ShowErrorInt:(int)result];
  225. }
  226. }
  227. @end