wxr
2021-11-30 358044c907e0e492b26377b21ca5091d19b503c8
HDL_ON/UI/UI2/FuntionControlView/ArmCenter/AddOutputPage.cs
@@ -29,6 +29,22 @@
    VerticalScrolViewLayout functionListView;
<<<<<<< HEAD
        Action<SecurityAlarm> refreshAction;
        /// <summary>
        /// 本地功能转换的输出列表(灯光、场景)
        /// </summary>
        List<SecurityOutput> allocatedList = new List<SecurityOutput>();
        SecurityAlarm alarm;
        public AddOutputPage(SecurityAlarm inOutput ,Action<SecurityAlarm> action)
        {
            bodyView = this;
            refreshAction = action;
            alarm = inOutput;
        }
=======
    SecurityAlarm securityAlarm;
    Action<SecurityAlarm> refreshAction;
    List<SecurityOutput> outputList = new List<SecurityOutput>();
@@ -41,6 +57,7 @@
      securityAlarm = function;
      refreshAction = action;
    }
>>>>>>> WJC
    /// <summary>
@@ -103,6 +120,88 @@
      {
        if (!MainPage.SceneSupportFunctionList.Contains(function.spk))
        {
<<<<<<< HEAD
            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
            new TopViewDiv(bodyView, Language.StringByID(StringId.AddFunction)).LoadTopView();
            #region 显示的功能类型切换区域
            showdFunctionTypeRow = new FrameLayout()
            {
                Y = Application.GetRealHeight(64),
                Height = Application.GetRealHeight(62),
                BackgroundColor = CSS_Color.MainBackgroundColor,
            };
            bodyView.AddChidren(showdFunctionTypeRow);
            btnFloorDownIcon = new Button()
            {
                Width = Application.GetMinRealAverage(16),
                Height = Application.GetMinRealAverage(16),
                X = Application.GetRealWidth(16),
                Y = Application.GetRealHeight(18),
                UnSelectedImagePath = "Public/DownIcon.png",
            };
            showdFunctionTypeRow.AddChidren(btnFloorDownIcon);
            btnFloor = new Button()
            {
                X = btnFloorDownIcon.Right,
                Y = Application.GetRealHeight(18),
                Width = Application.GetRealWidth(200),
                Height = Application.GetMinRealAverage(16),
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                TextAlignment = TextAlignment.CenterLeft,
                Text = DB_ResidenceData.Instance.CurFloor.roomName,
            };
            showdFunctionTypeRow.AddChidren(btnFloor);
            LoadDialog_ChangeFloor();
            #endregion
            functionListView = new VerticalScrolViewLayout()
            {
                Y = showdFunctionTypeRow.Bottom,
                Height = Application.GetRealHeight(530 -100),
                BackgroundColor = CSS_Color.BackgroundColor,
            };
            bodyView.AddChidren(functionListView);
            SetData();
            LoadFunctionListRow();
            var bottomView = new FrameLayout()
            {
                Y = Application.GetRealHeight(591),
                Height = Application.GetRealHeight(100),
                BackgroundColor = CSS_Color.MainBackgroundColor,
                Radius = (uint)Application.GetRealWidth(22),
            };
            this.AddChidren(bottomView);
            var btnConfrim = new Button()
            {
                X = Application.GetRealWidth(78),
                Y = Application.GetRealHeight(12),
                Width = Application.GetRealWidth(220),
                Height = Application.GetRealWidth(44),
                Radius = (uint)Application.GetRealWidth(22),
                BackgroundColor = CSS_Color.MainColor,
                TextID = StringId.Confirm,
                TextSize = CSS_FontSize.SubheadingFontSize,
                TextColor = CSS_Color.MainBackgroundColor,
                TextAlignment = TextAlignment.Center,
            };
            bottomView.AddChidren(btnConfrim);
            btnConfrim.MouseUpEventHandler = (sender, e) =>
            {
                this.RemoveFromParent();
                refreshAction?.Invoke(alarm);
            };
=======
          continue;
        }
        if (function == null)
@@ -161,12 +260,72 @@
>>>>>>> WJC
        }
<<<<<<< HEAD
        /// <summary>
        /// 配置数据
        /// </summary>
        void SetData(string roomId="")
        {
            allocatedList.Clear();
            foreach (var function in FunctionList.List.GetLightList())
            {
                if (function == null)
                {
                    continue;
                }
                if (!string.IsNullOrEmpty(roomId) && roomId == "ALLSELECT")
                {
                    if (!function.roomIds.Contains(roomId))
                    {
                        continue;
                    }
                }
                function.roomIds.Remove(null);
                var tempStatus = new List<SecurityOutputStatus>();
                tempStatus.Add(new SecurityOutputStatus() { key = FunctionAttributeKey.OnOff, value = "on" });
                allocatedList.Add(new SecurityOutput
                {
                    target_type = "0",
                    sid = function.sid,
                    status = tempStatus,
                    name = function.name,
                    RoomName = function.GetRoomListName(),
                });
            }
=======
    }
>>>>>>> WJC
            foreach (var scene in FunctionList.List.scenes)
            {
                if (scene == null)
                {
                    continue;
                }
                if (!string.IsNullOrEmpty(roomId))
                {
                    if (!scene.roomIds.Contains(roomId))
                    {
                        continue;
                    }
                }
                scene.roomIds.Remove(null);
                var tempStatus = new List<SecurityOutputStatus>();
                tempStatus.Add(new SecurityOutputStatus() { key = "value", value = "0" });
                allocatedList.Add(new SecurityOutput
                {
                    target_type = "1",
                    sid = scene.sid,
                    status = tempStatus,
                    name = scene.name,
                    RoomName = scene.GetRoomListName(),
                });
            }
    // <summary>
    /// 显示功能Row
@@ -233,6 +392,125 @@
        };
        functionRow.AddChidren(btnState);
<<<<<<< HEAD
        // <summary>
        /// 显示功能Row
        /// </summary>
        void LoadFunctionListRow()
        {
            functionListView.RemoveAll();
            foreach (var function in allocatedList)
            {
                var output = alarm.output.Find((obj) => obj.sid == function.sid);
                if (output == null)
                {
                    output = new SecurityOutput() { status = new List<SecurityOutputStatus> { new SecurityOutputStatus {
                         key = FunctionAttributeKey.OnOff,
                         value = "on"
                    } } };
                    output.sid = function.sid;
                }
                //else
                //{
                //    output.addCondition = true;
                //}
                FrameLayout functionRow = new FrameLayout()
                {
                    Height = Application.GetRealHeight(65),
                    BackgroundColor = CSS_Color.MainBackgroundColor,
                };
                functionListView.AddChidren(functionRow);
                var btnFunctionName = new Button()
                {
                    X = Application.GetRealWidth(16),
                    Width = Application.GetRealWidth(200),
                    Height = Application.GetRealHeight(44),
                    Text = function.name,
                    TextAlignment = TextAlignment.CenterLeft,
                    TextColor = CSS_Color.FirstLevelTitleColor,
                    TextSize = CSS_FontSize.TextFontSize,
                };
                functionRow.AddChidren(btnFunctionName);
                var btnFunctionFloorName = new Button()
                {
                    X = Application.GetRealWidth(16),
                    Y = Application.GetRealHeight(24),
                    Width = Application.GetRealWidth(200),
                    Height = Application.GetRealHeight(41),
                    Text = function.RoomName,
                    TextAlignment = TextAlignment.CenterLeft,
                    TextColor = CSS_Color.PromptingColor1,
                    TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
                };
                functionRow.AddChidren(btnFunctionFloorName);
                Button btnState = new Button()
                {
                    Width = Application.GetRealWidth(317),
                    TextAlignment = TextAlignment.CenterRight,
                    TextSize = CSS_FontSize.TextFontSize,
                    TextColor = CSS_Color.PromptingColor1,
                };
                functionRow.AddChidren(btnState);
                Button btnChooseIcon = new Button()
                {
                    X = Application.GetRealWidth(333),
                    Gravity = Gravity.CenterVertical,
                    Width = Application.GetMinRealAverage(32),
                    Height = Application.GetMinRealAverage(32),
                    UnSelectedImagePath = "Public/ChooseIcon.png",
                    SelectedImagePath = "Public/ChooseOnIcon.png",
                };
                functionRow.AddChidren(btnChooseIcon);
                btnChooseIcon.MouseUpEventHandler = (sender, e) => {
                    btnChooseIcon.IsSelected = !btnChooseIcon.IsSelected;
                    var tempLocal = alarm.input.Find((obj) =>
                        obj.sid == output.sid
                    );
                    if (btnChooseIcon.IsSelected)
                    {
                        //input.addCondition = true;
                        if (tempLocal == null)
                            alarm.output.Add(output);
                    }
                    else
                    {
                        //input.addCondition = false;
                        if (tempLocal != null)
                        {
                            alarm.output.Remove(output);
                        }
                    }
                };
                btnState.MouseUpEventHandler = (sender, e) =>
                {
                    ShowStateDialog(output, btnState, btnChooseIcon);
                };
                var localOutput = alarm.output.Find((obj) => obj.sid == output.sid);
                if (localOutput!=null)
                {
                    btnChooseIcon.IsSelected = true;
                    btnState.Text = output.StateText();
                }
                functionListView.AddChidren(new Button()
                {
                    Gravity = Gravity.CenterHorizontal,
                    Width = Application.GetRealWidth(343),
                    Height = Application.GetRealWidth(1),
                    BackgroundColor = CSS_Color.DividingLineColor,
                });
=======
        Button btnChooseIcon = new Button()
        {
@@ -265,6 +543,7 @@
        {
          ShowStateDialog(output, btnState, btnChooseIcon);
        };
>>>>>>> WJC
        if (output.addCondition)
@@ -274,7 +553,11 @@
        }
<<<<<<< HEAD
        private void ShowStateDialog(SecurityOutput output, Button btnState, Button btnChoose = null)
=======
        functionListView.AddChidren(new Button()
>>>>>>> WJC
        {
          Gravity = Gravity.CenterHorizontal,
          Width = Application.GetRealWidth(343),
@@ -283,9 +566,54 @@
        });
<<<<<<< HEAD
            VerticalScrolViewLayout optinView = new VerticalScrolViewLayout()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(515),
                Width = Application.GetRealWidth(343),
                Height = Application.GetRealHeight(88),
                Radius = (uint)Application.GetRealHeight(13),
                BackgroundColor = CSS_Color.MainBackgroundColor,
            };
            contentView.AddChidren(optinView);
            Button btnOpen = new Button()
            {
                Height = Application.GetRealHeight(44),
                TextAlignment = TextAlignment.Center,
                SelectedTextColor = CSS_Color.MainColor,
                TextColor = CSS_Color.PromptingColor1,
                TextSize = CSS_FontSize.SubheadingFontSize,
                TextID = StringId.On,
            };
            optinView.AddChidren(btnOpen);
            optinView.AddChidren(new Button()
            {
                Height = 1,
                BackgroundColor = CSS_Color.DividingLineColor
            });
            Button btnClose = new Button()
            {
                Height = Application.GetRealHeight(44),
                TextAlignment = TextAlignment.Center,
                SelectedTextColor = CSS_Color.MainColor,
                TextColor = CSS_Color.PromptingColor1,
                TextID = StringId.OFF,
                TextSize = CSS_FontSize.SubheadingFontSize,
            };
            optinView.AddChidren(btnClose);
            if (output.status.Count > 0)
            {
                btnOpen.IsSelected =  output.status[0].value.ToLower() == "on";
                btnClose.IsSelected = !btnOpen.IsSelected;
            }
=======
      }
    }
>>>>>>> WJC
    private void ShowStateDialog(SecurityOutput output, Button btnState, Button btnChoose = null)
@@ -371,6 +699,23 @@
                        value = "on",
                    }
                };
<<<<<<< HEAD
                var localInput = alarm.output.Find((obj) =>
                   obj.sid == output.sid
                );
                if (localInput == null)
                {
                    btnChoose.IsSelected = true;
                }
                dialog.Close();
            };
            btnClose.MouseUpEventHandler = (sender, e) =>
            {
                btnState.Text = btnClose.Text;
                output.status = new List<SecurityOutputStatus>()
                {
=======
        output.addCondition = true;
        if (btnChoose != null)
        {
@@ -384,16 +729,44 @@
        btnState.Text = btnClose.Text;
        output.status = new List<SecurityOutputStatus>()
          {
>>>>>>> WJC
                    new SecurityOutputStatus()
                    {
                        key = FunctionAttributeKey.OnOff,
                        value = "off",
                    }
<<<<<<< HEAD
                };
                var localInput = alarm.output.Find((obj) =>
                 obj.sid == output.sid
                );
                if (localInput == null)
                {
                    btnChoose.IsSelected = true;
                }
                dialog.Close();
            };
            btnCancel.MouseUpEventHandler = (sender, e) =>
            {
                dialog.Close();
                if (output.status.Count == 0)
                {
                    if (btnChoose != null)
                    {
                        btnChoose.IsSelected = false;
                    }
                }
            };
=======
          };
        output.addCondition = true;
        if (btnChoose != null)
        {
          btnChoose.IsSelected = true;
>>>>>>> WJC
        }
        dialog.Close();
      };
@@ -413,7 +786,31 @@
    }
<<<<<<< HEAD
        /// <summary>
        /// 住宅列表点击事件
        /// </summary>
        void LoadDialog_ChangeFloor()
        {
            string nowSelectId = null;
            btnFloor.MouseUpEventHandler = (sender, e) =>
            {
                var listAllFun = new List<Function>();
                //listAllFun.AddRange(allocatedList);
                //显示下拉界面
                var form = new FloorRoomSelectPopupView();
                form.ShowDeviceFunctionView(btnFloor, listAllFun, (selectId, listFun) =>
                {
                    SetData(selectId);
                    //重新刷新设备列表
                    this.LoadFunctionListRow();
                }, nowSelectId);
            };
        }
=======
>>>>>>> WJC
    /// <summary>