// // Xuanduo2SettingController.m // Ifish // // Created by Alex on 2019/4/28. // Copyright © 2019 lianlian. All rights reserved. // #import "XuanduoSettingController.h" #import "XuanduofishFeedViewController.h" #import "UINavigationBar+Background.h" #import "TemperatureSetCell.h" #import "ChangeWaterCell.h" #import "Xuanduo2Model.h" #import "TemperatureSetModel.h" #import "setWaringTpModel.h" #import "remindCyclePic.h" #import "MyPickerView.h" #import "PlusTableViewCell.h" #import "SetTimerCell.h" #import "XuanduoSectionHeaderView.h" #import "XuanduoSelectHeader.h" #import "MydatePickerView.h" #import "SetTimerModel.h" #import "ReadTimerModel.h" #import "Xuanduo2DataUtility.h" #import "Xuanduo2TimerModel.h" #import "IfishDeviceInfo.h" #import "NSString+Add.h" #import "XuToControlName.h" #import "UserExtendataArchaver.h" #import "XuanduoTimerListViewController.h" #define kBtnTag 500 #define kSwitchBtnTag 600 static NSString *temperatureCellid = @"TemperatureSetCell"; static NSString *changeWaterCellid = @"ChangeWaterCell"; static NSString *addCellid = @"PlusTableViewCell"; static NSString *plusflag = @"plusCell"; static NSString *setTimerflag = @"SetTimerCell"; @interface XuanduoSettingController () @property(nonatomic,strong) setRemindWaterModel *waterInfmodel; @property(nonatomic,strong) Xuanduo2TimerModel *timerModel; @property(nonatomic,strong) XuanduoCycleModel *cycleModel; @property (nonatomic,strong) NSMutableDictionary *timeDic; @property(nonatomic,copy) NSString *nextChangeDateLabel; @property(nonatomic,strong) MyHud *XuTohud; @end @implementation XuanduoSettingController { NSString *_wenduString; NSIndexPath *_indexPath; MyPickerView *_mypicView; NSArray *_titieArr; NSArray *_imgArr; remindCyclePic*_remindPic; BOOL _huanShuiSwitchIsOn; NSInteger _selectSection; MydatePickerView*_mydatepicView; } - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; if (_currentdevice) { [IFISHHTTPTOOL getRemindWaterInfWith:_currentdevice.deviceId huishuiInfo:^(setRemindWaterModel *remindModel) { self.waterInfmodel=remindModel; NSUserDefaults*defuat=[NSUserDefaults standardUserDefaults]; [defuat setInteger:self.waterInfmodel.remindcycle forKey:@"xuto2picResult"]; [defuat synchronize]; self.nextChangeDateLabel=self.waterInfmodel.remindDate; [self.tableView reloadData]; }]; } } - (void)viewDidLoad { [super viewDidLoad]; [self setup]; [self connect]; } - (void)viewWillDisappear:(BOOL)animated{ [_indicatorView stopAnimating]; } - (void)setup { [self.navigationController.navigationBar resetBackgroundImage]; NSString*title=@"水族箱设置"; if ([self.currentdevice.type isEqualToString:DECICE_TYPE_XUANDUO2F]||[self.currentdevice.type isEqualToString:DECICE_TYPE_XUANDUO5F]||[self.currentdevice.type isEqualToString:DECICE_TYPE_XUANDUO4F]) { title = @"水族箱设置"; } else if ([self.currentdevice.type isEqualToString:DECICE_TYPE_XUANDUO3F]) { title = @"宠物笼设置"; } [self addTitleViewWithTitle:title]; [self refreshWithData:self.dataModel]; [self setupTable]; [self creatIndicatorView]; [Socketsingleton sharedInstance].communiteDelegate = self; } - (void)refreshWithData:(Xuanduo3fModel*)model { NSString*low = model.miniTemp; NSString*heigh = model.maxTemp; UInt64 lowten = [dataContorl hexToTen:low]; UInt64 heighten = [dataContorl hexToTen:heigh]; float formatlow = lowten/10; float formatheigh = heighten/10; _wenduString = [NSString stringWithFormat:@"%.0f~%.0f°C",formatlow,formatheigh]; } - (void)setupTable { _titieArr = @[@"定时设置",@"喂鱼设置",@"温度校准",@"功能说明"]; _imgArr = @[@"定时",@"喂鱼",@"温度校准",@"功能说明 "]; _selectSection = -1; for (int i = 0; i<_titieArr.count; i++) { NSMutableArray *dataArr = [NSMutableArray arrayWithCapacity:0]; if (![_titieArr[i] isEqualToString:@"杀菌"]) { [dataArr addObject:plusflag]; } [self.timeDic setObject:dataArr forKey:_titieArr[i]]; } self.tableView.backgroundColor=COLOR_MIAN; self.tableView.estimatedRowHeight=0; self.tableView.estimatedSectionFooterHeight=0; self.tableView.estimatedSectionHeaderHeight=0; self.tableView.separatorStyle=UITableViewCellSeparatorStyleNone; self.tableView.separatorInset=UIEdgeInsetsMake(0, 15, 0, 15); [self.tableView registerNib:[UINib nibWithNibName:temperatureCellid bundle:nil] forCellReuseIdentifier:temperatureCellid]; [self.tableView registerNib:[UINib nibWithNibName:changeWaterCellid bundle:nil] forCellReuseIdentifier:changeWaterCellid]; [self.tableView registerNib:[UINib nibWithNibName:addCellid bundle:nil] forCellReuseIdentifier:addCellid]; [self.tableView registerNib:[UINib nibWithNibName:setTimerflag bundle:nil] forCellReuseIdentifier:setTimerflag]; } #pragma mark - Table view data source - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 2 + _titieArr.count; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { if (section == 0) { return 1; }else if (section == 1){ return 2; } if (section - 2 < _titieArr.count) { return 1; } return 0; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { if (indexPath.section == 0){ TemperatureSetCell *cell = [tableView dequeueReusableCellWithIdentifier:temperatureCellid]; TemperatureSetModel *model=[[TemperatureSetModel alloc]init]; model.title = @"预警设置"; cell.icon.hidden=NO; cell.icon.image=[UIImage imageNamed:@"预警"]; cell.titileLabelLayout.constant=40; cell.titleLabel.text = model.title; NSLog(@"wendu str = %@",_wenduString); model.temperatureLabel = _wenduString; cell.temperaturelabel.text = model.temperatureLabel; [cell.temPSwitch addTarget:self action:@selector(xuTotempSwitchAction:) forControlEvents:UIControlEventTouchUpInside]; if (self.dataModel) { Xuanduo2Model*model=self.dataModel; if ([model.alarmSwitch isEqualToString:@"01"]) { [cell.temPSwitch setBackgroundImage:[UIImage imageNamed:@"greenbtn_big"] forState:UIControlStateNormal]; cell.temPSwitch.selected = NO; }else{ [cell.temPSwitch setBackgroundImage:[UIImage imageNamed:@"graybtn_big"] forState:UIControlStateNormal]; cell.temPSwitch.selected = YES; } } return cell; }else if(indexPath.section == 1 && indexPath.row == 0){ if (![self.currentdevice.waterRemind isEqual:[NSNull null]]) { ChangeWaterCell *cell = [tableView dequeueReusableCellWithIdentifier:changeWaterCellid]; [cell.ChangeWaterSwitch addTarget:self action:@selector(xuTochangeWaterSwitch:) forControlEvents:UIControlEventTouchUpInside]; if ([self.waterInfmodel.waterremind isEqualToString:@"1"]) { [cell.ChangeWaterSwitch setBackgroundImage:[UIImage imageNamed:@"greenbtn_big"] forState:UIControlStateNormal]; cell.ChangeWaterSwitch.selected = NO; cell.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"firstSetCell"]]; _huanShuiSwitchIsOn=YES; }else{ [cell.ChangeWaterSwitch setBackgroundImage:[UIImage imageNamed:@"graybtn_big"] forState:UIControlStateNormal]; cell.ChangeWaterSwitch.selected = YES; _huanShuiSwitchIsOn=NO; cell.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"set_cellBack"]]; } if (self.waterInfmodel.remindcycle == 0) { //在未获取换水信息时暂时显示 cell.huanshuiDaylabel.text=@"换水时间"; if ([self.currentdevice.type isEqualToString:DECICE_TYPE_XUANDUO3F]) { cell.huanshuiDaylabel.text=@"杀菌时间"; cell.titleLabel.text=@"杀菌提醒"; } }else{ cell.huanshuiDaylabel.text=[NSString stringWithFormat:@"%ld天",(long)self.waterInfmodel.remindcycle]; } cell.icon.hidden=NO; cell.icon.image=[UIImage imageNamed:@"换水"]; cell.titileLabelLayout.constant=40; return cell; } }else if (indexPath.section==1 && indexPath.row == 1){ static NSString*nextHuanShuiLablecellId=@"labelcell"; UITableViewCell*cell=[tableView dequeueReusableCellWithIdentifier:nextHuanShuiLablecellId]; if (cell==nil) { cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:nextHuanShuiLablecellId]; } if (_huanShuiSwitchIsOn) { cell.textLabel.text=[NSString stringWithFormat:@"下次换水时间:%@",self.waterInfmodel.remindDate]; if (!self.waterInfmodel.remindDate) { cell.textLabel.text=[NSString stringWithFormat:@"下次换水时间:%@",self.nextChangeDateLabel]; } if ([self.currentdevice.type isEqualToString:DECICE_TYPE_XUANDUO3F]) { cell.textLabel.text=[NSString stringWithFormat:@"下次杀菌时间:%@",self.waterInfmodel.remindDate]; if (!self.waterInfmodel.remindDate) { cell.textLabel.text=[NSString stringWithFormat:@"下次杀菌时间:%@",self.nextChangeDateLabel]; } } cell.textLabel.font=[UIFont systemFontOfSize:15]; [cell.textLabel sizeToFit]; cell.textLabel.textColor =[UIColor colorWithRed:146.0/256.0 green:146.0/256.0 blue:146.0/256.0 alpha:1]; cell.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"secondSetCell"]]; } else{ cell.textLabel.text=@""; } cell.userInteractionEnabled = NO; return cell; }else if(indexPath.section -2== _titieArr.count && indexPath.row == 0&&[self.currentdevice.type isEqualToString:DECICE_TYPE_XUANDUO3F]){ TemperatureSetCell *cell = [tableView dequeueReusableCellWithIdentifier:temperatureCellid]; TemperatureSetModel *model=[[TemperatureSetModel alloc]init]; model.title = @"恒温设置"; cell.titleLabel.text = model.title; Xuanduo3fModel*xmodel=(Xuanduo3fModel*)_dataModel; NSString*heating = xmodel.heatingTemperature; UInt64 heat = [dataContorl hexToTen:heating]; float formatheat = heat/10; model.temperatureLabel = [NSString stringWithFormat:@"%f",formatheat]; cell.temPSwitch.hidden=YES; cell.temperaturelabel.frame=cell.temPSwitch.frame; Xuanduo3fModel*model3=self.dataModel; int mac=[dataContorl hexToTen:model3.heatingTemperature]; //float TPlabel=mac/10+(mac%10)*0.1; float temp = mac/10.0; NSString *stringTemp = [NSString stringWithFormat:@"%.1f℃",temp]; cell.temperaturelabel.textAlignment=NSTextAlignmentRight; [cell.temperaturelabel setAttributedText:[NSString ls_changeFontAndColor:[UIFont systemFontOfSize:15] Color:nil TotalString:stringTemp SubStringArray:@[@"℃"]]]; return cell; } else { if (indexPath.section - 2 < _titieArr.count && _selectSection == indexPath.section) { NSArray *dataArr = [self.timeDic objectForKey:_titieArr[indexPath.section-2]]; BOOL havePlus = [dataArr containsObject:plusflag]; if (havePlus && (indexPath.row == dataArr.count-1)) { PlusTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:addCellid forIndexPath:indexPath]; cell.addTimerBtn.tag = kBtnTag + indexPath.section; [cell.addTimerBtn addTarget:self action:@selector(addTimer:) forControlEvents:UIControlEventTouchUpInside]; return cell; }else { SetTimerCell *cell = [tableView dequeueReusableCellWithIdentifier:setTimerflag forIndexPath:indexPath]; cell.switchBtn.tag = kSwitchBtnTag + indexPath.row; [cell.switchBtn addTarget:self action:@selector(switchAction:) forControlEvents:UIControlEventTouchUpInside]; XuanduoTimerGroup *group = [dataArr objectAtIndex:havePlus?indexPath.row+1:indexPath.row]; cell.model=group; if ([group isKindOfClass:[XuanduoTimerGroup class]]) { BOOL isOn = NO; if ([group.status isEqualToString:@"01"]) { isOn = YES; } [cell configTitleLabel:[NSString stringWithFormat:@"时段%@",group.groupNumber] timer:group.time switchStatus:isOn]; cell.selectionStyle = UITableViewCellSelectionStyleNone; } else if([group isKindOfClass:[XuanduoCycleModel class]]) { XuanduoCycleModel*model=group; BOOL isOn = NO; if ([model.status isEqualToString:@"00"]) { isOn = YES; } [cell configTitleLabel:@"循环开关" timer:[NSString stringWithFormat:@"持续时长%d分钟",[dataContorl hexToTen:model.lastTime]] switchStatus:isOn]; cell.selectionStyle = UITableViewCellSelectionStyleNone; } return cell; } } } return [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@""]; } -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ if (indexPath.section == 0) { return 50; }else if (indexPath.section == 1 && indexPath.row == 0){ return 50; }else if (indexPath.section == 1 && indexPath.row == 1){ if (!_huanShuiSwitchIsOn) { }else { return 50; } }else if (indexPath.section - 2 <_titieArr.count) { return 0; } return 0; } #pragma mark tableView 头视图和脚视图 -(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{ if (section == 0) { return 0; }else if (section >1){ return 40; }else{ return 0; } } - (UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { if (section == 0) { UIView *oneHeader = [[UIView alloc] init]; oneHeader.backgroundColor = COLOR_MIAN; return oneHeader; }else if(section > 1){ XuanduoSelectHeader *headerView = [XuanduoSelectHeader shareHeaderView]; headerView.controlBtn.tag = kBtnTag + section; if (_selectSection == section) { headerView.controlBtn.selected = YES; } [headerView.controlBtn setImage:[UIImage imageNamed:@"arrow_right"] forState:UIControlStateNormal]; // headerView.backImageView.image=[UIImage imageNamed:@"矩形"]; [headerView.controlBtn addTarget:self action:@selector(foldAction:) forControlEvents:UIControlEventTouchUpInside]; [headerView configWithImageName:_imgArr[section-2] labelName:_titieArr[section-2]]; return headerView; }else { UIView *oneHeader = [[UIView alloc] init]; oneHeader.backgroundColor = COLOR_MIAN; return oneHeader; } return nil; } -(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { CGFloat height=0; if (section==1) { height=40; } return height; } - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { UIView *oneHeader = [[UIView alloc] init]; oneHeader.backgroundColor = COLOR_MIAN; return oneHeader; } #pragma mark tableView 点击事件 -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ _indexPath = indexPath; if (indexPath.section==0) { _mypicView=[[MyPickerView alloc]init]; _mypicView.frame=CGRectMake(0, 0, kScreenSize.width, kScreenSize.height); [self.view.window addSubview:_mypicView]; [_mypicView.sureButton addTarget:self action:@selector(mypicViewRemoveByDone) forControlEvents:UIControlEventTouchUpInside]; [self temperatureMainQueue]; }else if (indexPath.section==1){ //换水提醒日期选择 _remindPic=[[remindCyclePic alloc]initWithFrame:CGRectMake(0, 0, kScreenSize.width, kScreenSize.height) type:self.currentdevice.type]; _remindPic.frame=CGRectMake(0, 0, kScreenSize.width, kScreenSize.height); _remindPic.type=self.currentdevice.type; [self.view.window addSubview:_remindPic]; [_remindPic.sureBtn addTarget:self action:@selector(xuToremindCyclePicDone) forControlEvents:UIControlEventTouchUpInside]; [self huanShuiMainQueue]; }else if(indexPath.section-2==_titieArr.count){ //恒温设置 _remindPic=[[remindCyclePic alloc]initWithFrame:CGRectMake(0, 0, kScreenSize.width, kScreenSize.height) type:@"temp"]; _remindPic.type=@"temp"; _remindPic.frame=CGRectMake(0, 0, kScreenSize.width, kScreenSize.height); [self.view.window addSubview:_remindPic]; [_remindPic.sureBtn addTarget:self action:@selector(xuToremindCyclePicDone) forControlEvents:UIControlEventTouchUpInside]; [self huanShuiMainQueue]; }else { SetTimerCell *cell = [self.tableView cellForRowAtIndexPath:_indexPath]; if ([cell isKindOfClass:[PlusTableViewCell class]]) { return; } else if([cell isKindOfClass:[SetTimerCell class]]&&[cell.model isKindOfClass:[XuanduoCycleModel class]]) { //恒温设置 _cycleModel=cell.model; _remindPic=[[remindCyclePic alloc]initWithFrame:CGRectMake(0, 0, kScreenSize.width, kScreenSize.height) type:@"cycle"]; _remindPic.type=@"cycle"; _remindPic.frame=CGRectMake(0, 0, kScreenSize.width, kScreenSize.height); [self.view.window addSubview:_remindPic]; [_remindPic.sureBtn addTarget:self action:@selector(xuToremindCyclePicDone) forControlEvents:UIControlEventTouchUpInside]; [self huanShuiMainQueue]; } else { [self addTimer:nil]; } } } -(void)temperatureMainQueue{ NSArray*lowArr=[_mypicView.picArr objectAtIndex:0]; NSArray*heighArr=[_mypicView.picArr objectAtIndex:2]; for (NSInteger i=0; i=0 && [readTimer isEqualToString:@"0116"]) { if (!_timerModel) { _timerModel = [[Xuanduo2TimerModel alloc] init]; _timerModel.groupModelArr = [NSMutableArray array]; }else { [_timerModel.groupModelArr removeAllObjects]; } [Xuanduo2DataUtility readTimerSocketDataWithBackMsgModel:_timerModel addWithBackStr:string1 type:self.currentdevice.type]; NSMutableArray *dataArr = [self.timeDic objectForKey:_titieArr[_selectSection-2]]; [dataArr removeAllObjects]; [dataArr addObject:plusflag]; [dataArr addObjectsFromArray:_timerModel.groupModelArr]; BOOL havePlus = [dataArr containsObject:plusflag]; if (havePlus && dataArr.count > 10) { [dataArr removeObjectAtIndex:0]; }else if (!havePlus && dataArr.count < 10){ [dataArr insertObject:plusflag atIndex:0]; } NSLog(@"dataarr.count = %ld",dataArr.count); } else if (_selectSection-2<_titieArr.count && _selectSection-2>=0 && [readTimer isEqualToString:@"0119"]) { _cycleModel=[[XuanduoCycleModel alloc]init]; [Xuanduo2DataUtility readCycleSocketDataWithBackMsgModel:_cycleModel addWithBackStr:string1 type:self.currentdevice.type]; NSMutableArray *dataArr = [self.timeDic objectForKey:_titieArr[_selectSection-2]]; [dataArr removeAllObjects]; [dataArr addObject:_cycleModel]; } if ([readTimer isEqualToString:@"0108"] || [readTimer isEqualToString:@"0105"]) { [Xuanduo2DataUtility readSocketDataWithBackMsgModel:self.dataModel addWithBackData:data type:self.currentdevice.type]; [self refreshWithData:self.dataModel]; } [self.XuTohud hidmyHud]; [self.indicatorView stopAnimating]; [self.tableView reloadData]; } -(void)ifishDeviceLogInFail{ } -(void)ifishDeviceLogInSuccees{ } -(void)ifishSocket:(AsyncSocket *)sock didAcceptNewSocket:(AsyncSocket *)newSocket{ } @end