From 8c28c3f43f91510e3a99189243c17717bdee1a0e Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期四, 20 七月 2023 08:58:04 +0800
Subject: [PATCH] 群控功能迭代

---
 HDL_ON/Entity/Function/Scene.cs                                               |    4 
 HDL_ON/UI/UI2/1-HomePage/HomePage.cs                                          |  294 ++++++++++++++++++++------
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/groupControl_blue.png  |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/groupControl_blue.png   |    0 
 HDL_ON/UI/UI2/3-Intelligence/Scene/SceneEditPage.cs                           |   17 +
 HDL-ON_iOS/HDL-ON_iOS.csproj                                                  |    4 
 HDL-ON_Android/HDL-ON_Android.csproj                                          |    2 
 HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs                                       |  100 ++++++++
 HDL_ON/Entity/Function/Function.cs                                            |   31 ++
 HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs                         |    1 
 HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/AddGroupControlPage.cs         |    6 
 HDL_ON/UI/UI2/FuntionControlView/Light/GroupControlPage_V2.cs                 |   10 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/groupControl_white.png |    0 
 HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs                |   42 ++-
 HDL_ON/UI/MainPage.cs                                                         |   90 ++++---
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/groupControl_white.png  |    0 
 HDL_ON/UI/UI1-Login/LoginPage.cs                                              |    1 
 17 files changed, 450 insertions(+), 152 deletions(-)

diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/GroupControl_blue.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/groupControl_blue.png
similarity index 100%
rename from HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/GroupControl_blue.png
rename to HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/groupControl_blue.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/GroupControl_white.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/groupControl_white.png
similarity index 100%
rename from HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/GroupControl_white.png
rename to HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/groupControl_white.png
Binary files differ
diff --git a/HDL-ON_Android/HDL-ON_Android.csproj b/HDL-ON_Android/HDL-ON_Android.csproj
index 048f6fb..f619aa0 100644
--- a/HDL-ON_Android/HDL-ON_Android.csproj
+++ b/HDL-ON_Android/HDL-ON_Android.csproj
@@ -400,7 +400,7 @@
     <AndroidAsset Include="Assets\Phone\FunctionIcon\DoorLock\VideoDoorLockOpen1.png" />
     <AndroidAsset Include="Assets\Phone\LogicIcon\selectlocation.png" />
     <AndroidAsset Include="Assets\Phone\FunctionIcon\Light\ColorfulBar.png" />
-    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\GroupControl_blue.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\groupControl_blue.png" />
     <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\GroupControl_white.png" />
     <AndroidAsset Include="Assets\h5\index.html" />
     <AndroidAsset Include="Assets\h5\static\index.63b34199.css" />
diff --git a/HDL-ON_iOS/HDL-ON_iOS.csproj b/HDL-ON_iOS/HDL-ON_iOS.csproj
index 69c4f82..e2c88cf 100644
--- a/HDL-ON_iOS/HDL-ON_iOS.csproj
+++ b/HDL-ON_iOS/HDL-ON_iOS.csproj
@@ -1560,8 +1560,8 @@
       <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\VideoDoorlockClose1.png" />
       <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\VideoDoorLockOpen1.png" />
       <BundleResource Include="Resources\Phone\FunctionIcon\Light\ColorfulBar.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\GroupControl_blue.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\GroupControl_white.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\groupControl_blue.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\groupControl_white.png" />
       <BundleResource Include="Resources\h5\index.html" />
       <BundleResource Include="Resources\h5\static\index.63b34199.css" />
       <BundleResource Include="Resources\h5\static\images\coal-save-ic.png" />
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/GroupControl_blue.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/groupControl_blue.png
similarity index 100%
rename from HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/GroupControl_blue.png
rename to HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/groupControl_blue.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/GroupControl_white.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/groupControl_white.png
similarity index 100%
rename from HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/GroupControl_white.png
rename to HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/groupControl_white.png
Binary files differ
diff --git a/HDL_ON/Entity/Function/Function.cs b/HDL_ON/Entity/Function/Function.cs
index 8b52231..8f4f3c3 100644
--- a/HDL_ON/Entity/Function/Function.cs
+++ b/HDL_ON/Entity/Function/Function.cs
@@ -100,7 +100,7 @@
         /// <returns></returns>
         public FunctionAttributes GetAttribute(string key)
         {
-            var attr = attributes.Find((a) => a.key == key);
+            var attr = GetFunctionAttributes().Find((a) => a.key == key);
             return attr;
         }
 
@@ -799,11 +799,36 @@
         public SceneFunction ConvertSceneFunction()
         {
             var sFunc = new SceneFunction();
-            if(spk == SPK.GroupControl)
+
+            var list = new List<FunctionAttributes>();
+            if (spk == SPK.GroupControl)
             {
+                var gc = FunctionList.List.groupControls.Find((obj) => obj.sid == sid);
+                if (gc != null)
+                {
+                    foreach (var temp in gc.sids)
+                    {
+                        var light = FunctionList.List.GetLightList().Find((obj) => obj.sid == temp.sid);
+                        if (light != null)
+                        {
+                            foreach (var attr in light.attributes)
+                            {
+                                if (list.Find((obj) => obj.key == attr.key) == null)
+                                {
+                                    list.Add(attr);
+                                }
+                            }
+                        }
+                    }
+                }
 
             }
-            foreach (var attr in attributes)
+            else
+            {
+                list.AddRange(attributes);
+            }
+
+            foreach (var attr in list)
             {
                 //绐楀笜鍚屾椂鍙戦�佸紑鍏宠窡鐧惧垎姣斾細鏈夐棶棰橈紝
                 if(spk == SPK.CurtainRoller || spk == SPK.CurtainTrietex || spk == SPK.CurtainDream)
diff --git a/HDL_ON/Entity/Function/Scene.cs b/HDL_ON/Entity/Function/Scene.cs
index 1e6d11d..fdf195b 100644
--- a/HDL_ON/Entity/Function/Scene.cs
+++ b/HDL_ON/Entity/Function/Scene.cs
@@ -560,6 +560,10 @@
         private Function ConvertFunctionObject()
         {
             var localFunction = FunctionList.List.GetDeviceFunctionList().Find((obj) => obj.sid == sid);
+            if(localFunction == null)
+            {
+                localFunction = FunctionList.List.groupControls.Find((obj) => obj.sid == sid);
+            }
             return localFunction;
         }
 
diff --git a/HDL_ON/UI/MainPage.cs b/HDL_ON/UI/MainPage.cs
index e71ce0f..9ba4beb 100644
--- a/HDL_ON/UI/MainPage.cs
+++ b/HDL_ON/UI/MainPage.cs
@@ -530,72 +530,82 @@
         public static int LoadEvent_BackAction()
         {
             int result = 0;
+            
             Application.RunOnMainThread(() =>
             {
-                if (Inverter.Ins.H5Page.Parent != null)
+                try
                 {
-                    if (Inverter.Ins.PageIndex != "1")
+                    if (Inverter.Ins.H5Page.Parent != null)
                     {
-                        Inverter.Ins.PageIndex = "1";
-                        var status = new Dictionary<string, object> { ["method"] = "backPrePage", ["data"] = "" };
-                        Inverter.Ins.H5Page.CallJS($"nativeToJs(\'{Newtonsoft.Json.JsonConvert.SerializeObject(status)}\')");
-                        StartX = 0;
-                        BtnBackIcon.X = -Application.GetRealWidth(100);
-                        return;
-                    }
-                    else
-                    {
-                        Inverter.Ins.PageIndex = "1";
-                    }
-                }
-
-
-                if (BasePageView == null || BasePageView.ChildrenCount <= 1)
-                {
-                    result = 2;//鏃犳硶鍐嶅悗閫�锛屽彲浠ユ墽琛岄��鍒版闈�
-                }
-                if (BasePageView.ChildrenCount > 1)
-                {
-                    int index = BasePageView.ChildrenCount - 1;
-                    var view = BasePageView.GetChildren(index);
-                    if (view.GetType() == typeof(Loading))
-                    {
-                        var loading = view as Loading;
-                        if (loading.CurStatus == false)//鏈変竴浜涚瓑寰呯晫闈㈤殣钘忎簡锛屼絾鏄病鏈夌Щ闄ゅ埌锛岄渶瑕佸厛绉婚櫎
+                        if (Inverter.Ins.PageIndex != "1")
                         {
-                            loading.RemoveFromParent();
-                            result = LoadEvent_BackAction();
+                            Inverter.Ins.PageIndex = "1";
+                            var status = new Dictionary<string, object> { ["method"] = "backPrePage", ["data"] = "" };
+                            Inverter.Ins.H5Page.CallJS($"nativeToJs(\'{Newtonsoft.Json.JsonConvert.SerializeObject(status)}\')");
+                            StartX = 0;
+                            BtnBackIcon.X = -Application.GetRealWidth(100);
+                            return;
                         }
                         else
                         {
-                            result = 1;//姝e湪绛夊緟鏌愪簺鎿嶄綔
+                            Inverter.Ins.PageIndex = "1";
                         }
+                    }
+
+
+                    if (BasePageView == null || BasePageView.ChildrenCount <= 1)
+                    {
+                        result = 2;//鏃犳硶鍐嶅悗閫�锛屽彲浠ユ墽琛岄��鍒版闈�
                     }
                     else
                     {
-                        if (view != null)
+                        if (BasePageView.ChildrenCount > 1)
                         {
-                            if (view.Tag != null)
+                            int index = BasePageView.ChildrenCount - 1;
+                            var view = BasePageView.GetChildren(index);
+                            if (view.GetType() == typeof(Loading))
                             {
-                                if (view.Tag.ToString() != "unlockpage")
+                                var loading = view as Loading;
+                                if (loading.CurStatus == false)//鏈変竴浜涚瓑寰呯晫闈㈤殣钘忎簡锛屼絾鏄病鏈夌Щ闄ゅ埌锛岄渶瑕佸厛绉婚櫎
                                 {
-                                    view.RemoveFromParent();
+                                    loading.RemoveFromParent();
+                                    result = LoadEvent_BackAction();
                                 }
                                 else
                                 {
-                                    result = 2;
+                                    result = 1;//姝e湪绛夊緟鏌愪簺鎿嶄綔
                                 }
                             }
                             else
                             {
-                                view.RemoveFromParent();
+                                if (view != null)
+                                {
+                                    if (view.Tag != null)
+                                    {
+                                        if (view.Tag.ToString() != "unlockpage")
+                                        {
+                                            view.RemoveFromParent();
+                                        }
+                                        else
+                                        {
+                                            result = 2;
+                                        }
+                                    }
+                                    else
+                                    {
+                                        view.RemoveFromParent();
+                                    }
+                                }
                             }
                         }
+                        else
+                        {
+                            result = 2;//鏃犳硶鍐嶅悗閫�锛屽彲浠ユ墽琛岄��鍒版闈�
+                        }
                     }
-                }
-                else
+                }catch(Exception ex)
                 {
-                    result = 2;//鏃犳硶鍐嶅悗閫�锛屽彲浠ユ墽琛岄��鍒版闈�
+                    MainPage.Log($"鍔犺浇瀹夊崜鍚庨��寮傚父:{ex.Message}");
                 }
             });
             return result;
diff --git a/HDL_ON/UI/UI1-Login/LoginPage.cs b/HDL_ON/UI/UI1-Login/LoginPage.cs
index a2afca1..1200b13 100644
--- a/HDL_ON/UI/UI1-Login/LoginPage.cs
+++ b/HDL_ON/UI/UI1-Login/LoginPage.cs
@@ -931,6 +931,7 @@
                     {
                         name = "缇ゆ帶娴嬭瘯",
                         collect = true,
+                        sid = "234567876545678765",
                         uids = new List<string>()
                         {
                             "1405771024583090178",
diff --git a/HDL_ON/UI/UI2/1-HomePage/HomePage.cs b/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
index 49647e1..a7fd938 100644
--- a/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
+++ b/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
@@ -80,6 +80,10 @@
         /// </summary>
         Button btnChangeScene;
         /// <summary>
+        /// 鍒囨崲鏄剧ず鍦虹粍鎺ф寜閽�
+        /// </summary>
+        Button btnChangeGroupControl;
+        /// <summary>
         /// 鍔熻兘鏄剧ず鍖哄煙
         /// </summary>
         PageLayout contentView;
@@ -92,6 +96,10 @@
         /// </summary>
         VerticalScrolViewLayout sceneFunctionView;
         /// <summary>
+        /// 缁勬帶鎺у埗鍖哄煙
+        /// </summary>
+        VerticalScrolViewLayout gcFunctionView;
+        /// <summary>
         /// 鍔熻兘鍖哄煙闆嗗悎
         /// </summary>
         List<FrameLayout> functionViews;
@@ -100,8 +108,11 @@
 #region 鍖哄煙鍙橀噺
         /// <summary>
         /// 褰撳墠鏄剧ず瀵规帶鍒剁被鍨嬫槸鍚︽槸璁惧鍔熻兘鎺у埗
+        /// 0 鍔熻兘
+        /// 1 鍦烘櫙
+        /// 2 缇ゆ帶
         /// </summary>
-        bool CurShowTypeIsFunction = true;
+        int CurShowTypeContent = 0;
 #endregion
 
 #region 鎶ヨ淇℃伅
@@ -149,10 +160,7 @@
                     bodyView.EndHeaderRefreshing();
                     Common.ApiUtlis.Ins.DownloadData();
                     LoadContentView();
-                    if (!CurShowTypeIsFunction)
-                    {
-                        contentView.PageIndex = 1;
-                    }
+                    contentView.PageIndex = CurShowTypeContent;
                 };
                 topView = new FrameLayout()
                 {
@@ -172,10 +180,7 @@
                     refreshLayout.EndHeaderRefreshing();
                     Common.ApiUtlis.Ins.DownloadData();
                     LoadContentView();
-                    if(!CurShowTypeIsFunction)
-                    {
-                        contentView.PageIndex = 1;
-                    }
+                    contentView.PageIndex = CurShowTypeContent;
                 };
                 topView = new FrameLayout()
                 {
@@ -565,51 +570,124 @@
 
                 bodyView.AddChidren(new Button() { Height = Application.GetRealHeight(20), BackgroundColor = 0x00000000 });
 
-                changeView = new FrameLayout()
+                if (DB_ResidenceData.Instance.HomeGateway.isSupportGroupControl)
                 {
-                    //Y = Application.GetRealHeight(20) + topView.Bottom,
-                    Gravity = Gravity.CenterHorizontal,
-                    Width = Application.GetRealWidth(230),
-                    Height = Application.GetRealHeight(62),
-                    BackgroundImagePath = "Collection/ChangeViewbg.png",
-                };
-                bodyView.AddChidren(changeView);
+                    changeView = new FrameLayout()
+                    {
+                        //Y = Application.GetRealHeight(20) + topView.Bottom,
+                        Gravity = Gravity.CenterHorizontal,
+                        Width = Application.GetRealWidth(334),
+                        Height = Application.GetRealHeight(62),
+                        BackgroundImagePath = "Collection/ChangeViewbg.png",
+                    };
+                    bodyView.AddChidren(changeView);
 
-                btnChangeFunction = new Button()
-                {
-                    X = Application.GetRealWidth(10),
-                    Width = Application.GetRealWidth(114-10),
-                    TextID = StringId.Functions,
-                    SelectedTextColor = CSS_Color.MainColor,
-                    TextColor = CSS_Color.PromptingColor1,
-                    TextSize = CSS_FontSize.HeadlineFontSize,
-                    TextAlignment = TextAlignment.Center,
-                    IsSelected = true,
-                    IsBold = true,
-                };
-                changeView.AddChidren(btnChangeFunction);
+                    btnChangeFunction = new Button()
+                    {
+                        X = Application.GetRealWidth(10),
+                        Width = Application.GetRealWidth(114 - 10),
+                        TextID = StringId.Functions,
+                        SelectedTextColor = CSS_Color.MainColor,
+                        TextColor = CSS_Color.PromptingColor1,
+                        TextSize = CSS_FontSize.HeadlineFontSize,
+                        TextAlignment = TextAlignment.Center,
+                        IsSelected = true,
+                        IsBold = true,
+                    };
+                    changeView.AddChidren(btnChangeFunction);
 
-                Button btnLine = new Button()
-                {
-                    X = btnChangeFunction.Right,
-                    Gravity = Gravity.CenterVertical,
-                    Width = Application.GetRealWidth(1),
-                    Height = Application.GetRealHeight(14),
-                    BackgroundColor = CSS_Color.PromptingColor1,
-                };
-                changeView.AddChidren(btnLine);
+                    Button btnLine = new Button()
+                    {
+                        X = btnChangeFunction.Right,
+                        Gravity = Gravity.CenterVertical,
+                        Width = Application.GetRealWidth(1),
+                        Height = Application.GetRealHeight(14),
+                        BackgroundColor = CSS_Color.PromptingColor1,
+                    };
+                    changeView.AddChidren(btnLine);
 
-                btnChangeScene = new Button()
+                    btnChangeScene = new Button()
+                    {
+                        X = btnLine.Right,
+                        Width = Application.GetRealWidth(114 - 10),
+                        TextID = StringId.Scenes,
+                        SelectedTextColor = CSS_Color.MainColor,
+                        TextColor = CSS_Color.PromptingColor1,
+                        TextSize = CSS_FontSize.TextFontSize,
+                        TextAlignment = TextAlignment.Center,
+                    };
+                    changeView.AddChidren(btnChangeScene);
+
+                    Button btnLine2 = new Button()
+                    {
+                        X = btnChangeScene.Right,
+                        Gravity = Gravity.CenterVertical,
+                        Width = Application.GetRealWidth(1),
+                        Height = Application.GetRealHeight(14),
+                        BackgroundColor = CSS_Color.PromptingColor1,
+                    };
+                    changeView.AddChidren(btnLine2);
+
+                    btnChangeGroupControl = new Button()
+                    {
+                        X = btnLine2.Right,
+                        Width = Application.GetRealWidth(114 - 10),
+                        TextID = StringId.GroupControl,
+                        SelectedTextColor = CSS_Color.MainColor,
+                        TextColor = CSS_Color.PromptingColor1,
+                        TextSize = CSS_FontSize.TextFontSize,
+                        TextAlignment = TextAlignment.Center,
+                    };
+                    changeView.AddChidren(btnChangeGroupControl);
+                }
+                else
                 {
-                    X = btnLine.Right,
-                    Width = Application.GetRealWidth(114-10),
-                    TextID = StringId.Scenes,
-                    SelectedTextColor = CSS_Color.MainColor,
-                    TextColor = CSS_Color.PromptingColor1,
-                    TextSize = CSS_FontSize.TextFontSize,
-                    TextAlignment = TextAlignment.Center,
-                };
-                changeView.AddChidren(btnChangeScene);
+                    changeView = new FrameLayout()
+                    {
+                        //Y = Application.GetRealHeight(20) + topView.Bottom,
+                        Gravity = Gravity.CenterHorizontal,
+                        Width = Application.GetRealWidth(230),
+                        Height = Application.GetRealHeight(62),
+                        BackgroundImagePath = "Collection/ChangeViewbg.png",
+                    };
+                    bodyView.AddChidren(changeView);
+
+                    btnChangeFunction = new Button()
+                    {
+                        X = Application.GetRealWidth(10),
+                        Width = Application.GetRealWidth(114 - 10),
+                        TextID = StringId.Functions,
+                        SelectedTextColor = CSS_Color.MainColor,
+                        TextColor = CSS_Color.PromptingColor1,
+                        TextSize = CSS_FontSize.HeadlineFontSize,
+                        TextAlignment = TextAlignment.Center,
+                        IsSelected = true,
+                        IsBold = true,
+                    };
+                    changeView.AddChidren(btnChangeFunction);
+
+                    Button btnLine = new Button()
+                    {
+                        X = btnChangeFunction.Right,
+                        Gravity = Gravity.CenterVertical,
+                        Width = Application.GetRealWidth(1),
+                        Height = Application.GetRealHeight(14),
+                        BackgroundColor = CSS_Color.PromptingColor1,
+                    };
+                    changeView.AddChidren(btnLine);
+
+                    btnChangeScene = new Button()
+                    {
+                        X = btnLine.Right,
+                        Width = Application.GetRealWidth(114 - 10),
+                        TextID = StringId.Scenes,
+                        SelectedTextColor = CSS_Color.MainColor,
+                        TextColor = CSS_Color.PromptingColor1,
+                        TextSize = CSS_FontSize.TextFontSize,
+                        TextAlignment = TextAlignment.Center,
+                    };
+                    changeView.AddChidren(btnChangeScene);
+                }
                 #endregion
 
                 #region ContextView
@@ -667,12 +745,12 @@
                             sceneFunctionView = new VerticalScrolViewLayout();
                             contentView.AddChidren(sceneFunctionView);
                             LoadSceneFunctionControlZone();
-                            if (CurShowTypeIsFunction)
+                            contentView.PageIndex = CurShowTypeContent;
+                            if (DB_ResidenceData.Instance.HomeGateway.isSupportGroupControl)
                             {
-                                contentView.PageIndex = 0;
-                            }else
-                            {
-                                contentView.PageIndex = 1;
+                                gcFunctionView = new VerticalScrolViewLayout();
+                                contentView.AddChidren(gcFunctionView);
+                                LoadGroupControlFunctionControlZone();
                             }
 
                             LoadEvent_ChangeShowedFunctionType();
@@ -704,15 +782,13 @@
                 sceneFunctionView = new VerticalScrolViewLayout();
                 contentView.AddChidren(sceneFunctionView);
                 LoadSceneFunctionControlZone();
-
-                if (CurShowTypeIsFunction)
+                if (DB_ResidenceData.Instance.HomeGateway.isSupportGroupControl)
                 {
-                    contentView.PageIndex = 0;
+                    gcFunctionView = new VerticalScrolViewLayout();
+                    contentView.AddChidren(gcFunctionView);
+                    LoadGroupControlFunctionControlZone();
                 }
-                else
-                {
-                    contentView.PageIndex = 1;
-                }
+                contentView.PageIndex = CurShowTypeContent;
 
 
                 LoadEvent_ChangeShowedFunctionType();
@@ -730,7 +806,7 @@
         /// </summary>
         void LoadDeviceFunctionControlZone()
         {
-#region ContextView
+            #region ContextView
             deviceFunctionView.RemoveAll();
             functionViews.Clear();
             var rowView = new FrameLayout();
@@ -739,7 +815,7 @@
                 int index = 0;
                 var list = new List<Function>();
                 list.AddRange(FunctionList.List.GetDeviceFunctionList());
-                list.AddRange(FunctionList.List.groupControls);//鍔犲叆缇ゆ帶
+                //list.AddRange(FunctionList.List.groupControls);//鍔犲叆缇ゆ帶
                 foreach (var function in list)
                 {
                     //闊充箰妯″潡鏈変富浠庡叧绯伙紝闇�瑕佺壒娈婂鐞�
@@ -832,9 +908,94 @@
                 MainPage.Log("homepage error : " + ex.Message);
             }
             deviceFunctionView.AddChidren(new Button { Height = Application.GetRealHeight(30) });
-#endregion
-
+            #endregion
         }
+
+
+        /// <summary>
+        /// 鍔犺浇缇ゆ帶鍔熻兘鏄剧ず鍖哄煙
+        /// </summary>
+        void LoadGroupControlFunctionControlZone()
+        {
+            #region ContextView
+            gcFunctionView.RemoveAll();
+            functionViews.Clear();
+            var rowView = new FrameLayout();
+            try
+            {
+                int index = 0;
+                foreach (var function in FunctionList.List.groupControls)
+                {
+                    if (index % 2 == 0)
+                    {
+                        rowView = new FrameLayout()
+                        {
+                            Height = Application.GetRealWidth(140),
+                        };
+                        gcFunctionView.AddChidren(rowView);
+                    }
+                    var functionView_X = Application.GetRealWidth((182 + 7) * (index % 2));
+                    if (index % 2 == 0)
+                    {
+                        functionView_X += Application.GetRealWidth(7);
+                    }
+                    var functionView = new FrameLayout()
+                    {
+                        X = functionView_X,
+                        Width = Application.GetRealWidth(182),
+                        Height = Application.GetRealWidth(140),
+                        Radius = (uint)Application.GetRealWidth(12),
+                        Tag = function.sid
+                    };
+                    rowView.AddChidren(functionView);
+                    functionViews.Add(functionView);
+                        var btnbg = new Button()
+                        {
+                            UnSelectedImagePath = "Collection/Functionbg.png",
+                            SelectedImagePath = "Collection/FunctionOnbg.png",
+                            Tag = function.sid
+                        };
+                        functionView.AddChidren(btnbg);
+                        LoadDeviceFunctionDiv(functionView, function);
+
+                    index++;
+                }
+
+                if (index == 0)
+                {
+                    var view = new FrameLayout();
+                    deviceFunctionView.AddChidren(view);
+
+                    var btnNoCollectionBg = new Button()
+                    {
+                        Y = Application.GetRealHeight(20),
+                        Gravity = Gravity.CenterHorizontal,
+                        Width = Application.GetRealWidth(180),
+                        Height = Application.GetRealWidth(180),
+                        UnSelectedImagePath = "Collection/NoCollectionBg.png",
+                    };
+                    view.AddChidren(btnNoCollectionBg);
+
+                    var btnNoCollectionTip = new Button()
+                    {
+                        Height = Application.GetRealHeight(42),
+                        Y = btnNoCollectionBg.Bottom,
+                        TextAlignment = TextAlignment.Center,
+                        TextColor = CSS_Color.PromptingColor1,
+                        TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                        //TextID = StringId.TipNoFunctionCollcetion,
+                    };
+                    view.AddChidren(btnNoCollectionTip);
+                }
+            }
+            catch (Exception ex)
+            {
+                MainPage.Log("homepage error : " + ex.Message);
+            }
+            gcFunctionView.AddChidren(new Button { Height = Application.GetRealHeight(30) });
+            #endregion
+        }
+
         /// <summary>
         /// 鍔犺浇鍦烘櫙鍔熻兘鏄剧ず鍖哄煙
         /// </summary>
@@ -1060,7 +1221,8 @@
                     SelectedImagePath = "Collection/CollectionWhiteIcon.png",
                     UnSelectedImagePath = "Collection/CollectionIcon.png",
                 };
-                view.AddChidren(btnCollection);
+                if (function.spk != SPK.GroupControl)//缇ゆ帶榛樿鏄剧ず
+                    view.AddChidren(btnCollection);
                 //2020-12-16 濡傛灉鏄垚鍛橀殣钘忔敹钘忓姛鑳�
                 //if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
                 //{
diff --git a/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs b/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
index fbadb7f..7fc68a1 100644
--- a/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
+++ b/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
@@ -334,16 +334,9 @@
                 btnChangeScene.TextSize = CSS.CSS_FontSize.TextFontSize;
                 btnChangeScene.IsSelected = false;
                 btnChangeScene.IsBold = false;
-                CurShowTypeIsFunction = true;
+                CurShowTypeContent = 0;
                 contentView.PageIndex = 0;
             };
-
-            //var client = new BlufiClient();
-            //client.PostPackageLengthLimit = 128;
-            //client.RequestDeviceScan();
-            //client.RequestDeviceStatus();
-            //client.BlufiDelegate.Blufi_DidReceiveDeviceScanResponse();
-
 
             btnChangeScene.MouseUpEventHandler = (sender, e) =>
             {
@@ -353,7 +346,7 @@
                 btnChangeFunction.TextSize = CSS.CSS_FontSize.TextFontSize;
                 btnChangeFunction.IsSelected = false;
                 btnChangeFunction.IsBold = false;
-                CurShowTypeIsFunction = false;
+                CurShowTypeContent = 1;
                 contentView.PageIndex = 1;
             };
 
@@ -368,7 +361,7 @@
                     btnChangeScene.IsSelected = false;
                     btnChangeScene.IsBold = false;
                 }
-                else
+                else if (contentView.PageIndex == 1)
                 {
                     btnChangeScene.IsSelected = true;
                     btnChangeScene.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
@@ -378,6 +371,93 @@
                     btnChangeFunction.IsBold = false;
                 }
             };
+
+            if (DB_ResidenceData.Instance.HomeGateway.isSupportGroupControl)
+            {
+                btnChangeGroupControl.MouseUpEventHandler = (sender, e) => {
+                    btnChangeFunction.IsSelected = false;
+                    btnChangeFunction.TextSize = CSS.CSS_FontSize.TextFontSize;
+                    btnChangeFunction.IsBold = false;
+                    btnChangeScene.TextSize = CSS.CSS_FontSize.TextFontSize;
+                    btnChangeScene.IsSelected = false;
+                    btnChangeScene.IsBold = false;
+                    btnChangeGroupControl.IsSelected = true;
+                    btnChangeGroupControl.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
+                    btnChangeGroupControl.IsBold = true;
+                    CurShowTypeContent = 2;
+                    contentView.PageIndex = 2;
+                };
+
+                btnChangeFunction.MouseUpEventHandler = (sender, e) => {
+                    btnChangeFunction.IsSelected = true;
+                    btnChangeFunction.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
+                    btnChangeFunction.IsBold = true;
+                    btnChangeScene.TextSize = CSS.CSS_FontSize.TextFontSize;
+                    btnChangeScene.IsSelected = false;
+                    btnChangeScene.IsBold = false;
+                    CurShowTypeContent = 0;
+                    contentView.PageIndex = 0;
+
+                    btnChangeGroupControl.IsSelected = false;
+                    btnChangeGroupControl.TextSize = CSS.CSS_FontSize.TextFontSize;
+                    btnChangeGroupControl.IsBold = false;
+                };
+                btnChangeScene.MouseUpEventHandler = (sender, e) => {
+                    btnChangeScene.IsSelected = true;
+                    btnChangeScene.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
+                    btnChangeScene.IsBold = true;
+                    btnChangeFunction.TextSize = CSS.CSS_FontSize.TextFontSize;
+                    btnChangeFunction.IsSelected = false;
+                    btnChangeFunction.IsBold = false;
+                    CurShowTypeContent = 1;
+                    contentView.PageIndex = 1;
+
+                    btnChangeGroupControl.IsSelected = false;
+                    btnChangeGroupControl.TextSize = CSS.CSS_FontSize.TextFontSize;
+                    btnChangeGroupControl.IsBold = false;
+                };
+
+                contentView.PageChange = (sender, e) =>
+                {
+                    if (contentView.PageIndex == 0)
+                    {
+                        btnChangeFunction.IsSelected = true;
+                        btnChangeFunction.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
+                        btnChangeFunction.IsBold = true;
+                        btnChangeScene.TextSize = CSS.CSS_FontSize.TextFontSize;
+                        btnChangeScene.IsSelected = false;
+                        btnChangeScene.IsBold = false;
+                        btnChangeGroupControl.IsSelected = false;
+                        btnChangeGroupControl.TextSize = CSS.CSS_FontSize.TextFontSize;
+                        btnChangeGroupControl.IsBold = false;
+                    }
+                    else if (contentView.PageIndex == 1)
+                    {
+                        btnChangeScene.IsSelected = true;
+                        btnChangeScene.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
+                        btnChangeScene.IsBold = true;
+                        btnChangeFunction.TextSize = CSS.CSS_FontSize.TextFontSize;
+                        btnChangeFunction.IsSelected = false;
+                        btnChangeFunction.IsBold = false;
+                        btnChangeGroupControl.IsSelected = false;
+                        btnChangeGroupControl.TextSize = CSS.CSS_FontSize.TextFontSize;
+                        btnChangeGroupControl.IsBold = false;
+                    }
+                    else if (contentView.PageIndex == 2)
+                    {
+                        btnChangeFunction.IsSelected = false;
+                        btnChangeFunction.TextSize = CSS.CSS_FontSize.TextFontSize;
+                        btnChangeFunction.IsBold = false;
+                        btnChangeScene.TextSize = CSS.CSS_FontSize.TextFontSize;
+                        btnChangeScene.IsSelected = false;
+                        btnChangeScene.IsBold = false;
+                        btnChangeGroupControl.IsSelected = true;
+                        btnChangeGroupControl.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
+                        btnChangeGroupControl.IsBold = true;
+                    }
+                };
+
+            }
         }
 
         /// <summary>
diff --git a/HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs b/HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs
index 5f3b656..31d59cd 100644
--- a/HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs
+++ b/HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs
@@ -446,6 +446,7 @@
             };
             if ( !SPK.ArmSensorSpkList().Contains(function.spk)
                 && function.spk != SPK.DoorLock
+                && function.spk != SPK.GroupControl
                 && !SPK.EnvironDeviceSpkList().Contains( function.spk))//!DB_ResidenceData.Instance.CurrentRegion.isOtherShare &&
             {
                 bodyDiv.AddChidren(btnCollectionIcon);
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneEditPage.cs b/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneEditPage.cs
index a85c1ea..74a8d34 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneEditPage.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneEditPage.cs
@@ -485,11 +485,18 @@
                     scene.functions.Remove(scenefunction);
                     continue;
                 }
-                //灏唖pk瀹炰綋閲岄潰鐨刴in max鍊兼斁鍏ュ満鏅姛鑳藉疄浣撻噷锛岃涓嶇劧鏁版嵁浼氫涪澶� 2022-06-21 16:06:45
-                foreach (var tt in scenefunction.status) {
-                    tt.min = scenefunction.localFunction.GetAttribute(tt.key).min;
-                    tt.max = scenefunction.localFunction.GetAttribute(tt.key).max;
-                    tt.valueList = scenefunction.localFunction.GetAttribute(tt.key).value;
+                try
+                {
+                    //灏唖pk瀹炰綋閲岄潰鐨刴in max鍊兼斁鍏ュ満鏅姛鑳藉疄浣撻噷锛岃涓嶇劧鏁版嵁浼氫涪澶� 2022-06-21 16:06:45
+                    foreach (var tt in scenefunction.status)
+                    {
+                        tt.min = scenefunction.localFunction.GetAttribute(tt.key).min;
+                        tt.max = scenefunction.localFunction.GetAttribute(tt.key).max;
+                        tt.valueList = scenefunction.localFunction.GetAttribute(tt.key).value;
+                    }
+                }catch(Exception ex)
+                {
+                    MainPage.Log($"鍦烘櫙鍔犺浇鍔熻兘鍒楄〃寮傚父:{ex.Message}");
                 }
 
                 i++;
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs b/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs
index 670beb1..3593598 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs
@@ -1903,7 +1903,7 @@
             }
             LoadFunctionRow(onOffStatus);
 
-            if (sceneFunction.localFunction.spk == SPK.LightRGB)
+            if (sceneFunction.localFunction.spk == SPK.LightRGB || sceneFunction.localFunction.spk == SPK.GroupControl)
             {
                 var colorfulStatus = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Colorful);
                 if (colorfulStatus != null)
@@ -1982,30 +1982,32 @@
 
             btnConfrim.MouseUpEventHandler = (sender, e) =>
             {
-                if (isOnStatus)
+                if (sceneFunction.localFunction.spk == SPK.GroupControl) { }
+                else
                 {
-                    if (isColorful)
+                    if (isOnStatus)
                     {
-                        sceneFunction.status.Clear();
-                        sceneFunction.status.Add(new SceneFunctionStatus() { key = FunctionAttributeKey.OnOff, value = "on" });
-                        sceneFunction.status.Add(new SceneFunctionStatus() { key = FunctionAttributeKey.Colorful, value = "on" });
+                        if (isColorful)
+                        {
+                            sceneFunction.status.Clear();
+                            sceneFunction.status.Add(new SceneFunctionStatus() { key = FunctionAttributeKey.OnOff, value = "on" });
+                            sceneFunction.status.Add(new SceneFunctionStatus() { key = FunctionAttributeKey.Colorful, value = "on" });
+                        }
+                        else
+                        {
+                            var isHasColorful = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Colorful);
+                            if (isHasColorful != null)
+                            {
+                                sceneFunction.status.Remove(isHasColorful);
+                            }
+                        }
                     }
                     else
                     {
-                        var isHasColorful = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Colorful);
-                        if (isHasColorful != null)
-                        {
-                            sceneFunction.status.Remove(isHasColorful);
-                        }
+                        sceneFunction.status.Clear();
+                        sceneFunction.status.Add(new SceneFunctionStatus() { key = FunctionAttributeKey.OnOff, value = "off" });
                     }
                 }
-                else
-                {
-                    if (isColorful) { } else { }
-                    sceneFunction.status.Clear();
-                    sceneFunction.status.Add(new SceneFunctionStatus() { key = FunctionAttributeKey.OnOff, value = "off" });
-                }
-
                 var temp = scene.functions.Find((obj) => obj.sid == sceneFunction.sid);
                 
                 if (temp != null)
@@ -2051,7 +2053,7 @@
 
         void UpdataFunctionRow()
         {
-            for(var i =0;i< functionRowList.Count; i++)
+            for (var i =0;i< functionRowList.Count; i++)
             {
                 try
                 {
@@ -2066,7 +2068,7 @@
                                 {
                                     if (view.Tag.ToString() != FunctionAttributeKey.OnOff)
                                     {
-                                        if (isColorful)
+                                        if (isColorful && sceneFunction.localFunction.spk == SPK.LightRGB)
                                         {
                                             if(view.Tag.ToString() != FunctionAttributeKey.Colorful)
                                             {
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/AddGroupControlPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/AddGroupControlPage.cs
index 4a6070a..3d6cb2f 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/AddGroupControlPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/AddGroupControlPage.cs
@@ -549,6 +549,12 @@
                                 var groupControlTypes = Newtonsoft.Json.JsonConvert.DeserializeObject<List<GroupControlType>>(pack.Data.ToString());
                                 if (groupControlTypes != null && groupControlTypes.Count > 0)
                                 {
+                                    //groupControlType = new GroupControlType {
+                                    //      type = "LIGHT",
+                                    //        typeName ="鐏厜鎺у埗",
+                                    //        spks = new List<string> { "light.switch" },
+                                    //         spkAttrs = new List<string> { "on_off" }
+                                    //};
                                     groupControlType = groupControlTypes[0];
                                     Application.RunOnMainThread(() => {
                                         LoadLightRow(lightList);
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Light/GroupControlPage_V2.cs b/HDL_ON/UI/UI2/FuntionControlView/Light/GroupControlPage_V2.cs
index 029d47a..5ecba87 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Light/GroupControlPage_V2.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Light/GroupControlPage_V2.cs
@@ -84,11 +84,11 @@
                 UnSelectedImagePath = "Collection/CollectionGrayIcon.png",
                 IsSelected = function.collect
             };
-            controlView.AddChidren(btnCollection);
-            btnCollection.MouseUpEventHandler += (sender, e) => {
-                btnCollection.IsSelected = function.collect = btnCollection_Out.IsSelected = !btnCollection.IsSelected;
-                function.CollectFunction();
-            };
+            //controlView.AddChidren(btnCollection);
+            //btnCollection.MouseUpEventHandler += (sender, e) => {
+            //    btnCollection.IsSelected = function.collect = btnCollection_Out.IsSelected = !btnCollection.IsSelected;
+            //    function.CollectFunction();
+            //};
 
 
 

--
Gitblit v1.8.0