From 8108700f67ddbe1724ee0b1000d9e55a844f6f28 Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期二, 30 十一月 2021 15:32:42 +0800
Subject: [PATCH] 提测版本

---
 HDL_ON/UI/UI2/FuntionControlView/ArmCenter/AddOutputPage.cs |  201 ++++++++++++++++++++++++++++++-------------------
 1 files changed, 123 insertions(+), 78 deletions(-)

diff --git a/HDL_ON/UI/UI2/FuntionControlView/ArmCenter/AddOutputPage.cs b/HDL_ON/UI/UI2/FuntionControlView/ArmCenter/AddOutputPage.cs
index 9aac9de..4ff5844 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,43 +85,22 @@
                 Text = DB_ResidenceData.Instance.CurFloor.roomName,
             };
             showdFunctionTypeRow.AddChidren(btnFloor);
+            LoadDialog_ChangeFloor();
 
             #endregion
 
             functionListView = new VerticalScrolViewLayout()
             {
                 Y = showdFunctionTypeRow.Bottom,
-                Height = Application.GetRealHeight(530 -100),
+                Height = Application.GetRealHeight(530 - 100),
                 BackgroundColor = CSS_Color.BackgroundColor,
             };
             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,100 @@
             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 +247,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,
@@ -232,7 +262,7 @@
                     TextColor = CSS_Color.PromptingColor1,
                 };
                 functionRow.AddChidren(btnState);
-              
+
 
                 Button btnChooseIcon = new Button()
                 {
@@ -247,17 +277,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 +300,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 +320,6 @@
 
             }
         }
-
 
 
         private void ShowStateDialog(SecurityOutput output, Button btnState, Button btnChoose = null)
@@ -320,12 +355,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 +371,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 +410,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 +431,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 +465,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