xm
2020-07-21 9a4b76398009cf76c508d61f7e48fb6f5cb7ac2d
ZigbeeApp/Shared/Phone/MainPage/HomeMainPageForm.cs
old mode 100755 new mode 100644
@@ -16,6 +16,10 @@
        #region ■ 变量声明___________________________
        /// <summary>
        /// The instance.
        /// </summary>
        public static HomeMainPageForm Instance;
        /// <summary>
        /// 整个界面的上下滑动控件
        /// </summary>
        private VerticalFrameControl listBodyContr = null;
@@ -49,8 +53,11 @@
        /// </summary>
        public void ShowForm()
        {
            //先初始化左滑房间列表界面(在反射里面初始化)
            if (ListRoomViewFrom.Instance == null) { }
            this.FormID = "HomeMainPageForm";
            Instance = this;
            //先初始化左滑房间列表界面(在反射里面初始化)
            if (LeftListRoomViewFrom.Instance == null) { }
            //整个背景的上下滑动控件
            if (this.listBodyContr == null)
@@ -67,6 +74,9 @@
                listBodyContr.RecoverTableHeight();
            }
            //初始化默认楼层ID
            this.InitDefultFloorId();
            //初始化头部控件
            this.InitTopFrameLayoutControl();
            //初始化中间控件
@@ -75,8 +85,6 @@
            this.AddNormalDeviceReportEvent();
            //添加传感器状态上报事件
            this.AddSensorDeviceReportEvent();
            //将当前的画面保存到内存当中
            UserCenterLogic.AddActionForm(this);
        }
        /// <summary>
@@ -85,7 +93,7 @@
        private void InitTopFrameLayoutControl()
        {
            //头部容器
            base.topFrameLayout = new FrameLayout();
            base.topFrameLayout = new NormalFrameLayout();
            topFrameLayout.Y = Application.GetRealHeight(60);
            topFrameLayout.Height = Application.GetRealHeight(127);
            topFrameLayout.BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor;
@@ -124,6 +132,9 @@
                    this.ShowSelectFloorForm(btnFloorName);
                };
            }
            //可视对讲快捷方式
            //Shared.Phone.Device.VideoIntercom.VideoMachine.AccountSupportVideo(topFrameLayout);
            //安防快捷方式
            if (UserCenterResourse.ResidenceOption.SafetyShortcut)
            {
@@ -165,7 +176,8 @@
                    selectHouse.Init();
                    selectHouse.HouseAction = (houseId) =>
                    {
                        ChangeResidence(House.GetHouseByHouseId(houseId));
                        //切换住宅
                        this.ChangeResidence(HdlResidenceLogic.Current.GetHouseByHouseId(houseId));
                    };
                }
            };
@@ -250,13 +262,10 @@
            }
            //功能和场景bodyView
            this.bodyFrameLayout = new FrameLayout()
            {
                Y = functionSceneView.Bottom,
                Height = Application.GetRealHeight(750),
                Gravity = Gravity.CenterHorizontal,
                BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor
            };
            this.bodyFrameLayout = new NormalFrameLayout();
            bodyFrameLayout.Y = functionSceneView.Bottom;
            bodyFrameLayout.Height = this.listBodyContr.frameTable.Height - functionSceneView.Bottom;
            bodyFrameLayout.BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor;
            this.listBodyContr.frameTable.AddChidren(bodyFrameLayout);
            //选择功能分栏
@@ -400,7 +409,11 @@
            roomPageView.SetLeftAndRightImageView(mLeftImageView, mRightImageView);
            //当前房间
            var listRoom = HdlRoomLogic.Current.GetRoomsByCurrentFloorIdAppendLoveRoom();
            var listRoom = HdlRoomLogic.Current.GetRoomsByFloorIdAppendLoveRoom(Config.Instance.Home.CurrentFloorId);
            if (HdlRoomLogic.Current.NowMainPageRoom == null)
            {
                HdlRoomLogic.Current.NowMainPageRoom = listRoom[0];
            }
            var curIndex = 0;
            for (int i = 0; i < listRoom.Count; i++)
            {
@@ -408,7 +421,7 @@
                roomPageView.AddChidren(roomView);
                roomView.Init(listRoom[i]);
                if (listRoom[i].Id == HdlRoomLogic.Current.CurrentRoom.Id)
                if (listRoom[i].Id == HdlRoomLogic.Current.NowMainPageRoom.Id)
                {
                    //当前房间,则显示那些数据出来
                    roomView.HideName(false);
@@ -473,7 +486,7 @@
                btnRoomRightShadow.Visible = true;
                btnRoomBottomShadow.Visible = true;
                //切换当前房间
                HdlRoomLogic.Current.CurrentRoom = listRoom[curIndex];
                HdlRoomLogic.Current.NowMainPageRoom = listRoom[curIndex];
                //刷新设备桌布控件
                this.isRoomChanging = false;
                this.RefreshBodyView();
@@ -498,7 +511,7 @@
                //当没有绑定有网关,左滑时,点击房间列表,则不鸟它
                return;
            }
            var listRoom = HdlRoomLogic.Current.GetRoomsByCurrentFloorIdAppendLoveRoom();
            var listRoom = HdlRoomLogic.Current.GetRoomsByFloorIdAppendLoveRoom(Config.Instance.Home.CurrentFloorId);
            for (int i = 0; i < listRoom.Count; i++)
            {
                if (room.Id == listRoom[i].Id)
@@ -514,7 +527,7 @@
            //重置一下楼层名字
            if (this.btnFloorName != null)
            {
                btnFloorName.Text = HdlResidenceLogic.Current.GetFloorNameById(Config.Instance.Home.CurrentFloorId);
                btnFloorName.Text = Config.Instance.Home.GetCurrentFloorName;
            }
        }
@@ -535,7 +548,7 @@
            this.dicDeviceCardControl.Clear();
            var listDevice = new List<CommonDevice>();
            foreach (var mainkeys in HdlRoomLogic.Current.CurrentRoom.ListDevice)
            foreach (var mainkeys in HdlRoomLogic.Current.NowMainPageRoom.ListDevice)
            {
                var device = LocalDevice.Current.GetDevice(mainkeys);
                //判断该设备能否显示在主页
@@ -549,7 +562,8 @@
            //当前房间的设备数
            if (listDevice.Count == 0)
            {
                ShowNoFunctionTip();
                //还没有功能哦
                this.ShowNotDataImage(bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.NoFunction_Tip));
                return;
            }
            //设备列表容器控件
@@ -607,6 +621,11 @@
                    {
                        cardContr = new Controls.DeviceAcCardControl();
                    }
                    //新风
                    else if (device.Type == DeviceType.FreshAir)
                    {
                        cardContr = new Controls.DeviceFreshAirCardControl();
                    }
                    //彩灯(调光器)
                    else if (device.Type == DeviceType.DimmableLight)
                    {
@@ -627,6 +646,11 @@
                    {
                        cardContr = new Controls.DeviceDoorLockCardControl();
                    }
                    //色温灯
                    else if (device.Type == DeviceType.ColorTemperatureLight)
                    {
                        cardContr = new Controls.DeviceColorTemperatureCardControl();
                    }
                    //无法识别
                    else
                    {
@@ -637,7 +661,7 @@
                    cardContr.X = XX;
                    cardContr.Y = YY;
                    listDeviceBackContr.AddChidren(cardContr);
                    cardContr.InitControl(device);
                    cardContr.InitControl(device, HdlRoomLogic.Current.NowMainPageRoom);
                    //卡片需要被移除的事件
                    cardContr.CardNeedRemoveEvent += () =>
                    {
@@ -689,33 +713,6 @@
                    System.Threading.Thread.Sleep(50);
                }
            }
        }
        /// <summary>
        /// 显示没有功能
        /// </summary>
        private void ShowNoFunctionTip()
        {
            var noFunction = new Button
            {
                Y = Application.GetRealHeight(69),
                Width = this.GetPictrueRealSize(683),
                Height = this.GetPictrueRealSize(392),
                Gravity = Gravity.CenterHorizontal,
                UnSelectedImagePath = "Item/NoFunction.png"
            };
            bodyFrameLayout.AddChidren(noFunction);
            var noFunctionTip = new Button()
            {
                Y = noFunction.Bottom,
                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
            };
            bodyFrameLayout.AddChidren(noFunctionTip);
        }
        #endregion
@@ -811,7 +808,7 @@
            this.dicDeviceCardControl.Clear();
            var listScene = new List<SceneUI>();
            foreach (int sceneId in HdlRoomLogic.Current.CurrentRoom.ListSceneId)
            foreach (int sceneId in HdlRoomLogic.Current.NowMainPageRoom.ListSceneId)
            {
                var sceneUi = HdlSceneLogic.Current.GetSceneUIBySceneId(sceneId);
                if (sceneUi == null)
@@ -824,8 +821,8 @@
            if (listScene.Count == 0)
            {
                //显示没场景
                this.ShowNoSceneTip();
                //还没有场景哦
                this.ShowNotDataImage(bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.NoScene_Tip));
                return;
            }
            //列表控件
@@ -907,26 +904,6 @@
                    System.Threading.Thread.Sleep(50);
                }
            }
        }
        /// <summary>
        /// 显示没场景
        /// </summary>
        private void ShowNoSceneTip()
        {
            var picNoFunc = new PicViewControl(683, 392);
            picNoFunc.Y = Application.GetRealHeight(69);
            picNoFunc.Gravity = Gravity.CenterHorizontal;
            picNoFunc.UnSelectedImagePath = "Item/NoFunction.png";
            bodyFrameLayout.AddChidren(picNoFunc);
            var btnTip = new NormalViewControl(bodyFrameLayout.Width, Application.GetRealHeight(200), false);
            btnTip.Y = picNoFunc.Bottom;
            btnTip.Text = Language.StringByID(R.MyInternationalizationString.NoScene_Tip).Replace("{\\r\\n}", "\r\n");
            btnTip.TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor;
            btnTip.TextAlignment = TextAlignment.Center;
            btnTip.IsMoreLines = true;
            bodyFrameLayout.AddChidren(btnTip);
        }
        /// <summary>
@@ -1084,34 +1061,21 @@
        /// <param name="home">Home.</param>
        private void ChangeResidence(House home)
        {
            try
            HdlThreadLogic.Current.RunThread(() =>
            {
                CommonPage.Loading.Start();
                new System.Threading.Thread(async () =>
                {
                    Config.Instance.HomeId = home.Id;
                    Config.Instance.Home = House.GetHouseByFilePath(home.FileName);
                    Global.CreateHomeDirectory(home.Id);
                    Config.Instance.Save();
                    //刷新个人中心的内存及线程
                    await UserCenterLogic.InitUserCenterMenmoryAndThread();
                this.ShowProgressBar();
                    Application.RunOnMainThread(() =>
                    {
                        ShowForm();
                        CommonPage.Loading.Hide();
                    });
                })
                { IsBackground = true }.Start();
            }
            catch (Exception ex)
            {
                Application.RunOnMainThread(() =>
                //切换住宅
                HdlResidenceLogic.Current.SwitchResidence(home.Id);
                HdlThreadLogic.Current.RunMain(() =>
                {
                    CommonPage.Loading.Hide();
                    Console.WriteLine(ex.Message);
                    //刷新界面
                    this.ShowForm();
                    this.CloseProgressBar();
                });
            }
            });
        }
        #endregion
@@ -1134,12 +1098,14 @@
                    {
                        //刷新卡片信息
                        var locadevice = LocalDevice.Current.GetDevice(mainKeys);
                        if (report.DeviceStatusReport.CluterID == 513 && report.DeviceStatusReport.AttriBute[0].AttributeId == 28)
                        //已经接收到网关的反馈 2020.05.09:删除Ack主题
                        this.dicDeviceCardControl[mainKeys].SetHadGetResponeResultStatu();
                        //刷新控件
                        if (locadevice.Type != DeviceType.IASZone)
                        {
                            //空调是特殊的,它的开关是属性上报来着.已经接收到网关的反馈
                            this.dicDeviceCardControl[mainKeys].SetHadGetResponeResultStatu();
                            //传感器不需要属性上报(但是那个球型传感器居然会属性上报)
                            this.dicDeviceCardControl[mainKeys].RefreshControlInfo(locadevice);
                        }
                        this.dicDeviceCardControl[mainKeys].RefreshControlInfo(locadevice);
                    }
                }, ShowErrorMode.NO);
            });
@@ -1153,25 +1119,9 @@
                    if (this.dicDeviceCardControl.ContainsKey(mainKeys) == true)
                    {
                        //刷新卡片状态
                        this.dicDeviceCardControl[mainKeys].SetCardOnlineStatu(report.IsOnline == 1);
                        bool bolOnline = Common.LocalDevice.Current.CheckDeviceIsOnline(report);
                        this.dicDeviceCardControl[mainKeys].SetCardOnlineStatu(bolOnline);
                        return;
                    }
                }, ShowErrorMode.NO);
            });
            //设备控制反馈上报
            HdlGatewayReceiveLogic.Current.AddAttributeEvent("UserHomeViewDeviceRespone", ReceiveComandDiv.A节点控制反馈, (report) =>
            {
                HdlThreadLogic.Current.RunMain(() =>
                {
                    string mainKeys = LocalDevice.Current.GetDeviceMainKeys(report);
                    if (this.dicDeviceCardControl.ContainsKey(mainKeys) == true)
                    {
                        //设备卡片
                        var deviceCardContr = this.dicDeviceCardControl[mainKeys];
                        //已经接收到网关的反馈
                        deviceCardContr.SetHadGetResponeResultStatu();
                    }
                }, ShowErrorMode.NO);
@@ -1196,10 +1146,8 @@
                    string mainKeys = LocalDevice.Current.GetDeviceMainKeys(report);
                    if (this.dicDeviceCardControl.ContainsKey(mainKeys) == true)
                    {
                        //本地设备对象
                        var locadevice = LocalDevice.Current.GetDevice(mainKeys);
                        //刷新卡片信息
                        this.dicDeviceCardControl[mainKeys].RefreshControlInfo(locadevice);
                        //开启卡片闪烁特效
                        this.dicDeviceCardControl[mainKeys].StartCardLightAppeal();
                    }
                }, ShowErrorMode.NO);
@@ -1216,13 +1164,16 @@
        private void ShowSelectFloorForm(NormalViewControl btnFloor)
        {
            var floorFL = new Category.SelectFloorForm();
            floorFL.CurFloorId = Config.Instance.Home.CurrentFloorId;
            this.AddChidren(floorFL);
            floorFL.Init(35, 153);
            floorFL.changeFloor = true;
            floorFL.FloorAction = (floorId) =>
            {
                btnFloor.Text = Config.Instance.Home.GetFloorNameById(floorId);
                HdlRoomLogic.Current.CurrentRoom = HdlRoomLogic.Current.GetLoveRoom();
                btnFloor.Text = HdlResidenceLogic.Current.GetFloorNameById(floorId);
                Config.Instance.Home.CurrentFloorId = floorId;
                HdlRoomLogic.Current.NowMainPageRoom = HdlRoomLogic.Current.GetLoveRoom();
                //分类界面需要刷新
                UserView.UserPage.Instance.RefreshCategoryForm = true;
                this.ShowForm();
            };
        }
@@ -1236,8 +1187,10 @@
        /// </summary>
        public override void CloseFormBefore()
        {
            //把静态变量的这个东西置空
            Instance = null;
            HdlGatewayReceiveLogic.Current.RemoveEvent("UserHomeViewDeviceOnline");
            HdlGatewayReceiveLogic.Current.RemoveEvent("UserHomeViewDeviceRespone");
            HdlGatewayReceiveLogic.Current.RemoveEvent("UserHomeViewDeviceStatus");
            HdlGatewayReceiveLogic.Current.RemoveEvent("UserHomeViewSensor");
@@ -1262,6 +1215,23 @@
            return true;
        }
        /// <summary>
        /// 初始化默认楼层ID
        /// </summary>
        private void InitDefultFloorId()
        {
            if (Config.Instance.Home.CurrentFloorId != string.Empty)
            {
                return;
            }
            var dicFloor = HdlRoomLogic.Current.GetFloorSortList();
            foreach (var floorId in dicFloor.Keys)
            {
                Config.Instance.Home.CurrentFloorId = floorId;
                break;
            }
        }
        #endregion
        #region ■ 界面重新激活事件___________________