黄学彪
2019-11-28 3a26f6025130dcaae4aa82ea19b16ad902450eb8
ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs
@@ -5,6 +5,7 @@
using ZigBee.Device;
using Shared.Phone.Device.CommonForm;
using Shared.Phone.UserCenter.DoorLock;
using System.Timers;
namespace Shared.Phone.UserView
{
@@ -78,6 +79,14 @@
        /// floorBtn
        /// </summary>
        private Button floorBtn;
        /// <summary>
        /// timeDic
        /// </summary>
        private Dictionary<string, Timer> timerDic = new Dictionary<string, Timer> { };
        /// <summary>
        /// sceneScrolView
        /// </summary>
        private VerticalScrolViewLayout sceneScrolView ;
        #endregion
        #region ◆ 接口____________________________
@@ -250,6 +259,15 @@
                                                //此属性描述恒温设备正处于哪种模式
                                                ac.currentSystemMode = attriButeList[0].AttriButeData;
                                                ac.LastDateTime = DateTime.Now;
                                                break;
                                            case 4099:
                                                var value = Convert.ToString(attriButeList[0].AttriButeData, 2).PadLeft(16, '0');
                                                var modeStr = value.Substring(value.Length - 5, 5);
                                                for (int j = 0; j < modeStr.Length; j++)
                                                {
                                                    ac.listSupportMode[j] = Convert.ToInt32(modeStr[j]) == 49 ? 1 : 0;
                                                }
                                                break;
                                        }
                                        (rowFL.GetChildren(0) as FunctionMainView).IsSelected = ac.currentSystemMode != 0;
@@ -605,10 +623,7 @@
            //消息
            messageBtn.MouseUpEventHandler += (send, e) =>
            {
                var roomList = new Shared.Phone.Device.Room.RoomManagement();
                HomePage.Instance.AddChidren(roomList);
                HomePage.Instance.PageIndex += 1;
                roomList.Show();
            };
            #endregion
@@ -667,6 +682,7 @@
                    roomListBtn.MouseUpEventHandler += (send, e) =>
                    {
                        CommonPage.Instance.IsDrawerLockMode = true;
                        var editRoom = new Device.Room.EditRoom();
                        HomePage.Instance.AddChidren(editRoom);
                        HomePage.Instance.PageIndex += 1;
@@ -677,8 +693,6 @@
                        };
                    };
                }
                var functionSceneView = new FrameLayout()
                {
@@ -788,9 +802,10 @@
            var floorFL = new Phone.Device.Category.SelectFloor();
            AddChidren(floorFL);
            floorFL.Init(35, 153);
            floorFL.FloorAction = (floorName) =>
            floorFL.changeFloor = true;
            floorFL.FloorAction = (floorId) =>
            {
                floorBtn.Text = floorName;
                floorBtn.Text = Config.Instance.Home.GetFloorNameById(floorId);
                Show();
            };
        }
@@ -970,21 +985,6 @@
                        deviceVerticalScrolViewLayout.AddChidren(itemView);
                    }
                    //删除设备
                    EventHandler<MouseEventArgs> delEvent = (sender, e) =>
                    {
                        var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.ConfirmDelete), Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
                        alert.Show();
                        alert.ResultEventHandler += (send1, e1) =>
                        {
                            if (e1)
                            {
                                Room.CurrentRoom.DeleteDevice(device.FileName);
                                //RefreshBodyView();
                                deviceVerticalScrolViewLayout.RemoveViewByTag((sender as Button).Tag);
                            }
                        };
                    };
                    //收藏
                    EventHandler<MouseEventArgs> collectionEvent = (sender, e) =>
                    {
@@ -1098,6 +1098,7 @@
                        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;
@@ -1214,6 +1215,7 @@
                        lightView.CardBG.MouseUpEventHandler += (sender, e) =>
                        {
                            CommonPage.Instance.IsDrawerLockMode = true;
                            if (device.CommonDevice.DfunctionType == DeviceFunctionType.A开关)
                            {
                                var lightControl = new Phone.Device.Light.OnOffControl();
@@ -1340,6 +1342,7 @@
                        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;
@@ -1372,6 +1375,7 @@
                                ac.ReadFanMode();
                                ac.ReadSystemMode();
                                ac.ReadSystemFansSwingMode();
                                ac.ReadModeSupport();
                            });
                        }
                        else
@@ -1387,6 +1391,7 @@
                                ac.ReadFanMode();
                                ac.ReadSystemMode();
                                ac.ReadSystemFansSwingMode();
                                ac.ReadModeSupport();
                            }
                        }
                        var lightView = new FunctionMainView(xx, yy);
@@ -1457,6 +1462,7 @@
                        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;
@@ -1572,6 +1578,7 @@
                        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;
@@ -1626,6 +1633,7 @@
                        lightView.CardBG.MouseUpEventHandler += (sender, e) =>
                        {
                            CommonPage.Instance.IsDrawerLockMode = true;
                            var userDoorLockPage = new UserDoorLockPage(Room.CurrentRoom, device);
                            HomePage.Instance.AddChidren(userDoorLockPage);
                            HomePage.Instance.PageIndex += 1;
@@ -1707,7 +1715,7 @@
            }
            else
            {
                var sceneScrolView = new VerticalScrolViewLayout { };
                sceneScrolView = new VerticalScrolViewLayout { };
                functionSceneBodyView.AddChidren(sceneScrolView);
                for (int i = 0; i < sceneList.Count; i++)
                {
@@ -1731,109 +1739,74 @@
                    var sceneView = new SceneMainView(xx, yy);
                    itemView.AddChidren(sceneView);
                    sceneView.Init();
                    sceneView.SetSceneNameText(scene.Name);
                    sceneView.SetIcon($"SceneIcon/{i}.png");
                    sceneView.SetCollect(Common.Room.CurrentRoom.GetLoveRoom().SceneUIFilePathList.Contains(scene.FileName));
                    if (scene.SceneDelayTime == 0)
                    {
                        sceneView.SetTimeImage();
                    sceneView.Init(scene);
                    }
                    else
                    {
                        sceneView.SetTimeText(CommonFormResouce.GetTimeString(scene.SceneDelayTime));
                GetDelayScene(sceneScrolView);
            }
                    }
                    sceneView.TimeButton.MouseUpEventHandler += (sender, e) =>
        /// <summary>
        /// GetDelayScene
        /// </summary>
        /// <param name="scrolViewLayout"></param>
        private void GetDelayScene(VerticalScrolViewLayout scrolViewLayout)
                    {
                        var timeSelect = new SelectTime();
                        CommonPage.Instance.AddChidren(timeSelect);
                        timeSelect.TempTime = scene.DelayTime;
                        timeSelect.Init();
                        timeSelect.TimeAction = (t) =>
            new System.Threading.Thread(async () =>
                        {
                            scene.SceneDelayTime = t;
                            if (t > 0)
                            {
                                sceneView.SetTimeText(CommonFormResouce.GetTimeString(scene.SceneDelayTime));
                            }
                            else
                            {
                                sceneView.SetTimeImage();
                            }
                        };
                    };
                    //调用场景
                    EventHandler<MouseEventArgs> sceneUpHandler = async (sender, e) =>
                    {
                        //1成功 0失败
                        //后面补上相关提示
                        // Error参数含义
                        //<para>1:网关无法解析命令数据。</para>
                        //<para>2:协调器正在升级或备份/恢复数据
                        //<para>3:操作设备/组/场景不存在</para>
                        //<para>4:其他错误</para>
                        //<para>5:数据传输错误(在某次客户端向网关发送数据的过程中,网关在合理时间范围内接收客户端数据不完整导致该错误发生。如客户端向网关一次发送100个字节的数据,但网关等待接收了一秒只接收了80个字节。发生该错误,网关将主动关闭客户端连接)</para>
                        var sceneOpenAllData = await ZigBee.Device.Scene.ControlSceneAsync(scene.Id, scene.SceneDelayTime);
                        if (sceneOpenAllData == null || sceneOpenAllData.sceneOpenData == null)
                var catDelaySceneResponseAllData = await Scene.CatDelaySceneAsync();
                if (catDelaySceneResponseAllData == null)
                        {
                            return;
                        }
                        if (sceneOpenAllData.sceneOpenData.Result == 0)
                        {
                            if (sceneOpenAllData.errorResponData == null)
                var catDelaySceneResponseData = catDelaySceneResponseAllData.catDelaySceneResponseData;
                if (catDelaySceneResponseData == null || catDelaySceneResponseData.DelayScenesList.Count == 0)
                            {
                                return;
                            }
                            CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.ControlSceneFail);
                        }
                    };
                    //收藏
                    EventHandler<MouseEventArgs> collectionEvent = (sender, e) =>
                var delayList = catDelaySceneResponseData.DelayScenesList;
                Application.RunOnMainThread(() =>
                    {
                        (sender as Button).IsSelected = !(sender as Button).IsSelected;
                        if ((sender as Button).IsSelected)
                    for (int i = 0; scrolViewLayout != null && i < scrolViewLayout.ChildrenCount; i++)
                        {
                            //scene.IsCollected = true;
                            Room.CurrentRoom.GetLoveRoom().AddScene(scene);
                        }
                        else
                        var iView = scrolViewLayout.GetChildren(i) as FrameLayout;
                        for (int j = 0; iView != null && j < iView.ChildrenCount; j++)
                        {
                            //scene.IsCollected = false;
                            Room.CurrentRoom.GetLoveRoom().RemoveScene(scene);
                            var sceneView = iView.GetChildren(j) as SceneMainView;
                            foreach (var delayScenesListResponseInfo in delayList)
                            {
                                if (delayScenesListResponseInfo.ScenesId == sceneView.scene.Id)
                                {
                                    var times = delayScenesListResponseInfo.RemainTime;
                                    sceneView.scene.RemainTime = times;
                                    new System.Threading.Thread(() =>
                                    {
                                        while (times > 0)
                                        {
                                            System.Threading.Thread.Sleep(1000);
                                            Application.RunOnMainThread(() =>
                                            {
                                                sceneView.SetTimeText(CommonFormResouce.GetTimeString(times));
                                            });
                                            times -= 1;
                        }
                        scene.Save();
                                        Application.RunOnMainThread(() =>
                                        {
                                            sceneView.SetTimeImage();
                                        });
                                    })
                                    { IsBackground = true }.Start();
                        //if ((sender as Button).IsSelected)
                        //{
                        //    scene.Collect(false);
                        //    (sender as Button).IsSelected = false;
                        //}
                        //else
                        //{
                        //    scene.Collect(true);
                        //    (sender as Button).IsSelected = true;
                        //}
                        //scene.Save();
                        //if (Room.CurrentRoom.IsLove)
                        //{
                        //    RefreshBodyView();
                        //}
                    };
                    sceneView.CollectButton.MouseUpEventHandler += collectionEvent;
                    sceneView.MouseUpEventHandler += sceneUpHandler;
                    sceneView.SceneIcon.MouseUpEventHandler += sceneUpHandler;
                    sceneView.SceneNameButton.MouseUpEventHandler += sceneUpHandler;
                                    break;
                }
            }
        }
                    }
                });
            })
            { IsBackground = true }.Start();
        }
        #endregion