Jason Lee 10 سال پیش
والد
کامیت
aeda92f6d4

+ 5 - 0
kneet2/Classes/CommonUI/DeviceNodePopupView.m

@@ -175,6 +175,11 @@
             tcell.rdoSelect.checked = [tcell.rdoSelect getRadioStatusFromValue];
         }
         
+        if (!_isModifyMode) {
+            
+        }
+        tcell.rdoSelect.enabled = _isModifyMode;
+        
         [_rgroup addRadioButton:tcell.rdoSelect];
         
     } else if ([_typeCode isEqualToString:ksItemTypeCodeAction]) {//액션

+ 3 - 0
kneet2/Classes/Model/ModeModel.h

@@ -13,6 +13,9 @@
 @property (copy, nonatomic) NSString *imageFileViewName;
 @property (copy, nonatomic) NSString *ruleYn;
 @property (copy, nonatomic) NSString *homegrpSceneId;
+@property (copy, nonatomic) NSString *deleteCnt;
+
+
 
 - (instancetype)initWithSubItem:(ItemSubModel *)subItem;
 

+ 59 - 78
kneet2/Classes/ViewControllers/MainScreens/HomeModeUpdateViewController.m

@@ -67,11 +67,24 @@
         
     }
     
+    //mode status check
+    _btnSetting.hidden = [JDFacade facade].loginUser.level < 90; //일반 멤버 - 설정버튼 감춤
+    if (_btnSetting.hidden) {
+        if (!_mode.homegrpSceneId || [_mode.homegrpSceneId isEmptyString]) {//지정된 액션이 없을 경우,
+            [[JDFacade facade] toast:@"모드를 변경할 때\r동작할 장치를 지정해보세요"];
+            
+            highlightMessage = [NSString stringWithFormat:@"%@ 모드로 변경할까요?", _mode.modeName];
+            message = @"일부 장치가 삭제되어\r모드는 변경할 수 있지만\r장치는 제어되지 않습니다";
+            
+        } else if (_mode.deleteCnt) {
+            [[JDFacade facade] toast:@"삭제된 장치를\r정리하세요"];
+        }
+    }
+    
     [_btnExecute setTitle:btnTitle forState:UIControlStateNormal];
     _lblMessage.text = [NSString stringWithFormat:@"%@\n\n%@", highlightMessage, message];
     [_lblMessage setColor:kUITextColor02 text:highlightMessage];
     
-    _btnSetting.hidden = [JDFacade facade].loginUser.level < 90;
     
     //TODO : set icon;
 }
@@ -96,19 +109,60 @@
             
             //check requet done,
             _requestTime = [NSDate systemDate];
-            [self requestPollingHomeModeChanges];
             
-            [self setContentsForComplete];
+            if (_mode.homegrpSceneId && ![_mode.homegrpSceneId isEmptyString]) {//제어할 장치가 있는 경우,
+                [self requestPollingHomeModeChanges];
+            } else {
+                [self setContentsForComplete];
+            }
         }
         
-        [[JDFacade facade] toast:[NSString stringWithFormat:@"%@ 상태가 되었습니다", _mode.modeName]];
-        
     } failure:^(id errorObject) {
         JDErrorModel *error = (JDErrorModel *)errorObject;
         [[JDFacade facade] alert:error.errorMessage];
     }];
 }
 
+- (NSInteger)elapsedSecondsFromNow {
+    NSInteger seconds = 0;
+    
+    if (_requestTime) {
+        NSTimeInterval elapsed = [[NSDate systemDate] timeIntervalSinceDate:_requestTime];
+        seconds = elapsed;
+    }
+    return seconds;
+}
+
+- (void)requestPollingHomeModeChanges {
+    
+    //every 3sec?
+    NSString *path = [NSString stringWithFormat:API_GET_MODE_STATUS, _mode.modeId];
+    
+    dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{//RUN to background thread
+        ModeModel *response = [[RequestHandler handler] sendSyncGetRequestAPIPath:path parameters:nil
+                                                                       modelClass:[ModeModel class] showLoadingView:YES];
+        if (response) {
+            BOOL isRequestDone = [response.status boolValue];
+            BOOL isOverTimeLimit = [self elapsedSecondsFromNow] > 10;
+            
+            if (isOverTimeLimit || isRequestDone) {
+                [_modeChangePollingTimer invalidate];
+                _modeChangePollingTimer = nil;
+                _requestTime = nil;
+                
+                if (isRequestDone) {
+                    [self setContentsForComplete];
+//                    [[JDFacade facade] toast:[NSString stringWithFormat:@"%@ 상태가 되었습니다", _mode.modeName]];
+                }
+            } else {
+                if (!_modeChangePollingTimer) {
+                    _modeChangePollingTimer = [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(requestPollingHomeModeChanges) userInfo:nil repeats:YES];
+                }
+            }
+        }
+    });
+}
+
 - (void)setContentsForComplete {
     
     NSString *highlightMessage = nil;
@@ -143,77 +197,4 @@
     // Dispose of any resources that can be recreated.
 }
 
-- (NSInteger)elapsedSecondsFromNow {
-    NSInteger seconds = 0;
-    
-    if (_requestTime) {
-        NSTimeInterval elapsed = [[NSDate systemDate] timeIntervalSinceDate:_requestTime];
-        seconds = elapsed;
-    }
-    return seconds;
-}
-
-- (void)requestPollingHomeModeChanges {
-    
-    //every 3sec?
-    NSString *path = [NSString stringWithFormat:API_GET_MODE_STATUS, _mode.modeId];
-    
-    dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{//RUN to background thread
-        ModeModel *response = [[RequestHandler handler] sendSyncGetRequestAPIPath:path parameters:nil
-                                                                             modelClass:[ModeModel class] showLoadingView:YES];
-        if (response) {
-            BOOL isRequestDone = [response.status boolValue];
-            
-            
-            if (isRequestDone) {
-                
-            } else {
-                //실행 여부 및 10초 경과 확인
-                BOOL isOverTimeLimit = [self elapsedSecondsFromNow] > 10;
-            }
-            
-                _mode.
-                rdevice.isRequesting = [rdevice.contentValue isEqualToString:matchedDevice.contentValue] && !hasChangedStatus && !isOverTimeLimit;
-                
-                //TODO - home hub check
-                //                    rdevice.requestTime = matchedDevice.requestTime;
-                //                    rdevice.collectTime = matchedDevice.collectTime;
-                rdevice.onlineState = matchedDevice.onlineState;
-                
-                if (!rdevice.isRequesting || !rdevice.isOnline || ![JDFacade facade].loginUser.isHomehubOnline) {//정상적으로 변경됨.
-                    rdevice.contentValue = matchedDevice.contentValue;
-                    [_commandArray removeObject:rdevice];
-                    
-                    isStatusChanged = YES;
-                }
-                
-#ifdef DEBUG_MODE
-                NSLogInfo(@"==########== device command status = %@, elapsedTime = %zd ==########==", [JDFacade facade].loginUser.homehubOnlineState, elapsedTime);
-#endif
-            }];
-        }
-        
-        if (_commandArray.count) {//커맨드 실행 중인 디바이스가 있을 경우,
-            //schedul timer.
-            if (!_deviceCommandsBackgroundTimer) {
-                _deviceCommandsBackgroundTimer = [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(requestPollingCommandStatusOfDeviceInBackground:) userInfo:nil repeats:YES];
-            }
-        } else {
-            [_deviceCommandsBackgroundTimer invalidate];
-            _deviceCommandsBackgroundTimer = nil;
-        }
-        
-        //변화가 있을 경우, 컬렉션뷰를 리로드
-        if (isStatusChanged) {
-            [_collectionView reloadData];
-            
-            ThingsDetailViewController *vc = (ThingsDetailViewController *)[JDFacade facade].currentViewController;
-            if (vc) {
-                [vc.tableView reloadData];
-            }
-        }
-}
-
-
-
 @end

+ 14 - 13
kneet2/Classes/ViewControllers/MainScreens/MainViewController.m

@@ -347,20 +347,21 @@
         [[JDFacade facade] toast:@"홈허브가 온라인 상태로\n연결되어 있을 때 시도해주세요"];
         return;
     }
-    
+
     ModeModel *mode = [_dashboard.modeList objectKey:@"basicModeCode" eqaulToString:modeCode];
-    if (!mode.homegrpSceneId || [mode.homegrpSceneId isEmptyString]) {
-        
-        if ([JDFacade facade].loginUser.level < 90) {//일반 멤버
-            [[JDFacade facade] toast:@"아직 선택된 장치가 없습니다.\r장치선택은 마스터만 할 수 있습니다."];
-        } else {
-            HomeModeSettingsViewController *vc = (HomeModeSettingsViewController *)[CommonUtil instantiateViewControllerWithIdentifier:@"HomeModeSettingsViewController" storyboardName:@"Main"];
-            vc.mode = mode;
-            
-            [self presentViewController:vc animated:YES completion:nil];
-        }
-        return;
-    }
+//로직 변경
+//    if (!mode.homegrpSceneId || [mode.homegrpSceneId isEmptyString]) {
+//        
+//        if ([JDFacade facade].loginUser.level < 90) {//일반 멤버
+//            [[JDFacade facade] toast:@"아직 선택된 장치가 없습니다.\r장치선택은 마스터만 할 수 있습니다."];
+//        } else {
+//            HomeModeSettingsViewController *vc = (HomeModeSettingsViewController *)[CommonUtil instantiateViewControllerWithIdentifier:@"HomeModeSettingsViewController" storyboardName:@"Main"];
+//            vc.mode = mode;
+//            
+//            [self presentViewController:vc animated:YES completion:nil];
+//        }
+//        return;
+//    }
     
     HomeModeUpdateViewController *vc = (HomeModeUpdateViewController *)[CommonUtil instantiateViewControllerWithIdentifier:@"HomeModeUpdateViewController"
                                                                                                             storyboardName:@"Main"];