From e75ccccb370b47305c6eadb321efb27c86cdd28b Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期二, 30 十一月 2021 09:57:24 +0800
Subject: [PATCH] 合并

---
 HDL_ON/UI/UI2/FuntionControlView/ArmCenter/AddOutputPage.cs |  194 +++++++++++++++++++++++++++++-------------------
 1 files changed, 118 insertions(+), 76 deletions(-)

diff --git a/HDL_ON/UI/UI2/FuntionControlView/ArmCenter/AddOutputPage.cs b/HDL_ON/UI/UI2/FuntionControlView/ArmCenter/AddOutputPage.cs
index 9aac9de..5647415 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/ArmCenter/AddOutputPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/ArmCenter/AddOutputPage.cs
@@ -29,17 +29,19 @@
 
         VerticalScrolViewLayout functionListView;
 
-        SecurityAlarm securityAlarm;
         Action<SecurityAlarm> refreshAction;
-        List<SecurityOutput> outputList = new List<SecurityOutput>();
+        /// <summary>
+        /// 鏈湴鍔熻兘杞崲鐨勮緭鍑哄垪琛紙鐏厜銆佸満鏅級
+        /// </summary>
+        List<SecurityOutput> allocatedList = new List<SecurityOutput>();
 
-        List<Function> allocatedList = new List<Function>();
+        SecurityAlarm alarm;
 
-        public AddOutputPage(SecurityAlarm function, Action<SecurityAlarm> action)
+        public AddOutputPage(SecurityAlarm inOutput ,Action<SecurityAlarm> action)
         {
             bodyView = this;
-            securityAlarm = function;
             refreshAction = action;
+            alarm = inOutput;
         }
 
 
@@ -83,6 +85,7 @@
                 Text = DB_ResidenceData.Instance.CurFloor.roomName,
             };
             showdFunctionTypeRow.AddChidren(btnFloor);
+            LoadDialog_ChangeFloor();
 
             #endregion
 
@@ -95,31 +98,9 @@
             bodyView.AddChidren(functionListView);
 
 
+            SetData();
 
-
-
-
-            foreach (var function in FunctionList.List.Functions)
-            {
-                if (!MainPage.SceneSupportFunctionList.Contains(function.spk))
-                {
-                    continue;
-                }
-                if (function == null)
-                {
-                    continue;
-                }
-                function.roomIds.Remove(null);
-                    allocatedList.Add(function);
-            }
-
-            LoadFunctionListRow(null);
-
-
-
-
-
-
+            LoadFunctionListRow();
 
             var bottomView = new FrameLayout()
             {
@@ -146,51 +127,97 @@
             bottomView.AddChidren(btnConfrim);
             btnConfrim.MouseUpEventHandler = (sender, e) =>
             {
-                securityAlarm.output = new List<SecurityOutput>();
-                foreach (var output in outputList)
-                {
-                    if (output.addCondition)
-                    {
-                        securityAlarm.output.Add(output);
-                    }
-                }
                 this.RemoveFromParent();
-                refreshAction?.Invoke(securityAlarm);
+                refreshAction?.Invoke(alarm);
             };
-
-
-
-
-
 
         }
 
+        /// <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(),
+                });
+            }
+
+
+            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
         /// </summary>
-        void LoadFunctionListRow(List<Function> functions)
+        void LoadFunctionListRow()
         {
             functionListView.RemoveAll();
-            if (functions == null)
+            foreach (var function in allocatedList)
             {
-                functions = allocatedList;
-            }
-            foreach (var function in functions)
-            {
-                var output = securityAlarm.output.Find((obj) => obj.sid == function.sid);
+                var output = alarm.output.Find((obj) => obj.sid == function.sid);
                 if (output == null)
                 {
-                    output = new SecurityOutput();
+                    output = new SecurityOutput() { status = new List<SecurityOutputStatus> { new SecurityOutputStatus {
+                         key = FunctionAttributeKey.OnOff,
+                         value = "on"
+                    } } };
+                  
                     output.sid = function.sid;
                 }
-                else
-                {
-                    output.addCondition = true;
-                }
-                outputList.Add(output);
+                //else
+                //{
+                //    output.addCondition = true;
+                //}
 
                 FrameLayout functionRow = new FrameLayout()
                 {
@@ -217,7 +244,7 @@
                     Y = Application.GetRealHeight(24),
                     Width = Application.GetRealWidth(200),
                     Height = Application.GetRealHeight(41),
-                    Text = function.GetRoomListName(),
+                    Text = function.RoomName,
                     TextAlignment = TextAlignment.CenterLeft,
                     TextColor = CSS_Color.PromptingColor1,
                     TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
@@ -247,17 +274,22 @@
 
                 btnChooseIcon.MouseUpEventHandler = (sender, e) => {
                     btnChooseIcon.IsSelected = !btnChooseIcon.IsSelected;
+                    var tempLocal = alarm.input.Find((obj) =>
+                        obj.sid == output.sid
+                    );
                     if (btnChooseIcon.IsSelected)
                     {
-                        output.addCondition = true;
-                        if (output.status.Count == 0)
-                        {
-                            ShowStateDialog(output, btnState,btnChooseIcon);
-                        }
+                        //input.addCondition = true;
+                        if (tempLocal == null)
+                            alarm.output.Add(output);
                     }
                     else
                     {
-                        output.addCondition = false;
+                        //input.addCondition = false;
+                        if (tempLocal != null)
+                        {
+                            alarm.output.Remove(output);
+                        }
                     }
                 };
                 btnState.MouseUpEventHandler = (sender, e) =>
@@ -265,8 +297,9 @@
                     ShowStateDialog(output, btnState, btnChooseIcon);
                 };
 
+                var localOutput = alarm.output.Find((obj) => obj.sid == output.sid);
 
-                if (output.addCondition)
+                if (localOutput!=null)
                 {
                     btnChooseIcon.IsSelected = true;
                     btnState.Text = output.StateText();
@@ -284,7 +317,6 @@
 
             }
         }
-
 
 
         private void ShowStateDialog(SecurityOutput output, Button btnState, Button btnChoose = null)
@@ -320,12 +352,12 @@
             {
                 Height = Application.GetRealHeight(44),
                 TextAlignment = TextAlignment.Center,
-                TextColor = CSS_Color.MainColor,
+                SelectedTextColor = CSS_Color.MainColor,
+                TextColor = CSS_Color.PromptingColor1,
                 TextSize = CSS_FontSize.SubheadingFontSize,
-                TextID = StringId.On
+                TextID = StringId.On,
             };
             optinView.AddChidren(btnOpen);
-
             optinView.AddChidren(new Button()
             {
                 Height = 1,
@@ -336,11 +368,17 @@
             {
                 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;
+            }
 
 
             Button btnCancel = new Button()
@@ -369,8 +407,10 @@
                         value = "on",
                     }
                 };
-                output.addCondition = true;
-                if (btnChoose != null)
+                var localInput = alarm.output.Find((obj) =>
+                   obj.sid == output.sid
+                );
+                if (localInput == null)
                 {
                     btnChoose.IsSelected = true;
                 }
@@ -388,8 +428,10 @@
                         value = "off",
                     }
                 };
-                output.addCondition = true;
-                if (btnChoose != null)
+                var localInput = alarm.output.Find((obj) =>
+                 obj.sid == output.sid
+                );
+                if (localInput == null)
                 {
                     btnChoose.IsSelected = true;
                 }
@@ -420,18 +462,18 @@
         void LoadDialog_ChangeFloor()
         {
             string nowSelectId = null;
-            btnFloor.MouseUpEventHandler += (sender, e) =>
+            btnFloor.MouseUpEventHandler = (sender, e) =>
             {
                 var listAllFun = new List<Function>();
-                listAllFun.AddRange(allocatedList);
+                //listAllFun.AddRange(allocatedList);
 
                 //鏄剧ず涓嬫媺鐣岄潰
                 var form = new FloorRoomSelectPopupView();
                 form.ShowDeviceFunctionView(btnFloor, listAllFun, (selectId, listFun) =>
                 {
-                    nowSelectId = selectId;
+                    SetData(selectId);
                     //閲嶆柊鍒锋柊璁惧鍒楄〃
-                    this.LoadFunctionListRow(listFun);
+                    this.LoadFunctionListRow();
                 }, nowSelectId);
             };
         }

--
Gitblit v1.8.0