HDL Home App 第二版本 旧平台金堂用 正在使用
gxc
2019-10-17 1f65fe366062b3f2cda6b03e1849afce6d2646f8
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>
@@ -533,35 +537,13 @@
            instance = this;
        }
        public void InitFloor()
        {
            Config.Instance.Home.FloorDics.Clear();
            Config.Instance.Home.FloorDics.Add("Floor1", "一楼");
            Config.Instance.Home.FloorDics.Add("Floor2", "二楼");
            Config.Instance.Home.FloorDics.Add("Floor3", "三楼");
            Config.Instance.Home.FloorDics.Add("Floor4", "四楼");
            Config.Instance.Home.FloorDics.Add("Floor5", "⑤楼");
            if (string.IsNullOrEmpty(Config.Instance.Home.CurrentFloorId))
            {
                if (Config.Instance.Home.FloorDics.Count > 0)
                {
                    foreach (var floor in Config.Instance.Home.FloorDics)
                    {
                        Config.Instance.Home.CurrentFloorId=floor.Key;
                        break;
                    }
                }
            }
            //Config.Instance.Save();
        }
        /// <summary>
        /// 显示界面--默认场景界面
        /// </summary>
        /// <param name="selectedBtn">选中那个界面 0--功能 1--场景 2--自动化 </param>
        public void Show(int selectedBtn = 1)
        {
            InitFloor();
            ZbGateway.StatusList.Add(this);
            RemoveAll();
@@ -662,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)
            {
@@ -786,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();
            };
        }
@@ -868,11 +788,11 @@
            UserView.HomePage.Instance.PageIndex += 1;
            CategoryAddScene.sceneTargetDevicesList?.Clear();
            CategoryAddScene.SceneText = "";
            CategoryAddScene.CurrentRoom = Shared.Common.Room.CurrentRoom;
            scene.curRoom = Shared.Common.Room.CurrentRoom;
            CategoryAddScene.ModifySceneUI = null;
            CategoryAddScene.Modify = false;
            CategoryAddScene.ImagePath = "Scene/Scene0.png";
            scene.Show();
            CategoryAddScene.ImagePath = "SceneIcon/1.png";
            scene.Show(scene.curRoom);
        }
        /// <summary>
@@ -898,7 +818,7 @@
        /// </summary>
        public void RefreshBodyView()
        {
            functionSceneBodyView.RemoveAll();
            functionSceneAutoBodyView.RemoveAll();
            if (functionBtn.IsSelected)
            {
                ShowFunction();
@@ -921,16 +841,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();
            }
@@ -957,46 +910,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;
@@ -1004,7 +919,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)
                {
@@ -1505,36 +1420,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
@@ -1545,15 +1550,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();
@@ -1565,21 +1571,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
                    };
@@ -1588,21 +1592,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);
@@ -1622,7 +1627,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
                    };
@@ -1632,7 +1637,7 @@
                    var delayBtn = new RowLayoutDeleteButton
                    {
                        TextID = R.MyInternationalizationString.Delay,
                        Tag = sceneRoomUI.sceneUI.SceneDelayTime
                        Tag = scene.SceneDelayTime
                    };
                    sceneRowLayout.AddLeftView(delayBtn);
@@ -1640,15 +1645,15 @@
                    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);
@@ -1660,7 +1665,7 @@
                        //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)
                        {
@@ -1700,7 +1705,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);
@@ -1710,7 +1715,7 @@
                                //1成功
                                if (removeSceneAllData.removeSceneData.Result == 1)
                                {
                                    sceneRoomUI.room.RemoveScene(sceneRoomUI.sceneUI);
                                    room.RemoveScene(scene);
                                    //RefreshBodyView();
                                    sceneScrolView.RemoveViewByTag((sender as Button).Tag);
                                }
@@ -1723,7 +1728,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);
@@ -1736,7 +1741,7 @@
                    //编辑场景
                    settingBtn.MouseUpEventHandler += (sender, e) =>
                    {
                        SceneRoomUI.EditScene(sceneRoomUI.sceneUI, sceneRoomUI.room);
                        SceneRoomUI.EditScene(scene,room);
                    };
                    //编辑延时
                    delayBtn.MouseUpEventHandler += (sender, e) =>
@@ -1792,7 +1797,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
@@ -1811,7 +1816,7 @@
        public async void ShowAutotion()
        {
            var logicScrolView = new VerticalScrolViewLayout { };
            functionSceneBodyView.AddChidren(logicScrolView);
            functionSceneAutoBodyView.AddChidren(logicScrolView);
            CommonPage.Loading.Start();
            if (Common.Logic.LogicList.Count == 0)
            {