wxr
2021-11-29 dd7e4794fd611de967c6322dd0bb7ffda41c2f7b
HDL_ON/UI/UI2/FuntionControlView/ArmCenter/AddInputPage.cs
@@ -14,13 +14,11 @@
        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;
        }
@@ -65,14 +63,17 @@
                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;
                    //重新刷新设备列表
@@ -86,14 +87,18 @@
            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);
@@ -122,16 +127,8 @@
            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);
            };
            
@@ -150,19 +147,67 @@
                //初始值
                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()
                {
@@ -217,28 +262,53 @@
                };
                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();
@@ -258,7 +328,7 @@
        }
        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();
@@ -340,7 +410,26 @@
                        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;
@@ -359,7 +448,26 @@
                        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;