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/FuntionControlView/Light/LightScene/AddLightScene.cs |  317 ++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 221 insertions(+), 96 deletions(-)

diff --git a/HDL_ON/UI/UI2/FuntionControlView/Light/LightScene/AddLightScene.cs b/HDL_ON/UI/UI2/FuntionControlView/Light/LightScene/AddLightScene.cs
index c462573..746471b 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Light/LightScene/AddLightScene.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Light/LightScene/AddLightScene.cs
@@ -25,6 +25,10 @@
         /// </summary>
         Button btnFloor;
         /// <summary>
+        /// 鍏ㄩ�夋寜閽�
+        /// </summary>
+        Button btnChooseAll;
+        /// <summary>
         /// 鍔熻兘鍒楄〃闆嗗悎鏄剧ず鍖哄煙
         /// </summary>
         static VerticalScrolViewLayout functionListView;
@@ -89,15 +93,46 @@
             btnFloor = new Button()
             {
                 X = btnFloorDownIcon.Right,
-                Y = Application.GetRealHeight(18),
+                //Y = Application.GetRealHeight(18),
                 Width = Application.GetRealWidth(200),
-                Height = Application.GetMinRealAverage(16),
+                //Height = Application.GetMinRealAverage(16+18*2),
                 TextColor = CSS_Color.FirstLevelTitleColor,
                 TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                 TextAlignment = TextAlignment.CenterLeft,
                 Text = DB_ResidenceData.Instance.CurFloor.roomName,
             };
             roomFloorChangeView.AddChidren(btnFloor);
+
+            btnChooseAll = new Button()
+            {
+                X = Application.GetRealWidth(245),
+                Width = Application.GetRealWidth(109),
+                TextAlignment = TextAlignment.CenterRight,
+                TextSize = CSS_FontSize.TextFontSize,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextID = StringId.SelectedAll,
+            };
+            if(sceneLishtList.Count>0)
+            {
+                btnChooseAll.TextID = StringId.Cancel;
+            }
+            roomFloorChangeView.AddChidren(btnChooseAll);
+            btnChooseAll.MouseUpEventHandler = (sender, e) => {
+                if (sceneLishtList.Count > 0)
+                {
+                    sceneLishtList.Clear();
+                    btnChooseAll.TextID = StringId.SelectAll;
+                    btnConfrim.IsSelected = false;
+                }
+                else
+                {
+                    sceneLishtList.AddRange(lightList);
+                    btnChooseAll.TextID = StringId.Cancel;
+                    btnConfrim.IsSelected = true;
+                }
+                LoadLightRow(lightList);
+            };
+
             #endregion
 
             functionListView = new VerticalScrolViewLayout()
@@ -157,44 +192,107 @@
         }
 
         /// <summary>
+        /// 鏄剧ず鐨勮澶囩殑鎬绘暟
+        /// </summary>
+        int showCount = -1;
+
+        /// <summary>
         /// 鍔犺浇鍔熻兘row
         /// </summary>
         /// <param name="lightList"></param>
-        void LoadLightRow(List<Function> functions)
+        void LoadLightRow(List<Function> functions, bool isAppend = false)
         {
-            functionListView.RemoveAll();
+            var waitPage = new Loading();
+            bodyView.AddChidren(waitPage);
+            waitPage.Start("");
 
-            foreach (var function in functions)
+            new System.Threading.Thread(() =>
             {
-                var functionDiv = new LightRow(function)
+                try
                 {
-                    Gravity = Gravity.CenterHorizontal,
-                    Width = Application.GetRealWidth(343),
-                    Height = Application.GetRealHeight(62),
-                    Radius = (uint)Application.GetMinRealAverage(12),
-                    BorderColor = 0x00FFFFFF,
-                    BorderWidth = 1,
-                    BackgroundColor = CSS_Color.MainBackgroundColor,
-                    Tag = function.spk + function.sid
-                };
+                    Application.RunOnMainThread(() =>
+                    {
+                        if (!isAppend)
+                        {
+                            showCount = -1;
+                            functionListView.RemoveAll();
+                        }
+                        for(var i =0;i<100;i++)
+                        //foreach (var function in functions)
+                        {
+                            showCount++;
+                            if (showCount >= functions.Count)
+                            {
+                                break;
+                            }
+                            var function = functions[showCount];
 
-                Action setAction = () =>
+                            var functionDiv = new LightRow(function)
+                            {
+                                Gravity = Gravity.CenterHorizontal,
+                                Width = Application.GetRealWidth(343),
+                                Height = Application.GetRealHeight(62),
+                                Radius = (uint)Application.GetMinRealAverage(12),
+                                BorderColor = 0x00FFFFFF,
+                                BorderWidth = 1,
+                                BackgroundColor = CSS_Color.MainBackgroundColor,
+                                Tag = function.spk + function.sid
+                            };
+
+                            Action setAction = () =>
+                            {
+                                if (sceneLishtList.Count > 0)
+                                {
+                                    btnConfrim.IsSelected = true;
+                                }
+                                else
+                                {
+                                    btnConfrim.IsSelected = false;
+                                }
+                            };
+
+                            functionDiv.LoadDiv(sceneLishtList, setAction);
+                            functionListView.AddChidren(functionDiv);
+
+                            functionListView.AddChidren(new Button() { Height = Application.GetRealHeight(12) });
+                        }
+
+                        if (functions.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();
+                                LoadLightRow(functions, true);
+                            };
+                        }
+                    });
+                }
+                catch (Exception ex)
                 {
-                    if (sceneLishtList.Count > 0)
+                    MainPage.Log("ShowFunctionRowError : " + ex.Message);
+                }
+                finally
+                {
+                    Application.RunOnMainThread(() =>
                     {
-                        btnConfrim.IsSelected = true;
-                    }
-                    else
-                    {
-                        btnConfrim.IsSelected = false;
-                    }
-                };
-
-                functionDiv.LoadDiv(sceneLishtList,setAction);
-                functionListView.AddChidren(functionDiv);
-
-                functionListView.AddChidren(new Button() { Height = Application.GetRealHeight(12) });
-            }
+                        if (waitPage != null)
+                        {
+                            waitPage.RemoveFromParent();
+                            waitPage = null;
+                        }
+                    });
+                }
+            })
+            { IsBackground = true }.Start();
 
         }
 
@@ -211,6 +309,21 @@
                 var form = new FloorRoomSelectPopupView();
                 form.ShowDeviceFunctionView(btnFloor, this.lightList, (selectId, listFunc) =>
                 {
+                    btnChooseAll.MouseUpEventHandler = (sender2, e2) => {
+                        if (sceneLishtList.Count > 0)
+                        {
+                            sceneLishtList.Clear();
+                            btnChooseAll.TextID = StringId.SelectAll;
+                            btnConfrim.IsSelected = false;
+                        }
+                        else
+                        {
+                            sceneLishtList.AddRange(listFunc);
+                            btnChooseAll.TextID = StringId.Cancel;
+                            btnConfrim.IsSelected = true;
+                        }
+                        LoadLightRow(listFunc);
+                    };
                     nowSelectId = selectId;
                     //閲嶆柊鍔犺浇鐣岄潰
                     LoadLightRow(listFunc);
@@ -259,79 +372,91 @@
         /// </summary>
         public void LoadDiv(List<Function> functions,Action action)
         {
-            btnIcon = new Button()
+            try
             {
-                X = Application.GetRealWidth(10),
-                Y = Application.GetRealHeight(15),
-                Width = Application.GetRealWidth(32),
-                Height = Application.GetRealWidth(32),
-                UnSelectedImagePath = $"FunctionIcon/Icon/{function.IconName}.png"
-            };
-            bodyDiv.AddChidren(btnIcon);
-
-            btnName = new Button()
-            {
-                X = Application.GetRealWidth(8 + 10 + 32),
-                Y = Application.GetRealHeight(10),
-                Width = Application.GetRealWidth(200),
-                Height = Application.GetRealHeight(24),
-                Text = function.name,
-                TextAlignment = TextAlignment.CenterLeft,
-                TextColor = CSS_Color.FirstLevelTitleColor,
-                TextSize = CSS_FontSize.TextFontSize,
-            };
-            bodyDiv.AddChidren(btnName);
-
-            btnFromFloor = new Button()
-            {
-                X = Application.GetRealWidth(8 + 10 + 32),
-                Y = Application.GetRealHeight(10 + 24),
-                Width = Application.GetRealWidth(200),
-                Height = Application.GetRealHeight(18),
-                Text = function.GetRoomListName(),
-                TextAlignment = TextAlignment.CenterLeft,
-                TextColor = CSS_Color.PromptingColor1,
-                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-            };
-            bodyDiv.AddChidren(btnFromFloor);
-
-            btnSelect = new Button()
-            {
-                X = Application.GetRealWidth(303),
-                Gravity = Gravity.CenterVertical,
-                Width = Application.GetRealWidth(32),
-                Height = Application.GetRealWidth(32),
-                UnSelectedImagePath = "FunctionIcon/Light/LightScene/CheckIcon.png",
-                SelectedImagePath = "FunctionIcon/Light/LightScene/CheckOnIcon.png",
-                IsSelected = functions.Find((obj) => obj.deviceId == function.deviceId) != null
-            };
-            bodyDiv.AddChidren(btnSelect);
-            
-            btnSelect.MouseUpEventHandler = (sender, e) => {
-                btnSelect.IsSelected = !btnSelect.IsSelected;
-                if(btnSelect.IsSelected)
+                btnIcon = new Button()
                 {
-                    var addTemp = functions.Find((obj) => obj.deviceId == function.deviceId);
-                    if (addTemp == null)
-                    {
-                        functions.Add(function);
-                    }
+                    X = Application.GetRealWidth(10),
+                    Y = Application.GetRealHeight(15),
+                    Width = Application.GetRealWidth(32),
+                    Height = Application.GetRealWidth(32),
+                    UnSelectedImagePath = $"FunctionIcon/Icon/{function.IconName}.png"
+                };
+                bodyDiv.AddChidren(btnIcon);
+
+                btnName = new Button()
+                {
+                    X = Application.GetRealWidth(8 + 10 + 32),
+                    Y = Application.GetRealHeight(10),
+                    Width = Application.GetRealWidth(200),
+                    Height = Application.GetRealHeight(24),
+                    Text = function.name,
+                    TextAlignment = TextAlignment.CenterLeft,
+                    TextColor = CSS_Color.FirstLevelTitleColor,
+                    TextSize = CSS_FontSize.TextFontSize,
+                };
+                bodyDiv.AddChidren(btnName);
+
+                btnFromFloor = new Button()
+                {
+                    X = Application.GetRealWidth(8 + 10 + 32),
+                    Y = Application.GetRealHeight(10 + 24),
+                    Width = Application.GetRealWidth(200),
+                    Height = Application.GetRealHeight(18),
+                    Text = function.GetRoomListName(),
+                    TextAlignment = TextAlignment.CenterLeft,
+                    TextColor = CSS_Color.PromptingColor1,
+                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                };
+                bodyDiv.AddChidren(btnFromFloor);
+
+                btnSelect = new Button()
+                {
+                    X = Application.GetRealWidth(303),
+                    Gravity = Gravity.CenterVertical,
+                    Width = Application.GetRealWidth(32),
+                    Height = Application.GetRealWidth(32),
+                    UnSelectedImagePath = "FunctionIcon/Light/LightScene/CheckIcon.png",
+                    SelectedImagePath = "FunctionIcon/Light/LightScene/CheckOnIcon.png",
+                    IsSelected = functions.Find((obj) => obj.deviceId == function.deviceId) != null,
+                    Tag = "ChooseIcon"
+                };
+                if (DB_ResidenceData.Instance.HomeGateway.isSupportGroupControl)
+                {
+                    btnSelect.X = Application.GetRealWidth(323);
                 }
-                else
+                bodyDiv.AddChidren(btnSelect);
+
+                btnSelect.MouseUpEventHandler = (sender, e) =>
                 {
-                    var removeTemp = functions.Find((obj) => obj.deviceId == function.deviceId);
-                    if (removeTemp != null)
+                    Application.HideSoftInput();
+                    btnSelect.IsSelected = !btnSelect.IsSelected;
+                    if (btnSelect.IsSelected)
                     {
-                        functions.Remove(removeTemp);
+                        var addTemp = functions.Find((obj) => obj.deviceId == function.deviceId);
+                        if (addTemp == null)
+                        {
+                            functions.Add(function);
+                        }
                     }
-                }
-                ///鍒锋柊鐣岄潰
-                if (functions.Count == 0 || functions.Count == 1)
-                {
+                    else
+                    {
+                        var removeTemp = functions.Find((obj) => obj.sid == function.sid);
+                        if (removeTemp != null)
+                        {
+                            functions.Remove(removeTemp);
+                        }
+                    }
+                    ///鍒锋柊鐣岄潰
+                    //if (functions.Count == 0 || functions.Count == 1)
+                    //{
                     action();
-                }
-            };
+                    //}
+                };
+            }catch (Exception ex)
+            {
 
+            }
         }
 
 
@@ -405,7 +530,7 @@
             {
                 if (!commandDic.ContainsKey(FunctionAttributeKey.Brightness))
                 {
-                    commandDic.Add(FunctionAttributeKey.Brightness, lightCCT[0].GetAttrState(FunctionAttributeKey.Brightness));
+                    commandDic.Add(FunctionAttributeKey.Brightness, lightDimming[0].GetAttrState(FunctionAttributeKey.Brightness));
                 }
             }
 

--
Gitblit v1.8.0