From 3f6685c77beeb12baf840733fb890860f4c26e7c Mon Sep 17 00:00:00 2001
From: mac <user@users-MacBook-Pro.local>
Date: 星期四, 25 七月 2024 17:25:59 +0800
Subject: [PATCH] 2024年07月25日17:24:45

---
 HDL_ON/UI/UI2/2-Classification/RoomPage.cs |   99 ++++++++++++++++++++++++++++++++++---------------
 1 files changed, 69 insertions(+), 30 deletions(-)

diff --git a/HDL_ON/UI/UI2/2-Classification/RoomPage.cs b/HDL_ON/UI/UI2/2-Classification/RoomPage.cs
index ab78fd4..7bbf394 100644
--- a/HDL_ON/UI/UI2/2-Classification/RoomPage.cs
+++ b/HDL_ON/UI/UI2/2-Classification/RoomPage.cs
@@ -1,4 +1,6 @@
-锘縰sing System;
+锘�
+using System;
+using System.Collections.Generic;
 using HDL_ON.Entity;
 using HDL_ON.UI.CSS;
 using Shared;
@@ -34,6 +36,12 @@
 
         #endregion
 
+        public override void RemoveFromParent()
+        {
+            base.RemoveFromParent();
+            bodyView = null;
+        }
+
         /// <summary>
         /// 
         /// </summary>
@@ -53,6 +61,7 @@
             deleteAction = delAction;
             this.modifyImageAction = modifyImageAction;
         }
+
         /// <summary>
         /// 閲嶈浇鐣岄潰
         /// </summary>
@@ -60,36 +69,50 @@
         {
             if (bodyView != null)
             {
-                bodyView.RemoveAll();
-                LoadPage();
+                try
+                {
+                    bodyView.RemoveAll();
+                    LoadPage();
+                }
+                catch (Exception ex)
+                {
+                    MainPage.Log($"RoomPage ReloadPage error :\r\n {ex.Message}");
+                }
             }
         }
+
 
         public void LoadPage()
         {
             bodyView.BackgroundColor = CSS_Color.BackgroundColor;
 
-            new TopViewDiv(bodyView,room.roomName).LoadTopView_RoomTop(ReloadRoomName, skipEditPageAction);
+            new TopViewDiv(bodyView, room.roomName).LoadTopView_RoomTop(ReloadRoomName, skipEditPageAction);
 
             functionListView = new VerticalScrolViewLayout()
             {
                 Y = Application.GetRealHeight(64),
-                Height = Application.GetRealHeight(603-12),
+                Height = Application.GetRealHeight(603 - 12),
             };
             bodyView.AddChidren(functionListView);
 
-            foreach (var function in room.GetRoomFunctions(false))
+            var list = room.GetRoomFunctions(false);
+
+
+            foreach (var function in list)
             {
-                if (MainPage.RoomNotSupportFunctionList.Contains( function.spk))
+                if (MainPage.RoomNotSupportFunctionList.Contains(function.spk))
                 {
                     continue;
                 }
+#if DEBUG
+                //throw new ArgumentNullException();
+#endif
 
                 functionListView.AddChidren(new Button() { Height = Application.GetRealHeight(12) });
 
-                if (function.spk == SPK.LightRGB || function.spk == SPK.LightDimming)
+                if (function.spk == SPK.LightRGBW || function.spk == SPK.LightCCT || function.spk == SPK.LightRGB || function.spk == SPK.LightDimming)
                 {
-                    var functionDiv = new FunctionControlZone(function)
+                    var functionDiv = new FunctionControlZone(function, null)
                     {
                         Gravity = Gravity.CenterHorizontal,
                         Width = Application.GetRealWidth(343),
@@ -105,7 +128,11 @@
                 }
                 else
                 {
-                    var functionDiv = new FunctionControlZone(function)
+                    
+                    var functionDiv = new FunctionControlZone(function, () =>
+                    {
+                        this.ReLoadPage(); //鍒犻櫎璁惧鍚庨噸鏂板埛鏂癠I
+                    })
                     {
                         Gravity = Gravity.CenterHorizontal,
                         Width = Application.GetRealWidth(343),
@@ -120,22 +147,32 @@
                     functionListView.AddChidren(functionDiv);
                 }
             }
-            foreach (var scene in room.GetRoomScenes(false))
+            try
             {
-                functionListView.AddChidren(new Button() { Height = Application.GetRealHeight(12) });
-                var sceneRow = new FrameLayout()
+                foreach (var scene in room.GetRoomScenes(false))
                 {
-                    Gravity = Gravity.CenterHorizontal,
-                    Width = Application.GetRealWidth(343),
-                    Height = Application.GetRealHeight(116),
-                    Radius = (uint)Application.GetMinRealAverage(12),
-                    BorderColor = 0x00FFFFFF,
-                    BorderWidth = 1,
-                    BackgroundColor = CSS_Color.MainBackgroundColor,
-                    Tag = "Scene-" +  scene.sid
-                };
-                functionListView.AddChidren(sceneRow);
-                LoadSceneRow(sceneRow, scene);
+                    if (scene == null)
+                    {
+                        continue;
+                    }
+                    functionListView.AddChidren(new Button() { Height = Application.GetRealHeight(12) });
+                    var sceneRow = new FrameLayout()
+                    {
+                        Gravity = Gravity.CenterHorizontal,
+                        Width = Application.GetRealWidth(343),
+                        Height = Application.GetRealHeight(116),
+                        Radius = (uint)Application.GetMinRealAverage(12),
+                        BorderColor = 0x00FFFFFF,
+                        BorderWidth = 1,
+                        BackgroundColor = CSS_Color.MainBackgroundColor,
+                        Tag = "Scene-" + scene.sid
+                    };
+                    functionListView.AddChidren(sceneRow);
+                    LoadSceneRow(sceneRow, scene);
+                }
+            }catch (Exception ex)
+            {
+                MainPage.Log($"RoomPage LoadPage Error:{ex.Message}");
             }
         }
 
@@ -147,7 +184,7 @@
         /// </summary>
         public void LoadSceneRow(FrameLayout bodyDiv, Scene scene)
         {
-          var  btnIcon = new Button()
+            var btnIcon = new Button()
             {
                 X = Application.GetRealWidth(10),
                 Y = Application.GetRealHeight(15),
@@ -214,15 +251,15 @@
                 btnName.X = Application.GetRealWidth(52 + 16);
             }
             //鍔犺浇鍦烘櫙鎺у埗浜嬩欢
-            LoadEvent_ControlScene(btnName,btnFromFloor,bodyDiv,scene );
+            LoadEvent_ControlScene(btnName, btnFromFloor, bodyDiv, scene);
 
-            LoadEvent_FunctionCollection(btnCollectionIcon,scene);
+            LoadEvent_FunctionCollection(btnCollectionIcon, scene);
         }
 
         /// <summary>
         /// 鍔犺浇鍔熻兘鏀惰棌鎸夐挳浜嬩欢
         /// </summary>
-        void LoadEvent_FunctionCollection(Button btnCollectionIcon,Scene scene)
+        void LoadEvent_FunctionCollection(Button btnCollectionIcon, Scene scene)
         {
             btnCollectionIcon.MouseUpEventHandler += (sender, e) =>
             {
@@ -233,9 +270,10 @@
         /// <summary>
         /// 鍔犺浇鍦烘櫙鎺у埗浜嬩欢
         /// </summary>
-        void LoadEvent_ControlScene(Button btnName,Button btnFromFloor,FrameLayout bodyDiv, Scene scene)
+        void LoadEvent_ControlScene(Button btnName, Button btnFromFloor, FrameLayout bodyDiv, Scene scene)
         {
-            EventHandler<MouseEventArgs> upEvent = (sender, e) => {
+            EventHandler<MouseEventArgs> upEvent = (sender, e) =>
+            {
                 DriverLayer.Control.Ins.ControlScene(scene);
                 string msg = scene.name + Language.StringByID(StringId.AlreadyOpened);
                 new PublicAssmebly().TipMsgAutoClose(msg, false);
@@ -245,5 +283,6 @@
             bodyDiv.MouseUpEventHandler = upEvent;
         }
 
+
     }
 }

--
Gitblit v1.8.0