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/FunctionPage.cs |  338 ++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 244 insertions(+), 94 deletions(-)

diff --git a/HDL_ON/UI/UI2/2-Classification/FunctionPage.cs b/HDL_ON/UI/UI2/2-Classification/FunctionPage.cs
index 0af5488..c1e7d38 100644
--- a/HDL_ON/UI/UI2/2-Classification/FunctionPage.cs
+++ b/HDL_ON/UI/UI2/2-Classification/FunctionPage.cs
@@ -12,7 +12,7 @@
         /// <summary>
         /// 褰撳墠绐椾綋
         /// </summary>
-        static FrameLayout bodyView;
+        public static FunctionPage bodyView;
         /// <summary>
         /// 妤煎眰閫夋嫨涓嬫媺鍥炬爣
         /// </summary>
@@ -28,18 +28,42 @@
         #endregion
 
         List<Function> functionList;
+        int titleId;
 
+        public Action DelAction;
         public FunctionPage()
         {
             bodyView = this;
             functionList = new List<Function>();
+
         }
 
-        public void LoadPage(int titleId)
+        /// <summary>
+        /// 閲嶈浇鐣岄潰
+        /// </summary>
+        public void ReLoadPage()
         {
+            if (bodyView != null)
+            {
+                try
+                {
+                    bodyView.RemoveAll();
+                    LoadPage(this.titleId);
+                    functionList = new List<Function>();
+                }
+                catch (Exception ex)
+                {
+                    MainPage.Log($"FunctionPage ReloadPage error :\r\n {ex.Message}");
+                }
+            }
+        }
+
+        public void LoadPage(int titleId_out)
+        {
+            this.titleId = titleId_out;
 
             bodyView.BackgroundColor = CSS_Color.BackgroundColor;
-            if (titleId == StringId.Lights)
+            if (titleId == StringId.Lights && !DB_ResidenceData.Instance.HomeGateway.isSupportGroupControl)
             {
                 Action action = () =>
                 {
@@ -60,50 +84,24 @@
                     skipView.LoadPage();
                     MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                 };
-                new TopViewDiv(bodyView, Language.StringByID(titleId)).LoadTopView_LightFunction(action);
+                var topView = new TopViewDiv(bodyView, Language.StringByID(titleId));
+                topView.maginY = 10;
+                topView.LoadTopView_LightFunction(action);
             }
             else
             {
-                new TopViewDiv(bodyView, Language.StringByID(titleId)).LoadTopView();
+                var topView = new TopViewDiv(bodyView, Language.StringByID(titleId));
+                topView.maginY = 10;
+                topView.LoadTopView();
             }
 
-
-
-#if DEBUG
-            //Button testBtn = new Button()
-            //{
-            //    X = Application.GetRealWidth(80),
-            //    Height = Application.GetRealHeight(64),
-            //    BackgroundColor = 0xFFFF0000
-            //};
-            //bodyView.AddChidren(testBtn);
-            //int ddd = 0;
-            //testBtn.MouseUpEventHandler = (sender, e) => {
-            //    ddd++;
-            
-            //        Function function_online = FunctionList.List.GetLightList().Find((obj) => obj.sid == "0001017DB92D2602020100010101");
-            //    if (ddd % 2 == 0)
-            //    {
-            //        function_online.online = true;
-            //    }
-            //    else
-            //    {
-            //        function_online.online = false;
-            //    }
-            //    HomePage.LoadEvent_RefreshDevcieOnline(function_online);
-            //    FunctionPage.UpdataOnline(function_online);
-            //    RoomPage.UpdataOnline(function_online);
-
-
-            //};
-#endif
 
             /// <summary>
             /// 鎴块棿鍐呭鏄剧ず鍖哄煙
             /// </summary>
             var roomFloorChangeView = new FrameLayout()
             {
-                Y = Application.GetRealHeight(64),
+                Y = Application.GetRealHeight(64+10),
                 Height = Application.GetRealHeight(52),
             };
             bodyView.AddChidren(roomFloorChangeView);
@@ -134,25 +132,19 @@
 
             functionListView = new VerticalScrolViewLayout()
             {
-                Y = Application.GetRealHeight(64 + 52),
-                Height = Application.GetRealHeight(603 - 12 - 52),
+                Y = Application.GetRealHeight(64 + 52 +10),
+                Height = Application.GetRealHeight(603 - 12 - 52-10),
             };
             bodyView.AddChidren(functionListView);
 
             if (titleId == StringId.Lights)
             {
+                //functionList.AddRange(FunctionList.List.groupControls);
                 functionList.AddRange(FunctionList.List.GetLightList());
-                var lightScene = FunctionList.List.scenes.FindAll((obj) => obj.sceneType == SceneType.LightScene);
-
-                foreach (var scene in lightScene)
-                {
-                    functionListView.AddChidren(new Button() { Height = Application.GetRealHeight(12) });
-
-                    var sceneRow = new SceneControlZone(scene);
-                    functionListView.AddChidren(sceneRow);
-                    sceneRow.LoadView();
-                }
-
+            }
+            else if(titleId == StringId.HorseRaceLamp)
+            {
+                functionList.AddRange(FunctionList.List.GetSeries());
             }
             else if (titleId == StringId.AC)
             {
@@ -168,7 +160,9 @@
             }
             else if (titleId == StringId.Electric)
             {
+               
                 functionList.AddRange(FunctionList.List.GetElectricals());
+
             }
             else if (titleId == StringId.EnvironmentalScience)
             {
@@ -182,61 +176,217 @@
             {
                 functionList.AddRange(FunctionList.List.GetAirFreshList());
             }
-            functionList.OrderByDescending(o => o.controlCounter).ToList();
+            else if (titleId == StringId.MechanicalArm)
+            {
+                functionList.AddRange(FunctionList.List.GetMechanicalArmList());
+            }
+            else if (titleId == StringId.SecurityMonitoring)
+            {
+                functionList.AddRange(FunctionList.List.GetIpCamImouList());
+            }
+            else if(titleId == StringId.EnergyMonitoring)
+            {
+                functionList.AddRange(FunctionList.List.GetEnergyList());
+            }
+            functionList = functionList.OrderByDescending(o => o.controlCounter).ToList();
 
             ShowFunctionRow(functionList);
 
             LoadDialog_ChangeFloor();
-        }
 
+
+        
+
+        }
+        /// <summary>
+        /// 鏄剧ず鐨勮澶囩殑鎬绘暟
+        /// </summary>
+        int showCount = -1;
         /// <summary>
         /// 鍔犺浇鍔熻兘row
         /// </summary>
-        void ShowFunctionRow(List<Function> showList)
+        void ShowFunctionRow(List<Function> showList, bool isAppend = false)
         {
-            functionListView.RemoveAll();
-            foreach (var function in showList)
-            {
-                if(function.spk == SPK.SensorDryContact|| function.spk == SPK.SensorDryContact2)
-                {
-                    continue;
-                }
-                if (function.spk == SPK.LightRGB || function.spk == SPK.LightDimming)
-                {
-                    var functionDiv = new FunctionControlZone(function)
-                    {
-                        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 = function.spk + function.sid
-                    };
-                    functionDiv.LoadFunctionDiv();
-                    functionListView.AddChidren(functionDiv);
-                }
-                else
-                {
-                    var functionDiv = new FunctionControlZone(function)
-                    {
-                        Gravity = Gravity.CenterHorizontal,
-                        Width = Application.GetRealWidth(343),
-                        Height = Application.GetRealHeight(96),
-                        Radius = (uint)Application.GetMinRealAverage(12),
-                        BorderColor = 0x00FFFFFF,
-                        BorderWidth = 1,
-                        BackgroundColor = CSS_Color.MainBackgroundColor,
-                        Tag = function.spk + function.sid
-                    };
-                    functionDiv.LoadFunctionDiv();
-                    functionListView.AddChidren(functionDiv);
-                }
-                functionListView.AddChidren(new Button() { Height = Application.GetRealHeight(10) });
-            }
-        }
+            var waitPage = new Loading();
+            bodyView.AddChidren(waitPage);
+            waitPage.Start("");
 
+            new System.Threading.Thread(() =>
+            {
+                try
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        if (!isAppend)
+                        {
+                            showCount = -1;
+                            functionListView.RemoveAll();
+                            #region 鍔犺浇缁勫悎璋冨厜鍦烘櫙
+                            if (titleId == StringId.Lights)
+                            {
+                                foreach (var lightScene in FunctionList.List.scenes)
+                                {
+                                    if (lightScene.sceneType == SceneType.LightScene)
+                                        if (lightScene != null)
+                                        {
+                                            var sceneRow = new SceneControlZone(lightScene);
+                                            functionListView.AddChidren(sceneRow);
+                                            sceneRow.LoadView();
+                                            functionListView.AddChidren(new Button() { Height = Application.GetRealHeight(12) });
+                                        }
+                                }
+                            }
+                            #endregion
+                        }
+                        for (var i = 0;i<50;i++)
+                        //foreach (var function in showList)
+                        {
+                            showCount++;
+                            if (showCount >= showList.Count)
+                            {
+                                break;
+                            }
+                            var function = showList[showCount];
+
+                            if (function.spk == SPK.SensorDryContact || function.spk == SPK.SensorDryContact2)
+                            {
+                                continue;
+                            }
+                            if (function.spk == SPK.LightCCT || function.spk == SPK.LightRGBW || function.spk == SPK.LightRGB || function.spk == SPK.LightDimming)
+                            {
+                                var functionDiv = new FunctionControlZone(function,null)
+                                {
+                                    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 = function.spk + function.sid
+                                };
+                                functionDiv.LoadFunctionDiv();
+                                functionDiv.OrderEvent = OrderEvent;
+                                functionListView.AddChidren(functionDiv);
+                            }
+                            else if (function.spk == SPK.IpCam_Imou)
+                            {
+                                var functionDiv = new FunctionControlZone(function,null)
+                                {
+                                    Gravity = Gravity.CenterHorizontal,
+                                    Width = Application.GetRealWidth(343),
+                                    Height = Application.GetRealHeight(96),
+                                    Radius = (uint)Application.GetMinRealAverage(12),
+                                    BorderColor = 0x00FFFFFF,
+                                    BorderWidth = 1,
+                                    BackgroundColor = CSS_Color.MainBackgroundColor,
+                                    Tag = function.spk + function.sid
+                                };
+                                functionDiv.LoadFunctionDiv();
+                                functionListView.AddChidren(functionDiv);
+
+                            }
+                            else if (function.spk == SPK.ElectricalTvHisense)
+                            {
+                                Action deviceDelAction = () =>
+                                {
+                                    //鍒犻櫎璁惧鎴愬姛鍚庢洿鏂癠I
+                                    if (functionListView==null) {
+                                        return;
+                                    }
+                                    functionListView.RemoveAll();
+                                    showList.Remove(function);//鍏堢Щ闄�
+                                    ShowFunctionRow(showList,isAppend);
+                                    this.DelAction?.Invoke();
+
+                                };
+                                var functionDiv = new FunctionControlZone(function, deviceDelAction) 
+                                {
+                                    Gravity = Gravity.CenterHorizontal,
+                                    Width = Application.GetRealWidth(343),
+                                    Height = Application.GetRealHeight(96),
+                                    Radius = (uint)Application.GetMinRealAverage(12),
+                                    BorderColor = 0x00FFFFFF,
+                                    BorderWidth = 1,
+                                    BackgroundColor = CSS_Color.MainBackgroundColor,
+                                    Tag = function.spk + function.sid
+                                };
+                                functionDiv.LoadFunctionDiv();
+                                functionDiv.OrderEvent = OrderEvent;
+                                functionListView.AddChidren(functionDiv);
+                            }
+                            else
+                            {
+                                var functionDiv = new FunctionControlZone(function, null)
+                                {
+                                    Gravity = Gravity.CenterHorizontal,
+                                    Width = Application.GetRealWidth(343),
+                                    Height = Application.GetRealHeight(96),
+                                    Radius = (uint)Application.GetMinRealAverage(12),
+                                    BorderColor = 0x00FFFFFF,
+                                    BorderWidth = 1,
+                                    BackgroundColor = CSS_Color.MainBackgroundColor,
+                                    Tag = function.spk + function.sid
+                                };
+                                functionDiv.LoadFunctionDiv();
+                                functionDiv.OrderEvent = OrderEvent;
+                                functionListView.AddChidren(functionDiv);
+                            }
+                            functionListView.AddChidren(new Button() { Height = Application.GetRealHeight(10) });
+                        }
+                        if (showList.Count > showCount)
+                        {
+                            var btnAppend = new Button()
+                            {
+                                Height = Application.GetRealHeight(60),
+                                TextAlignment = TextAlignment.Center,
+                                TextSize = CSS_FontSize.SubheadingFontSize,
+                                TextColor = CSS_Color.FirstLevelTitleColor,
+                                TextID = StringId.LoadMore,
+                            };
+                            functionListView.AddChidren(btnAppend);
+                            btnAppend.MouseUpEventHandler = (sender, e) =>
+                            {
+                                btnAppend.RemoveFromParent();
+                                ShowFunctionRow(showList, true);
+                            };
+                        }
+
+                    });
+                }
+                catch (Exception ex)
+                {
+                    MainPage.Log("ShowFunctionRowError : " + ex.Message);
+                }
+                finally
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        if (waitPage != null)
+                        {
+                            waitPage.RemoveFromParent();
+                            waitPage = null;
+                        }
+                    });
+                }
+            })
+            { IsBackground = true }.Start();
+        }
+        /// <summary>
+        /// 鎺掑簭浜嬩欢
+        /// </summary>
+        void OrderEvent()
+        {
+            Action action = () =>
+            {
+                functionList = functionList.OrderBy(o => o.FunctionOrderNumber).ToList();
+                ShowFunctionRow(functionList);
+            };
+            var skipView = new OrderFunctionPage();
+            MainPage.BasePageView.AddChidren(skipView);
+            skipView.LoadPage(functionList, action);
+            MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+        }
 
         ///// <summary>
         ///// 鍔犺浇鍔熻兘绫诲瀷鎺у埗鍗$墖

--
Gitblit v1.8.0