From 43b0d5870d528f23ecd6aeceb6cfd4325188b46f Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期四, 01 七月 2021 15:50:43 +0800
Subject: [PATCH] Revert "1"

---
 HDL_ON/UI/UI2/1-HomePage/HomePage.cs | 1329 +++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 951 insertions(+), 378 deletions(-)

diff --git a/HDL_ON/UI/UI2/1-HomePage/HomePage.cs b/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
index 19c8cea..d58d0ec 100644
--- a/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
+++ b/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
@@ -1,20 +1,31 @@
-锘縰sing System;
+锘縰sing System;
 using System.Collections.Generic;
+using System.Text;
+using HDL_ON.DAL;
+using HDL_ON.DriverLayer;
 using HDL_ON.Entity;
 using HDL_ON.UI.CSS;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
 using Shared;
 
 namespace HDL_ON.UI
 {
-    public partial class HomePage : FrameLayout
+    public partial class HomePage : VerticalRefreshLayout
     {
 
         #region 鎺т欢鍒楄〃
-        static FrameLayout bodyView;
+        static HomePage bodyView;
+
+        //FrameLayout bodyView;
         /// <summary>
         /// 椤堕儴淇℃伅鍖哄煙
         /// </summary>
         FrameLayout topView;
+        /// <summary>
+        /// 杩炴帴鐘舵�佹彁绀�
+        /// </summary>
+        Button btnLinkStateTip;
         /// <summary>
         ///浣忓畢鍚嶇О鏄剧ず
         /// </summary>
@@ -24,17 +35,25 @@
         /// </summary>
         FrameLayout environmentalView;
         /// <summary>
-        /// 褰撳墠娓╁害淇℃伅
+        /// 褰撳墠娓╁害淇℃伅-瀹ゅ
         /// </summary>
-        Button btnTempValues;
+        TextButton btnTempValues;
         /// <summary>
-        /// 褰撳墠婀垮害淇℃伅
+        /// 褰撳墠婀垮害淇℃伅-瀹ゅ
         /// </summary>
-        Button btnHumidityValues;
+        TextButton btnHumidityValues;
+        /// <summary>
+        /// 褰撳墠娓╁害淇℃伅-瀹ゅ唴
+        /// </summary>
+        TextButton btnIndoorTempValues;
+        /// <summary>
+        /// 褰撳墠婀垮害淇℃伅-瀹ゅ唴
+        /// </summary>
+        TextButton btnIndoorHumiValues;
         /// <summary>
         /// 褰撳墠pm2.5鐘舵��
         /// </summary>
-        Button btnPm25Values;
+        TextButton btnPm25Values;
         /// <summary>
         /// 鍒囨崲鏄剧ず鍔熻兘绫诲瀷鍖哄煙
         /// </summary>
@@ -60,17 +79,9 @@
         /// </summary>
         VerticalScrolViewLayout sceneFunctionView;
         /// <summary>
-        /// 鐏厜鍖哄煙闆嗗悎
+        /// 鍔熻兘鍖哄煙闆嗗悎
         /// </summary>
-        static Dictionary<string, FrameLayout> LightViews;
-        /// <summary>
-        /// 绌鸿皟鍖哄煙闆嗗悎
-        /// </summary>
-        static Dictionary<string, FrameLayout> AcViews;
-        /// <summary>
-        /// 绐楀笜鍖哄煙闆嗗悎
-        /// </summary>
-        static Dictionary<string, FrameLayout> CurtainViews;
+        List<FrameLayout> functionViews;
         #endregion
 
         #region 鍖哄煙鍙橀噺
@@ -80,249 +91,532 @@
         bool CurShowTypeIsFunction = true;
         #endregion
 
+        #region 鎶ヨ淇℃伅
+        Button btnMsgBg;
+        Button btnMsgTime;
+        Button btnMsg;
+        Button btnMsgIcon;
+        #endregion
+
         public HomePage()
         {
             bodyView = this;
             bodyView.BackgroundColor = CSS_Color.BackgroundColor;
+
+            this.VerticalScrollBarEnabled = false;
+#if __IOS__
+            //鑷姩鍋忕Щ鍙栨秷
+            if (UIKit.UIDevice.CurrentDevice.CheckSystemVersion(11, 0))
+            {
+                (this.uiView as UIKit.UIScrollView).ContentInsetAdjustmentBehavior = UIKit.UIScrollViewContentInsetAdjustmentBehavior.Never;
+            }
+#endif
+        }
+
+        public override void RemoveFromParent()
+        {
+            UnregisterGetPushMessageAction();
+            base.RemoveFromParent();
         }
 
         public void LoadPage()
         {
-            #region topView
-            topView = new FrameLayout()
+            MainPage.CurPageIndex = 0;
+            try
             {
-                Height = Application.GetRealHeight(216),
-                BackgroundImagePath = DB_ResidenceData.residenceData.residenceImage,
-            };
-            bodyView.AddChidren(topView);
+                this.BeginHeaderRefreshingAction = () =>
+                {
+                    this.EndHeaderRefreshing();
+                    Common.ApiUtlis.Ins.DownloadData();
+                    LoadContentView();
+                };
 
-            Button btnTop;
-            btnTop = new Button()
+                #region topView
+
+                bodyView.RemoveAll();
+
+                topView = new FrameLayout()
+                {
+                    Height = Application.GetRealHeight(216),
+                    BackgroundImagePath = DB_ResidenceData.Instance.residenceImage,
+                };
+                bodyView.AddChidren(topView);
+
+                Button btnTop;
+                btnTop = new Button()
+                {
+                    BackgroundColor = CSS_Color.DialogTransparentColor2,
+                };
+                topView.AddChidren(btnTop);
+
+                btnLinkStateTip = new Button()
+                {
+                    X = Application.GetRealWidth(16),
+                    Y = Application.GetRealHeight(46),
+                    Width = Application.GetRealWidth(6),
+                    Height = Application.GetRealWidth(6),
+                    BackgroundColor = CSS_Color.LinkTipFail,
+                    Radius = (uint)Application.GetRealWidth(3),
+                };
+                topView.AddChidren(btnLinkStateTip);
+                //鏇存柊閾炬帴鐘舵�乮con棰滆壊
+                CheckLinkStatus();//2020-12-22
+                
+
+                btnResidenceName = new Button()
+                {
+                    X = Application.GetRealWidth(26),
+                    Y = Application.GetRealHeight(32),
+                    Width = Application.GetRealWidth(300),
+                    Height = Application.GetRealHeight(33),
+                    TextColor = CSS_Color.MainBackgroundColor,
+                    TextSize = CSS_FontSize.EmphasisFontSize_FirstLevel,
+                    TextAlignment = TextAlignment.CenterLeft,
+                    Text = DB_ResidenceData.Instance.CurrentRegion.homeName,
+                    IsBold = true
+                };
+                topView.AddChidren(btnResidenceName);
+
+#if DEBUG
+                //鎼滅储缃戝叧
+                btnResidenceName.MouseUpEventHandler = (sender, e) =>
+                {
+                  
+                };
+#endif
+
+                environmentalView = new FrameLayout()
+                {
+                    Y = Application.GetRealHeight(1) + btnResidenceName.Bottom,
+                    Height = Application.GetRealHeight(32),
+                };
+                topView.AddChidren(environmentalView);
+                #region 鐜鏁版嵁
+                var tempSensorList = FunctionList.List.GetEnvirSensorsList().FindAll((obj) => obj.spk == SPK.SensorTemperature);
+                var humiSensorList = FunctionList.List.GetEnvirSensorsList().FindAll((obj) => obj.spk == SPK.SensorHumidity);
+
+                var btnEnvirValuesTitle = new Button() {
+                    X = Application.GetRealWidth(12),
+                    Gravity = Gravity.CenterVertical,
+                    TextColor = CSS_Color.MainBackgroundColor,
+                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                    TextID = StringId.Outdoor,
+                    TextAlignment = TextAlignment.CenterLeft,
+                };
+                if (tempSensorList.Count > 0 || humiSensorList.Count > 0)
+                {
+                    btnEnvirValuesTitle.TextID = StringId.InOutdoor;
+                }
+                btnEnvirValuesTitle.Width = Application.GetRealWidth(8) + btnEnvirValuesTitle.GetTextWidth();
+                environmentalView.AddChidren(btnEnvirValuesTitle);
+
+                Button btnTempIcon = new Button()
+                {
+                    X = btnEnvirValuesTitle.Right,
+                    Gravity = Gravity.CenterVertical,
+                    Width = Application.GetMinRealAverage(16),
+                    Height = Application.GetMinRealAverage(16),
+                    UnSelectedImagePath = "Public/DeviceInfoIcon/TempIcon.png",
+                };
+                environmentalView.AddChidren(btnTempIcon);
+
+                btnTempValues = new TextButton()
+                {
+                    X = btnTempIcon.Right + Application.GetRealWidth(4),
+                    Gravity = Gravity.CenterVertical,
+                    TextColor = CSS_Color.MainBackgroundColor,
+                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                    Text = MainPage.cityInfo.temperature + "掳",
+                    TextAlignment = TextAlignment.CenterLeft,
+                };
+                btnTempValues.Width = btnTempValues.GetTextWidth();
+                environmentalView.AddChidren(btnTempValues);
+
+                btnIndoorTempValues = new TextButton()
+                {
+                    X = btnTempValues.Right,
+                    Gravity = Gravity.CenterVertical,
+                    TextColor = CSS_Color.MainBackgroundColor,
+                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                    TextAlignment = TextAlignment.CenterLeft,
+                    Text = ""
+                };
+                if (tempSensorList.Count > 0)
+                {
+                    btnIndoorTempValues.Text = "/--掳";
+                    double tempTotalValues = 0;
+                    foreach (var temp in tempSensorList)
+                    {
+                        double tempValue = 0;
+                        double.TryParse(temp.GetAttrState(FunctionAttributeKey.Value), out tempValue);
+                        tempTotalValues += tempValue;
+                    }
+                    if (tempTotalValues > 0)
+                    {
+                        btnIndoorTempValues.Text = "/" + tempTotalValues + "掳";
+                    }
+                }
+                btnIndoorTempValues.Width = btnIndoorTempValues.GetTextWidth();
+                environmentalView.AddChidren(btnIndoorTempValues);
+
+                Button btnHumidityIcon = new Button()
+                {
+                    X = btnIndoorTempValues.Right + Application.GetRealWidth(8),
+                    Gravity = Gravity.CenterVertical,
+                    Width = Application.GetMinRealAverage(16),
+                    Height = Application.GetMinRealAverage(16),
+                    UnSelectedImagePath = "Public/DeviceInfoIcon/HumidityIcon.png",
+                };
+                environmentalView.AddChidren(btnHumidityIcon);
+
+                btnHumidityValues = new TextButton()
+                {
+                    X = btnHumidityIcon.Right + Application.GetRealWidth(4),
+                    Gravity = Gravity.CenterVertical,
+                    TextColor = CSS_Color.MainBackgroundColor,
+                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                    Text = MainPage.cityInfo.humidity + "%",
+                    TextAlignment = TextAlignment.CenterLeft,
+                };
+                btnHumidityValues.Width = btnHumidityValues.GetTextWidth();
+                environmentalView.AddChidren(btnHumidityValues);
+
+                btnIndoorHumiValues = new TextButton()
+                {
+                    X = btnHumidityValues.Right,
+                    Gravity = Gravity.CenterVertical,
+                    TextColor = CSS_Color.MainBackgroundColor,
+                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                    TextAlignment = TextAlignment.CenterLeft,
+                    Text = ""
+                };
+                if (tempSensorList.Count > 0)
+                {
+                    btnIndoorHumiValues.Text = "/--%";
+                    double humiTotalValues = 0;
+                    foreach (var humi in humiSensorList)
+                    {
+                        double humiValue = 0;
+                        double.TryParse(humi.GetAttrState(FunctionAttributeKey.Value), out humiValue);
+                        humiTotalValues += humiValue;
+                    }
+                    if (humiTotalValues > 0)
+                    {
+                        btnIndoorHumiValues.Text = "/" + humiTotalValues + "%";
+                    }
+                }
+                btnIndoorHumiValues.Width = btnIndoorHumiValues.GetTextWidth();
+                environmentalView.AddChidren(btnIndoorHumiValues);
+
+                Button btnPm25Icon = new Button()
+                {
+                    X = btnIndoorHumiValues.Right + Application.GetRealWidth(4),
+                    Gravity = Gravity.CenterVertical,
+                    Width = Application.GetMinRealAverage(16),
+                    Height = Application.GetMinRealAverage(16),
+                    UnSelectedImagePath = "Public/DeviceInfoIcon/Pm25Icon.png",
+                };
+                environmentalView.AddChidren(btnPm25Icon);
+
+                btnPm25Values = new TextButton()
+                {
+                    X = btnPm25Icon.Right + Application.GetRealWidth(4),
+                    Gravity = Gravity.CenterVertical,
+                    TextColor = CSS_Color.MainBackgroundColor,
+                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                    Text = MainPage.cityInfo.pm25,
+                    TextAlignment = TextAlignment.CenterLeft,
+                };
+                btnPm25Values.Width = btnPm25Values.GetTextWidth();
+                environmentalView.AddChidren(btnPm25Values);
+                #endregion
+
+                #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);
+
+                btnMsgBg = new Button()
+                {
+                    BackgroundColor = CSS_Color.MainColor,//0x3F4484F4,
+                    Alpha = 0.4f,
+                };
+                msgView.AddChidren(btnMsgBg);
+
+
+                btnMsgIcon = new Button()
+                {
+                    X = Application.GetRealWidth(12),
+                    Gravity = Gravity.CenterVertical,
+                    Width = Application.GetMinRealAverage(24),
+                    Height = Application.GetMinRealAverage(24),
+                    UnSelectedImagePath = "Collection/MsgIcon.png",
+                    SelectedImagePath = "Collection/MsgIconTip.png",
+                };
+                msgView.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);
+
+
+                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();
+
+                #endregion
+
+                #endregion
+
+                #region 鍔熻兘鍦烘櫙鍒囨崲
+
+                bodyView.AddChidren(new Button() { Height = Application.GetRealHeight(20), BackgroundColor = 0x00000000 });
+
+                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
+                contentView = new PageLayout()
+                {
+                    //Y = changeView.Bottom,
+                    Height = Application.GetRealHeight(310 + 30 + 10), //20涓鸿秴鍑洪儴鍒�
+                    IsShowPoint = false,
+                };
+                bodyView.AddChidren(contentView);
+
+                functionViews = new List<FrameLayout>();
+
+                LoadContentView();
+
+                #endregion
+            }
+            catch (Exception ex)
             {
-                BackgroundColor = CSS_Color.DialogTransparentColor2,
-            };
-            topView.AddChidren(btnTop);
+                MainPage.Log($"HomePage LoadPage Error : {ex.Message}");
+            }
 
-            btnResidenceName = new Button()
+
+#if DEBUG
+            //FunctionList.List.Functions.Add(new Function() { spk = SPK.PjtIr, name = "娴嬭瘯鎶曞奖浠�",
+            //                            attributes = new List<FunctionAttributes>() {
+            //                                new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
+            //                                new FunctionAttributes(){ key = "computer",value = new List<string>(){"鐢佃剳" } },
+            //                                new FunctionAttributes(){ key = "video",value = new List<string>(){"瑙嗛" } },
+            //                                new FunctionAttributes(){ key = "source",value = new List<string>(){"淇″彿婧�" } },
+            //                                new FunctionAttributes(){ key = "zoom+",value = new List<string>(){"鍙樼劍+" } },
+            //                                new FunctionAttributes(){ key = "zoom-",value = new List<string>(){"鍙樼劍-" } },
+            //                                new FunctionAttributes(){ key = "page+",value = new List<string>(){"鐢婚潰+" } },
+            //                                new FunctionAttributes(){ key = "page-",value = new List<string>(){"鐢婚潰-" } },
+            //                                new FunctionAttributes(){ key = "menu",value = new List<string>(){"鑿滃崟" } },
+            //                                new FunctionAttributes(){ key = "ok",value = new List<string>(){"纭" } },
+            //                                new FunctionAttributes(){ key = "up",value = new List<string>(){"涓�" } },
+            //                                new FunctionAttributes(){ key = "left",value = new List<string>(){"宸�" } },
+            //                                new FunctionAttributes(){ key = "right",value = new List<string>(){"鍙�" } },
+            //                                new FunctionAttributes(){ key = "down",value = new List<string>(){"涓�" } },
+            //                                new FunctionAttributes(){ key = "exit",value = new List<string>(){"閫�鍑�" } },
+            //                                new FunctionAttributes(){ key = "volume+",value = new List<string>(){"闊抽噺+" } },
+            //                                new FunctionAttributes(){ key = "volume-",value = new List<string>(){"闊抽噺-" } },
+            //                                new FunctionAttributes(){ key = "mute",value = new List<string>(){"闈欓煶" } },
+            //                                new FunctionAttributes(){ key = "auto",value = new List<string>(){"鑷姩" } },
+            //                                new FunctionAttributes(){ key = "pause",value = new List<string>(){"鏆傚仠" } },
+            //                            }
+            //});
+
+            //FunctionList.List.Functions.Add(new Function()
+            //{
+            //    spk = SPK.StbIr,
+            //    name = "娴嬭瘯鏈洪《鐩�",
+            //    attributes = new List<FunctionAttributes>() {
+            //                                new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
+            //                                new FunctionAttributes(){ key = "computer",value = new List<string>(){"鐢佃剳" } },
+            //                                new FunctionAttributes(){ key = "video",value = new List<string>(){"瑙嗛" } },
+            //                                new FunctionAttributes(){ key = "source",value = new List<string>(){"淇″彿婧�" } },
+            //                                new FunctionAttributes(){ key = "zoom+",value = new List<string>(){"鍙樼劍+" } },
+            //                                new FunctionAttributes(){ key = "zoom-",value = new List<string>(){"鍙樼劍-" } },
+            //                                new FunctionAttributes(){ key = "page+",value = new List<string>(){"鐢婚潰+" } },
+            //                                new FunctionAttributes(){ key = "page-",value = new List<string>(){"鐢婚潰-" } },
+            //                                new FunctionAttributes(){ key = "menu",value = new List<string>(){"鑿滃崟" } },
+            //                                new FunctionAttributes(){ key = "ok",value = new List<string>(){"纭" } },
+            //                                new FunctionAttributes(){ key = "up",value = new List<string>(){"涓�" } },
+            //                                new FunctionAttributes(){ key = "left",value = new List<string>(){"宸�" } },
+            //                                new FunctionAttributes(){ key = "right",value = new List<string>(){"鍙�" } },
+            //                                new FunctionAttributes(){ key = "down",value = new List<string>(){"涓�" } },
+            //                                new FunctionAttributes(){ key = "exit",value = new List<string>(){"閫�鍑�" } },
+            //                                new FunctionAttributes(){ key = "volume+",value = new List<string>(){"闊抽噺+" } },
+            //                                new FunctionAttributes(){ key = "volume-",value = new List<string>(){"闊抽噺-" } },
+            //                                new FunctionAttributes(){ key = "mute",value = new List<string>(){"闈欓煶" } },
+            //                                new FunctionAttributes(){ key = "auto",value = new List<string>(){"鑷姩" } },
+            //                                new FunctionAttributes(){ key = "pause",value = new List<string>(){"鏆傚仠" } },
+            //                            }
+            //});
+
+            //FunctionList.List.Functions.Add(new Function()
+            //{
+            //    spk = SPK.TvIr,
+            //    name = "娴嬭瘯鐢佃",
+            //    attributes = new List<FunctionAttributes>() {
+            //                                new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
+            //                                new FunctionAttributes(){ key = "computer",value = new List<string>(){"鐢佃剳" } },
+            //                                new FunctionAttributes(){ key = "video",value = new List<string>(){"瑙嗛" } },
+            //                                new FunctionAttributes(){ key = "source",value = new List<string>(){"淇″彿婧�" } },
+            //                                new FunctionAttributes(){ key = "zoom+",value = new List<string>(){"鍙樼劍+" } },
+            //                                new FunctionAttributes(){ key = "zoom-",value = new List<string>(){"鍙樼劍-" } },
+            //                                new FunctionAttributes(){ key = "page+",value = new List<string>(){"鐢婚潰+" } },
+            //                                new FunctionAttributes(){ key = "page-",value = new List<string>(){"鐢婚潰-" } },
+            //                                new FunctionAttributes(){ key = "menu",value = new List<string>(){"鑿滃崟" } },
+            //                                new FunctionAttributes(){ key = "ok",value = new List<string>(){"纭" } },
+            //                                new FunctionAttributes(){ key = "up",value = new List<string>(){"涓�" } },
+            //                                new FunctionAttributes(){ key = "left",value = new List<string>(){"宸�" } },
+            //                                new FunctionAttributes(){ key = "right",value = new List<string>(){"鍙�" } },
+            //                                new FunctionAttributes(){ key = "down",value = new List<string>(){"涓�" } },
+            //                                new FunctionAttributes(){ key = "exit",value = new List<string>(){"閫�鍑�" } },
+            //                                new FunctionAttributes(){ key = "volume+",value = new List<string>(){"闊抽噺+" } },
+            //                                new FunctionAttributes(){ key = "volume-",value = new List<string>(){"闊抽噺-" } },
+            //                                new FunctionAttributes(){ key = "mute",value = new List<string>(){"闈欓煶" } },
+            //                                new FunctionAttributes(){ key = "auto",value = new List<string>(){"鑷姩" } },
+            //                                new FunctionAttributes(){ key = "pause",value = new List<string>(){"鏆傚仠" } },
+            //                            }
+            //});
+#endif
+
+        }
+        /// <summary>
+        /// 鍔犺浇鍐呭鍖哄煙
+        /// </summary>
+        void LoadContentView()
+        {
+            if (!Common.ApiUtlis.Ins.DownloadDataComplete)
             {
-                X = Application.GetRealWidth(16),
-                Y = Application.GetRealHeight(32),
-                Width = Application.GetRealWidth(200),
-                Height = Application.GetRealHeight(33),
-                TextColor = CSS.CSS_Color.MainBackgroundColor,
-                TextSize = CSS.CSS_FontSize.EmphasisFontSize_FirstLevel,
-                TextAlignment = TextAlignment.CenterLeft,
-                Text = DB_ResidenceData.residenceData.residenceName,
-                IsBold = true
-            };
-            topView.AddChidren(btnResidenceName);
+                var waitPage = new Loading();
+                MainPage.BaseView.AddChidren(waitPage);
+                waitPage.Start(Language.StringByID(StringId.PleaseWait));
 
-            environmentalView = new FrameLayout()
+                new System.Threading.Thread(() =>
+                {
+                    try
+                    {
+                        while (!Common.ApiUtlis.Ins.DownloadDataComplete)
+                        {
+                            System.Threading.Thread.Sleep(400);
+                        }
+                        Application.RunOnMainThread(() =>
+                        {
+                            if (contentView == null)
+                            {
+                                return;
+                            }
+                            contentView.RemoveAll();
+                            deviceFunctionView = new VerticalScrolViewLayout();
+                            contentView.AddChidren(deviceFunctionView);
+                            LoadDeviceFunctionControlZone();
+                            sceneFunctionView = new VerticalScrolViewLayout();
+                            contentView.AddChidren(sceneFunctionView);
+                            LoadSceneFunctionControlZone();
+                            contentView.PageIndex = 0;
+
+
+                            LoadEvent_ChangeShowedFunctionType();
+
+                            // 鏌ヨ鏈娑堟伅骞舵樉绀�
+                            GetUnreadPushMessages();
+                            RegisterGetPushMessageAction();
+
+                            waitPage.Hide();
+                        });
+                    }
+                    catch (Exception ex) {
+                        MainPage.Log($"鍒锋柊涓婚〉寮傚父:{ex.Message}");
+                    }
+                    finally { }
+                })
+                { IsBackground = true }.Start();
+            }
+            else
             {
-                Y = Application.GetRealHeight(1) + btnResidenceName.Bottom,
-                Height = Application.GetRealHeight(32),
-            };
-            topView.AddChidren(environmentalView);
-            #region 鐜鏁版嵁
-            Button btnTempIcon = new Button()
-            {
-                X = Application.GetRealWidth(12),
-                Gravity = Gravity.CenterVertical,
-                Width = Application.GetMinRealAverage(16),
-                Height = Application.GetMinRealAverage(16),
-                UnSelectedImagePath = "Public/InfoIcon/TempIcon.png",
-            };
-            environmentalView.AddChidren(btnTempIcon);
 
-            btnTempValues = new Button()
-            {
-                X = btnTempIcon.Right + Application.GetRealWidth(4),
-                Width = Application.GetRealWidth(30),
-                Gravity = Gravity.CenterVertical,
-                TextColor = CSS.CSS_Color.MainBackgroundColor,
-                TextSize = CSS.CSS_FontSize.PromptFontSize_FirstLevel,
-                Text = "--掳",
-                TextAlignment = TextAlignment.CenterLeft,
-            };
-            environmentalView.AddChidren(btnTempValues);
-
-            Button btnHumidityIcon = new Button()
-            {
-                X = btnTempValues.Right + Application.GetRealWidth(2),
-                Gravity = Gravity.CenterVertical,
-                Width = Application.GetMinRealAverage(16),
-                Height = Application.GetMinRealAverage(16),
-                UnSelectedImagePath = "Public/InfoIcon/HumidityIcon.png",
-            };
-            environmentalView.AddChidren(btnHumidityIcon);
-
-            btnHumidityValues = new Button()
-            {
-                X = btnHumidityIcon.Right + Application.GetRealWidth(4),
-                Width = Application.GetRealWidth(30),
-                Gravity = Gravity.CenterVertical,
-                TextColor = CSS.CSS_Color.MainBackgroundColor,
-                TextSize = CSS.CSS_FontSize.PromptFontSize_FirstLevel,
-                Text = "--%",
-                TextAlignment = TextAlignment.CenterLeft,
-            };
-            environmentalView.AddChidren(btnHumidityValues);
-
-            Button btnPm25Icon = new Button()
-            {
-                X = btnHumidityValues.Right + Application.GetRealWidth(2),
-                Gravity = Gravity.CenterVertical,
-                Width = Application.GetMinRealAverage(16),
-                Height = Application.GetMinRealAverage(16),
-                UnSelectedImagePath = "Public/InfoIcon/Pm25Icon.png",
-            };
-            environmentalView.AddChidren(btnPm25Icon);
-
-            btnPm25Values = new Button()
-            {
-                X = btnPm25Icon.Right + Application.GetRealWidth(4),
-                Width = Application.GetRealWidth(30),
-                Gravity = Gravity.CenterVertical,
-                TextColor = CSS.CSS_Color.MainBackgroundColor,
-                TextSize = CSS.CSS_FontSize.PromptFontSize_FirstLevel,
-                Text = "--",
-                TextAlignment = TextAlignment.CenterLeft,
-            };
-            environmentalView.AddChidren(btnPm25Values);
-            #endregion
+                deviceFunctionView = new VerticalScrolViewLayout();
+                contentView.AddChidren(deviceFunctionView);
+                LoadDeviceFunctionControlZone();
+                sceneFunctionView = new VerticalScrolViewLayout();
+                contentView.AddChidren(sceneFunctionView);
+                LoadSceneFunctionControlZone();
+                contentView.PageIndex = 0;
 
 
-            #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);
+                LoadEvent_ChangeShowedFunctionType();
 
-            var btngb = new Button()
-            {
-                BackgroundColor = CSS.CSS_Color.MainColor,//0x3F4484F4,//
-                Alpha = 0.4f,
-            };
-            msgView.AddChidren(btngb);
+                // 鏌ヨ鏈娑堟伅骞舵樉绀�
+                GetUnreadPushMessages();
+                RegisterGetPushMessageAction();
 
-            Button btnMsgIcon;
-            btnMsgIcon = new Button()
-            {
-                X = Application.GetRealWidth(12),
-                Gravity = Gravity.CenterVertical,
-                Width = Application.GetMinRealAverage(24),
-                Height = Application.GetMinRealAverage(24),
-                UnSelectedImagePath = "Collection/MsgIcon.png",
-                SelectedImagePath = "Collection/MsgIconTip.png",
-            };
-            msgView.AddChidren(btnMsgIcon);
+            }
 
-            Button btnMsg;
-            btnMsg = new Button()
-            {
-                X = Application.GetRealWidth(10) + btnMsgIcon.Right,
-                Width = Application.GetRealWidth(240),
-                Text = "鏃�",
-                TextColor = CSS.CSS_Color.MainBackgroundColor,
-                TextSize = CSS.CSS_FontSize.PromptFontSize_FirstLevel,
-                TextAlignment = TextAlignment.CenterLeft,
-            };
-            msgView.AddChidren(btnMsg);
-
-            Button btnMsgTime;
-            btnMsgTime = new Button()
-            {
-                X = Application.GetRealWidth(299),
-                Width = Application.GetRealWidth(44),
-                Text = "00:00",
-                TextSize = CSS.CSS_FontSize.PromptFontSize_FirstLevel,
-                TextAlignment = TextAlignment.CenterLeft,
-            };
-            msgView.AddChidren(btnMsgTime);
-
-            #endregion
-
-            #endregion
-
-
-            #region 鍔熻兘鍦烘櫙鍒囨崲
-            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()
-            {
-                Width = Application.GetRealWidth(114),
-                TextID = StringId.Functions,
-                SelectedTextColor = CSS.CSS_Color.MainColor,
-                TextColor = CSS.CSS_Color.PromptingColor1,
-                TextSize = CSS.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.CSS_Color.PromptingColor1,
-            };
-            changeView.AddChidren(btnLine);
-
-            btnChangeScene = new Button()
-            {
-                X = btnLine.Right,
-                Width = Application.GetRealWidth(114),
-                TextID = StringId.Scenes,
-                SelectedTextColor = CSS.CSS_Color.MainColor,
-                TextColor = CSS.CSS_Color.PromptingColor1,
-                TextSize = CSS.CSS_FontSize.TextFontSize,
-                TextAlignment = TextAlignment.Center,
-            };
-            changeView.AddChidren(btnChangeScene);
-
-            #endregion
-
-            #region ContextView
-            contentView = new PageLayout()
-            {
-                Y = changeView.Bottom + Application.GetRealHeight(10),
-                Height = Application.GetRealHeight(310 + 30), //20涓鸿秴鍑洪儴鍒�
-            };
-            bodyView.AddChidren(contentView);
-
-            LightViews = new Dictionary<string, FrameLayout>();
-            AcViews = new Dictionary<string, FrameLayout>();
-            CurtainViews = new Dictionary<string, FrameLayout>();
-
-            deviceFunctionView = new VerticalScrolViewLayout();
-            contentView.AddChidren(deviceFunctionView);
-            LoadDeviceFunctionControlZone();
-            sceneFunctionView = new VerticalScrolViewLayout();
-            contentView.AddChidren(sceneFunctionView);
-            LoadSceneFunctionControlZone();
-            contentView.PageIndex = 0;
-
-            #endregion
-
-            LoadEvent_ChangeShowedFunctionType();
-            //鍒锋柊鍔熻兘鐘舵��
-            DB_ResidenceData.residenceData.RefreshResidenceFunctionStatus();
         }
 
         /// <summary>
@@ -332,21 +626,51 @@
         {
             #region ContextView
             deviceFunctionView.RemoveAll();
-            LightViews.Clear();
-            AcViews.Clear();
-            CurtainViews.Clear();
+            functionViews.Clear();
             var rowView = new FrameLayout();
             try
             {
                 int index = 0;
-                foreach (var function in DB_ResidenceData.residenceData.functionList.GetAllDeviceFunctionList())
+                var list = FunctionList.List.GetDeviceFunctionList();
+                foreach (var function in list)
                 {
-                    if (!function.collection)
-                        continue;
-                    if (function.roomIdList.Count == 0)//濡備綍鍦ㄦ埧闂村凡缁忕Щ闄や簡杩欎釜鍔熻兘锛屽垯鏀惰棌鐣岄潰涔熶笉浼氬啀鏄剧ず
+                    //闊充箰妯″潡鏈変富浠庡叧绯伙紝闇�瑕佺壒娈婂鐞�
+                    if (function.Spk_Prefix == FunctionCategory.Music)
                     {
-                        function.collection = false;
-                        continue;
+                        //var music = function as Music.A31MusicModel;
+                        var music = Music.A31MusicModel.A31MusicModelList.Find((obj) => obj.sid == function.sid);
+                        if (music == null)
+                        {
+                            continue;
+                        }
+                        if (music.ServerClientType == -1)
+                        {
+                            continue;
+                        }
+                        else if (music.ServerClientType == 1)
+                        {
+                            if (!music.MainPlayCollection)
+                            {
+                                continue;
+                            }
+                        }
+                        else
+                        {
+                            if (!music.collect)
+                            {
+                                continue;
+                            }
+                        }
+                    }
+                    else
+                    {
+                        if (!function.collect)
+                            continue;
+                        //if (function.roomIdList.Count == 0)//濡備綍鍦ㄦ埧闂村凡缁忕Щ闄や簡杩欎釜鍔熻兘锛屽垯鏀惰棌鐣岄潰涔熶笉浼氬啀鏄剧ず
+                        //{
+                        //    function.collection = false;
+                        //    continue;
+                        //}
                     }
                     if (index % 2 == 0)
                     {
@@ -370,37 +694,49 @@
                         Tag = function.sid
                     };
                     rowView.AddChidren(functionView);
+
                     var btnbg = new Button()
                     {
                         UnSelectedImagePath = "Collection/Functionbg.png",
                         SelectedImagePath = "Collection/FunctionOnbg.png",
+                        Tag = function.sid
                     };
                     functionView.AddChidren(btnbg);
-                    switch (function.functionCategory)
-                    {
-                        case FunctionType.Light:
-                            #region 鐏厜 Light
-                            LightViews.Add(function.sid, functionView);
-                            #endregion
-                            break;
-                        case FunctionType.Curtain:
-                            #region 绐楀笜
-                            CurtainViews.Add(function.sid, functionView);
-                            #endregion
-                            break;
-                        case FunctionType.AC:
-                            #region 绌鸿皟 AC
-                            AcViews.Add(function.sid, functionView);
-                            #endregion
-                            break;
-                    }
+                    functionViews.Add(functionView);
                     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 erorr : " + ex.Message);
+                MainPage.Log("homepage error : " + ex.Message);
             }
             deviceFunctionView.AddChidren(new Button { Height = Application.GetRealHeight(30) });
             #endregion
@@ -416,15 +752,15 @@
             try
             {
                 int index = 0;
-                foreach (var function in DB_ResidenceData.residenceData.functionList.scenes)
+                foreach (var scene in FunctionList.List.scenes)
                 {
-                    if (!function.collection)
+                    if (!scene.collect)
                         continue;
-                    if (function.roomIdList.Count == 0)//濡備綍鍦ㄦ埧闂村凡缁忕Щ闄や簡杩欎釜鍔熻兘锛屽垯鏀惰棌鐣岄潰涔熶笉浼氬啀鏄剧ず
-                    {
-                        function.collection = false;
-                        continue;
-                    }
+                    //if (scene.roomIds.Count == 0)//濡備綍鍦ㄦ埧闂村凡缁忕Щ闄や簡杩欎釜鍔熻兘锛屽垯鏀惰棌鐣岄潰涔熶笉浼氬啀鏄剧ず
+                    //{
+                    //    scene.collect = false;
+                    //    continue;
+                    //}
                     if (index % 2 == 0)
                     {
                         sceneFunctionView.AddChidren(new Button() { Height = Application.GetRealHeight(7) });
@@ -435,26 +771,52 @@
                         sceneFunctionView.AddChidren(rowView);
                         sceneFunctionView.AddChidren(new Button() { Height = Application.GetRealHeight(7) });
                     }
-                    var functionView_X = Application.GetRealWidth((16 + 164) * (index % 2) +16);
+                    var functionView_X = Application.GetRealWidth((16 + 164) * (index % 2) + 16);
 
                     var functionView = new FrameLayout()
                     {
                         X = functionView_X,
                         Width = Application.GetRealWidth(164),
                         Height = Application.GetRealWidth(122),
-                        Tag = function.sid,
-                        BackgroundImagePath = (function as Scene).ImagePath,
+                        Tag = scene.sid,
+                        BackgroundImagePath = scene.ImagePath,
                     };
                     rowView.AddChidren(functionView);
-                    //functionView.Radius = (uint)Application.GetRealWidth(12);
-                    //functionView.BorderColor = CSS_Color.BackgroundColor;
-                    //functionView.BorderWidth = 1;
 
+                    //2020-12-03 淇敼鍥剧墖鍔犺浇鏂规硶
+                    ImageUtlis.Current.LoadLocalOrNetworkImages((scene as Scene).ImagePath, functionView);
 
-                    LoadSceneFunctionDiv(functionView, function);
+                    LoadSceneFunctionDiv( functionView, scene);
                     index++;
                 }
-            } 
+
+                if (index == 0)
+                {
+                    var view = new FrameLayout();
+                    sceneFunctionView.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.TipNoSceneCollcetion,
+                    };
+                    view.AddChidren(btnNoCollectionTip);
+                }
+            }
             catch (Exception ex)
             {
                 MainPage.Log("homepage erorr : " + ex.Message);
@@ -464,7 +826,7 @@
         }
 
         /// <summary>
-        /// 鍔犺浇鎺у埗鍗$墖
+        /// 鍔犺浇鍔熻兘鎺у埗鍗$墖
         /// </summary>
         void LoadDeviceFunctionDiv(FrameLayout view, Function function)
         {
@@ -480,6 +842,11 @@
                 };
                 view.AddChidren(btnIcon);
 
+
+                btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_blue.png";
+                btnIcon.SelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_white.png";
+
+
                 Button btnName;
                 btnName = new Button()
                 {
@@ -487,8 +854,8 @@
                     Y = Application.GetRealWidth(10) + btnIcon.Bottom,
                     Text = function.name,
                     IsBold = true,
-                    TextColor = CSS.CSS_Color.FirstLevelTitleColor,
-                    TextSize = CSS.CSS_FontSize.TextFontSize,
+                    TextColor = CSS_Color.FirstLevelTitleColor,
+                    TextSize = CSS_FontSize.TextFontSize,
                     Height = Application.GetRealWidth(24),
                     Width = Application.GetRealWidth(140),
                     TextAlignment = TextAlignment.CenterLeft,
@@ -502,10 +869,10 @@
                     Y = btnName.Bottom,
                     Height = Application.GetRealWidth(18),
                     Width = Application.GetRealWidth(113),
-                    TextColor = CSS.CSS_Color.PromptingColor1,
-                    TextSize = CSS.CSS_FontSize.PromptFontSize_SecondaryLevel,
+                    TextColor = CSS_Color.PromptingColor1,
+                    TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
                     TextAlignment = TextAlignment.CenterLeft,
-                    SelectedTextColor = CSS.CSS_Color.MainBackgroundColor,
+                    SelectedTextColor = CSS_Color.MainBackgroundColor,
                     Text = function.GetRoomListName()
                 };
                 view.AddChidren(btnZone);
@@ -517,14 +884,18 @@
                     Y = btnZone.Bottom,
                     Height = Application.GetRealWidth(18),
                     Width = Application.GetRealWidth(113),
-                    SelectedTextColor = CSS.CSS_Color.MainBackgroundColor,
+                    SelectedTextColor = CSS_Color.MainBackgroundColor,
                     TextColor = 0x00000000,
-                    TextSize = CSS.CSS_FontSize.PromptFontSize_SecondaryLevel,
+                    TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
                     TextAlignment = TextAlignment.CenterLeft,
                     Tag = "state",
                     Text = function.lastState
                 };
-                view.AddChidren(btnState);
+
+                if (function.spk != SPK.LightSwitch)
+                {
+                    view.AddChidren(btnState);
+                }
 
                 Button btnCollection;
                 btnCollection = new Button()
@@ -537,67 +908,239 @@
                     UnSelectedImagePath = "Collection/CollectionIcon.png",
                 };
                 view.AddChidren(btnCollection);
+                //2020-12-16 濡傛灉鏄垚鍛橀殣钘忔敹钘忓姛鑳�
+                //if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
+                //{
+                //    view.AddChidren(btnCollection);
+                //}
 
-                Button btnSwitch;
-                btnSwitch = new Button()
+                LoadEvent_FunctionCollection(btnCollection, function);
+                if (//SPK.CurtainSpkList().Contains(function.spk))
+                    function.spk == SPK.CurtainRoller || function.spk == SPK.CurtainShades ||
+                    function.spk == SPK.CurtainSwitch || function.spk == SPK.CurtainTrietex )
                 {
-                    X = Application.GetRealWidth(122),
-                    Y = Application.GetRealWidth(92),
-                    Width = Application.GetMinRealAverage(48),
-                    Height = Application.GetMinRealAverage(36),
-                    UnSelectedImagePath = "Public/Switch.png",
-                    SelectedImagePath = "Public/SwitchOn.png",
+                    btnIcon.UnSelectedImagePath = "FunctionIcon/Curtain/CurtainIcon.png";
+                    btnIcon.SelectedImagePath = "FunctionIcon/Curtain/CurtainOnIcon.png";
+                    Button btnCurtainClose;
+                    btnCurtainClose = new Button()
+                    {
+                        X = Application.GetRealWidth(84),
+                        Y = Application.GetRealWidth(89),
+                        Width = Application.GetRealWidth(44),
+                        Height = Application.GetRealWidth(44),
+                        UnSelectedImagePath = "FunctionIcon/Curtain/CurtainCloseBlueIcon_Shadow.png",
+                        SelectedImagePath = "FunctionIcon/Curtain/CurtainCloseWhiteIcon_Shadow.png",
+                    };
+                    view.AddChidren(btnCurtainClose);
+
+                    Button btnCurtainOpen;
+                    btnCurtainOpen = new Button()
+                    {
+                        X = btnCurtainClose.Right,
+                        Y = Application.GetRealWidth(89),
+                        Width = Application.GetRealWidth(44),
+                        Height = Application.GetRealWidth(44),
+                        UnSelectedImagePath = "FunctionIcon/Curtain/CurtainOpenBlueIcon_Shadow.png",
+                        SelectedImagePath = "FunctionIcon/Curtain/CurtainOpenWhiteIcon_Shadow.png",
+                    };
+                    view.AddChidren(btnCurtainOpen);
+
+                    LoadEvent_ControlCurtain(function, btnCurtainClose, btnCurtainOpen);
+                }
+
+                else if (function.spk == SPK.ElectricTV || function.spk == SPK.TvIr || function.spk == SPK.TvXmIr
+                    || function.spk == SPK.StbIr || function.spk == SPK.PjtIr)
+                {
+                    //btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_blue.png";
+                    //btnIcon.SelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_white.png";
+
+                    Button btnPower;
+                    btnPower = new Button()
+                    {
+                        X = Application.GetRealWidth(131),
+                        Y = Application.GetRealHeight(80),
+                        Width = Application.GetRealWidth(32),
+                        Height = Application.GetRealWidth(32),
+                        UnSelectedImagePath = "Public/PowerClose.png",
+                    };
+                    view.AddChidren(btnPower);
+                    LoadEvent_ControlTV(function, btnPower);
+                }
+
+                else if (function.spk == SPK.MusicStandard)
+                {
+                    btnIcon.UnSelectedImagePath = "FunctionIcon/Music/MusicIcon.png";
+                    btnIcon.SelectedImagePath = "FunctionIcon/Music/MusicOnIcon.png";
+                    Button btnPower;
+                    btnPower = new Button()
+                    {
+                        X = Application.GetRealWidth(118),
+                        Y = Application.GetRealWidth(83),
+                        Width = Application.GetRealWidth(44),
+                        Height = Application.GetRealWidth(44),
+                        UnSelectedImagePath = "FunctionIcon/Music/MusicPlayIcon.png",
+                        SelectedImagePath = "FunctionIcon/Music/MusicPlayOnIcon.png",
+                    };
+                    view.AddChidren(btnPower);
+                    var a31player = (function as UI.Music.A31MusicModel);
+                    btnState.Text = a31player.A31PlayStatus.Title;
+
+                    btnState.SelectedTextColor = CSS_Color.MainBackgroundColor;
+                    btnState.TextColor = CSS_Color.MainBackgroundColor;//PromptingColor1
+
+                    //Music.SendMethod.ReadStatus(a31player);
+
+                    btnPower.MouseUpEventHandler = (sender, e) =>
+                    {
+                        if (btnPower.IsSelected)
+                        {
+                            btnPower.IsSelected = false;
+                            Music.SendMethod.Pause(a31player);
+                            a31player.A31PlayStatus.status = "pause";
+                            a31player.trait_on_off.curValue = "off";
+                        }
+                        else
+                        {
+                            btnPower.IsSelected = true;
+                            Music.SendMethod.Play(a31player);
+                            a31player.A31PlayStatus.status = "play";
+                            a31player.trait_on_off.curValue = "on";
+                        }
+                        UpdataFunctionStates(a31player);
+                    };
+                }
+
+                else if (function.spk == SPK.ClothesHanger)
+                {
+                    btnIcon.UnSelectedImagePath = "FunctionIcon/Electrical/ClothesHanger/ClothesHangerBlueIcon.png";
+                    btnIcon.SelectedImagePath = "FunctionIcon/Electrical/Curtain/ClothesHangerBlueIcon.png";
+                    Button btnUp;
+                    btnUp = new Button()
+                    {
+                        X = Application.GetRealWidth(84+3),
+                        Y = Application.GetRealWidth(89),
+                        Width = Application.GetRealWidth(38),
+                        Height = Application.GetRealWidth(38),
+                        UnSelectedImagePath = "FunctionIcon/Electrical/ClothesHanger/ClothesHangerUpIcon2.png",
+                        SelectedImagePath = "FunctionIcon/Electrical/ClothesHanger/ClothesHangerUpIcon2On.png",
+                    };
+                    view.AddChidren(btnUp);
+
+                    Button btnDown;
+                    btnDown = new Button()
+                    {
+                        X = btnUp.Right + Application.GetRealWidth(3),
+                        Y = Application.GetRealWidth(89),
+                        Width = Application.GetRealWidth(38),
+                        Height = Application.GetRealWidth(38),
+                        UnSelectedImagePath = "FunctionIcon/Electrical/ClothesHanger/ClothesHangerDownIcon2.png",
+                        SelectedImagePath = "FunctionIcon/Electrical/ClothesHanger/ClothesHangerDownIcon2On.png",
+                    };
+                    view.AddChidren(btnDown);
+
+
+                    LoadEvent_ControlClothesHanger(function, btnUp, btnDown);
+
+                }
+
+                else
+                {
+                    Button btnSwitch;
+                    btnSwitch = new Button()
+                    {
+                        X = Application.GetRealWidth(122),
+                        Y = Application.GetRealWidth(92),
+                        Width = Application.GetMinRealAverage(48),
+                        Height = Application.GetMinRealAverage(36),
+                        UnSelectedImagePath = "Public/Switch.png",
+                        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";
+
+                    //switch (function.Spk_Prefix)
+                    //{
+                    //    //todo 澧炲姞璁惧锛屼富椤垫敹钘忓浘鏍�
+                    //    case FunctionCategory.Light:
+                    //        #region 鐏厜 Light
+                    //        btnIcon.UnSelectedImagePath = "FunctionIcon/Light/LightIcon.png";
+                    //        btnIcon.SelectedImagePath = "FunctionIcon/Light/LightOnIcon.png";
+                    //        UpdataFunctionStates(function);
+                    //        #endregion
+                    //        break;
+                    //    case FunctionCategory.AC:
+                    //        #region 绌鸿皟 AC
+                    //        btnIcon.UnSelectedImagePath = "FunctionIcon/AC/AcIcon.png";
+                    //        btnIcon.SelectedImagePath = "FunctionIcon/AC/AcOnIcon.png";
+                    //        #endregion
+                    //        break;
+                    //    case FunctionCategory.FloorHeat:
+                    //        #region 鍦扮儹
+                    //        btnIcon.UnSelectedImagePath = "FunctionIcon/FloorHeating/FloorHeatingIcon.png";
+                    //        btnIcon.SelectedImagePath = "FunctionIcon/FloorHeating/FloorHeatingOnIcon.png";
+                    //        #endregion
+                    //        break;
+                    //    case FunctionCategory.Electric:
+                    //        switch (function.spk)
+                    //        {
+                    //            case SPK.ElectricSocket:
+                    //                btnIcon.UnSelectedImagePath = "FunctionIcon/Socket/SocketIcon.png";
+                    //                btnIcon.SelectedImagePath = "FunctionIcon/Socket/SocketOnIcon.png";
+                    //                break;
+                    //            case SPK.ElectricFan:
+                    //                btnIcon.UnSelectedImagePath = "FunctionIcon/Electrical/FanIcon.png";
+                    //                btnIcon.SelectedImagePath = "FunctionIcon/Electrical/FanOnIcon.png";
+                    //                break;
+                    //            case SPK.ElectricTuyaAirCleaner:
+                    //                btnIcon.SelectedImagePath = "FunctionIcon/HomePageIcon/AirCleanerIcon.png";
+                    //                btnIcon.UnSelectedImagePath = "FunctionIcon/HomePageIcon/AirCleanerIconOn.png";
+                    //                break;
+                    //            case SPK.ElectricTuyaFan:
+                    //                btnIcon.SelectedImagePath = "FunctionIcon/HomePageIcon/FanIcon.png";
+                    //                btnIcon.UnSelectedImagePath = "FunctionIcon/HomePageIcon/FanIconOn.png";
+                    //                break;
+                    //            case SPK.ElectricTuyaWaterValve:
+                    //                btnIcon.SelectedImagePath = "FunctionIcon/HomePageIcon/WaterValveIcon.png";
+                    //                btnIcon.UnSelectedImagePath = "FunctionIcon/HomePageIcon/WaterValveIconOn.png";
+                    //                break;
+                    //            case SPK.ElectricTuyaWeepRobot:
+                    //                btnIcon.SelectedImagePath = "FunctionIcon/HomePageIcon/WeepRobotIcon.png";
+                    //                btnIcon.UnSelectedImagePath = "FunctionIcon/HomePageIcon/WeepRobotIconOn.png";
+                    //                break;
+                    //        }
+                    //        break;
+                    //}
+                    LoadEvent_SwitchFunction(function, btnSwitch);
+                }
+                //鍙栨秷鏀惰棌浜嬩欢
+                Action cannelCollect = () => {
+                    function.collect = false;
+                    if (function.Spk_Prefix == FunctionCategory.Music)//澶勭悊闊充箰涓讳粠鍏崇郴
+                    {
+                        if ((function as Music.A31MusicModel).ServerClientType == 1)
+                        {
+                            (function as Music.A31MusicModel).MainPlayCollection = false;
+                            Music.A31MusicModel.Save();
+                        }
+                    }
+                    string msg = function.name + Language.StringByID(StringId.CollectionCancelled);
+                    LoadDeviceFunctionControlZone();
+                    function.CollectFunction();
                 };
-                view.AddChidren(btnSwitch);
 
-                switch (function.functionCategory)
+
+                var skipControlPageEvent = new PublicAssmebly().LoadEvent_SkipFunctionControlPage(function, btnCollection, btnName, btnZone);
+                view.MouseUpEventHandler = skipControlPageEvent;
+                btnName.MouseUpEventHandler = skipControlPageEvent;
+                btnIcon.MouseUpEventHandler = skipControlPageEvent;
+                btnState.MouseUpEventHandler = skipControlPageEvent;
+                //鐢佃涓嶉渶瑕佹洿鏂扮姸鎬�
+                if(function.spk!= SPK.ElectricTV && function.spk != SPK.StbIr && function.spk != SPK.PjtIr)
                 {
-                    case FunctionType.Light:
-                        #region 鐏厜 Light
-                        btnIcon.UnSelectedImagePath = "FunctionIcon/Light/LightIcon.png";
-                        btnIcon.SelectedImagePath = "FunctionIcon/Light/LightOnIcon.png";
-                        LoadRelaySwitchEvent(function, btnSwitch, view);
-                        //btnCollection.IsSelected = btnIcon.IsSelected = btnName.IsSelected = btnZone.IsSelected = btnSwitch.IsSelected = (function as Light).state == 1;
-                        UpdataLightView(function as Light);
-                        //btnSwitch.MouseUpEventHandler += (sender, e) =>
-                        //{
-                        //    var curState = !btnSwitch.IsSelected;
-                        //    for (int i = 0; i < view.ChildrenCount; i++)
-                        //    {
-                        //        if (view.GetChildren(i).GetType() == typeof(Button))
-                        //        {
-                        //            var btn = view.GetChildren(i) as Button;
-                        //            btn.IsSelected = curState;
-                        //        }
-                        //    }
-                        //    new System.Threading.Thread(() =>
-                        //    {
-                        //        var light = function as Light;
-                        //        light.state = btnSwitch.IsSelected ? 1 : 0;
-                        //        Control.Send("write", function, 3);
-                        //    })
-                        //    { IsBackground = true }.Start();
-                        //};
-                        #endregion
-                        break;
-                    case FunctionType.Curtain:
-                        #region 绐楀笜
-                        btnIcon.UnSelectedImagePath = "FunctionIcon/Curtain/CurtainIcon.png";
-                        btnIcon.SelectedImagePath = "FunctionIcon/Curtain/CurtainOnIcon.png";
-                        #endregion
-                        break;
-                    case FunctionType.AC:
-                        #region 绌鸿皟 AC
-                        btnIcon.UnSelectedImagePath = "FunctionIcon/AC/AcIcon.png";
-                        btnIcon.SelectedImagePath = "FunctionIcon/AC/AcOnIcon.png";
-                        #endregion
-                        break;
-                    case FunctionType.FloorHeating:
-                        #region 鍦扮儹
-                        btnIcon.UnSelectedImagePath = "FunctionIcon/FloorHeating/FloorHeatingIcon.png";
-                        btnIcon.SelectedImagePath = "FunctionIcon/FloorHeating/FloorHeatingOnIcon.png";
-                        #endregion
-                        break;
+                    UpdataFunctionStates(function);
                 }
             }
             catch (Exception ex)
@@ -606,43 +1149,45 @@
             }
         }
 
-
         /// <summary>
-        /// 鍔犺浇鎺у埗鍗$墖
+        /// 鍔犺浇鍦烘櫙鎺у埗鍗$墖
         /// </summary>
-        void LoadSceneFunctionDiv(FrameLayout view, Function function)
+        void LoadSceneFunctionDiv(FrameLayout view, Scene scene)
         {
             try
             {
                 Button btnCoverd = new Button()
                 {
                     UnSelectedImagePath = "Collection/SceneCovered.png",
-                    SelectedImagePath = "Collection/SceneCoveredOn.png",
-                    //Width = Application.GetRealWidth(165),
                 };
                 view.AddChidren(btnCoverd);
-                btnCoverd.MouseDownEventHandler = (sender, e) => {
-                    btnCoverd.IsSelected = true;
-                };
-                btnCoverd.MouseUpEventHandler = (sender, e) => {
-                    new System.Threading.Thread(() => {
-                        System.Threading.Thread.Sleep(200);
-                        Application.RunOnMainThread(() => {
-                            btnCoverd.IsSelected = false;
-                        });
-                    }) { IsBackground = true }.Start();
-                };
 
-                Button btnDelayIcon;
-                btnDelayIcon = new Button()
+                Button btnShowDelay;
+                btnShowDelay = new Button()
                 {
-                    X = Application.GetRealWidth(12),
-                    Y = Application.GetRealWidth(12),
-                    Height = Application.GetRealWidth(24),
-                    Width = Application.GetRealWidth(24),
-                    UnSelectedImagePath = "FunctionIcon/Scene/DelayIcon.png"
+                    X = Application.GetRealWidth(40),
+                    Y = Application.GetRealWidth(4),
+                    Height = Application.GetRealWidth(32),
+                    Width = Application.GetRealWidth(100),
+                    TextColor = CSS_Color.AuxiliaryColor1,
+                    TextAlignment = TextAlignment.CenterLeft,
+                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                 };
-                view.AddChidren(btnDelayIcon);
+                view.AddChidren(btnShowDelay);
+
+                Button btnSettingIcon;
+                btnSettingIcon = new Button()
+                {
+                    X = Application.GetRealWidth(4),
+                    Y = Application.GetRealWidth(4),
+                    Height = Application.GetRealWidth(32),
+                    Width = Application.GetRealWidth(32),
+                    UnSelectedImagePath = "Public/FuncInfoSetIcon_white.png",
+                };
+                if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
+                {
+                    view.AddChidren(btnSettingIcon);
+                }
 
                 Button btnName;
                 btnName = new Button()
@@ -651,7 +1196,7 @@
                     Y = Application.GetRealWidth(68),
                     Width = Application.GetRealWidth(150),
                     Height = Application.GetRealHeight(24),
-                    Text = function.name,
+                    Text = scene.name,
                     TextSize = CSS_FontSize.TextFontSize,
                     TextColor = CSS_Color.MainBackgroundColor,
                     TextAlignment = TextAlignment.CenterLeft,
@@ -665,13 +1210,14 @@
                     Y = btnName.Bottom,
                     Height = Application.GetRealWidth(18),
                     Width = Application.GetRealWidth(113),
-                    TextColor = CSS.CSS_Color.MainBackgroundColor,
-                    TextSize = CSS.CSS_FontSize.PromptFontSize_SecondaryLevel,
+                    TextColor = CSS_Color.MainBackgroundColor,
+                    TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
                     TextAlignment = TextAlignment.CenterLeft,
-                    SelectedTextColor = CSS.CSS_Color.MainBackgroundColor,
-                    Text = function.GetRoomListName(),
+                    SelectedTextColor = CSS_Color.MainBackgroundColor,
+                    Text = scene.GetRoomListName(),
                 };
                 view.AddChidren(btnZone);
+
 
                 Button btnCollection;
                 btnCollection = new Button()
@@ -684,7 +1230,34 @@
                     UnSelectedImagePath = "Collection/CollectionIcon.png",
                 };
                 view.AddChidren(btnCollection);
+                //2020-12-16 濡傛灉鏄垚鍛橀殣钘忔敹钘忓姛鑳�
+                //if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
+                //{
+                //    view.AddChidren(btnCollection);
+                //}
 
+                LoadEvent_SceneCollection(btnCollection, scene);
+
+                LoadEvent_ControlScene(btnCoverd, btnName, btnZone, btnShowDelay, scene);
+
+                btnSettingIcon.MouseUpEventHandler = (sender, e) => {
+                    Action backAction = () => {
+                        //LoadSceneFunctionControlZone();
+                    };
+                    Action refreshAction = () => {
+                        btnName.Text = scene.name;
+                        btnZone.Text = scene.GetRoomListName();
+                        //view.BackgroundImagePath = (scene as Scene).ImagePath;
+                        //2020-12-03 淇敼鍥剧墖鍔犺浇鏂规硶
+                        ImageUtlis.Current.LoadLocalOrNetworkImages((scene as Scene).ImagePath, view);
+                    };
+                    var aep = new SceneEditPage(scene, backAction);
+                    MainPage.BasePageView.AddChidren(aep);
+                    aep.LoadPage( refreshAction);
+                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                };
+                //鍦烘櫙姝e湪鍊掕鏃舵墽琛屼腑
+                scene.SceneCountDown(btnShowDelay);
             }
             catch (Exception ex)
             {
@@ -693,4 +1266,4 @@
         }
 
     }
-}
+}
\ No newline at end of file

--
Gitblit v1.8.0