From 66a9965c44ecc32a6696abca876ab9d1cd091584 Mon Sep 17 00:00:00 2001
From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local>
Date: 星期五, 28 二月 2020 15:25:13 +0800
Subject: [PATCH] 2020.2.28

---
 ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs |  664 ++++++++++++++++++++++++++++++++----------------------
 1 files changed, 391 insertions(+), 273 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs b/ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs
index 9c011fd..44eaab9 100644
--- a/ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs
+++ b/ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs
@@ -1,12 +1,13 @@
 锘縰sing System;
 using System.Collections.Generic;
+using System.Timers;
 using Shared.Common;
 using Shared.Phone.Device.AC;
-using ZigBee.Device;
 using Shared.Phone.Device.CommonForm;
-using Shared.Phone.UserCenter.DoorLock;
-using System.Timers;
 using Shared.Phone.Device.DeviceLogic;
+using Shared.Phone.UserCenter;
+using Shared.Phone.UserCenter.DoorLock;
+using ZigBee.Device;
 
 namespace Shared.Phone.UserView
 {
@@ -137,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)
@@ -223,7 +224,7 @@
                                             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;
                                                 switch (attList.AttributeId)
@@ -254,14 +255,6 @@
                                                         ac.currentSystemMode = attList.AttriButeData;
                                                         ac.LastDateTime = DateTime.Now;
                                                         break;
-                                                    case 4099:
-                                                        var value = Convert.ToString(attList.AttriButeData, 2).PadLeft(16, '0');
-                                                        var modeStr = value.Substring(value.Length - 5, 5);
-                                                        for (int k = 0; k < modeStr.Length; k++)
-                                                        {
-                                                            ac.listSupportMode[k] = Convert.ToInt32(modeStr[k]) == 49 ? 1 : 0;
-                                                        }
-                                                        break;
                                                 }
                                             }
                                             (rowFL.GetChildren(j) as FunctionMainView).IsSelected = ac.currentSystemMode != 0;
@@ -272,7 +265,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)
                                                 {
@@ -322,9 +315,68 @@
                                                     //姝ゅ睘鎬ц〃鏄庡綋鍓嶄寒搴︾▼搴�
                                                     dimmableLight.Level = attriButeList[0].AttriButeData;
                                                     dimmableLight.LastDateTime = DateTime.Now;
-                                                    (rowFL.GetChildren(j) as FunctionMainView).IsSelected = true;
+                                                    //(rowFL.GetChildren(j) as FunctionMainView).IsSelected = true;
                                                     (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
                                                     break;
+                                            }
+                                        }
+                                        break;
+                                    case DeviceType.TemperatureSensor:
+                                        //娓╁害
+                                        if (common.DeviceStatusReport.CluterID == 1026)
+                                        {
+                                            var tempera = deviceUI.CommonDevice as TemperatureSensor;
+                                            foreach (var data in common.DeviceStatusReport.AttriBute)
+                                            {
+                                                if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
+                                                {
+                                                    if (data.AttriButeData == 0)
+                                                    {
+                                                        tempera.Temperatrue = 0;
+                                                    }
+                                                    else if (data.AttriButeData > 32767)
+                                                    {
+                                                        //璐熸暟(鐗规畩澶勭悊)
+                                                        string strValue = (data.AttriButeData - 65536).ToString();
+                                                        //灏忔暟鐐归渶瑕佷竴浣�
+                                                        strValue = strValue.Substring(0, strValue.Length - 1);
+                                                        tempera.Temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
+                                                    }
+                                                    else
+                                                    {
+                                                        //灏忔暟鐐归渶瑕佷竴浣�
+                                                        string strValue = data.AttriButeData.ToString();
+                                                        strValue = strValue.Substring(0, strValue.Length - 1);
+                                                        tempera.Temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
+                                                    }
+
+                                                    tempera.LastDateTime = DateTime.Now;
+                                                    (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
+                                                }
+                                            }
+                                        }
+                                        //婀垮害
+                                        if (common.DeviceStatusReport.CluterID == 1029)
+                                        {
+                                            var tempera = deviceUI.CommonDevice as TemperatureSensor;
+                                            foreach (var data in common.DeviceStatusReport.AttriBute)
+                                            {
+                                                if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
+                                                {
+                                                    if (data.AttriButeData == 0)
+                                                    {
+                                                        tempera.Humidity = 0;
+                                                    }
+                                                    else
+                                                    {
+                                                        //灏忔暟鐐归渶瑕佷竴浣�(婀垮害娌℃湁璐熸暟)
+                                                        string strValue = data.AttriButeData.ToString();
+                                                        strValue = strValue.Substring(0, strValue.Length - 1);
+                                                        tempera.Humidity = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
+                                                    }
+                                                    tempera.LastDateTime = DateTime.Now;
+                                                    (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
+                                                }
                                             }
                                         }
                                         break;
@@ -338,7 +390,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.
@@ -422,22 +523,27 @@
                 TextAlignment = TextAlignment.CenterLeft,
                 TextColor = ZigbeeColor.Current.GXCTextColor,
                 Text = Config.Instance.Home.GetCurrentFloorName,
-                IsBold=true
+                IsBold = true,
+                TextSize = 14
             };
             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(860);
+                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()
@@ -449,7 +555,7 @@
                 TextAlignment = TextAlignment.CenterLeft,
                 Text = Config.Instance.Home.Name ?? Language.StringByID(R.MyInternationalizationString.TheResidenceNameNull),
                 TextSize = 24,
-                TextColor = ZigbeeColor.Current.GXCTextBlackColor,
+                TextColor = ZigbeeColor.Current.GXCTextDeepBlackColor,
                 IsBold=true
             };
             if (Config.Instance.Home.IsOthreShare)
@@ -478,143 +584,13 @@
                 }
                 else
                 {
-                    var residenceListView = new Dialog();
-                    residenceListView.Show();
-                    var closeBGview = new FrameLayout();
-                    residenceListView.AddChidren(closeBGview);
-                    closeBGview.MouseUpEventHandler += (send1, e1) =>
+                    var selectHouse = new Device.Category.SelectHouse();
+                    selectHouse.Init();
+                    selectHouse.HouseAction = (houseId) =>
                     {
-                        residenceListView.Close();
-                    };
-
-                    var bg = new Button
-                    {
-                        X = Application.GetRealWidth(35),
-                        Y = Application.GetRealHeight(248),
-                        Width = Application.GetMinRealAverage(449),
-                        Height = Application.GetMinRealAverage(478),
-                        UnSelectedImagePath = "Item/SelectHouse.png"
-                    };
-                    closeBGview.AddChidren(bg);
-
-                    var changeHomeFL = new FrameLayout()
-                    {
-                        X = Application.GetRealWidth(35),
-                        Y = Application.GetRealHeight(271),
-                        Height = Application.GetMinRealAverage(449),
-                        Width = Application.GetMinRealAverage(440),
-                        Radius = CommonPage.BigFormRadius,
-                        BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
-                    };
-                    closeBGview.AddChidren(changeHomeFL);
-
-                    var changeHomeBtn = new Button()
-                    {
-                        X = Application.GetRealWidth(80),
-                        Width = Application.GetRealWidth(350),
-                        Height = Application.GetRealHeight(150),
-                        TextColor = ZigbeeColor.Current.GXCTextBlackColor,
-                        TextID = R.MyInternationalizationString.ChangeHome,
-                        TextAlignment = TextAlignment.CenterLeft
-                    };
-                    changeHomeFL.AddChidren(changeHomeBtn);
-
-                    var scrolView = new VerticalScrolViewLayout()
-                    {
-                        Y = changeHomeBtn.Bottom,
-                        Height = Application.GetMinRealAverage(305 - 10)
-                    };
-                    changeHomeFL.AddChidren(scrolView);
-
-                    var clickCheckBtn = new Device.CommonForm.SelectedStatuButton();
-                    var clickNameBtn = new Device.CommonForm.SelectedStatuButton();
-                    foreach (var homeFilePath in Config.Instance.HomeFilePathList)
-                    {
-                        var home = House.GetHouseByFilePath(homeFilePath);
-                        if (home == null)
-                        {
-                            continue;
-                        }
-                        var rowView = new RowLayout()
-                        {
-                            Height = Application.GetRealHeight(150)
-                        };
-                        scrolView.AddChidren(rowView);
-                        var pointBtn = new Device.CommonForm.SelectedStatuButton()
-                        {
-                            X = Application.GetRealWidth(80),
-                            Width = Application.GetMinRealAverage(80),
-                            Height = Application.GetMinRealAverage(80),
-                            Gravity = Gravity.CenterVertical,
-                            UnSelectedImagePath = "Item/House.png",
-                            SelectedImagePath = "Item/HouseSelected.png",
-                            IsSelected = home.Id == Config.Instance.Home.Id
-                        };
-                        rowView.AddChidren(pointBtn);
-                        var nameBtn = new Device.CommonForm.SelectedStatuButton()
-                        {
-                            X = Application.GetRealWidth(173),
-                            Width = Application.GetRealWidth(280),
-                            TextAlignment = TextAlignment.CenterLeft,
-                            Text = home.Name,
-                            TextColor = ZigbeeColor.Current.GXCTextGrayColor,
-                            SelectedTextColor = ZigbeeColor.Current.GXCTextBlackColor,
-                            IsSelected = home.Id == Config.Instance.Home.Id
-                        };
-                        if (home.IsOthreShare)
-                        {
-                            nameBtn.Text = $"{home.Name}";
-                        }
-                        rowView.AddChidren(nameBtn);
-
-                        EventHandler<MouseEventArgs> selectedResidenceHandler = (send1, e1) =>
-                        {
-                            if (Config.Instance.Home.FileName == homeFilePath)
-                            {
-                                return;
-                            }
-                            clickCheckBtn.IsSelected = false;
-                            clickNameBtn.IsSelected = false;
-                            pointBtn.IsSelected = true;
-                            nameBtn.IsSelected = true;
-
-                            residecneName.Text = home.Name;
-                            if (home.IsOthreShare)
-                            {
-                                nameBtn.Text = $"{home.Name}";
-                            }
-                            clickCheckBtn = pointBtn;
-                            clickNameBtn = nameBtn;
-                            residenceListView.Close();
-                            ChangeResidence(home);
-                        };
-                        nameBtn.MouseUpEventHandler += selectedResidenceHandler;
-                        pointBtn.MouseUpEventHandler += selectedResidenceHandler;
-                        rowView.MouseUpEventHandler += selectedResidenceHandler;
-                        if (home.Id == Config.Instance.Home.Id)
-                        {
-                            pointBtn.IsSelected = true;
-                            nameBtn.IsSelected = true;
-                            clickCheckBtn = pointBtn;
-                            clickNameBtn = nameBtn;
-                            residecneName.Text = home.Name;
-                            if (home.IsOthreShare)
-                            {
-                                residecneName.Text = nameBtn.Text = $"{home.Name}";
-                            }
-                        }
-                        else
-                        {
-                            pointBtn.IsSelected = false;
-                            nameBtn.IsSelected = false;
-                        }
+                        ChangeResidence(House.GetHouseByHouseId(houseId));
                     };
                 }
-            };
-            //娑堟伅
-            messageBtn.MouseUpEventHandler += (send, e) =>
-            {
-
             };
 
             #endregion
@@ -630,23 +606,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()
@@ -727,9 +710,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
@@ -772,6 +768,7 @@
             floorFL.FloorAction = (floorId) =>
             {
                 floorBtn.Text = Config.Instance.Home.GetFloorNameById(floorId);
+                Common.Room.CurrentRoom = Common.Room.CurrentRoom?.GetLoveRoom();
                 Show();
             };
         }
@@ -903,6 +900,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);
@@ -913,6 +911,7 @@
         /// </summary>
         private void ShowFunction()
         {
+            functionSceneBodyView.RemoveAll();
             //閫夋嫨鍔熻兘--鐩存帴浠庢埧闂寸殑devicelist涓幏鍙�
             var deviceList = Room.CurrentRoom.DeviceUIList;
             if (deviceList == null)
@@ -929,7 +928,7 @@
                 var dList = new List<DeviceUI> { };
                 foreach(var device in deviceList)
                 {
-                    var info = Common.LocalDevice.Current.GetNotHdlMyDeviceEnumInfo(new List<CommonDevice> { device.CommonDevice });
+                    var info = Common.LocalDevice.Current.GetDeviceBelongEnumInfo(device.CommonDevice);
                     if (info.BeloneType == DeviceBeloneType.A骞叉帴鐐� || info.BeloneType == DeviceBeloneType.A涓户鍣�)
                     {
                         continue;
@@ -1005,18 +1004,17 @@
                                         })
                                         { 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);
+                                        var functionView = new FunctionMainView(xx, yy);
+                                        functionView.Tag = device;
+                                        itemView.AddChidren(functionView);
+                                        functionView.Init();
+                                        functionView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
+                                        functionView.SetStatuText(device.GetDeviceStatu());
+                                        functionView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(rollerShade));
+                                        functionView.IsSelected = rollerShade.WcdCurrentPositionLiftPercentage == 100;
+                                        functionView.SetCollect(true);
 
-                                        lightView.SwitchButton.MouseUpEventHandler += (sender, e) =>
+                                        functionView.SwitchButton.MouseUpEventHandler += (sender, e) =>
                                         {
                                             (sender as Button).IsSelected = !(sender as Button).IsSelected;
                                             if ((sender as Button).IsSelected)
@@ -1028,7 +1026,7 @@
 
                                                 (device.CommonDevice as Rollershade).CurtainUpDownStopControl(0);
 
-                                                ((sender as Button).Parent as FunctionMainView).SetStatuText(CommonFormResouce.GetSwitchStatu(true));
+                                                ((sender as Button).Parent as FunctionMainView).SetStatuText(Language.StringByID(R.MyInternationalizationString.Open));
                                                 ((sender as Button).Parent as FunctionMainView).IsSelected = true;
 
                                                 //鎺у埗寤舵椂鍥炶皟
@@ -1054,7 +1052,7 @@
 
                                                 (device.CommonDevice as Rollershade).CurtainUpDownStopControl(1);
 
-                                                ((sender as Button).Parent as FunctionMainView).SetStatuText(CommonFormResouce.GetSwitchStatu(false));
+                                                ((sender as Button).Parent as FunctionMainView).SetStatuText(Language.StringByID(R.MyInternationalizationString.Close));
                                                 ((sender as Button).Parent as FunctionMainView).IsSelected = false;
 
                                                 //鎺у埗寤舵椂鍥炶皟
@@ -1073,18 +1071,22 @@
                                             }
                                         };
 
-                                        lightView.CardBG.MouseUpEventHandler += (sender, e) =>
+                                        functionView.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.IsDrawerLockMode = true;
                                             rollerShadeControl.Show(device, Room.CurrentRoom);
+                                            rollerShadeControl.action += (curDev, curRoom) =>
+                                            {
+                                                ReFreshEditDeviceAction(device, curRoom, functionView);
+                                            };
                                         };
 
-                                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
+                                        functionView.CollectButton.MouseUpEventHandler += collectionEvent;
                                     }
                                 }
                                 else if (device.CommonDevice.Type == DeviceType.OnOffOutput)
@@ -1113,27 +1115,26 @@
                                         })
                                         { 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 functionView = new FunctionMainView(xx, yy);
+                                        itemView.AddChidren(functionView);
+                                        functionView.Init();
+                                        functionView.Tag = device;
+                                        functionView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
+                                        functionView.SetStatuText(device.GetDeviceStatu());
+                                        functionView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice));
+                                        functionView.IsSelected = light.OnOffStatus == 1;
+                                        functionView.SetCollect(Room.CurrentRoom.IsCollectInRoom(device.FileName));
 
-                                        var dev = Room.LoveRoomDeviceUIFilePathList.Find((obj) => obj == device.FileName);
-                                        if (dev == null)
+                                        if (Common.Room.CurrentRoom.IsCollectInRoom(device.FileName) == false)
                                         {
-                                            lightView.CollectButton.IsSelected = false;
+                                            functionView.CollectButton.IsSelected = false;
                                         }
                                         else
                                         {
-                                            lightView.CollectButton.IsSelected = true;
+                                            functionView.CollectButton.IsSelected = true;
                                         }
 
-                                        lightView.SwitchButton.MouseUpEventHandler += (sender, e) =>
+                                        functionView.SwitchButton.MouseUpEventHandler += (sender, e) =>
                                         {
                                             (sender as Button).IsSelected = !(sender as Button).IsSelected;
                                             if ((sender as Button).IsSelected)
@@ -1190,36 +1191,22 @@
                                             }
                                         };
 
-                                        lightView.CardBG.MouseUpEventHandler += (sender, e) =>
+                                        functionView.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.IsDrawerLockMode = true;
+                                            lightControl.Show(device, Room.CurrentRoom);
+                                            lightControl.action += (curDev, curRoom) =>
                                             {
-                                                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);
-                                            }
+                                                ReFreshEditDeviceAction(device, curRoom, functionView);
+                                            };
                                         };
 
-                                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
+                                        functionView.CollectButton.MouseUpEventHandler += collectionEvent;
                                     }
                                 }
                                 else if (device.CommonDevice.Type == DeviceType.AirSwitch)
@@ -1248,18 +1235,17 @@
                                         })
                                         { 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));
+                                        var functionView = new FunctionMainView(xx, yy);
+                                        itemView.AddChidren(functionView);
+                                        functionView.Init();
+                                        functionView.Tag = device;
+                                        functionView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
+                                        functionView.SetStatuText(device.GetDeviceStatu());
+                                        functionView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(airSwitch));
+                                        functionView.IsSelected = airSwitch.OnOffStatus == 1;
+                                        functionView.SetCollect(Room.CurrentRoom.IsCollectInRoom( device.FileName));
 
-                                        lightView.SwitchButton.MouseUpEventHandler += (sender, e) =>
+                                        functionView.SwitchButton.MouseUpEventHandler += (sender, e) =>
                                         {
                                             (sender as Button).IsSelected = !(sender as Button).IsSelected;
                                             if ((sender as Button).IsSelected)
@@ -1316,17 +1302,22 @@
                                             }
                                         };
 
-                                        lightView.CardBG.MouseUpEventHandler += (sender, e) =>
+                                        functionView.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.IsDrawerLockMode = true;
                                             lightControl.Show(device, Room.CurrentRoom);
+                                            lightControl.action += (curDev, curRoom) =>
+                                            {
+                                                ReFreshEditDeviceAction(device, curRoom, functionView);
+                                            };
+
                                         };
 
-                                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
+                                        functionView.CollectButton.MouseUpEventHandler += collectionEvent;
                                     }
                                 }
                                 else if (device.CommonDevice.Type == DeviceType.Thermostat)
@@ -1355,17 +1346,17 @@
                                         })
                                         { 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));
+                                        var functionView = new FunctionMainView(xx, yy);
+                                        itemView.AddChidren(functionView);
+                                        functionView.Init();
+                                        functionView.Tag = device;
+                                        functionView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
+                                        functionView.SetStatuText(device.GetDeviceStatu());
+                                        functionView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice));
+                                        functionView.IsSelected = ac.currentSystemMode != 0;
+                                        functionView.SetCollect(Room.CurrentRoom.IsCollectInRoom(device.FileName));
 
-                                        lightView.SwitchButton.MouseUpEventHandler += (sender, e) =>
+                                        functionView.SwitchButton.MouseUpEventHandler += (sender, e) =>
                                         {
                                             (sender as Button).IsSelected = !(sender as Button).IsSelected;
                                             if ((sender as Button).IsSelected)
@@ -1422,17 +1413,21 @@
                                             }
                                         };
 
-                                        lightView.CardBG.MouseUpEventHandler += (sender, e) =>
+                                        functionView.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.IsDrawerLockMode = true;
                                             lightControl.Show(device, Room.CurrentRoom);
+                                            lightControl.action += (curDev, curRoom) =>
+                                            {
+                                                ReFreshEditDeviceAction(device, curRoom, functionView);
+                                            };
                                         };
 
-                                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
+                                        functionView.CollectButton.MouseUpEventHandler += collectionEvent;
                                     }
                                 }
                                 else if (device.CommonDevice.Type == DeviceType.DimmableLight)
@@ -1463,27 +1458,26 @@
                                         })
                                         { 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 functionView = new FunctionMainView(xx, yy);
+                                        itemView.AddChidren(functionView);
+                                        functionView.Init();
+                                        functionView.Tag = device;
+                                        functionView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
+                                        functionView.SetStatuText(device.GetDeviceStatu());
+                                        functionView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice));
+                                        functionView.IsSelected = dimmableLight.OnOffStatus == 1;
+                                        functionView.SetCollect(Room.CurrentRoom.IsCollectInRoom(device.FileName));
 
-                                        var dev = Room.LoveRoomDeviceUIFilePathList.Find((obj) => obj == device.FileName);
-                                        if (dev == null)
+                                        if (Common.Room.CurrentRoom.IsCollectInRoom(device.FileName) == false)
                                         {
-                                            lightView.CollectButton.IsSelected = false;
+                                            functionView.CollectButton.IsSelected = false;
                                         }
                                         else
                                         {
-                                            lightView.CollectButton.IsSelected = true;
+                                            functionView.CollectButton.IsSelected = true;
                                         }
 
-                                        lightView.SwitchButton.MouseUpEventHandler += (sender, e) =>
+                                        functionView.SwitchButton.MouseUpEventHandler += (sender, e) =>
                                         {
                                             (sender as Button).IsSelected = !(sender as Button).IsSelected;
                                             if ((sender as Button).IsSelected)
@@ -1540,15 +1534,105 @@
                                             }
                                         };
 
-                                        lightView.CardBG.MouseUpEventHandler += (sender, e) =>
+                                        functionView.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.IsDrawerLockMode = true;
                                             dimmableLightControl.Show(device, Room.CurrentRoom);
+                                            dimmableLightControl.action += (curDev, curRoom) =>
+                                            {
+                                                ReFreshEditDeviceAction(device, curRoom, functionView);
+                                            };
                                         };
+                                        functionView.CollectButton.MouseUpEventHandler += collectionEvent;
+                                    }
+                                }
+                                else if (device.CommonDevice.Type == DeviceType.IASZone)
+                                {
+                                    //鍚勭被浼犳劅鍣�
+                                    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(Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice));
+                                    lightView.IsSelected = ias.iASInfo?.Alarm1 == 1;
+                                    lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(device.FileName));
+                                    lightView.CanControl(false);
+                                    if (Common.Room.CurrentRoom.IsCollectInRoom(device.FileName) == false)
+                                    {
+                                        lightView.CollectButton.IsSelected = false;
+                                    }
+                                    else
+                                    {
+                                        lightView.CollectButton.IsSelected = true;
+                                    }
+                                    lightView.CollectButton.MouseUpEventHandler += collectionEvent;
+                                }
+                                else if (device.CommonDevice.Type == DeviceType.TemperatureSensor)
+                                {
+                                    var tempera = device.CommonDevice as TemperatureSensor;
+
+                                    if (tempera.Gateway != null)
+                                    {
+                                        new System.Threading.Thread(() =>
+                                        {
+                                            System.Threading.Thread.Sleep(100 * i);
+                                            if (tempera.Gateway.IsVirtual)
+                                            {
+                                                ReadStatus(tempera, () =>
+                                                {
+                                                    if (tempera.SensorDiv == 1)
+                                                    {
+                                                        ReadDeviceAttributeLogic.Instance.SendTemperatureStatuComand(device.CommonDevice);
+                                                    }
+                                                    else if (tempera.SensorDiv == 2)
+                                                    {
+                                                        ReadDeviceAttributeLogic.Instance.SendHumidityStatuComand(device.CommonDevice);
+                                                    }
+                                                });
+                                            }
+                                            else
+                                            {
+                                                if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - tempera.LastDateTime).TotalSeconds)
+                                                {
+                                                    if (tempera.SensorDiv == 1)
+                                                    {
+                                                        ReadDeviceAttributeLogic.Instance.SendTemperatureStatuComand(device.CommonDevice);
+                                                    }
+                                                    else if (tempera.SensorDiv == 2)
+                                                    {
+                                                        ReadDeviceAttributeLogic.Instance.SendHumidityStatuComand(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(Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice));
+                                        lightView.IsSelected = false;
+                                        lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(device.FileName));
+                                        lightView.CanControl(false);
+                                        if (Common.Room.CurrentRoom.IsCollectInRoom(device.FileName) == false)
+                                        {
+                                            lightView.CollectButton.IsSelected = false;
+                                        }
+                                        else
+                                        {
+                                            lightView.CollectButton.IsSelected = true;
+                                        }
                                         lightView.CollectButton.MouseUpEventHandler += collectionEvent;
                                     }
                                 }
@@ -1563,12 +1647,11 @@
                                     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.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice));
+                                    lightView.IsSelected = false;
+                                    lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(device.FileName));
                                     lightView.CanControl(false);
-                                    var dev = Room.LoveRoomDeviceUIFilePathList.Find((obj) => obj == device.FileName);
-                                    if (dev == null)
+                                    if (Common.Room.CurrentRoom.IsCollectInRoom(device.FileName) == false)
                                     {
                                         lightView.CollectButton.IsSelected = false;
                                     }
@@ -1595,13 +1678,11 @@
                                     lightView.Tag = device;
                                     lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                                     lightView.SetStatuText(device.GetDeviceStatu());
-                                    lightView.SetDeviceName(device.CommonDevice.DeviceEpointName);
+                                    lightView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice));
                                     lightView.CanControl(false);
-                                    lightView.IsSelected = device.CommonDevice.IsOnline == 1;
-                                    lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(Room.CurrentRoom, device.FileName));
+                                    lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(device.FileName));
 
-                                    var dev = Room.LoveRoomDeviceUIFilePathList.Find((obj) => obj == device.FileName);
-                                    if (dev == null)
+                                    if (Common.Room.CurrentRoom.IsCollectInRoom(device.FileName) == false)
                                     {
                                         lightView.CollectButton.IsSelected = false;
                                     }
@@ -1619,6 +1700,40 @@
                         });
                     //})
                     //{ IsBackground = true }.Start();
+                }
+            }
+        }
+
+        /// <summary>
+        /// ReFreshEditDeviceAction
+        /// </summary>
+        /// <param name="device"></param>
+        /// <param name="curRoom"></param>
+        /// <param name="functionView"></param>
+        private void ReFreshEditDeviceAction(DeviceUI device, Common.Room curRoom, FunctionMainView functionView)
+        {
+            if (Common.Room.CurrentRoom.IsLove)
+            {
+                functionView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
+                functionView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice));
+                if (Room.CurrentRoom.IsCollectInRoom(device.FileName) == false)
+                {
+                    ShowFunction();
+                }
+            }
+            else
+            {
+                if (curRoom.Id != Common.Room.CurrentRoom.Id)
+                {
+
+                    Common.Room.CurrentRoom.DeleteDevice(device.FileName);
+                    ShowFunction();
+                }
+                else
+                {
+                    functionView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
+                    functionView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice));
+                    functionView.SetCollect(Room.CurrentRoom.IsCollectInRoom(device.FileName));
                 }
             }
         }
@@ -1647,6 +1762,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);
@@ -1657,6 +1773,7 @@
         /// </summary>
         private void ShowScene()
         {
+            functionSceneBodyView.RemoveAll();
             //閫夋嫨鍦烘櫙
             var sceneList = Room.CurrentRoom.SceneUIList;
             if (sceneList == null)
@@ -1692,8 +1809,9 @@
                     }
 
                     var sceneView = new SceneMainView(xx, yy);
-                    itemView.AddChidren(sceneView);
                     sceneView.Init(scene);
+                    itemView.AddChidren(sceneView);
+                    sceneView.CollectionAction += ShowScene;
                 }
                 GetDelayScene(sceneScrolView);
             }

--
Gitblit v1.8.0