// // DeviceSelectPopupView.m // kneet2 // // Created by Jason Lee on 11/3/15. // Copyright (c) 2015 ntels. All rights reserved. // #import "JDObject.h" #import "RequestHandler.h" #import "JDJSONModel.h" #import "CustomLabel.h" #import "CustomTextField.h" #import "CustomTableView.h" #import "CustomImageView.h" #import "CustomButton.h" #import "CustomCheckBox.h" #import "CustomRadioGroup.h" #import "ValidateUtil.h" #import "ImageUtil.h" #import "UIImageView+WebCache.h" #import "DeviceSelectPopupView.h" #import "DeviceNodePopupView.h" @implementation DeviceSelectPopupTableViewCell @end @interface DeviceSelectPopupView () { CustomRadioReusableGroup *_rgroup; BOOL _isNotFirstLoading; UIImage *_bgCellImage1, *_bgCellImage2; NSMutableArray *_checkedDevices; } @end @implementation DeviceSelectPopupView - (id)initFromNib { for (UIView *view in [CommonUtil nibViews:@"DeviceSelectPopupView"]) { if ([view isKindOfClass:[DeviceSelectPopupView class]]) { self = (DeviceSelectPopupView *)view; //XIB의 경우, 현재 화면 사이즈로 맞춰줘야 함. self.frame = [UIScreen mainScreen].bounds; self.lblTitle.text = NSLocalizedString(@"장치 선택", @"장치 선택"); [self initTableViewAsDefaultStyle:_tableView]; UINib *nib = [UINib nibWithNibName:@"DeviceSelectPopupTableViewCell" bundle:nil]; [_tableView registerNib:nib forCellReuseIdentifier:@"DeviceCellIdentifier"]; //set radio group _rgroup = [[CustomRadioReusableGroup alloc] init]; _rgroup.tableView = _tableView; [self.imgTitleBar setImage:[UIImage imageNamed:@"img_popup_bg_head"]inset:UIEdgeInsetsMake(kfTopInset,kfRightInset,kfBottomInset,kfLeftInset)]; [self.btnConfirm setBackgroundImage:[UIImage imageNamed:@"img_popup_btn_right"] forState:UIControlStateNormal capInsets:UIEdgeInsetsMake(kfTopInset,kfRightInset,kfBottomInset,kfLeftInset)]; [self.btnConfirm setBackgroundImage:[UIImage imageNamed:@"img_popup_btn_right_press"] forState:UIControlStateHighlighted capInsets:UIEdgeInsetsMake(kfTopInset,kfRightInset,kfBottomInset,kfLeftInset)]; [self.btnCancel setBackgroundImage:[UIImage imageNamed:@"img_popup_btn_left"] forState:UIControlStateNormal capInsets:UIEdgeInsetsMake(kfTopInset,kfRightInset,kfBottomInset,kfLeftInset)]; [self.btnCancel setBackgroundImage:[UIImage imageNamed:@"img_popup_btn_left_press"] forState:UIControlStateHighlighted capInsets:UIEdgeInsetsMake(kfTopInset,kfRightInset,kfBottomInset,kfLeftInset)]; //Localization [self.btnConfirm setTitle:NSLocalizedString(@"확인", @"확인") forState:UIControlStateNormal]; [self.btnCancel setTitle:NSLocalizedString(@"취소", @"취소") forState:UIControlStateNormal]; UIEdgeInsets insets = UIEdgeInsetsMake(1, 1, 1, 2); _bgCellImage1 = [ImageUtil resizableImageWithCapInsets:insets resizingMode:UIImageResizingModeStretch img:[UIImage imageNamed:@"img_list_bg_01"]]; _bgCellImage2 = [ImageUtil resizableImageWithCapInsets:insets resizingMode:UIImageResizingModeStretch img:[UIImage imageNamed:@"img_list_bg_02"]]; } } return self; } - (void)initTableViewAsDefaultStyle:(CustomTableView *)tableView { tableView.dataSource = self; tableView.delegate = self; tableView.separatorStyle = UITableViewCellSeparatorStyleNone; tableView.backgroundColor = [UIColor clearColor]; tableView.tableFooterView = [[UIView alloc] init]; //this call table events; } - (void)didMoveToSuperview { } - (void)setRefDevices:(NSMutableArray *)refDevices { _refDevices = refDevices; for (ItemSubModel *item in _refDevices) { [[JDFacade facade] setRadioButtonStatus:@NO object:item]; } [_tableView reloadData]; } - (NSArray *)selectedDevices { NSArray *devices = nil; if ([_typeCode isEqualToString:ksItemTypeCodeAction]) { devices = _checkedDevices; } else { devices = (NSArray *)@[_rgroup.valueForChecked]; } return devices; } #pragma mark - Main Logic #pragma mark - UITableView DataSource & Delegate - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return _refDevices ? _refDevices.count : 0; } - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { CGFloat height = 86.0f; return height; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { ItemModel *item = _refDevices[indexPath.row]; DeviceSelectPopupTableViewCell *tcell = (DeviceSelectPopupTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"DeviceCellIdentifier"]; tcell.lblDeviceName.text = item.sourceName; [tcell.imgvDevice sd_setImageWithURL:[NSURL URLWithString:item.imageFileName] placeholderImage:nil options:SDWebImageRefreshCached]; if ([_typeCode isEqualToString:ksItemTypeCodeTrigger] || [_typeCode isEqualToString:ksItemTypeCodeCondition]) {//트리거 또는 컨디션 tcell.chkSelect.hidden = YES; tcell.rdoSelect.value = item; if (indexPath.row == 0 && !_isNotFirstLoading) { _isNotFirstLoading = YES; tcell.rdoSelect.checked = YES; } else { tcell.rdoSelect.checked = [tcell.rdoSelect getRadioStatusFromValue]; } [_rgroup addRadioButton:tcell.rdoSelect]; } else if ([_typeCode isEqualToString:ksItemTypeCodeAction]) {//액션 tcell.rdoSelect.hidden = YES; tcell.chkSelect.delegate = self; tcell.chkSelect.value = item; tcell.chkSelect.checked = [tcell.chkSelect getCheckStatusFromValue]; } //set background image if (indexPath.row % 2 == 0) { tcell.backgroundView = [[UIImageView alloc] initWithImage:_bgCellImage1]; } else { tcell.backgroundView = [[UIImageView alloc] initWithImage:_bgCellImage2]; } return tcell; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [tableView deselectRowAtIndexPath:indexPath animated:YES]; DeviceSelectPopupTableViewCell *tcell = (DeviceSelectPopupTableViewCell *)[self tableView:tableView cellForRowAtIndexPath:indexPath]; if ([_typeCode isEqualToString:ksItemTypeCodeTrigger] || [_typeCode isEqualToString:ksItemTypeCodeCondition]) { [_rgroup someRadioButtonTouched:tcell.rdoSelect]; } else if ([_typeCode isEqualToString:ksItemTypeCodeAction]) { [tcell.chkSelect checkBoxClicked]; } [_tableView reloadData]; } - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { // Remove seperator inset if ([cell respondsToSelector:@selector(setSeparatorInset:)]) { [cell setSeparatorInset:UIEdgeInsetsZero]; } // Prevent the cell from inheriting the Table View's margin settings if ([cell respondsToSelector:@selector(setPreservesSuperviewLayoutMargins:)]) { [cell setPreservesSuperviewLayoutMargins:NO]; } // Explictly set your cell's layout margins if ([cell respondsToSelector:@selector(setLayoutMargins:)]) { [cell setLayoutMargins:UIEdgeInsetsZero]; } } #pragma mark - CustomCheckBox Delegate - (void)didCheckBoxClicked:(id)sender { } #pragma mark - UI Events - (IBAction)btnConfirmTouched:(id)sender { //validate if ([_typeCode isEqualToString:ksItemTypeCodeAction]) {//디바이스 멀티 BOOL isSelected = NO; _checkedDevices = (NSMutableArray *)[_refDevices matchedArrayByObjectName:ksCustomCheckBoxStatus condition:YES]; if (!_checkedDevices || !_checkedDevices.count) { [[JDFacade facade] alert:NSLocalizedString(@"선택된 항목이 없습니다", @"선택된 항목이 없습니다")]; return; } } [super btnConfirmTouched:sender]; } @end