From 944b87b6bcccb095cd73f13f4410fb20faf48f74 Mon Sep 17 00:00:00 2001
From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local>
Date: 星期三, 25 十二月 2019 11:21:06 +0800
Subject: [PATCH] 2019.12.25

---
 ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs | 1413 ++++++++++++++++++++++++++++++++--------------------------
 1 files changed, 768 insertions(+), 645 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs b/ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs
index 2b2ee9c..7246ed5 100644
--- a/ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs
+++ b/ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs
@@ -7,6 +7,7 @@
 using Shared.Phone.UserCenter.DoorLock;
 using System.Timers;
 using Shared.Phone.Device.DeviceLogic;
+using Shared.Phone.UserCenter;
 
 namespace Shared.Phone.UserView
 {
@@ -88,6 +89,8 @@
         /// sceneScrolView
         /// </summary>
         private VerticalScrolViewLayout sceneScrolView ;
+
+
         #endregion
 
         #region 鈼� 鎺ュ彛____________________________
@@ -135,7 +138,7 @@
                                 continue;
                             }
 
-                            for (int j=0;j<rowFL.ChildrenCount;j++)
+                            for (int j = 0; j < rowFL.ChildrenCount; j++)
                             {
                                 var deviceUI = (rowFL.GetChildren(j) as FunctionMainView).Tag as DeviceUI;
                                 if (deviceUI == null || deviceUI.CommonDevice == null)
@@ -221,9 +224,9 @@
                                             var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
                                             ac.DeviceStatusReport = common.DeviceStatusReport;
                                             var attriButeList = ac.DeviceStatusReport.AttriBute;
-                                            foreach(var attList in attriButeList)
+                                            foreach (var attList in attriButeList)
                                             {
-                                                var curTemp = (attList.AttriButeData / 100 < ACControlBase.Temperature_High || attList.AttriButeData / 100 > ACControlBase.Temperature_Low) ? attList.AttriButeData / 100 : ACControlBase.Temperature_Default;
+                                                var curTemp = (attList.AttriButeData / 100 < ACControlBase.Temperature_High && attList.AttriButeData / 100 > ACControlBase.Temperature_Low) ? attList.AttriButeData / 100 : ACControlBase.Temperature_Default;
                                                 switch (attList.AttributeId)
                                                 {
                                                     case 0:
@@ -270,7 +273,7 @@
                                             var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
                                             var attriButeList = common.DeviceStatusReport.AttriBute;
                                             ac.DeviceStatusReport = common.DeviceStatusReport;
-                                            foreach(var attList in attriButeList)
+                                            foreach (var attList in attriButeList)
                                             {
                                                 switch (attList.AttributeId)
                                                 {
@@ -336,7 +339,56 @@
                     }
                 });
             }
+            else if (typeTag == "IASInfoReport")
+            {
+                Application.RunOnMainThread(() =>
+                {
+                    try
+                    {
+                        for (int i = 0; deviceVerticalScrolViewLayout != null && i < deviceVerticalScrolViewLayout.ChildrenCount; i++)
+                        {
+                            var rowFL = deviceVerticalScrolViewLayout.GetChildren(i) as FrameLayout;
+                            if (rowFL.ChildrenCount == 0)
+                            {
+                                //璁惧涓虹┖鎴栬�呮帶浠朵负绌�
+                                continue;
+                            }
+
+                            for (int j = 0; j < rowFL.ChildrenCount; j++)
+                            {
+                                var deviceUI = (rowFL.GetChildren(j) as FunctionMainView).Tag as DeviceUI;
+                                if (deviceUI == null || deviceUI.CommonDevice == null)
+                                {
+                                    //璁惧涓虹┖鎴栬�呮帶浠朵负绌�
+                                    continue;
+                                }
+                                if (common.DeviceAddr != deviceUI.CommonDevice.DeviceAddr || common.DeviceEpoint != deviceUI.CommonDevice.DeviceEpoint)
+                                {
+                                    //鍒ゆ柇鏄惁涓哄綋鍓嶈澶�
+                                    continue;
+                                }
 
+                                switch (deviceUI.CommonDevice.Type)
+                                {
+                                    case DeviceType.IASZone:
+                                        //ias
+                                        var ias = common as IASZone;
+                                        var iAS = deviceUI.CommonDevice as ZigBee.Device.IASZone;
+                                        iAS.iASInfo = ias.iASInfo;
+                                        (rowFL.GetChildren(j) as FunctionMainView).IsSelected = iAS.iASInfo?.Alarm1 == 1;
+                                        (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
+                                        iAS.LastDateTime = DateTime.Now;
+                                        break;
+                                }
+                            }
+                        }
+                    }
+                    catch (Exception ex)
+                    {
+                        System.Console.WriteLine($"Error:{ex.Message}");
+                    }
+                });
+            }
         }
         /// <summary>
         /// Changeds the IL ogic status.
@@ -419,22 +471,27 @@
                 Gravity = Gravity.CenterVertical,
                 TextAlignment = TextAlignment.CenterLeft,
                 TextColor = ZigbeeColor.Current.GXCTextColor,
-                Text = Config.Instance.Home.GetCurrentFloorName
+                Text = Config.Instance.Home.GetCurrentFloorName,
+                IsBold=true
             };
             if (Config.Instance.Home.FloorDics.Count > 0)
             {
                 topFrameLayout.AddChidren(floorBtn);
             }
 
-            var messageBtn = new Button()
+            if(UserCenterResourse.Option.SafetyShortcut)
             {
-                X = Application.GetRealWidth(953),
-                Width = Application.GetMinRealAverage(69),
-                Height = Application.GetMinRealAverage(69),
-                Gravity = Gravity.CenterVertical,
-                UnSelectedImagePath = "Item/Message.png",
-                SelectedImagePath = "Item/MessageSelected.png"
-            };
+                var safetyBtn = new SafetyShortcutControl();
+                safetyBtn.X = Application.GetRealWidth(855);
+                safetyBtn.Gravity = Gravity.CenterVertical;
+                topFrameLayout.AddChidren(safetyBtn);
+            }
+
+            var messageBtn = new MessageManagementControl();
+            messageBtn.X = Application.GetRealWidth(953);
+            messageBtn.Gravity = Gravity.CenterVertical;
+            messageBtn.UnSelectedImagePath = "Item/Message.png";
+            messageBtn.SelectedImagePath = "Item/MessageSelected.png";
             topFrameLayout.AddChidren(messageBtn);
 
             var residecneName = new Button()
@@ -605,7 +662,7 @@
                             pointBtn.IsSelected = false;
                             nameBtn.IsSelected = false;
                         }
-                    };
+                    }
                 }
             };
             //娑堟伅
@@ -627,23 +684,30 @@
                 };
                 AddChidren(roomPageView);
                 //绐佸嚭杈硅窛
-                roomPageView.TCBJ = Application.GetRealWidth(112);
+                roomPageView.TCBJ = Application.GetRealWidth(181);
                 //涓や釜page涔嬮棿鐨勯棿璺�
-                roomPageView.JMBJ = Application.GetRealWidth(69);
+                roomPageView.JMBJ = Application.GetRealWidth(0);
 
                 //褰撳墠鎴块棿
-                //Room.CurrentRoom = Room.CurrentRoom == null ? Room.Lists[0] : Room.CurrentRoom;
                 var rList = Room.CurrentRoom.GetRoomsByCurrentFloorIdAppendLoveRoom();
-                Room.CurrentRoom = rList[0];
+                Room.CurrentRoom = Room.CurrentRoom ?? rList[0];
                 foreach (var room in rList)
                 {
                     var roomView = new Device.CommonForm.RoomView(0, 0);
                     roomPageView.AddChidren(roomView);
                     roomView.Init(room);
+                    roomView.HideName(true);
                     roomView.action += () =>
                     {
                         Show();
                     };
+                }
+                var curIndex = rList.FindIndex((obj) => obj.Id == Room.CurrentRoom.Id);
+                roomPageView.PageIndex = curIndex;
+                if (roomPageView.GetChildren(roomPageView.PageIndex) != null)
+                {
+                    (roomPageView.GetChildren(roomPageView.PageIndex) as RoomView).HideName(false);
+                    
                 }
 
                 var functionSceneView = new FrameLayout()
@@ -724,9 +788,22 @@
 
                 roomPageView.PageChange += (sender, e) =>
                 {
+                    if(roomPageView.GetChildren(roomPageView.PageIndex - 1) !=null)
+                    {
+                        (roomPageView.GetChildren(roomPageView.PageIndex - 1) as RoomView).HideName(true);
+                    }
+                    if (roomPageView.GetChildren(roomPageView.PageIndex + 1) != null)
+                    {
+                        (roomPageView.GetChildren(roomPageView.PageIndex + 1) as RoomView).HideName(true);
+                    }
+                    if (roomPageView.GetChildren(roomPageView.PageIndex) != null)
+                    {
+                        (roomPageView.GetChildren(roomPageView.PageIndex) as RoomView).HideName(false);
+                    }
                     //鍒囨崲褰撳墠鎴块棿
                     Room.CurrentRoom = rList[roomPageView.PageIndex];
                     RefreshBodyView();
+                    
                 };
             }
             else
@@ -900,6 +977,7 @@
                 Height = Application.GetRealHeight(200),
                 Text = Language.StringByID(R.MyInternationalizationString.NoFunction_Tip).Replace("{\\r\\n}", "\r\n"),
                 TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
+                TextAlignment=TextAlignment.Center,
                 IsMoreLines = true
             };
             functionSceneBodyView.AddChidren(noFunctionTip);
@@ -923,683 +1001,727 @@
             }
             else
             {
-                deviceVerticalScrolViewLayout = new VerticalScrolViewLayout { };
-
-                functionSceneBodyView.AddChidren(deviceVerticalScrolViewLayout);
-                for (int i = 0; i < deviceList.Count; i++)
+                var dList = new List<DeviceUI> { };
+                foreach(var device in deviceList)
                 {
-                    int t = i % 2;
-                    int tt = i / 2;
-                    int xx = 43 + i % 2 * (20 + 487);
-                    int yy = 14;
-                    var device = deviceList[i];
-                    if (device == null || device.CommonDevice == null)
+                    var info = Common.LocalDevice.Current.GetNotHdlMyDeviceEnumInfo(new List<CommonDevice> { device.CommonDevice });
+                    if (info.BeloneType == DeviceBeloneType.A骞叉帴鐐� || info.BeloneType == DeviceBeloneType.A涓户鍣�)
                     {
                         continue;
                     }
+                    dList.Add(device);
+                }
 
-                    if (i % 2 == 0)
-                    {
-                        itemView = new FrameLayout()
+                deviceVerticalScrolViewLayout = new VerticalScrolViewLayout { };
+                functionSceneBodyView.AddChidren(deviceVerticalScrolViewLayout);
+                for (int i = 0; i < dList.Count; i++)
+                {
+                    var device = dList[i];
+                    //new System.Threading.Thread(() =>
+                    //{
+                    Application.RunOnMainThread(() =>
                         {
-                            Height = Application.GetRealHeight(14 + 348),
-                        };
-                        deviceVerticalScrolViewLayout.AddChidren(itemView);
-                    }
-
-                    //鏀惰棌
-                    EventHandler<MouseEventArgs> collectionEvent = (sender, e) =>
-                    {
-                        if ((sender as Button).IsSelected)
-                        {
-                            Shared.Common.Room.CurrentRoom.GetLoveRoom().DeleteDevice(device.FileName);
-                            (sender as Button).IsSelected = false;
-                        }
-                        else
-                        {
-                            Shared.Common.Room.CurrentRoom.GetLoveRoom().AddDevice(device.FileName);
-                            (sender as Button).IsSelected = true;
-                        }
-                        if (Room.CurrentRoom.IsLove)
-                        {
-                            RefreshBodyView();
-                        }
-                    };
-
-                    //////鍒ゆ柇璁惧鏄惁鏀寔鐨勫睘鎬� 濡傚紑鍏崇瓑鎺у埗
-                    if (device.CommonDevice.Type == ZigBee.Device.DeviceType.WindowCoveringDevice)
-                    {
-                        //绐楀笜 鍗峰笜
-                        var rollerShade = (ZigBee.Device.Rollershade)device.CommonDevice;
-                        //涓嶄笂闈炶繙绋�
-                        if (rollerShade.Gateway == null)
-                        {
-                            continue;
-                        }
-                        if (rollerShade.Gateway.IsVirtual)
-                        {
-                            //鍙戦�佽鍙栫姸鎬佸懡浠�
-                            ReadStatus(rollerShade, () =>
+                            try
                             {
-                                ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(device.CommonDevice);
-                            });
-                        }
-                        else
-                        {
-                            if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - rollerShade.LastDateTime).TotalSeconds)
-                            {
-                                ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(device.CommonDevice);
-                            }
-                        }
-                        var lightView = new FunctionMainView(xx, yy);
-                        lightView.Tag = device;
-                        itemView.AddChidren(lightView);
-                        lightView.Init();
-                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
-                        lightView.SetStatuText(device.GetDeviceStatu());
-                        lightView.SetDeviceName(rollerShade.DeviceEpointName);
-                        //lightView.SetStatu(true);
-                        lightView.IsSelected = rollerShade.WcdCurrentPositionLiftPercentage == 100;
-                        lightView.SetCollect(true);
-
-                        lightView.SwitchButton.MouseUpEventHandler += (sender, e) =>
-                        {
-                            (sender as Button).IsSelected = !(sender as Button).IsSelected;
-                            if ((sender as Button).IsSelected)
-                            {
-                                zbGateway = device.CommonDevice.Gateway;
-                                sendedControlCommand = false;
-                                zbGateway.ReportAction += UpdateDeviceControllStatu;
-                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
-
-                                (device.CommonDevice as Rollershade).CurtainUpDownStopControl(0);
-
-                                ((sender as Button).Parent as FunctionMainView).SetStatuText(CommonFormResouce.GetSwitchStatu(true));
-                                ((sender as Button).Parent as FunctionMainView).IsSelected = true;
-
-                                //鎺у埗寤舵椂鍥炶皟
-                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
+                                int t = i % 2;
+                                int tt = i / 2;
+                                int xx = 43 + i % 2 * (20 + 487);
+                                int yy = 14;
+                                if (i % 2 == 0)
                                 {
-                                    if (Parent == null)
+                                    itemView = new FrameLayout()
                                     {
-                                        return;
-                                    }
-                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
-                                    if (sendedControlCommand == false)
-                                    {
-                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
-                                    }
-                                });
-                            }
-                            else
-                            {
-                                zbGateway = device.CommonDevice.Gateway;
-                                sendedControlCommand = false;
-                                zbGateway.ReportAction += UpdateDeviceControllStatu;
-                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
-
-                                (device.CommonDevice as Rollershade).CurtainUpDownStopControl(1);
-
-                                ((sender as Button).Parent as FunctionMainView).SetStatuText(CommonFormResouce.GetSwitchStatu(false));
-                                ((sender as Button).Parent as FunctionMainView).IsSelected = false;
-
-                                //鎺у埗寤舵椂鍥炶皟
-                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
+                                        Height = Application.GetRealHeight(14 + 348),
+                                    };
+                                    deviceVerticalScrolViewLayout.AddChidren(itemView);
+                                }
+                                //鏀惰棌
+                                EventHandler<MouseEventArgs> collectionEvent = (sender, e) =>
                                 {
-                                    if (Parent == null)
+                                    if ((sender as Button).IsSelected)
                                     {
-                                        return;
+                                        Common.Room.CurrentRoom.GetLoveRoom().DeleteDevice(device.FileName);
+                                        (sender as Button).IsSelected = false;
                                     }
-                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
-                                    if (sendedControlCommand == false)
+                                    else
                                     {
-                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
+                                        Common.Room.CurrentRoom.GetLoveRoom().AddDevice(device.FileName);
+                                        (sender as Button).IsSelected = true;
                                     }
-                                });
-                            }
-                        };
+                                    if (Room.CurrentRoom.IsLove)
+                                    {
+                                        RefreshBodyView();
+                                    }
+                                };
 
-                        lightView.CardBG.MouseUpEventHandler += (sender, e) =>
-                        {
-                            CommonPage.Instance.IsDrawerLockMode = true;
-                            var rollerShadeControl = new Phone.Device.Curtain.RollerShadeControl();
-                            UserView.HomePage.Instance.AddChidren(rollerShadeControl);
-                            UserView.HomePage.Instance.PageIndex += 1;
-                            UserView.HomePage.Instance.ScrollEnabled = false;
-                            //rollerShadeControl.action = RefreshBodyView;
-                            rollerShadeControl.Show(device, Room.CurrentRoom);
-                        };
-
-                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
-                    }
-                    else if (device.CommonDevice.Type == ZigBee.Device.DeviceType.OnOffOutput)
-                    {
-                        //寮�鍏崇伅
-                        var light = device.CommonDevice as ToggleLight;
-
-                        //琛ヤ笂闈炶繙绋�
-                        if (light.Gateway == null)
-                        {
-                            continue;
-                        }
-                        if (light.Gateway.IsVirtual)
-                        {
-                            //鍙戦�佽鍙栫姸鎬佸懡浠�
-                            ReadStatus(light, () =>
-                            {
-                                ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
-                            });
-                        }
-                        else
-                        {
-                            if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - light.LastDateTime).TotalSeconds)
-                            {
-                                ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
-                            }
-                        }
-
-                        var lightView = new FunctionMainView(xx, yy);
-                        itemView.AddChidren(lightView);
-                        lightView.Init();
-                        lightView.Tag = device;
-                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
-                        lightView.SetStatuText(device.GetDeviceStatu());
-                        lightView.SetDeviceName(device.CommonDevice.DeviceEpointName);
-                        lightView.IsSelected = light.OnOffStatus == 1;
-                        lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(Room.CurrentRoom, device.FileName));
-
-                        var dev = Room.LoveRoomDeviceUIFilePathList.Find((obj) => obj == device.FileName);
-                        if (dev == null)
-                        {
-                            lightView.CollectButton.IsSelected = false;
-                        }
-                        else
-                        {
-                            lightView.CollectButton.IsSelected = true;
-                        }
-
-                        lightView.SwitchButton.MouseUpEventHandler += (sender, e) =>
-                        {
-                            (sender as Button).IsSelected = !(sender as Button).IsSelected;
-                            if ((sender as Button).IsSelected)
-                            {
-                                zbGateway = device.CommonDevice.Gateway;
-                                sendedControlCommand = false;
-                                zbGateway.ReportAction += UpdateDeviceControllStatu;
-                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
-
-                                light.SwitchControl(1);
-
-                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
-                                ((sender as Button).Parent as FunctionMainView).IsSelected = true;
-
-                                //鎺у埗寤舵椂鍥炶皟
-                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
+                                if (device.CommonDevice.Type == DeviceType.WindowCoveringDevice)
                                 {
-                                    if (Parent == null)
+                                    //绐楀笜 鍗峰笜
+                                    var rollerShade = (ZigBee.Device.Rollershade)device.CommonDevice;
+                                    if (rollerShade.Gateway != null)
                                     {
-                                        return;
+                                        new System.Threading.Thread(() =>
+                                        {
+                                            System.Threading.Thread.Sleep(100 * i);
+                                            if (rollerShade.Gateway.IsVirtual)
+                                            {
+                                                ReadStatus(rollerShade, () =>
+                                                {
+                                                    ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(device.CommonDevice);
+                                                });
+                                            }
+                                            else
+                                            {
+                                                if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - rollerShade.LastDateTime).TotalSeconds)
+                                                {
+                                                    ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(device.CommonDevice);
+                                                }
+                                            }
+                                        })
+                                        { IsBackground = true }.Start();
+
+                                        var lightView = new FunctionMainView(xx, yy);
+                                        lightView.Tag = device;
+                                        itemView.AddChidren(lightView);
+                                        lightView.Init();
+                                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
+                                        lightView.SetStatuText(device.GetDeviceStatu());
+                                        lightView.SetDeviceName(rollerShade.DeviceEpointName);
+                                        //lightView.SetStatu(true);
+                                        lightView.IsSelected = rollerShade.WcdCurrentPositionLiftPercentage == 100;
+                                        lightView.SetCollect(true);
+
+                                        lightView.SwitchButton.MouseUpEventHandler += (sender, e) =>
+                                        {
+                                            (sender as Button).IsSelected = !(sender as Button).IsSelected;
+                                            if ((sender as Button).IsSelected)
+                                            {
+                                                zbGateway = device.CommonDevice.Gateway;
+                                                sendedControlCommand = false;
+                                                zbGateway.ReportAction += UpdateDeviceControllStatu;
+                                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
+
+                                                (device.CommonDevice as Rollershade).CurtainUpDownStopControl(0);
+
+                                                ((sender as Button).Parent as FunctionMainView).SetStatuText(CommonFormResouce.GetSwitchStatu(true));
+                                                ((sender as Button).Parent as FunctionMainView).IsSelected = true;
+
+                                                //鎺у埗寤舵椂鍥炶皟
+                                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
+                                                {
+                                                    if (Parent == null)
+                                                    {
+                                                        return;
+                                                    }
+                                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
+                                                    if (sendedControlCommand == false)
+                                                    {
+                                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
+                                                    }
+                                                });
+                                            }
+                                            else
+                                            {
+                                                zbGateway = device.CommonDevice.Gateway;
+                                                sendedControlCommand = false;
+                                                zbGateway.ReportAction += UpdateDeviceControllStatu;
+                                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
+
+                                                (device.CommonDevice as Rollershade).CurtainUpDownStopControl(1);
+
+                                                ((sender as Button).Parent as FunctionMainView).SetStatuText(CommonFormResouce.GetSwitchStatu(false));
+                                                ((sender as Button).Parent as FunctionMainView).IsSelected = false;
+
+                                                //鎺у埗寤舵椂鍥炶皟
+                                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
+                                                {
+                                                    if (Parent == null)
+                                                    {
+                                                        return;
+                                                    }
+                                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
+                                                    if (sendedControlCommand == false)
+                                                    {
+                                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
+                                                    }
+                                                });
+                                            }
+                                        };
+
+                                        lightView.CardBG.MouseUpEventHandler += (sender, e) =>
+                                        {
+                                            CommonPage.Instance.IsDrawerLockMode = true;
+                                            var rollerShadeControl = new Phone.Device.Curtain.RollerShadeControl();
+                                            UserView.HomePage.Instance.AddChidren(rollerShadeControl);
+                                            UserView.HomePage.Instance.PageIndex += 1;
+                                            UserView.HomePage.Instance.ScrollEnabled = false;
+                                            //rollerShadeControl.action = RefreshBodyView;
+                                            rollerShadeControl.Show(device, Room.CurrentRoom);
+                                        };
+
+                                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
                                     }
-                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
-                                    if (sendedControlCommand == false)
-                                    {
-                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
-                                    }
-                                });
-                            }
-                            else
-                            {
-                                zbGateway = device.CommonDevice.Gateway;
-                                sendedControlCommand = false;
-                                zbGateway.ReportAction += UpdateDeviceControllStatu;
-                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
-
-                                light.SwitchControl(0);
-
-                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
-                                ((sender as Button).Parent as FunctionMainView).IsSelected = false;
-
-                                //鎺у埗寤舵椂鍥炶皟
-                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
+                                }
+                                else if (device.CommonDevice.Type == DeviceType.OnOffOutput)
                                 {
-                                    if (Parent == null)
+                                    //寮�鍏崇伅
+                                    var light = device.CommonDevice as ToggleLight;
+                                    if (light.Gateway != null)
                                     {
-                                        return;
+                                        new System.Threading.Thread(() =>
+                                        {
+                                            System.Threading.Thread.Sleep(100 * i);
+                                            if (light.Gateway.IsVirtual)
+                                            {
+                                                ReadStatus(light, () =>
+                                                {
+                                                    ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
+                                                });
+                                            }
+                                            else
+                                            {
+                                                if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - light.LastDateTime).TotalSeconds)
+                                                {
+                                                    ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
+                                                }
+                                            }
+                                        })
+                                        { IsBackground = true }.Start();
+
+                                        var lightView = new FunctionMainView(xx, yy);
+                                        itemView.AddChidren(lightView);
+                                        lightView.Init();
+                                        lightView.Tag = device;
+                                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
+                                        lightView.SetStatuText(device.GetDeviceStatu());
+                                        lightView.SetDeviceName(device.CommonDevice.DeviceEpointName);
+                                        lightView.IsSelected = light.OnOffStatus == 1;
+                                        lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(Room.CurrentRoom, device.FileName));
+
+                                        var dev = Room.LoveRoomDeviceUIFilePathList.Find((obj) => obj == device.FileName);
+                                        if (dev == null)
+                                        {
+                                            lightView.CollectButton.IsSelected = false;
+                                        }
+                                        else
+                                        {
+                                            lightView.CollectButton.IsSelected = true;
+                                        }
+
+                                        lightView.SwitchButton.MouseUpEventHandler += (sender, e) =>
+                                        {
+                                            (sender as Button).IsSelected = !(sender as Button).IsSelected;
+                                            if ((sender as Button).IsSelected)
+                                            {
+                                                zbGateway = device.CommonDevice.Gateway;
+                                                sendedControlCommand = false;
+                                                zbGateway.ReportAction += UpdateDeviceControllStatu;
+                                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
+
+                                                light.SwitchControl(1);
+
+                                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
+                                                ((sender as Button).Parent as FunctionMainView).IsSelected = true;
+
+                                                //鎺у埗寤舵椂鍥炶皟
+                                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
+                                                {
+                                                    if (Parent == null)
+                                                    {
+                                                        return;
+                                                    }
+                                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
+                                                    if (sendedControlCommand == false)
+                                                    {
+                                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
+                                                    }
+                                                });
+                                            }
+                                            else
+                                            {
+                                                zbGateway = device.CommonDevice.Gateway;
+                                                sendedControlCommand = false;
+                                                zbGateway.ReportAction += UpdateDeviceControllStatu;
+                                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
+
+                                                light.SwitchControl(0);
+
+                                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
+                                                ((sender as Button).Parent as FunctionMainView).IsSelected = false;
+
+                                                //鎺у埗寤舵椂鍥炶皟
+                                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
+                                                {
+                                                    if (Parent == null)
+                                                    {
+                                                        return;
+                                                    }
+                                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
+                                                    if (sendedControlCommand == false)
+                                                    {
+                                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
+                                                    }
+                                                });
+                                            }
+                                        };
+
+                                        lightView.CardBG.MouseUpEventHandler += (sender, e) =>
+                                        {
+                                            CommonPage.Instance.IsDrawerLockMode = true;
+                                            if (device.CommonDevice.DfunctionType == DeviceFunctionType.A寮�鍏�)
+                                            {
+                                                var lightControl = new Phone.Device.Light.OnOffControl();
+                                                UserView.HomePage.Instance.AddChidren(lightControl);
+                                                UserView.HomePage.Instance.PageIndex += 1;
+                                                //lightControl.action = RefreshBodyView;
+                                                lightControl.Show(device, Room.CurrentRoom);
+                                            }
+                                            else if (device.CommonDevice.DfunctionType == DeviceFunctionType.A鎻掑骇)
+                                            {
+                                                var lightControl = new Phone.Device.Light.PlugControl();
+                                                UserView.HomePage.Instance.AddChidren(lightControl);
+                                                UserView.HomePage.Instance.PageIndex += 1;
+                                                //lightControl.action = RefreshBodyView;
+                                                lightControl.Show(device, Room.CurrentRoom);
+                                            }
+                                            else
+                                            {
+                                                var lightControl = new Phone.Device.Light.LightControl();
+                                                UserView.HomePage.Instance.AddChidren(lightControl);
+                                                UserView.HomePage.Instance.PageIndex += 1;
+                                                //lightControl.action = RefreshBodyView;
+                                                lightControl.Show(device, Room.CurrentRoom);
+                                            }
+                                        };
+
+                                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
                                     }
-                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
-                                    if (sendedControlCommand == false)
-                                    {
-                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
-                                    }
-                                });
-                            }
-                        };
-
-                        lightView.CardBG.MouseUpEventHandler += (sender, e) =>
-                        {
-                            CommonPage.Instance.IsDrawerLockMode = true;
-                            if (device.CommonDevice.DfunctionType == DeviceFunctionType.A寮�鍏�)
-                            {
-                                var lightControl = new Phone.Device.Light.OnOffControl();
-                                UserView.HomePage.Instance.AddChidren(lightControl);
-                                UserView.HomePage.Instance.PageIndex += 1;
-                                //lightControl.action = RefreshBodyView;
-                                lightControl.Show(device, Room.CurrentRoom);
-                            }
-                            else if (device.CommonDevice.DfunctionType == DeviceFunctionType.A鎻掑骇)
-                            {
-                                var lightControl = new Phone.Device.Light.PlugControl();
-                                UserView.HomePage.Instance.AddChidren(lightControl);
-                                UserView.HomePage.Instance.PageIndex += 1;
-                                //lightControl.action = RefreshBodyView;
-                                lightControl.Show(device, Room.CurrentRoom);
-                            }
-                            else
-                            {
-                                var lightControl = new Phone.Device.Light.LightControl();
-                                UserView.HomePage.Instance.AddChidren(lightControl);
-                                UserView.HomePage.Instance.PageIndex += 1;
-                                //lightControl.action = RefreshBodyView;
-                                lightControl.Show(device, Room.CurrentRoom);
-                            }
-                        };
-
-                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
-
-                    }
-                    else if (device.CommonDevice.Type == ZigBee.Device.DeviceType.AirSwitch)
-                    {
-                        //绌烘皵寮�鍏�
-                        var airSwitch = device.CommonDevice as AirSwitch;
-                        //琛ヤ笂闈炶繙绋�
-                        if (airSwitch.Gateway == null)
-                        {
-                            continue;
-                        }
-                        if (airSwitch.Gateway.IsVirtual)
-                        {
-                            //鍙戦�佽鍙栫姸鎬佸懡浠�
-                            ReadStatus(airSwitch, () =>
-                            {
-                                ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
-                            });
-                        }
-                        else
-                        {
-                            //闃叉鐭椂闂村唴澶氭璇诲彇璁惧鐘舵��
-                            if ((DateTime.Now - airSwitch.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
-                            {
-                                ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
-                            }
-                        }
-
-                        var lightView = new FunctionMainView(xx, yy);
-                        itemView.AddChidren(lightView);
-                        lightView.Init();
-                        lightView.Tag = device;
-                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
-                        lightView.SetStatuText(device.GetDeviceStatu());
-                        lightView.SetDeviceName(airSwitch.DeviceEpointName);
-                        //lightView.SetStatu(true);
-                        lightView.IsSelected = airSwitch.OnOffStatus == 1;
-                        lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(Room.CurrentRoom, device.FileName));
-
-                        lightView.SwitchButton.MouseUpEventHandler += (sender, e) =>
-                        {
-                            (sender as Button).IsSelected = !(sender as Button).IsSelected;
-                            if ((sender as Button).IsSelected)
-                            {
-                                zbGateway = device.CommonDevice.Gateway;
-                                sendedControlCommand = false;
-                                zbGateway.ReportAction += UpdateDeviceControllStatu;
-                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
-
-                                airSwitch.SwitchControl(1);
-
-                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
-                                ((sender as Button).Parent as FunctionMainView).IsSelected = true;
-
-                                //鎺у埗寤舵椂鍥炶皟
-                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
+                                }
+                                else if (device.CommonDevice.Type == DeviceType.AirSwitch)
                                 {
-                                    if (Parent == null)
+                                    //绌烘皵寮�鍏�
+                                    var airSwitch = device.CommonDevice as AirSwitch;
+                                    if (airSwitch.Gateway != null)
                                     {
-                                        return;
+                                        new System.Threading.Thread(() =>
+                                        {
+                                            System.Threading.Thread.Sleep(100 * i);
+                                            if (airSwitch.Gateway.IsVirtual)
+                                            {
+                                                ReadStatus(airSwitch, () =>
+                                                {
+                                                    ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
+                                                });
+                                            }
+                                            else
+                                            {
+                                                if ((DateTime.Now - airSwitch.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
+                                                {
+                                                    ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
+                                                }
+                                            }
+                                        })
+                                        { IsBackground = true }.Start();
+
+                                        var lightView = new FunctionMainView(xx, yy);
+                                        itemView.AddChidren(lightView);
+                                        lightView.Init();
+                                        lightView.Tag = device;
+                                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
+                                        lightView.SetStatuText(device.GetDeviceStatu());
+                                        lightView.SetDeviceName(airSwitch.DeviceEpointName);
+                                        //lightView.SetStatu(true);
+                                        lightView.IsSelected = airSwitch.OnOffStatus == 1;
+                                        lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(Room.CurrentRoom, device.FileName));
+
+                                        lightView.SwitchButton.MouseUpEventHandler += (sender, e) =>
+                                        {
+                                            (sender as Button).IsSelected = !(sender as Button).IsSelected;
+                                            if ((sender as Button).IsSelected)
+                                            {
+                                                zbGateway = device.CommonDevice.Gateway;
+                                                sendedControlCommand = false;
+                                                zbGateway.ReportAction += UpdateDeviceControllStatu;
+                                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
+
+                                                airSwitch.SwitchControl(1);
+
+                                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
+                                                ((sender as Button).Parent as FunctionMainView).IsSelected = true;
+
+                                                //鎺у埗寤舵椂鍥炶皟
+                                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
+                                                {
+                                                    if (Parent == null)
+                                                    {
+                                                        return;
+                                                    }
+                                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
+                                                    if (sendedControlCommand == false)
+                                                    {
+                                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
+                                                    }
+                                                });
+                                            }
+                                            else
+                                            {
+                                                zbGateway = device.CommonDevice.Gateway;
+                                                sendedControlCommand = false;
+                                                zbGateway.ReportAction += UpdateDeviceControllStatu;
+                                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
+
+                                                airSwitch.SwitchControl(0);
+
+                                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
+                                                ((sender as Button).Parent as FunctionMainView).IsSelected = false;
+
+                                                //鎺у埗寤舵椂鍥炶皟
+                                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
+                                                {
+                                                    if (Parent == null)
+                                                    {
+                                                        return;
+                                                    }
+                                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
+                                                    if (sendedControlCommand == false)
+                                                    {
+                                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
+                                                    }
+                                                });
+                                            }
+                                        };
+
+                                        lightView.CardBG.MouseUpEventHandler += (sender, e) =>
+                                        {
+                                            CommonPage.Instance.IsDrawerLockMode = true;
+                                            var lightControl = new Phone.Device.Light.AirSwitchControl();
+                                            UserView.HomePage.Instance.AddChidren(lightControl);
+                                            UserView.HomePage.Instance.PageIndex += 1;
+                                            //lightControl.action = RefreshBodyView;
+                                            lightControl.Show(device, Room.CurrentRoom);
+                                        };
+
+                                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
                                     }
-                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
-                                    if (sendedControlCommand == false)
-                                    {
-                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
-                                    }
-                                });
-                            }
-                            else
-                            {
-                                zbGateway = device.CommonDevice.Gateway;
-                                sendedControlCommand = false;
-                                zbGateway.ReportAction += UpdateDeviceControllStatu;
-                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
-
-                                airSwitch.SwitchControl(0);
-
-                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
-                                ((sender as Button).Parent as FunctionMainView).IsSelected = false;
-
-                                //鎺у埗寤舵椂鍥炶皟
-                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
+                                }
+                                else if (device.CommonDevice.Type == DeviceType.Thermostat)
                                 {
-                                    if (Parent == null)
+                                    //鎭掓俯鍣�-AC-绌鸿皟
+                                    var ac = device.CommonDevice as AC;
+                                    if (ac.Gateway != null)
                                     {
-                                        return;
+                                        new System.Threading.Thread(() =>
+                                        {
+                                            System.Threading.Thread.Sleep(100 * i);
+                                            if (ac.Gateway.IsVirtual)
+                                            {
+                                                ReadStatus(ac, () =>
+                                                {
+                                                    ReadDeviceAttributeLogic.Instance.SendACStatuComand(device.CommonDevice);
+                                                });
+                                            }
+                                            else
+                                            {
+                                                if ((DateTime.Now - ac.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
+                                                {
+                                                    ReadDeviceAttributeLogic.Instance.SendACStatuComand(device.CommonDevice);
+                                                }
+                                            }
+                                        })
+                                        { IsBackground = true }.Start();
+
+                                        var lightView = new FunctionMainView(xx, yy);
+                                        itemView.AddChidren(lightView);
+                                        lightView.Init();
+                                        lightView.Tag = device;
+                                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
+                                        lightView.SetStatuText(device.GetDeviceStatu());
+                                        lightView.SetDeviceName(device.CommonDevice.DeviceEpointName);
+                                        lightView.IsSelected = ac.currentSystemMode != 0;
+                                        lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(Room.CurrentRoom, device.FileName));
+
+                                        lightView.SwitchButton.MouseUpEventHandler += (sender, e) =>
+                                        {
+                                            (sender as Button).IsSelected = !(sender as Button).IsSelected;
+                                            if ((sender as Button).IsSelected)
+                                            {
+                                                zbGateway = device.CommonDevice.Gateway;
+                                                sendedControlCommand = false;
+                                                zbGateway.ReportAction += UpdateDeviceControllStatu;
+                                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
+
+                                                ac.Open();
+
+                                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
+                                                ((sender as Button).Parent as FunctionMainView).IsSelected = true;
+
+                                                //鎺у埗寤舵椂鍥炶皟
+                                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
+                                                {
+                                                    if (Parent == null)
+                                                    {
+                                                        return;
+                                                    }
+                                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
+                                                    if (sendedControlCommand == false)
+                                                    {
+                                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
+                                                    }
+                                                });
+                                            }
+                                            else
+                                            {
+                                                zbGateway = device.CommonDevice.Gateway;
+                                                sendedControlCommand = false;
+                                                zbGateway.ReportAction += UpdateDeviceControllStatu;
+                                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
+
+                                                ac.Close();
+
+                                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
+                                                ((sender as Button).Parent as FunctionMainView).IsSelected = false;
+
+                                                //鎺у埗寤舵椂鍥炶皟
+                                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
+                                                {
+                                                    if (Parent == null)
+                                                    {
+                                                        return;
+                                                    }
+                                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
+                                                    if (sendedControlCommand == false)
+                                                    {
+                                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
+                                                    }
+                                                });
+                                            }
+                                        };
+
+                                        lightView.CardBG.MouseUpEventHandler += (sender, e) =>
+                                        {
+                                            CommonPage.Instance.IsDrawerLockMode = true;
+                                            var lightControl = new Phone.Device.AC.ACControl();
+                                            UserView.HomePage.Instance.AddChidren(lightControl);
+                                            UserView.HomePage.Instance.PageIndex += 1;
+                                            //lightControl.action = RefreshBodyView;
+                                            lightControl.Show(device, Room.CurrentRoom);
+                                        };
+
+                                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
                                     }
-                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
-                                    if (sendedControlCommand == false)
-                                    {
-                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
-                                    }
-                                });
-                            }
-                        };
-
-                        lightView.CardBG.MouseUpEventHandler += (sender, e) =>
-                        {
-                            CommonPage.Instance.IsDrawerLockMode = true;
-                            var lightControl = new Phone.Device.Light.AirSwitchControl();
-                            UserView.HomePage.Instance.AddChidren(lightControl);
-                            UserView.HomePage.Instance.PageIndex += 1;
-                            //lightControl.action = RefreshBodyView;
-                            lightControl.Show(device, Room.CurrentRoom);
-                        };
-
-                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
-                    }
-                    else if (device.CommonDevice.Type == ZigBee.Device.DeviceType.Thermostat)
-                    {
-                        //鎭掓俯鍣�-AC-绌鸿皟
-                        var ac = device.CommonDevice as AC;
-
-                        //琛ヤ笂闈炶繙绋�
-                        if (ac.Gateway == null)
-                        {
-                            continue;
-                        }
-                        if (ac.Gateway.IsVirtual)
-                        {
-                            //鍙戦�佽鍙栫姸鎬佸懡浠�
-                            ReadStatus(ac, () =>
-                            {
-                                ReadDeviceAttributeLogic.Instance.SendACStatuComand(device.CommonDevice);
-                            });
-                        }
-                        else
-                        {
-                            //闃叉鐭椂闂村唴澶氭璇诲彇璁惧鐘舵��
-                            if ((DateTime.Now - ac.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
-                            {
-                                ReadDeviceAttributeLogic.Instance.SendACStatuComand(device.CommonDevice);
-                            }
-                        }
-                        var lightView = new FunctionMainView(xx, yy);
-                        itemView.AddChidren(lightView);
-                        lightView.Init();
-                        lightView.Tag = device;
-                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
-                        lightView.SetStatuText(device.GetDeviceStatu());
-                        lightView.SetDeviceName(device.CommonDevice.DeviceEpointName);
-                        lightView.IsSelected = ac.currentSystemMode != 0;
-                        lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(Room.CurrentRoom, device.FileName));
-
-                        lightView.SwitchButton.MouseUpEventHandler += (sender, e) =>
-                        {
-                            (sender as Button).IsSelected = !(sender as Button).IsSelected;
-                            if ((sender as Button).IsSelected)
-                            {
-                                zbGateway = device.CommonDevice.Gateway;
-                                sendedControlCommand = false;
-                                zbGateway.ReportAction += UpdateDeviceControllStatu;
-                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
-
-                                ac.Open();
-
-                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
-                                ((sender as Button).Parent as FunctionMainView).IsSelected = true;
-
-                                //鎺у埗寤舵椂鍥炶皟
-                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
+                                }
+                                else if (device.CommonDevice.Type == DeviceType.DimmableLight)
                                 {
-                                    if (Parent == null)
+                                    //璋冨厜鐏�
+                                    var dimmableLight = device.CommonDevice as DimmableLight;
+                                    if (dimmableLight.Gateway != null)
                                     {
-                                        return;
+                                        new System.Threading.Thread(() =>
+                                        {
+                                            System.Threading.Thread.Sleep(100 * i);
+                                            if (dimmableLight.Gateway.IsVirtual)
+                                            {
+                                                //鍙戦�佽鍙栫姸鎬佸懡浠�
+                                                ReadStatus(dimmableLight, () =>
+                                                {
+                                                    ReadDeviceAttributeLogic.Instance.SendDimmableLightStatuComand(device.CommonDevice);
+                                                });
+                                            }
+                                            else
+                                            {
+                                                //闃叉鐭椂闂村唴澶氭璇诲彇璁惧鐘舵��
+                                                if ((DateTime.Now - dimmableLight.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
+                                                {
+                                                    ReadDeviceAttributeLogic.Instance.SendDimmableLightStatuComand(device.CommonDevice);
+                                                }
+                                            }
+                                        })
+                                        { IsBackground = true }.Start();
+
+                                        var lightView = new FunctionMainView(xx, yy);
+                                        itemView.AddChidren(lightView);
+                                        lightView.Init();
+                                        lightView.Tag = device;
+                                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
+                                        lightView.SetStatuText(device.GetDeviceStatu());
+                                        lightView.SetDeviceName(device.CommonDevice.DeviceEpointName);
+                                        lightView.IsSelected = dimmableLight.OnOffStatus == 1;
+                                        lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(Room.CurrentRoom, device.FileName));
+
+                                        var dev = Room.LoveRoomDeviceUIFilePathList.Find((obj) => obj == device.FileName);
+                                        if (dev == null)
+                                        {
+                                            lightView.CollectButton.IsSelected = false;
+                                        }
+                                        else
+                                        {
+                                            lightView.CollectButton.IsSelected = true;
+                                        }
+
+                                        lightView.SwitchButton.MouseUpEventHandler += (sender, e) =>
+                                        {
+                                            (sender as Button).IsSelected = !(sender as Button).IsSelected;
+                                            if ((sender as Button).IsSelected)
+                                            {
+                                                zbGateway = device.CommonDevice.Gateway;
+                                                sendedControlCommand = false;
+                                                zbGateway.ReportAction += UpdateDeviceControllStatu;
+                                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
+
+                                                dimmableLight.SwitchControl(1);
+
+                                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
+                                                ((sender as Button).Parent as FunctionMainView).IsSelected = true;
+
+                                                //鎺у埗寤舵椂鍥炶皟
+                                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
+                                                {
+                                                    if (Parent == null)
+                                                    {
+                                                        return;
+                                                    }
+                                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
+                                                    if (sendedControlCommand == false)
+                                                    {
+                                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
+                                                    }
+                                                });
+                                            }
+                                            else
+                                            {
+                                                zbGateway = device.CommonDevice.Gateway;
+                                                sendedControlCommand = false;
+                                                zbGateway.ReportAction += UpdateDeviceControllStatu;
+                                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
+
+                                                dimmableLight.SwitchControl(0);
+
+                                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
+                                                ((sender as Button).Parent as FunctionMainView).IsSelected = false;
+
+                                                //鎺у埗寤舵椂鍥炶皟
+                                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
+                                                {
+                                                    if (Parent == null)
+                                                    {
+                                                        return;
+                                                    }
+                                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
+                                                    if (sendedControlCommand == false)
+                                                    {
+                                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
+                                                    }
+                                                });
+                                            }
+                                        };
+
+                                        lightView.CardBG.MouseUpEventHandler += (sender, e) =>
+                                        {
+                                            CommonPage.Instance.IsDrawerLockMode = true;
+                                            var dimmableLightControl = new Phone.Device.Light.DimmableLightControl();
+                                            UserView.HomePage.Instance.AddChidren(dimmableLightControl);
+                                            UserView.HomePage.Instance.PageIndex += 1;
+                                            //dimmableLightControl.action = RefreshBodyView;
+                                            dimmableLightControl.Show(device, Room.CurrentRoom);
+                                        };
+                                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
                                     }
-                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
-                                    if (sendedControlCommand == false)
-                                    {
-                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
-                                    }
-                                });
-                            }
-                            else
-                            {
-                                zbGateway = device.CommonDevice.Gateway;
-                                sendedControlCommand = false;
-                                zbGateway.ReportAction += UpdateDeviceControllStatu;
-                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
-
-                                ac.Close();
-
-                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
-                                ((sender as Button).Parent as FunctionMainView).IsSelected = false;
-
-                                //鎺у埗寤舵椂鍥炶皟
-                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
+                                }
+                                else if (device.CommonDevice.Type == DeviceType.IASZone)
                                 {
-                                    if (Parent == null)
+                                    //鍚勭被浼犳劅鍣�
+                                    var ias = device.CommonDevice as IASZone;
+
+                                    var lightView = new FunctionMainView(xx, yy);
+                                    itemView.AddChidren(lightView);
+                                    lightView.Init();
+                                    lightView.Tag = device;
+                                    lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
+                                    lightView.SetStatuText(device.GetDeviceStatu());
+                                    lightView.SetDeviceName(device.CommonDevice.DeviceEpointName);
+                                    lightView.IsSelected = ias.iASInfo?.Alarm1 == 1;
+                                    lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(Room.CurrentRoom, device.FileName));
+                                    lightView.CanControl(false);
+                                    var dev = Room.LoveRoomDeviceUIFilePathList.Find((obj) => obj == device.FileName);
+                                    if (dev == null)
                                     {
-                                        return;
+                                        lightView.CollectButton.IsSelected = false;
                                     }
-                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
-                                    if (sendedControlCommand == false)
+                                    else
                                     {
-                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
+                                        lightView.CollectButton.IsSelected = true;
                                     }
-                                });
-                            }
-                        };
-
-                        lightView.CardBG.MouseUpEventHandler += (sender, e) =>
-                        {
-                            CommonPage.Instance.IsDrawerLockMode = true;
-                            var lightControl = new Phone.Device.AC.ACControl();
-                            UserView.HomePage.Instance.AddChidren(lightControl);
-                            UserView.HomePage.Instance.PageIndex += 1;
-                            //lightControl.action = RefreshBodyView;
-                            lightControl.Show(device, Room.CurrentRoom);
-                        };
-
-                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
-                    }
-                    else if (device.CommonDevice.Type == ZigBee.Device.DeviceType.DimmableLight)
-                    {
-                        //璋冨厜鐏�
-                        var dimmableLight = device.CommonDevice as DimmableLight;
-                        //琛ヤ笂闈炶繙绋�
-                        if (dimmableLight.Gateway == null)
-                        {
-                            continue;
-                        }
-                        if (dimmableLight.Gateway.IsVirtual)
-                        {
-                            //鍙戦�佽鍙栫姸鎬佸懡浠�
-                            ReadStatus(dimmableLight, () =>
-                            {
-                                ReadDeviceAttributeLogic.Instance.SendDimmableLightStatuComand(device.CommonDevice);
-                            });
-                        }
-                        else
-                        {
-                            //闃叉鐭椂闂村唴澶氭璇诲彇璁惧鐘舵��
-                            if ((DateTime.Now - dimmableLight.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
-                            {
-                                ReadDeviceAttributeLogic.Instance.SendDimmableLightStatuComand(device.CommonDevice);
-                            }
-                        }
-
-                        var lightView = new FunctionMainView(xx, yy);
-                        itemView.AddChidren(lightView);
-                        lightView.Init();
-                        lightView.Tag = device;
-                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
-                        lightView.SetStatuText(device.GetDeviceStatu());
-                        lightView.SetDeviceName(device.CommonDevice.DeviceEpointName);
-                        lightView.IsSelected = dimmableLight.OnOffStatus == 1;
-                        lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(Room.CurrentRoom, device.FileName));
-
-                        var dev = Room.LoveRoomDeviceUIFilePathList.Find((obj) => obj == device.FileName);
-                        if (dev == null)
-                        {
-                            lightView.CollectButton.IsSelected = false;
-                        }
-                        else
-                        {
-                            lightView.CollectButton.IsSelected = true;
-                        }
-
-                        lightView.SwitchButton.MouseUpEventHandler += (sender, e) =>
-                        {
-                            (sender as Button).IsSelected = !(sender as Button).IsSelected;
-                            if ((sender as Button).IsSelected)
-                            {
-                                zbGateway = device.CommonDevice.Gateway;
-                                sendedControlCommand = false;
-                                zbGateway.ReportAction += UpdateDeviceControllStatu;
-                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
-
-                                dimmableLight.SwitchControl(1);
-
-                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
-                                ((sender as Button).Parent as FunctionMainView).IsSelected = true;
-
-                                //鎺у埗寤舵椂鍥炶皟
-                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
+                                    lightView.CollectButton.MouseUpEventHandler += collectionEvent;
+                                }
+                                else if (device.CommonDevice.Type == DeviceType.DoorLock)
                                 {
-                                    if (Parent == null)
+                                    //闂ㄩ攣
+                                    var dimmableLight = device.CommonDevice as DoorLock;
+
+                                    var lightView = new FunctionMainView(xx, yy);
+                                    itemView.AddChidren(lightView);
+                                    lightView.Init();
+                                    lightView.Tag = device;
+                                    lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
+                                    lightView.SetStatuText(device.GetDeviceStatu());
+                                    lightView.SetDeviceName(device.CommonDevice.DeviceEpointName);
+                                    lightView.IsSelected = dimmableLight.IsOnline == 1;
+                                    lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(Room.CurrentRoom, device.FileName));
+                                    lightView.CanControl(false);
+                                    var dev = Room.LoveRoomDeviceUIFilePathList.Find((obj) => obj == device.FileName);
+                                    if (dev == null)
                                     {
-                                        return;
+                                        lightView.CollectButton.IsSelected = false;
                                     }
-                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
-                                    if (sendedControlCommand == false)
+                                    else
                                     {
-                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
+                                        lightView.CollectButton.IsSelected = true;
                                     }
-                                });
-                            }
-                            else
-                            {
-                                zbGateway = device.CommonDevice.Gateway;
-                                sendedControlCommand = false;
-                                zbGateway.ReportAction += UpdateDeviceControllStatu;
-                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
 
-                                dimmableLight.SwitchControl(0);
-
-                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
-                                ((sender as Button).Parent as FunctionMainView).IsSelected = false;
-
-                                //鎺у埗寤舵椂鍥炶皟
-                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
+                                    lightView.CardBG.MouseUpEventHandler += (sender, e) =>
+                                    {
+                                        CommonPage.Instance.IsDrawerLockMode = true;
+                                        var userDoorLockPage = new UserDoorLockPage(Room.CurrentRoom, device);
+                                        HomePage.Instance.AddChidren(userDoorLockPage);
+                                        HomePage.Instance.PageIndex += 1;
+                                        userDoorLockPage.Show();
+                                    };
+                                    lightView.CollectButton.MouseUpEventHandler += collectionEvent;
+                                }
+                                else
                                 {
-                                    if (Parent == null)
+                                    var lightView = new FunctionMainView(xx, yy);
+                                    itemView.AddChidren(lightView);
+                                    lightView.Init();
+                                    lightView.Tag = device;
+                                    lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
+                                    lightView.SetStatuText(device.GetDeviceStatu());
+                                    lightView.SetDeviceName(device.CommonDevice.DeviceEpointName);
+                                    lightView.CanControl(false);
+                                    lightView.IsSelected = device.CommonDevice.IsOnline == 1;
+                                    lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(Room.CurrentRoom, device.FileName));
+
+                                    var dev = Room.LoveRoomDeviceUIFilePathList.Find((obj) => obj == device.FileName);
+                                    if (dev == null)
                                     {
-                                        return;
+                                        lightView.CollectButton.IsSelected = false;
                                     }
-                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
-                                    if (sendedControlCommand == false)
+                                    else
                                     {
-                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
+                                        lightView.CollectButton.IsSelected = true;
                                     }
-                                });
+                                    lightView.CollectButton.MouseUpEventHandler += collectionEvent;
+                                }
                             }
-                        };
+                            catch(Exception ex)
+                            {
 
-                        lightView.CardBG.MouseUpEventHandler += (sender, e) =>
-                        {
-                            CommonPage.Instance.IsDrawerLockMode = true;
-                            var dimmableLightControl = new Phone.Device.Light.DimmableLightControl();
-                            UserView.HomePage.Instance.AddChidren(dimmableLightControl);
-                            UserView.HomePage.Instance.PageIndex += 1;
-                            //dimmableLightControl.action = RefreshBodyView;
-                            dimmableLightControl.Show(device, Room.CurrentRoom);
-                        };
-
-                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
-                    }
-                    else if (device.CommonDevice.Type == ZigBee.Device.DeviceType.DoorLock)
-                    {
-                        //闂ㄩ攣
-                        var dimmableLight = device.CommonDevice as DoorLock;
-                        //琛ヤ笂闈炶繙绋�
-                        if (dimmableLight.Gateway == null)
-                        {
-                            continue;
-                        }
-
-                        var lightView = new FunctionMainView(xx, yy);
-                        itemView.AddChidren(lightView);
-                        lightView.Init();
-                        lightView.Tag = device;
-                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
-                        lightView.SetStatuText(device.GetDeviceStatu());
-                        lightView.SetDeviceName(device.CommonDevice.DeviceEpointName);
-                        lightView.IsSelected = dimmableLight.IsOnline == 1;
-                        lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(Room.CurrentRoom, device.FileName));
-                        lightView.CanControl(false);
-                        var dev = Room.LoveRoomDeviceUIFilePathList.Find((obj) => obj == device.FileName);
-                        if (dev == null)
-                        {
-                            lightView.CollectButton.IsSelected = false;
-                        }
-                        else
-                        {
-                            lightView.CollectButton.IsSelected = true;
-                        }
-
-                        lightView.CardBG.MouseUpEventHandler += (sender, e) =>
-                        {
-                            CommonPage.Instance.IsDrawerLockMode = true;
-                            var userDoorLockPage = new UserDoorLockPage(Room.CurrentRoom, device);
-                            HomePage.Instance.AddChidren(userDoorLockPage);
-                            HomePage.Instance.PageIndex += 1;
-                            userDoorLockPage.Show();
-                        };
-                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
-                    }
-                    else
-                    {
-                        var lightView = new FunctionMainView(xx, yy);
-                        itemView.AddChidren(lightView);
-                        lightView.Init();
-                        lightView.Tag = device;
-                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
-                        lightView.SetStatuText(device.GetDeviceStatu());
-                        lightView.SetDeviceName(device.CommonDevice.DeviceEpointName);
-                        lightView.CanControl(false);
-                        lightView.IsSelected = device.CommonDevice.IsOnline == 1;
-                        lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(Room.CurrentRoom, device.FileName));
-
-                        var dev = Room.LoveRoomDeviceUIFilePathList.Find((obj) => obj == device.FileName);
-                        if (dev == null)
-                        {
-                            lightView.CollectButton.IsSelected = false;
-                        }
-                        else
-                        {
-                            lightView.CollectButton.IsSelected = true;
-                        }
-                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
-                    }
+                            }
+                        });
+                    //})
+                    //{ IsBackground = true }.Start();
                 }
             }
-
         }
 
         #endregion
@@ -1626,6 +1748,7 @@
                 Height = Application.GetRealHeight(200),
                 Text = Language.StringByID(R.MyInternationalizationString.NoScene_Tip).Replace("{\\r\\n}", "\r\n"),
                 TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
+                TextAlignment=TextAlignment.Center,
                 IsMoreLines = true
             };
             functionSceneBodyView.AddChidren(noScenceTip);

--
Gitblit v1.8.0