| | |
| | | |
| | | Action<SecurityAlarm> refreshAction; |
| | | |
| | | SecurityAlarm securityAlarm; |
| | | List<SecurityInput> inputList = new List<SecurityInput>(); |
| | | |
| | | public AddInputPage(SecurityAlarm alarm,Action<SecurityAlarm> action) |
| | | SecurityAlarm alarm; |
| | | public AddInputPage(SecurityAlarm inAlarm,Action<SecurityAlarm> action) |
| | | { |
| | | bodyView = this; |
| | | securityAlarm = alarm; |
| | | alarm = inAlarm; |
| | | refreshAction = action; |
| | | } |
| | | |
| | |
| | | Text = DB_ResidenceData.Instance.CurFloor.roomName, |
| | | }; |
| | | showdFunctionTypeRow.AddChidren(btnFloor); |
| | | btnFloor.MouseUpEventHandler += (sender, e) => |
| | | btnFloor.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | string nowSelectId = null; |
| | | var listAllFun = FunctionList.List.GetArmSensorList(); |
| | | var list = FunctionList.List.GetArmSensorList(); |
| | | |
| | | #if DEBUG |
| | | list.AddRange(FunctionList.List.GetLightList()); |
| | | #endif |
| | | //显示下拉界面 |
| | | var form = new FloorRoomSelectPopupView(); |
| | | form.ShowDeviceFunctionView(btnFloor, listAllFun, (selectId, listFun) => |
| | | form.ShowDeviceFunctionView(btnFloor, list, (selectId, listFun) => |
| | | { |
| | | nowSelectId = selectId; |
| | | //重新刷新设备列表 |
| | |
| | | functionListView = new VerticalScrolViewLayout() |
| | | { |
| | | Y = showdFunctionTypeRow.Bottom, |
| | | Height = Application.GetRealHeight(530), |
| | | Height = Application.GetRealHeight(530-60), |
| | | BackgroundColor = CSS_Color.BackgroundColor, |
| | | }; |
| | | bodyView.AddChidren(functionListView); |
| | | |
| | | |
| | | var listAllFun = FunctionList.List.GetArmSensorList(); |
| | | #if DEBUG |
| | | listAllFun.AddRange(FunctionList.List.GetLightList()); |
| | | #endif |
| | | |
| | | LoadFunctionListRow(FunctionList.List.GetArmSensorList()); |
| | | LoadFunctionListRow(listAllFun); |
| | | |
| | | |
| | | |
| | |
| | | bottomView.AddChidren(btnConfrim); |
| | | btnConfrim.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | securityAlarm.input = new List<SecurityInput>(); |
| | | foreach (var input in inputList) |
| | | { |
| | | if (input.addCondition) |
| | | { |
| | | securityAlarm.input.Add(input); |
| | | } |
| | | } |
| | | this.RemoveFromParent(); |
| | | refreshAction?.Invoke(securityAlarm); |
| | | refreshAction?.Invoke(alarm); |
| | | }; |
| | | |
| | | |
| | |
| | | //初始值 |
| | | functions = FunctionList.List.GetArmSensorList(); |
| | | } |
| | | |
| | | |
| | | foreach (var function in functions) |
| | | { |
| | | var input = securityAlarm.input.Find((obj) => obj.sid == function.sid); |
| | | var input = alarm.input.Find((obj) => obj.sid == function.sid); |
| | | if (input == null) |
| | | { |
| | | input = new SecurityInput(); |
| | | input.sid = function.sid; |
| | | |
| | | var inKey = "status"; |
| | | var inValue = "true"; |
| | | switch(function.spk) |
| | | { |
| | | case SPK.SensorWater: |
| | | inKey = "alarm_status"; |
| | | inValue = "alarm"; |
| | | break; |
| | | case SPK.SensorPir: |
| | | inKey = "people_status"; |
| | | break; |
| | | case SPK.SensorSmoke: |
| | | inKey = "alarm_status"; |
| | | inValue = "alarm"; |
| | | break; |
| | | case SPK.SensorGas: |
| | | inKey = "alarm_status"; |
| | | inValue = "alarm"; |
| | | break; |
| | | case SPK.SensorDoorWindow: |
| | | inKey = "contact_status"; |
| | | inValue = "open"; |
| | | break; |
| | | } |
| | | input.condition = new List<SecurityInputCondition>() |
| | | { |
| | | new SecurityInputCondition() |
| | | { |
| | | key = inKey, |
| | | value = inValue, |
| | | } |
| | | }; |
| | | |
| | | if (function.spk == SPK.LightSwitch || function.spk == SPK.LightRGB || function.spk == SPK.LightDimming) |
| | | { |
| | | input.condition = new List<SecurityInputCondition>() |
| | | { |
| | | new SecurityInputCondition() |
| | | { |
| | | key = FunctionAttributeKey.OnOff, |
| | | value = "off", |
| | | } |
| | | }; |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | input.addCondition = true; |
| | | } |
| | | inputList.Add(input); |
| | | //else |
| | | //{ |
| | | // //input.addCondition = true; |
| | | // alarm.input.Add(input); |
| | | //} |
| | | |
| | | FrameLayout functionRow = new FrameLayout() |
| | | { |
| | |
| | | }; |
| | | functionRow.AddChidren(btnChooseIcon); |
| | | |
| | | btnChooseIcon.MouseUpEventHandler = (sender, e) => { |
| | | btnChooseIcon.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | btnChooseIcon.IsSelected = !btnChooseIcon.IsSelected; |
| | | if(btnChooseIcon.IsSelected) |
| | | var tempLocal = alarm.input.Find((obj) => |
| | | obj.sid == input.sid |
| | | ); |
| | | if (btnChooseIcon.IsSelected) |
| | | { |
| | | input.addCondition = true; |
| | | if (input.condition.Count==0) |
| | | { |
| | | ShowStateDialog(input, btnState,btnChooseIcon); |
| | | } |
| | | //input.addCondition = true; |
| | | if (tempLocal == null) |
| | | alarm.input.Add(input); |
| | | } |
| | | else |
| | | { |
| | | input.addCondition = false; |
| | | //input.addCondition = false; |
| | | if (tempLocal != null) |
| | | { |
| | | alarm.input.Remove(input); |
| | | } |
| | | } |
| | | }; |
| | | btnState.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | ShowStateDialog(input, btnState, btnChooseIcon); |
| | | btnChooseIcon.IsSelected = !btnChooseIcon.IsSelected; |
| | | var tempLocal = alarm.input.Find((obj) => |
| | | obj.sid == input.sid |
| | | ); |
| | | if (btnChooseIcon.IsSelected) |
| | | { |
| | | //input.addCondition = true; |
| | | if (tempLocal == null) |
| | | alarm.input.Add(input); |
| | | } |
| | | else |
| | | { |
| | | //input.addCondition = false; |
| | | if (tempLocal != null) |
| | | { |
| | | alarm.input.Remove(input); |
| | | } |
| | | } |
| | | }; |
| | | |
| | | |
| | | if (input.addCondition) |
| | | var localInput = alarm.input.Find((obj) => |
| | | obj.sid == input.sid |
| | | ); |
| | | if (localInput!=null) |
| | | { |
| | | btnChooseIcon.IsSelected = true; |
| | | btnState.Text = input.StateText(); |
| | |
| | | } |
| | | |
| | | |
| | | private void ShowStateDialog(SecurityInput input,Button btnState,Button btnChoose = null) |
| | | private void ShowStateDialog(SecurityInput input,Button btnState,Button btnChoose ,string spk) |
| | | { |
| | | Dialog dialog = new Dialog(); |
| | | |
| | |
| | | value = "true", |
| | | } |
| | | }; |
| | | input.addCondition = true; |
| | | |
| | | if (spk == SPK.LightSwitch || spk == SPK.LightRGB || spk == SPK.LightDimming) |
| | | { |
| | | input.condition = new List<SecurityInputCondition>() |
| | | { |
| | | new SecurityInputCondition() |
| | | { |
| | | key = FunctionAttributeKey.OnOff, |
| | | value = "on", |
| | | } |
| | | }; |
| | | } |
| | | |
| | | |
| | | var localInput = alarm.input.Find((obj) => |
| | | obj.sid == input.sid |
| | | ); |
| | | if (localInput == null) |
| | | alarm.input.Add(input); |
| | | |
| | | if (btnChoose != null) |
| | | { |
| | | btnChoose.IsSelected = true; |
| | |
| | | value = "false", |
| | | } |
| | | }; |
| | | input.addCondition = true; |
| | | |
| | | if (spk == SPK.LightSwitch || spk == SPK.LightRGB || spk == SPK.LightDimming) |
| | | { |
| | | input.condition = new List<SecurityInputCondition>() |
| | | { |
| | | new SecurityInputCondition() |
| | | { |
| | | key = FunctionAttributeKey.OnOff, |
| | | value = "off", |
| | | } |
| | | }; |
| | | } |
| | | |
| | | |
| | | var localInput = alarm.input.Find((obj) => |
| | | obj.sid == input.sid |
| | | ); |
| | | if (localInput == null) |
| | | alarm.input.Add(input); |
| | | |
| | | if (btnChoose != null) |
| | | { |
| | | btnChoose.IsSelected = true; |