From efcffde735fa65ae34bae0bcc86313b74ed0e36c Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期一, 20 五月 2024 13:47:38 +0800
Subject: [PATCH] 优化离线数据

---
 HDL_ON/UI/UI2/1-HomePage/HomePage.cs |  796 +++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 611 insertions(+), 185 deletions(-)

diff --git a/HDL_ON/UI/UI2/1-HomePage/HomePage.cs b/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
index 631866a..d3a4868 100644
--- a/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
+++ b/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
@@ -30,7 +30,7 @@
         /// <summary>
         /// 杩炴帴鐘舵�佹彁绀�
         /// </summary>
-        Button btnLinkStateTip;
+        FrameLayout divLinkStateTip;
         /// <summary>
         /// 瀹夐槻鐘舵�佸浘鏍�
         /// </summary>
@@ -70,15 +70,20 @@
         /// <summary>
         /// 鍒囨崲鏄剧ず鍔熻兘绫诲瀷鍖哄煙
         /// </summary>
-        FrameLayout changeView;
-        /// <summary>
-        /// 鍒囨崲鏄剧ず璁惧鍔熻兘鎸夐挳
-        /// </summary>
-        Button btnChangeFunction;
-        /// <summary>
-        /// 鍒囨崲鏄剧ず鍦烘櫙鍔熻兘鎸夐挳
-        /// </summary>
-        Button btnChangeScene;
+        FrameLayout changeBaseView;
+        //FrameLayout changeView;
+        ///// <summary>
+        ///// 鍒囨崲鏄剧ず璁惧鍔熻兘鎸夐挳
+        ///// </summary>
+        //Button btnChangeFunction;
+        ///// <summary>
+        ///// 鍒囨崲鏄剧ず鍦烘櫙鍔熻兘鎸夐挳
+        ///// </summary>
+        //Button btnChangeScene;
+        ///// <summary>
+        ///// 鍒囨崲鏄剧ず鍦虹粍鎺ф寜閽�
+        ///// </summary>
+        //Button btnChangeGroupControl;
         /// <summary>
         /// 鍔熻兘鏄剧ず鍖哄煙
         /// </summary>
@@ -92,6 +97,10 @@
         /// </summary>
         VerticalScrolViewLayout sceneFunctionView;
         /// <summary>
+        /// 缁勬帶鎺у埗鍖哄煙
+        /// </summary>
+        VerticalScrolViewLayout gcFunctionView;
+        /// <summary>
         /// 鍔熻兘鍖哄煙闆嗗悎
         /// </summary>
         List<FrameLayout> functionViews;
@@ -100,16 +109,19 @@
 #region 鍖哄煙鍙橀噺
         /// <summary>
         /// 褰撳墠鏄剧ず瀵规帶鍒剁被鍨嬫槸鍚︽槸璁惧鍔熻兘鎺у埗
+        /// 0 鍔熻兘
+        /// 1 鍦烘櫙
+        /// 2 缇ゆ帶
         /// </summary>
-        bool CurShowTypeIsFunction = true;
+        int CurShowTypeContent = 0;
 #endregion
 
 #region 鎶ヨ淇℃伅
-        Button btnMsgBg;
-        Button btnMsgTime;
-        Button btnMsg;
+        //Button btnMsgBg;
+        //Button btnMsgTime;
+        //Button btnMsg;
         Button btnMsgIcon;
-#endregion
+        #endregion
 
         public HomePage()
         {
@@ -117,6 +129,11 @@
             bodyView.BackgroundColor = CSS_Color.BackgroundColor;
 
             this.VerticalScrollBarEnabled = false;
+
+#if DEBUG
+            DB_ResidenceData.Instance.HomeGateway.isSupportGroupControl = true;
+#endif
+
 #if __IOS__
             //鑷姩鍋忕Щ鍙栨秷
             if (UIKit.UIDevice.CurrentDevice.CheckSystemVersion(11, 0))
@@ -144,21 +161,18 @@
                     bodyView.EndHeaderRefreshing();
                     Common.ApiUtlis.Ins.DownloadData();
                     LoadContentView();
-                    if (!CurShowTypeIsFunction)
-                    {
-                        contentView.PageIndex = 1;
-                    }
+                    contentView.PageIndex = CurShowTypeContent;
                 };
                 topView = new FrameLayout()
                 {
-                    Height = Application.GetRealHeight(216),
+                    Height = Application.GetRealHeight(113),//216),
                     BackgroundImagePath = DB_ResidenceData.Instance.residenceImage,
                 };
                 bodyView.AddChidren(topView);
 #else
                 VerticalRefreshLayout refreshLayout = new VerticalRefreshLayout()
                 {
-                    Height = Application.GetRealHeight(216),
+                    Height = Application.GetRealHeight(113),//216),
                     BackgroundImagePath = DB_ResidenceData.Instance.residenceImage,
                 };
                 bodyView.AddChidren(refreshLayout);
@@ -167,14 +181,11 @@
                     refreshLayout.EndHeaderRefreshing();
                     Common.ApiUtlis.Ins.DownloadData();
                     LoadContentView();
-                    if(!CurShowTypeIsFunction)
-                    {
-                        contentView.PageIndex = 1;
-                    }
+                    contentView.PageIndex = CurShowTypeContent;
                 };
                 topView = new FrameLayout()
                 {
-                    Height = Application.GetRealHeight(216),
+                    Height = Application.GetRealHeight(113),//216),
                 };
                 refreshLayout.AddChidren(topView);
 #endif
@@ -202,69 +213,35 @@
                     IsBold = true
                 };
                 topView.AddChidren(btnResidenceName);
-                btnLinkStateTip = new Button()
+
+                divLinkStateTip = new FrameLayout()
                 {
-                    //X = Application.GetRealWidth(16),
-                    Y = btnResidenceName.Bottom,
-                    Height = Application.GetRealWidth(14),
-                    //BackgroundColor = CSS_Color.LinkTipFail,
-                    TextAlignment = TextAlignment.Center,
+                    Y = Application.GetRealHeight(113) - Application.GetRealWidth(24),
+                    Height = Application.GetRealWidth(24),
+                    BackgroundColor = 0xFFFF4747,
+                    Visible = false,
+                };
+                topView.AddChidren(divLinkStateTip);
+                Button btnLinkStateIcon = new Button()
+                {
+                    X = Application.GetRealWidth(16),
+                    Gravity = Gravity.CenterVertical,
+                    Width = Application.GetRealWidth(20),
+                    Height = Application.GetRealWidth(20),
+                    UnSelectedImagePath = "Collection/GatewayOnlineTipIcon.png"
+                };
+                divLinkStateTip.AddChidren(btnLinkStateIcon);
+
+                var btnLinkStateTip = new Button()
+                {
+                    X = btnLinkStateIcon.Right + Application.GetRealWidth(4),
+                    TextAlignment = TextAlignment.CenterLeft,
                     TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                     TextColor = CSS_Color.MainBackgroundColor,
+                    TextID = StringId.NetworkAnomaly,
                 };
-                topView.AddChidren(btnLinkStateTip);
-                //btnLinkStateTip.Width = btnLinkStateTip.GetTextWidth();
+                divLinkStateTip.AddChidren(btnLinkStateTip);
                 //鏇存柊閾炬帴鐘舵�乮con棰滆壊
-
-
-#if DEBUG
-                int ddd = 0;
-                btnResidenceName.MouseUpEventHandler = (sender, e) =>
-                {
-                    //827a98c98da7469b8bc19bb6a3c7651906
-                    //St_00009073b431d8b2490c9df0c5cb0e73
-                    //Com.Hdl.HdlToLc.InitData(Shared.Application.Activity,false, "827a98c98da7469b8bc19bb6a3c7651906");
-                    //Com.Hdl.HdlToLc.OpenActivity();
-                    //new System.Threading.Thread(() =>
-                    //{
-                    //    var http = new HttpServerRequest();
-                    //    var pack = http.GetLcSubAccountToken();
-                    //    if (pack.Code == StateCode.SUCCESS)
-                    //    {
-                    //        if(pack.Data == null || string.IsNullOrEmpty(pack.Data.ToString()))
-                    //        {
-                    //            Application.RunOnMainThread(() =>
-                    //            {
-                    //                new PublicAssmebly().TipMsg(Language.StringByID(StringId.Tip), Language.StringByID(StringId.huoqushujushibao));
-                    //            });
-                    //        }
-                    //        Com.Utils.HdlToLcUtils.Instance.HomeId = DB_ResidenceData.Instance.CurrentRegion.id;
-                    //        Com.Utils.HdlToLcUtils.Instance.Token = UserInfo.Current.AccessToken;
-                    //        Com.Utils.HdlToLcUtils.Instance.SubAccessToken = pack.Data.ToString();
-                    //        Application.RunOnMainThread(() =>
-                    //        {
-                    //            //Com.Utils.HdlToLcUtils.Instance.OpenActivity();
-                    //            //Com.Utils.HdlToLcUtils.Instance.Play()
-                    //            var backTemp = new AddLcCam();
-                    //            backTemp.backAction = () =>
-                    //            {
-                    //                //Load3tyBrandDeviceList();
-                    //            };
-                    //            Com.Utils.HdlToLcUtils.Instance.AddCamera(backTemp);
-                    //        });
-                    //    }
-                    //    else
-                    //    {
-                    //        Application.RunOnMainThread(() =>
-                    //        {
-                    //            new PublicAssmebly().TipMsg(Language.StringByID(StringId.Tip), Language.StringByID(StringId.huoqushujushibao) + $"({pack.Code})");
-                    //        });
-                    //    }
-                    //})
-                    //{ IsBackground = true }.Start();
-                };
-#endif
-
                 environmentalView = new FrameLayout()
                 {
                     Y = Application.GetRealHeight(1) + btnResidenceName.Bottom,
@@ -289,7 +266,7 @@
                             deviceId = enviTemp.deviceId,
                             attributes = new List<FunctionAttributes> { new FunctionAttributes { key = "value", state = humiAttr.state, curValue = humiAttr.curValue } },
                         };
-                        humiSensorList.Add(newTemp);
+                        humiSensorList.Add(newTemp);//020103CF594C3E00051F0001051F//	1650546588519424001
                     }
                     var tempAttr = enviTemp.attributes.Find((obj) => obj.key == "temperature");
                     if (tempAttr != null)
@@ -301,7 +278,7 @@
                             deviceId = enviTemp.deviceId,
                             attributes = new List<FunctionAttributes> { new FunctionAttributes { key = "value", state = tempAttr.state, curValue = tempAttr.curValue } },
                         };
-                        tempSensorList.Add(newTemp);
+                        tempSensorList.Add(newTemp);//020103CF594C3E00051F0001051F
                     }
                 }
 
@@ -359,7 +336,10 @@
                     foreach (var temp in tempSensorList)
                     {
                         double tempValue = 0;
-                        double.TryParse(temp.GetAttrState("temperature"), out tempValue);
+                        if (temp.GetAttribute("temperature") != null)
+                            double.TryParse(temp.GetAttrState("temperature"), out tempValue);
+                        else
+                            double.TryParse(temp.GetAttrState("value"), out tempValue);
                         if (tempValue > 0)
                         {
                             tempTotalValues += tempValue;
@@ -413,7 +393,10 @@
                     foreach (var humi in humiSensorList)
                     {
                         double humiValue = 0;
-                        double.TryParse(humi.GetAttrState("humidity"), out humiValue);
+                        if (humi.GetAttribute("temperature") != null)
+                            double.TryParse(humi.GetAttrState("humidity"), out humiValue);
+                        else
+                            double.TryParse(humi.GetAttrState("value"), out humiValue);
                         if (humiValue > 0)
                         {
                             humiTotalValues += humiValue;
@@ -449,7 +432,8 @@
                 };
                 btnPm25Values.Width = btnPm25Values.GetTextWidth();
                 environmentalView.AddChidren(btnPm25Values);
-#endregion
+                #endregion
+
 
                 btnSecurityStatus = new Button()
                 {
@@ -491,57 +475,57 @@
 
 
 #region msg
-                FrameLayout msgView;
-                msgView = new FrameLayout()
-                {
-                    Y = Application.GetRealHeight(164),
-                    Gravity = Gravity.CenterHorizontal,
-                    Width = Application.GetRealWidth(343),
-                    Height = Application.GetRealHeight(28),
-                };
-                topView.AddChidren(msgView);
+                //FrameLayout msgView;
+                //msgView = new FrameLayout()
+                //{
+                //    Y = Application.GetRealHeight(164),
+                //    Gravity = Gravity.CenterHorizontal,
+                //    Width = Application.GetRealWidth(343),
+                //    Height = Application.GetRealHeight(28),
+                //};
+                //topView.AddChidren(msgView);
 
-                btnMsgBg = new Button()
-                {
-                    BackgroundColor = CSS_Color.MainColor,//0x3F4484F4,
-                    Alpha = 0.4f,
-                };
-                msgView.AddChidren(btnMsgBg);
+                //btnMsgBg = new Button()
+                //{
+                //    BackgroundColor = CSS_Color.MainColor,//0x3F4484F4,
+                //    Alpha = 0.4f,
+                //};
+                //msgView.AddChidren(btnMsgBg);
 
 
                 btnMsgIcon = new Button()
                 {
-                    X = Application.GetRealWidth(12),
-                    Gravity = Gravity.CenterVertical,
+                    X = Application.GetRealWidth(290),
+                    Y = Application.GetRealHeight(35),
                     Width = Application.GetMinRealAverage(24),
                     Height = Application.GetMinRealAverage(24),
                     UnSelectedImagePath = "Collection/MsgIcon.png",
                     SelectedImagePath = "Collection/MsgIconTip.png",
                 };
-                msgView.AddChidren(btnMsgIcon);
+                topView.AddChidren(btnMsgIcon);
 
 
-                btnMsg = new Button()
-                {
-                    X = Application.GetRealWidth(10) + btnMsgIcon.Right,
-                    Width = Application.GetRealWidth(240),
-                    Text = "...",
-                    TextColor = CSS_Color.MainBackgroundColor,
-                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                    TextAlignment = TextAlignment.CenterLeft,
-                };
-                msgView.AddChidren(btnMsg);
+                //btnMsg = new Button()
+                //{
+                //    X = Application.GetRealWidth(10) + btnMsgIcon.Right,
+                //    Width = Application.GetRealWidth(240),
+                //    Text = "...",
+                //    TextColor = CSS_Color.MainBackgroundColor,
+                //    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                //    TextAlignment = TextAlignment.CenterLeft,
+                //};
+                //msgView.AddChidren(btnMsg);
 
 
-                btnMsgTime = new Button()
-                {
-                    X = Application.GetRealWidth(299),
-                    Width = Application.GetRealWidth(44),
-                    Text = "00:00",
-                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                    TextAlignment = TextAlignment.CenterLeft,
-                };
-                msgView.AddChidren(btnMsgTime);
+                //btnMsgTime = new Button()
+                //{
+                //    X = Application.GetRealWidth(299),
+                //    Width = Application.GetRealWidth(44),
+                //    Text = "00:00",
+                //    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                //    TextAlignment = TextAlignment.CenterLeft,
+                //};
+                //msgView.AddChidren(btnMsgTime);
 
                 LoadEvent_GotoMessageCenterPage();
 
@@ -553,20 +537,69 @@
 
                 bodyView.AddChidren(new Button() { Height = Application.GetRealHeight(20), BackgroundColor = 0x00000000 });
 
-                changeView = new FrameLayout()
+                loadNavView();
+
+                #endregion
+
+                #region ContextView
+
+
+                functionViews = new List<FrameLayout>();
+
+                LoadContentView();
+
+                #endregion
+            }
+            catch (Exception ex)
+            {
+                MainPage.Log($"HomePage LoadPage Error : {ex.Message}");
+            }
+
+
+        }
+
+        void loadNavView()
+        {
+            if(changeBaseView == null)
+            {
+                changeBaseView = new FrameLayout()
+                {
+                    Gravity = Gravity.CenterHorizontal,
+                    Height = Application.GetRealHeight(62),
+                };
+                bodyView.AddChidren(changeBaseView);
+            }
+            else
+            {
+                changeBaseView.RemoveAll();
+            }
+
+            if (contentView == null)
+            {
+                contentView = new PageLayout()
+                {
+                    Height = Application.GetRealHeight(310 + 30 + 10 + 100), //20涓鸿秴鍑洪儴鍒�
+                    IsShowPoint = false,
+                };
+                bodyView.AddChidren(contentView);
+            }
+
+            if (DB_ResidenceData.Instance.HomeGateway.isSupportGroupControl && FunctionList.List.groupControls.Count > 0)
+            {
+                var changeView = new FrameLayout()
                 {
                     //Y = Application.GetRealHeight(20) + topView.Bottom,
                     Gravity = Gravity.CenterHorizontal,
-                    Width = Application.GetRealWidth(230),
+                    Width = Application.GetRealWidth(334),
                     Height = Application.GetRealHeight(62),
                     BackgroundImagePath = "Collection/ChangeViewbg.png",
                 };
-                bodyView.AddChidren(changeView);
+                changeBaseView.AddChidren(changeView);
 
-                btnChangeFunction = new Button()
+                var btnChangeFunction = new Button()
                 {
                     X = Application.GetRealWidth(10),
-                    Width = Application.GetRealWidth(114-10),
+                    Width = Application.GetRealWidth(114 - 10),
                     TextID = StringId.Functions,
                     SelectedTextColor = CSS_Color.MainColor,
                     TextColor = CSS_Color.PromptingColor1,
@@ -587,10 +620,10 @@
                 };
                 changeView.AddChidren(btnLine);
 
-                btnChangeScene = new Button()
+                var btnChangeScene = new Button()
                 {
                     X = btnLine.Right,
-                    Width = Application.GetRealWidth(114-10),
+                    Width = Application.GetRealWidth(114 - 10),
                     TextID = StringId.Scenes,
                     SelectedTextColor = CSS_Color.MainColor,
                     TextColor = CSS_Color.PromptingColor1,
@@ -598,35 +631,227 @@
                     TextAlignment = TextAlignment.Center,
                 };
                 changeView.AddChidren(btnChangeScene);
-#endregion
 
-#region ContextView
-                contentView = new PageLayout()
+                Button btnLine2 = new Button()
                 {
-                    //Y = changeView.Bottom,
-                    Height = Application.GetRealHeight(310 + 30 + 10), //20涓鸿秴鍑洪儴鍒�
-                    IsShowPoint = false,
+                    X = btnChangeScene.Right,
+                    Gravity = Gravity.CenterVertical,
+                    Width = Application.GetRealWidth(1),
+                    Height = Application.GetRealHeight(14),
+                    BackgroundColor = CSS_Color.PromptingColor1,
                 };
-                bodyView.AddChidren(contentView);
+                changeView.AddChidren(btnLine2);
 
-                functionViews = new List<FrameLayout>();
+                var 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);
 
-                LoadContentView();
 
-#endregion
+
+                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;
+                    }
+                };
+
+
             }
-            catch (Exception ex)
+            else
             {
-                MainPage.Log($"HomePage LoadPage Error : {ex.Message}");
+                var changeView = new FrameLayout()
+                {
+                    //Y = Application.GetRealHeight(20) + topView.Bottom,
+                    Gravity = Gravity.CenterHorizontal,
+                    Width = Application.GetRealWidth(230),
+                    Height = Application.GetRealHeight(62),
+                    BackgroundImagePath = "Collection/ChangeViewbg.png",
+                };
+                changeBaseView.AddChidren(changeView);
+
+                var 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);
+
+                var 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);
+
+
+                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;
+                };
+
+                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;
+                };
+
+                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;
+                    }
+                    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;
+                    }
+                };
+
+
+
             }
 
+
+            contentView.PageIndex = CurShowTypeContent;
 
         }
+
         /// <summary>
         /// 鍔犺浇鍐呭鍖哄煙
         /// </summary>
         void LoadContentView()
         {
+           
             if (!Common.ApiUtlis.Ins.DownloadDataComplete && !MainPage.NoLoginMode)
             {
                 var waitPage = new Loading();
@@ -645,8 +870,10 @@
                         {
                             if (contentView == null)
                             {
+                                waitPage.Hide();
                                 return;
                             }
+                            loadNavView();
                             contentView.RemoveAll();
                             deviceFunctionView = new VerticalScrolViewLayout();
                             contentView.AddChidren(deviceFunctionView);
@@ -654,12 +881,11 @@
                             sceneFunctionView = new VerticalScrolViewLayout();
                             contentView.AddChidren(sceneFunctionView);
                             LoadSceneFunctionControlZone();
-                            if (CurShowTypeIsFunction)
+                            if (DB_ResidenceData.Instance.HomeGateway.isSupportGroupControl)
                             {
-                                contentView.PageIndex = 0;
-                            }else
-                            {
-                                contentView.PageIndex = 1;
+                                gcFunctionView = new VerticalScrolViewLayout();
+                                contentView.AddChidren(gcFunctionView);
+                                LoadGroupControlFunctionControlZone();
                             }
 
                             LoadEvent_ChangeShowedFunctionType();
@@ -668,6 +894,7 @@
                             GetUnreadPushMessages();
                             RegisterGetPushMessageAction();
 
+                            contentView.PageIndex = CurShowTypeContent;
                             if (waitPage != null)
                             {
                                 waitPage.RemoveFromParent();
@@ -691,15 +918,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();
@@ -717,23 +942,24 @@
         /// </summary>
         void LoadDeviceFunctionControlZone()
         {
-#region ContextView
+            #region ContextView
             deviceFunctionView.RemoveAll();
             functionViews.Clear();
             var rowView = new FrameLayout();
             try
             {
                 int index = 0;
-                var list = FunctionList.List.GetDeviceFunctionList();
-                list.AddRange(FunctionList.List.groupControls);//鍔犲叆缇ゆ帶
+                var list = new List<Function>();
+                list.AddRange(FunctionList.List.GetDeviceFunctionList());
+                //list.AddRange(FunctionList.List.groupControls);//鍔犲叆缇ゆ帶
                 foreach (var function in list)
                 {
                     //闊充箰妯″潡鏈変富浠庡叧绯伙紝闇�瑕佺壒娈婂鐞�
-                    if (SPK.MusicSpkList().Contains( function.spk))
-                    {
-                        continue;
-                    }
-                    else
+                    //if (SPK.MusicSpkList().Contains( function.spk))
+                    //{
+                    //    continue;
+                    //}
+                    //else
                     {
                         if (!function.collect)
                             continue;
@@ -818,9 +1044,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();
+            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();
+                    gcFunctionView.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>
@@ -968,7 +1279,8 @@
                 };
 
 
-                if (function.spk == SPK.SenesorMegahealth || function.spk == SPK.SensorMmvPose)
+                if (function.spk == SPK.SenesorMegahealth || function.spk == SPK.SensorMmvPose ||
+                    function.spk == SPK.SensorPir || function.spk == SPK.SensorPirHold)
                 {
                     btnIcon.UnSelectedImagePath = "FunctionIcon/Icon/HomeIcon/sensormegahealth.png";
                     btnIcon.SelectedImagePath = "FunctionIcon/Icon/HomeIcon/sensormegahealth.png";
@@ -982,7 +1294,7 @@
                         switch (tempStatus.state)
                         {//0绌猴紝1璧帮紝2璺戯紝3鍧愶紝4璺屽�掞紝5绔�
                             case "0":
-                                function.lastState = Language.StringByID(StringId.SensorNormalState);
+                                function.lastState = Language.StringByID(StringId.wuren);
                                 break;
                             case "1":
                                 function.lastState = Language.StringByID(StringId.SomeoneIn);
@@ -1023,7 +1335,49 @@
                         }
                         btnState.Text = function.lastState;
                     }
+                    else
+                    {
+                        tempStatus = function.attributes.Find((sta) => sta.key == "people_status");
+                        if (tempStatus != null)
+                        {
+                            switch (tempStatus.state)
+                            {
+                                case "true":
+                                    function.lastState = Language.StringByID(StringId.Someone);
+                                    break;
+                                case "false":
+                                    function.lastState = Language.StringByID(StringId.wuren);
+                                    break;
+                            }
+                            btnState.Text = function.lastState;
+                        }
+                    }
+
                 }
+
+                else if(function.spk == SPK.SensorDryContact || function.spk == SPK.SensorDryContact2)
+                {
+                    btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_white.png";
+                    btnIcon.SelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_white.png";
+                    btnName.TextColor = CSS_Color.MainBackgroundColor;
+                    btnZone.TextColor = CSS_Color.MainBackgroundColor;
+                    btnState.TextColor = CSS_Color.MainBackgroundColor;
+                    var tempStatus = function.attributes.Find((sta) => sta.key == FunctionAttributeKey.ContactStatus);
+                    if (tempStatus != null)
+                    {
+                        switch (tempStatus.state)
+                        {
+                            case "open":
+                                function.lastState = Language.StringByID(StringId.DryBreak);
+                                break;
+                            case "close":
+                                function.lastState = Language.StringByID(StringId.Shut);
+                                break;
+                        }
+                        btnState.Text = function.lastState;
+                    }
+                }
+
                 else
                 {
                     btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_blue.png";
@@ -1045,7 +1399,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)
                 //{
@@ -1056,7 +1411,8 @@
                 if (//SPK.CurtainSpkList().Contains(function.spk))
                     function.spk == SPK.CurtainRoller || function.spk == SPK.CurtainShades ||
                     function.spk == SPK.CurtainDream ||
-                    function.spk == SPK.CurtainSwitch || function.spk == SPK.CurtainTrietex )
+                    function.spk == SPK.CurtainSwitch || function.spk == SPK.CurtainTrietex
+                    )
                 {
                     btnIcon.UnSelectedImagePath = "FunctionIcon/Curtain/CurtainIcon.png";
                     btnIcon.SelectedImagePath = "FunctionIcon/Curtain/CurtainOnIcon.png";
@@ -1071,6 +1427,7 @@
                         SelectedImagePath = "FunctionIcon/Curtain/CurtainCloseWhiteIcon_Shadow.png",
                     };
                     view.AddChidren(btnCurtainClose);
+                   
 
                     Button btnCurtainOpen;
                     btnCurtainOpen = new Button()
@@ -1107,7 +1464,7 @@
                 {
                     btnIcon.UnSelectedImagePath = "FunctionIcon/Music/MusicIcon.png";
                     btnIcon.SelectedImagePath = "FunctionIcon/Music/MusicOnIcon.png";
-                    btnCollection.Visible = false;
+                    //btnCollection.Visible = false;
                     Button btnPower;
                     btnPower = new Button()
                     {
@@ -1121,7 +1478,7 @@
                     view.AddChidren(btnPower);
 
                     btnState.Text = function.GetAttrState("song_name");
-
+                    btnState.Width = Application.GetRealWidth(90);
                     btnState.SelectedTextColor = CSS_Color.MainBackgroundColor;
                     btnState.TextColor = CSS_Color.MainBackgroundColor;//PromptingColor1
 
@@ -1141,7 +1498,7 @@
                             btnPower.IsSelected = true;
                             status = "on";
                         }
-                       function.SetAttrState("on_off", status);
+                        function.SetAttrState("on_off", status);
                         Dictionary<string, string> dic = new Dictionary<string, string>();
                         dic.Add("on_off", status);
                         Music.SendMethod.Current.SendControlCommand(function, dic);
@@ -1155,7 +1512,7 @@
                     Button btnUp;
                     btnUp = new Button()
                     {
-                        X = Application.GetRealWidth(84+3),
+                        X = Application.GetRealWidth(84 + 3),
                         Y = Application.GetRealWidth(89),
                         Width = Application.GetRealWidth(38),
                         Height = Application.GetRealWidth(38),
@@ -1180,14 +1537,14 @@
                     LoadEvent_ControlClothesHanger(function, btnUp, btnDown);
 
                 }
-                
-                else if (function.spk == SPK.SenesorMegahealth || function.spk == SPK.SensorMmvPose)
+
+                //else if (function.spk == SPK.SenesorMegahealth || function.spk == SPK.SensorMmvPose)
+                else if (SPK.ArmSensorSpkList().Contains(function.spk))
                 {
-                    //btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}.png";
-                    //btnIcon.SelectedImagePath = "FunctionIcon/Icon/HomeIcon/sensormegahealth.png";
-                    //btnIcon.IsSelected = true;
+                    btnName.TextColor = CSS_Color.MainBackgroundColor;
+                    btnZone.TextColor = CSS_Color.MainBackgroundColor;
                     btnState.SelectedTextColor = CSS_Color.MainBackgroundColor;
-                    btnState.TextColor = CSS_Color.MainColor;//PromptingColor1
+                    btnState.TextColor = CSS_Color.MainBackgroundColor;
                 }
 
                 //绱ф�ユ眰鍔�
@@ -1205,8 +1562,78 @@
                 }
                 else if (function.spk == SPK.VideoDoorLock)
                 {
-                    btnIcon.UnSelectedImagePath =UI2.FuntionControlView.VideoDoorLock.CommonMethod.Current.GetVideoDoorLockIcon(UI2.FuntionControlView.VideoDoorLock.CommonMethod.Comerom.collect);
+                    btnIcon.UnSelectedImagePath = UI2.FuntionControlView.VideoDoorLock.CommonMethod.Current.GetVideoDoorLockIcon(UI2.FuntionControlView.VideoDoorLock.CommonMethod.Comerom.collect);
                     //btnIcon.SelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_blue.png";
+                }
+                else if (function.spk == SPK.AvZkAiks)
+                {
+                    //涓轰簡鍘绘帀寮�鍏虫寜閽�
+                    btnIcon.UnSelectedImagePath = "AksIcon/yingyinzhongkong1.png";
+                }
+                else if (function.spk == SPK.GroupControl)
+                {
+                    btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_blue.png";
+                    btnIcon.SelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_white.png";
+                    if (function.spk == SPK.GroupControl)
+                    {
+                        Button btnClose;
+                        Button btnOpen;
+                        btnOpen = new Button()
+                        {
+                            X = Application.GetRealWidth(84),
+                            Y = Application.GetRealWidth(89),
+                            Width = Application.GetRealWidth(40),
+                            Height = Application.GetRealWidth(40),
+                            UnSelectedImagePath = "FunctionIcon/Light/LightScene/gp_all_on_home.png",
+                            SelectedImagePath = "FunctionIcon/Light/LightScene/gp_all_on_home_click.png",
+                        };
+                        view.AddChidren(btnOpen);
+
+
+                        btnClose = new Button()
+                        {
+                            X = btnOpen.Right,
+                            Y = Application.GetRealWidth(89),
+                            Width = Application.GetRealWidth(40),
+                            Height = Application.GetRealWidth(40),
+                            UnSelectedImagePath = "FunctionIcon/Light/LightScene/gp_all_off_home.png",
+                            SelectedImagePath = "FunctionIcon/Light/LightScene/gp_all_off_home_click.png",
+                        };
+                        view.AddChidren(btnClose);
+
+
+                        btnClose.MouseDownEventHandler = (sender, e) => {
+                            btnClose.IsSelected = true;
+                        };
+
+                        btnClose.MouseUpEventHandler = (sender, e) => {
+                            btnClose.IsSelected = false;
+                            if (function.spk == SPK.GroupControl)
+                            {
+                                var d = new Dictionary<string, string>();
+                                d.Add("on_off", "off");
+                                (function as GroupControl).Control(d);
+                            }
+                        };
+                        btnOpen.MouseDownEventHandler = (sender, e) => {
+                            btnOpen.IsSelected = true;
+                        };
+                        btnOpen.MouseUpEventHandler = (sender, e) => {
+                            btnOpen.IsSelected = false;
+                            if (function.spk == SPK.GroupControl)
+                            {
+                                var d = new Dictionary<string, string>();
+                                d.Add("on_off", "on");
+                                (function as GroupControl).Control(d);
+                            }
+                        };
+
+
+                    }
+                }
+                else if (function.spk == SPK.ElectricEnergy || function.spk == SPK.AirSwitch || function.spk == SPK.AirSwitchP3)
+                {
+
                 }
                 else
                 {
@@ -1221,7 +1648,6 @@
                         SelectedImagePath = "Public/SwitchOn.png",
                     };
                     view.AddChidren(btnSwitch);
-
                     btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_blue.png";
                     btnIcon.SelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_white.png";
                     LoadEvent_SwitchFunction(function, btnSwitch);
@@ -1250,7 +1676,7 @@
                 btnName.MouseUpEventHandler = skipControlPageEvent;
                 btnIcon.MouseUpEventHandler = skipControlPageEvent;
                 btnState.MouseUpEventHandler = skipControlPageEvent;
-                //涓嶉渶瑕佹洿鏂扮姸鎬佺殑鍔ㄨ兘鍒楄〃
+                //涓嶉渶瑕佹洿鏂扮姸鎬佺殑鍔熻兘鍒楄〃
                 if(!SPK.NotStatusSpkList.Contains(function.spk) || function.spk != SPK.IpCam_Imou)
                 {
                     UpdataFunctionStates(function);
@@ -1266,7 +1692,7 @@
                     TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                     TextAlignment = TextAlignment.CenterLeft,
                     Tag = "OnlineTag",
-                    Visible = !function.online
+                    Visible = !function.isOnline()
                 };
                 view.AddChidren(btnOffline);
 

--
Gitblit v1.8.0