HDL Home App 第二版本 旧平台金堂用 正在使用
黄学彪
2019-10-18 97e259d966cb5cb5d73c105d5dbaadcc1f920614
ZigbeeApp/Shared/Phone/Device/Category/Category.cs
@@ -36,9 +36,13 @@
        /// </summary>
        private ButtonLineForm automationBtn;
        /// <summary>
        /// 中部背景bodyView
        /// 场景功能中部背景bodyView
        /// </summary>
        public FrameLayout functionSceneBodyView;
        /// <summary>
        /// 中部背景bodyView
        /// </summary>
        public FrameLayout functionSceneAutoBodyView;
        /// <summary>
        /// 相同的设备列表
        /// </summary>
@@ -539,6 +543,7 @@
        /// <param name="selectedBtn">选中那个界面 0--功能 1--场景 2--自动化 </param>
        public void Show(int selectedBtn = 1)
        {
            ZbGateway.StatusList.Add(this);
            RemoveAll();
@@ -639,76 +644,13 @@
                functionSceneAutoBG.AddChidren(selectFloorBtn);
            }
            var roomFL = new HorizontalScrolViewLayout()
            functionSceneAutoBodyView = new FrameLayout
            {
                X= Application.GetRealWidth(CommonFormResouce.X_Left),
                Y = functionSceneAutoBG.Bottom,
                Height = Application.GetRealHeight(167),
                Width=Application.GetRealWidth(CommonPage.AppRealWidth-CommonFormResouce.X_Left),
                Height = Application.GetRealHeight(1423),
                BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor
            };
            midFL.AddChidren(roomFL);
            Button curBtn = new Button();
            for(int i=0;i<Config.Instance.Home.RoomFilePathList.Count;i++)
            {
                var roomFilePath = Config.Instance.Home.RoomFilePathList[i];
                var room = Shared.Common.Room.GetRoomByFilePath(roomFilePath);
                if (room == null)
                {
                    continue;
                }
                var row = new RowLayout()
                {
                    Width = Application.GetRealWidth(187+50),
                    Height = Application.GetRealHeight(167),
                    LineColor= ZigbeeColor.Current.GXCGrayBackgroundColor
                };
                roomFL.AddChidren(row);
                var roomBtn = new Button()
                {
                    Width = Application.GetRealWidth(187),
                    Height = Application.GetRealHeight(78),
                    Radius=(uint)Application.GetRealHeight(78/2),
                    Gravity = Gravity.Center,
                    Text=room.Name,
                    TextColor=ZigbeeColor.Current.GXCTextGrayColor,
                    SelectedTextColor=ZigbeeColor.Current.GXCTextWhiteColor,
                    BackgroundColor=ZigbeeColor.Current.GXCButtonUnSelectedColor3,
                    SelectedBackgroundColor=ZigbeeColor.Current.GXCButtonSelectedColor,
                    BorderColor=ZigbeeColor.Current.GXCBorderUnSelectedColor,
                    BorderWidth=1
                };
                row.AddChidren(roomBtn);
                if(Shared.Common.Room.CurrentRoom.FileName==roomFilePath)
                {
                    roomBtn.IsSelected = true;
                    curBtn = roomBtn;
                }
                roomBtn.MouseUpEventHandler += (sender, e) =>
                {
                    if ((sender as Button) == curBtn)
                    {
                        return;
                    }
                    (sender as Button).IsSelected = true;
                    curBtn.IsSelected = false;
                    curBtn = (sender as Button);
                    Shared.Common.Room.CurrentRoom = room;
                };
            }
            //功能和场景bodyView
            functionSceneBodyView = new FrameLayout()
            {
                Y = roomFL.Bottom,
                Height = Application.GetRealHeight(CommonPage.AppRealHeight - CommonPage.TabbarHeight) - functionBtn.Height - topView.Height - roomFL.Height - CommonPage.LineHeight,
                BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor
            };
            midFL.AddChidren(functionSceneBodyView);
            midFL.AddChidren(functionSceneAutoBodyView);
            if (selectedBtn == 0)
            {
@@ -763,10 +705,11 @@
        {
            var floors = new SelectFloor ();
            AddChidren(floors);
            floors.Init(599,357);
            floors.Init(599,357,Direction.Right);
            floors.FloorAction += (floorName) =>
            {
                floorBtn.Text = floorName;
                RefreshBodyView();
            };
        }
@@ -843,12 +786,6 @@
            var scene = new CategoryAddScene();
            UserView.HomePage.Instance.AddChidren(scene);
            UserView.HomePage.Instance.PageIndex += 1;
            CategoryAddScene.sceneTargetDevicesList?.Clear();
            CategoryAddScene.SceneText = "";
            CategoryAddScene.CurrentRoom = Shared.Common.Room.CurrentRoom;
            CategoryAddScene.ModifySceneUI = null;
            CategoryAddScene.Modify = false;
            CategoryAddScene.ImagePath = "Scene/Scene0.png";
            scene.Show();
        }
@@ -875,7 +812,7 @@
        /// </summary>
        public void RefreshBodyView()
        {
            functionSceneBodyView.RemoveAll();
            functionSceneAutoBodyView.RemoveAll();
            if (functionBtn.IsSelected)
            {
                ShowFunction();
@@ -898,16 +835,49 @@
        /// </summary>
        public void ShowFunction()
        {
            AddRoomView();
        }
        /// <summary>
        /// 提示没有功能
        /// </summary>
        private void ShowNoFunctionTip()
        {
            var noFunction = new Button()
            {
                Y=Application.GetRealHeight(320),
                Width=Application.GetMinRealAverage(757),
                Height = Application.GetMinRealAverage(435),
                UnSelectedImagePath="Item/NoFunction.png",
                Gravity = Gravity.CenterHorizontal
            };
            functionSceneBodyView.AddChidren(noFunction);
            var noFunctionTip = new Button()
            {
                Y = noFunction.Bottom + Application.GetRealHeight(32),
                Height = Application.GetRealHeight(200),
                Width = Application.GetRealWidth(700),
                Gravity = Gravity.CenterHorizontal,
                Text = Language.StringByID(R.MyInternationalizationString.NoFunction).Replace("{\\r\\n}","\r\n"),
                TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
                TextAlignment = TextAlignment.Center,
                IsMoreLines=true
            };
            functionSceneBodyView.AddChidren(noFunctionTip);
        }
        /// <summary>
        /// RefreshFunction
        /// </summary>
        /// <param name="room"></param>
        private void RefreshFunction(Common.Room room)
        {
            //移除监听
            RemoveAllUpdateControlDeviceStatuAction();
            //选择功能--直接从房间的devicelist中获取
            Shared.Common.Room.GetAllRoomDeviceUIList();
            Shared.Common.Room.GetAllRoomDeviceTypeList();
            if (Common.Room.AllRoomDeviceUIList == null)
            {
                return;
            }
            if (Common.Room.AllRoomDeviceUIList.Count == 0)
            functionSceneBodyView.RemoveAll();
            if (room.DeviceUIList.Count == 0)
            {
                ShowNoFunctionTip();
            }
@@ -934,46 +904,8 @@
                functionSceneBodyView.AddChidren(deviceListScrolView);
                tempFunctionTypeBtn = new FunctionButton();
                
                foreach (var deviceType in Common.Room.AllRoomDeviceTypeList)
                EventHandler<MouseEventArgs> ShowSameTypeFunction = (object typeSender, MouseEventArgs mouseEventArgs) =>
                {
                    typeRowLayout = new RowLayout()
                    {
                        Width = Application.GetRealWidth(CommonPage.AppRealWidth / 5),
                        LineColor = ZigbeeColor.Current.GXCBackgroundColor,
                        Tag = deviceType
                    };
                    functionTypeScrowView.AddChidren(typeRowLayout);
                    functionTypeIMG = new FunctionButton()
                    {
                        Tag = deviceType
                    };
                    functionTypeIMG.Init(DeviceUI.GetDeviceTypeUnSelectedImagePath(deviceType), DeviceUI.GetDeviceTypeUnSelectedImagePath(deviceType));
                    functionTypeIMG.SetTitle(DeviceUI.GetDeviceTypeName(deviceType));
                    typeRowLayout.AddChidren(functionTypeIMG);
                    functionTypeIMG.ImageBtn.MouseUpEventHandler += ShowSameTypeFunction;
                    functionTypeIMG.NameBtn.MouseUpEventHandler += ShowSameTypeFunction;
                    functionTypeIMG.ImageBG.MouseUpEventHandler += ShowSameTypeFunction;
                    if (deviceType == Shared.Common.Room.AllRoomDeviceUIList[0].CommonDevice.Type)
                    {
                        ShowSameTypeFunction(functionTypeIMG.ImageBtn, null);
                    }
                }
            }
        }
        /// <summary>
        /// 显示相同类型的功能
        /// </summary>
        /// <param name="typeSender">typeSender.</param>
        /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param>
        private void ShowSameTypeFunction(object typeSender, MouseEventArgs mouseEventArgs)
        {
            //选择功能--直接从房间的devicelist中获取
            Shared.Common.Room.GetAllRoomDeviceUIList();
            tempFunctionTypeBtn.IsSelected = false;
            tempFunctionTypeBtn = (typeSender as Button).Parent as FunctionButton;
            ((typeSender as Button).Parent as FunctionButton).IsSelected = true;
@@ -981,7 +913,7 @@
            deviceListScrolView.RemoveAll();
            var sameTypeList = new List<DeviceUI> { };
            foreach (var devieceUI in Common.Room.AllRoomDeviceUIList)
                    foreach (var devieceUI in room.DeviceUIList)
            {
                if (devieceUI == null || devieceUI.CommonDevice == null)
                {
@@ -1482,36 +1414,126 @@
                    
                }
            }
                };
                foreach (var deviceType in Common.Room.GetdeviceTypes(room))
                {
                    typeRowLayout = new RowLayout()
                    {
                        Width = Application.GetRealWidth(CommonPage.AppRealWidth / 5),
                        LineColor = ZigbeeColor.Current.GXCBackgroundColor,
                        Tag = deviceType
                    };
                    functionTypeScrowView.AddChidren(typeRowLayout);
                    functionTypeIMG = new FunctionButton()
                    {
                        Tag = deviceType
                    };
                    functionTypeIMG.Init(DeviceUI.GetDeviceTypeUnSelectedImagePath(deviceType), DeviceUI.GetDeviceTypeUnSelectedImagePath(deviceType));
                    functionTypeIMG.SetTitle(DeviceUI.GetDeviceTypeName(deviceType));
                    typeRowLayout.AddChidren(functionTypeIMG);
                    functionTypeIMG.ImageBtn.MouseUpEventHandler += ShowSameTypeFunction;
                    functionTypeIMG.NameBtn.MouseUpEventHandler += ShowSameTypeFunction;
                    functionTypeIMG.ImageBG.MouseUpEventHandler += ShowSameTypeFunction;
                    if (deviceType == room.DeviceUIList[0].CommonDevice.Type)
                    {
                        ShowSameTypeFunction(functionTypeIMG.ImageBtn, null);
                    }
                }
            }
        }
        /// <summary>
        /// 提示没有功能
        /// AddRoomView
        /// </summary>
        private void ShowNoFunctionTip()
        private void AddRoomView()
        {
            var noFunction = new Button()
            var roomFL = new HorizontalScrolViewLayout()
            {
                Y=Application.GetRealHeight(320),
                Width=Application.GetMinRealAverage(757),
                Height = Application.GetMinRealAverage(435),
                UnSelectedImagePath="Item/NoFunction.png",
                Gravity = Gravity.CenterHorizontal
                X = Application.GetRealWidth(CommonFormResouce.X_Left),
                Height = Application.GetRealHeight(167),
                Width = Application.GetRealWidth(CommonPage.AppRealWidth - CommonFormResouce.X_Left),
                BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor
            };
            functionSceneBodyView.AddChidren(noFunction);
            functionSceneAutoBodyView.AddChidren(roomFL);
            var noFunctionTip = new Button()
            //功能和场景bodyView
            functionSceneBodyView = new FrameLayout()
            {
                Y = noFunction.Bottom + Application.GetRealHeight(32),
                Height = Application.GetRealHeight(200),
                Width = Application.GetRealWidth(700),
                Gravity = Gravity.CenterHorizontal,
                TextID = R.MyInternationalizationString.NoFunction,
                //Text = "没有功能 \n 请在个人中心中--设备管理处添加",
                TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
                TextAlignment = TextAlignment.Center,
                IsMoreLines=true
                Y = roomFL.Bottom,
                Height = Application.GetRealHeight(1316),
                BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor
            };
            functionSceneBodyView.AddChidren(noFunctionTip);
            functionSceneAutoBodyView.AddChidren(functionSceneBodyView);
            Button curBtn = new Button();
            foreach (var room in Common.Room.CurrentRoom.GetRoomsByCurrentFloorIdAppendLoveRoom())
            {
                var row = new RowLayout()
                {
                    Width = Application.GetRealWidth(187 + 50),
                    Height = Application.GetRealHeight(167),
                    LineColor = ZigbeeColor.Current.GXCGrayBackgroundColor
                };
                roomFL.AddChidren(row);
                var roomBtn = new Button()
                {
                    Width = Application.GetRealWidth(187),
                    Height = Application.GetRealHeight(78),
                    Radius = (uint)Application.GetRealHeight(78 / 2),
                    Gravity = Gravity.Center,
                    Text = room.Name,
                    TextColor = ZigbeeColor.Current.GXCTextGrayColor,
                    SelectedTextColor = ZigbeeColor.Current.GXCTextWhiteColor,
                    BackgroundColor = ZigbeeColor.Current.GXCButtonUnSelectedColor3,
                    SelectedBackgroundColor = ZigbeeColor.Current.GXCButtonSelectedColor,
                    BorderColor = ZigbeeColor.Current.GXCBorderUnSelectedColor,
                    BorderWidth = 1
                };
                row.AddChidren(roomBtn);
                if (room.IsLove)
                {
                    roomBtn.IsSelected = true;
                    curBtn = roomBtn;
                    if(sceneBtn.IsSelected)
                    {
                        RefreshScene(room);
                    }
                    else
                    {
                        RefreshFunction(room);
                    }
                }
                roomBtn.MouseUpEventHandler += (sender, e) =>
                {
                    if ((sender as Button) == curBtn)
                    {
                        return;
                    }
                    (sender as Button).IsSelected = true;
                    curBtn.IsSelected = false;
                    curBtn = sender as Button;
                    if (sceneBtn.IsSelected)
                    {
                        RefreshScene(room);
                    }
                    else
                    {
                        RefreshFunction(room);
                    }
                };
            }
        }
        #endregion
@@ -1522,15 +1544,16 @@
        /// </summary>
        public void ShowScene()
        {
            //刷新场景
            //var reFreshResult=await Shared.Common.Room.RefreshSceneUIList();
            Shared.Common.SceneRoomUI.GetAllSceneRoomUIList();
            if (SceneRoomUI.AllSceneRoomUIList == null)
            {
                return;
            AddRoomView();
            }
            var sceneList = SceneRoomUI.AllSceneRoomUIList;
            Shared.Common.Room.GetAllRoomDeviceUIList();
        /// <summary>
        /// RefreshScene
        /// </summary>
        /// <param name="room"></param>
        public void RefreshScene(Common.Room room)
        {
            var sceneList = room.SceneUIList;
            if (sceneList.Count == 0)
            {
                ShowNoSceneTip();
@@ -1542,21 +1565,19 @@
                    Y=Application.GetRealHeight(58)
                };
                functionSceneBodyView.AddChidren(sceneScrolView);
                foreach (var sceneRoomUI in sceneList)
                foreach (var scene in sceneList)
                {
                    var sceneFL = new FrameLayout()
                    {
                        Height = Application.GetRealHeight(446),
                        Gravity = Gravity.CenterHorizontal,
                        BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor,
                        Tag = sceneRoomUI
                        Tag = scene
                    };
                    sceneScrolView.AddChidren(sceneFL);
                    var sceneRowLayout = new RowLayout()
                    var sceneRowLayout = new RowLayout
                    {
                        Y = Application.GetRealHeight(46),
                        Height = Application.GetRealHeight(446 - 46),
                        Gravity = Gravity.CenterHorizontal,
                        LineColor = ZigbeeColor.Current.GXCGrayBackgroundColor,
                        Radius = CommonPage.BigFormRadius
                    };
@@ -1565,21 +1586,22 @@
                    var sceneImg = new Button()
                    {
                        X=Application.GetRealWidth(179),
                        Width=Application.GetMinReal(844),
                        Height=Application.GetMinReal(400),
                        Gravity = Gravity.CenterVertical,
                        UnSelectedImagePath = sceneRoomUI.sceneUI.IconPath,
                        Radius = (uint)Application.GetRealHeight(CommonFormResouce.BigFormRadius)
                        Width = Application.GetRealWidth(844),
                        Height = Application.GetRealHeight(400),
                        BackgroundColor = ZigbeeColor.Current.GXCRedColor,
                        UnSelectedImagePath = scene.IconPath,
                        Radius = (uint)Application.GetRealHeight(17)
                    };
                    sceneRowLayout.AddChidren(sceneImg);
                    var leftFL = new FrameLayout
                    {
                        X=Application.GetRealWidth(CommonFormResouce.X_Left),
                        Y = Application.GetRealHeight(58),
                        Width = Application.GetRealWidth(251),
                        Height = Application.GetRealHeight(282),
                        Gravity=Gravity.CenterVertical,
                        BackgroundColor = ZigbeeColor.Current.GXCBlackBackgroundColor2
                        BackgroundColor = ZigbeeColor.Current.GXCBlackBackgroundColor2,
                        Radius = (uint)Application.GetRealHeight(17)
                    };
                    sceneRowLayout.AddChidren(leftFL);
@@ -1599,7 +1621,7 @@
                        Width = Application.GetRealWidth(176),
                        Height = Application.GetRealHeight(200),
                        TextColor = ZigbeeColor.Current.GXCTextWhiteColor,
                        Text = sceneRoomUI.sceneUI.Name,
                        Text = scene.Name,
                        Gravity = Gravity.Center,
                        IsMoreLines=true
                    };
@@ -1609,7 +1631,7 @@
                    var delayBtn = new RowLayoutDeleteButton
                    {
                        TextID = R.MyInternationalizationString.Delay,
                        Tag = sceneRoomUI.sceneUI.SceneDelayTime
                        Tag = scene.SceneDelayTime
                    };
                    sceneRowLayout.AddLeftView(delayBtn);
@@ -1617,28 +1639,27 @@
                    var settingBtn = new Device.CommonForm.RowLayoutEditButton()
                    {
                        TextID=R.MyInternationalizationString.Setting,
                        Tag = sceneRoomUI.sceneUI.SceneDelayTime
                        Tag = scene.SceneDelayTime
                    };
                    //删除
                    var deleteBtn = new Device.CommonForm.RowLayoutDeleteButton
                    {
                        Tag = sceneRoomUI
                        Tag = scene
                    };
                    if (!sceneRoomUI.room.IsSharedRoom)
                    if (!room.IsSharedRoom)
                    {
                        sceneRowLayout.AddRightView(settingBtn);
                        sceneRowLayout.AddRightView(deleteBtn);
                    }
                    //调用场景
                    EventHandler<MouseEventArgs> sceneUpHandler = async (sender, e) =>
                    {
                        //1成功 0失败
                        //后面补上相关提示
                        //要先从网关读取延时是否正在执行,如果是进行倒计时,不允许在点击
                        var sceneOpenAllData = await ZigBee.Device.Scene.ControlSceneAsync(sceneRoomUI.sceneUI.Id, sceneRoomUI.sceneUI.SceneDelayTime);
                        var sceneOpenAllData = await ZigBee.Device.Scene.ControlSceneAsync(scene.Id, scene.SceneDelayTime);
                        //主网关不在线
                        if (sceneOpenAllData == null)
                        {
@@ -1678,7 +1699,7 @@
                            if (e1)
                            {
                                //0 移除失败 1 移除成功 2 没有该场景
                                var removeSceneAllData = await ZigBee.Device.Scene.DeleteSceneAsync(sceneRoomUI.sceneUI.Id);
                                var removeSceneAllData = await ZigBee.Device.Scene.DeleteSceneAsync(scene.Id);
                                if (removeSceneAllData == null || removeSceneAllData.removeSceneData == null)
                                {
                                    //CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheMainGatewayIsNotOnLine);
@@ -1688,7 +1709,7 @@
                                //1成功
                                if (removeSceneAllData.removeSceneData.Result == 1)
                                {
                                    sceneRoomUI.room.RemoveScene(sceneRoomUI.sceneUI);
                                    room.RemoveScene(scene);
                                    //RefreshBodyView();
                                    sceneScrolView.RemoveViewByTag((sender as Button).Tag);
                                }
@@ -1701,7 +1722,7 @@
                                //2 没有该场景
                                else if (removeSceneAllData.removeSceneData.Result == 2)
                                {
                                    sceneRoomUI.room.RemoveScene(sceneRoomUI.sceneUI);
                                    room.RemoveScene(scene);
                                    //RefreshBodyView();
                                    sceneScrolView.RemoveViewByTag((sender as Button).Tag);
                                    CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheSceneIsNull);
@@ -1714,7 +1735,7 @@
                    //编辑场景
                    settingBtn.MouseUpEventHandler += (sender, e) =>
                    {
                        SceneRoomUI.EditScene(sceneRoomUI.sceneUI, sceneRoomUI.room);
                        SceneRoomUI.EditScene(scene,room);
                    };
                    //编辑延时
                    delayBtn.MouseUpEventHandler += (sender, e) =>
@@ -1737,7 +1758,7 @@
                        //    {
                        //        if (ss.Id == sceneRoomUI.sceneUI.Id)
                        //        {
                        //            ss.SceneDelayTime = int.Parse(obj.Split(' ')[0]);
                        //            //ss.SceneDelayTime = int.Parse(obj.Split(' ')[0]);
                        //            sceneRoomUI.room.Save();
                        //            RefreshBodyView();
                        //            return;
@@ -1770,7 +1791,7 @@
                Height = Application.GetRealHeight(200),
                Width = Application.GetRealWidth(700),
                Gravity = Gravity.CenterHorizontal,
                TextID = R.MyInternationalizationString.NoScene,
                Text = Language.StringByID(R.MyInternationalizationString.NoScene).Replace("{\\r\\n}","\r\n"),
                TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
                TextAlignment = TextAlignment.Center,
                IsMoreLines = true