gxc
2019-10-31 1a2061079e97a738ec7b8959bfd9a6e6c6997403
ZigbeeApp/Shared/Phone/Device/Category/Category.cs
old mode 100755 new mode 100644
@@ -162,10 +162,10 @@
                            {
                                case DeviceType.OnOffOutput:
                                    //开关功能
                                    if (common.DeviceStatusReport.CluterID == 6)
                                    if ((common as ToggleLight).DeviceStatusReport.CluterID == 6)
                                    {
                                        var light = deviceUI.CommonDevice as ToggleLight;
                                        light.DeviceStatusReport = common.DeviceStatusReport;
                                        light.DeviceStatusReport = (common as ToggleLight).DeviceStatusReport;
                                        for (int j = 0; j < rowLayout.ChildrenCount; j++)
                                        {
                                            var tempView = rowLayout.GetChildren(j);
@@ -187,7 +187,7 @@
                                            }
                                        }
                                    }
                                    if (common.DeviceStatusReport.CluterID == 3)
                                    if ((common as ToggleLight).DeviceStatusReport.CluterID == 3)
                                    {
                                        var light = deviceUI.CommonDevice as ToggleLight;
                                        light.IsOnline = 1;
@@ -210,10 +210,10 @@
                                case DeviceType.AirSwitch:
                                    //开关功能
                                    if (common.DeviceStatusReport.CluterID == 6)
                                    if ((common as ZigBee.Device.AirSwitch).DeviceStatusReport.CluterID == 6)
                                    {
                                        var airSwitch = deviceUI.CommonDevice as ZigBee.Device.AirSwitch;
                                        airSwitch.DeviceStatusReport = common.DeviceStatusReport;
                                        airSwitch.DeviceStatusReport = (common as ZigBee.Device.AirSwitch).DeviceStatusReport;
                                        for (int j = 0; j < rowLayout.ChildrenCount; j++)
                                        {
                                            var tempView = rowLayout.GetChildren(j);
@@ -235,7 +235,7 @@
                                            }
                                        }
                                    }
                                    if (common.DeviceStatusReport.CluterID == 3)
                                    if ((common as ZigBee.Device.AirSwitch).DeviceStatusReport.CluterID == 3)
                                    {
                                        var airSwitch = deviceUI.CommonDevice as ZigBee.Device.AirSwitch;
                                        airSwitch.IsOnline = 1;
@@ -256,7 +256,7 @@
                                    }
                                    break;
                                case DeviceType.WindowCoveringDevice:
                                    if (common.DeviceStatusReport.CluterID == 3)
                                    if ((common as Rollershade).DeviceStatusReport.CluterID == 3)
                                    {
                                        var rollerShape = deviceUI.CommonDevice as Rollershade;
                                        //记录回复时间
@@ -279,15 +279,15 @@
                                case DeviceType.Thermostat:
                                    //AC功能
                                    if (common.DeviceStatusReport.CluterID == 513)
                                    if ((common as ZigBee.Device.AC).DeviceStatusReport.CluterID == 513)
                                    {
                                        var attriButeList = common.DeviceStatusReport.AttriBute;
                                        var attriButeList = (common as ZigBee.Device.AC).DeviceStatusReport.AttriBute;
                                        if (attriButeList == null || attriButeList.Count == 0)
                                        {
                                            return;
                                        }
                                        var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
                                        ac.DeviceStatusReport = common.DeviceStatusReport;
                                        ac.DeviceStatusReport = (common as ZigBee.Device.AC).DeviceStatusReport;
                                        switch (attriButeList[0].AttributeId)
                                        {
                                            case 0:
@@ -336,7 +336,7 @@
                                        }
                                    }
                                    if (common.DeviceStatusReport.CluterID == 3)
                                    if ((common as ZigBee.Device.AC).DeviceStatusReport.CluterID == 3)
                                    {
                                        var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
                                        ac.IsOnline = 1;
@@ -358,10 +358,10 @@
                                    break;
                                case DeviceType.DimmableLight:
                                    //调光灯功能
                                    if (common.DeviceStatusReport.CluterID == 6)
                                    if ((common as ZigBee.Device.DimmableLight).DeviceStatusReport.CluterID == 6)
                                    {
                                        var dimmableLight = deviceUI.CommonDevice as ZigBee.Device.DimmableLight;
                                        dimmableLight.DeviceStatusReport = common.DeviceStatusReport;
                                        dimmableLight.DeviceStatusReport = (common as ZigBee.Device.DimmableLight).DeviceStatusReport;
                                        for (int j = 0; j < rowLayout.ChildrenCount; j++)
                                        {
                                            var tempView = rowLayout.GetChildren(j);
@@ -383,7 +383,7 @@
                                            }
                                        }
                                    }
                                    if (common.DeviceStatusReport.CluterID == 3)
                                    if ((common as ZigBee.Device.DimmableLight).DeviceStatusReport.CluterID == 3)
                                    {
                                        var dimmableLight = deviceUI.CommonDevice as ZigBee.Device.DimmableLight;
                                        dimmableLight.IsOnline = 1;
@@ -543,7 +543,7 @@
        /// <param name="selectedBtn">选中那个界面 0--功能 1--场景 2--自动化 </param>
        public void Show(int selectedBtn = 1)
        {
            ZbGateway.StatusList.Add(this);
            RemoveAll();
@@ -585,7 +585,7 @@
            var midFL = new FrameLayout
            {
                Y = topView.Bottom,
                Height = Application.GetRealHeight(CommonPage.AppRealHeight - CommonPage.TabbarHeight) - topView.Bottom,
                Height = Application.GetRealHeight(1549),
                BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor
            };
            AddChidren(midFL);
@@ -596,18 +596,17 @@
                BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor
            };
            midFL.AddChidren(functionSceneAutoBG);
            //功能
            functionBtn = new ButtonLineForm(CommonFormResouce.X_Left, 34, 150, 68);
            functionSceneAutoBG.AddChidren(functionBtn);
            functionBtn.Init();
            functionBtn.SetTitle(R.MyInternationalizationString.Function);
            //场景
            sceneBtn = new ButtonLineForm(CommonFormResouce.X_Left + 150 + 20, 34, 150, 68);
            sceneBtn = new ButtonLineForm(CommonFormResouce.X_Left, 34, 150, 68);
            functionSceneAutoBG.AddChidren(sceneBtn);
            sceneBtn.Init();
            sceneBtn.SetTitle(R.MyInternationalizationString.Scence);
            //功能
            functionBtn = new ButtonLineForm(CommonFormResouce.X_Left + 150 + 20, 34, 150, 68);
            functionSceneAutoBG.AddChidren(functionBtn);
            functionBtn.Init();
            functionBtn.SetTitle(R.MyInternationalizationString.Function);
            //自动化
            automationBtn = new ButtonLineForm(CommonFormResouce.X_Left + 150 * 2 + 20, 34, 150, 68);
            automationBtn.Init();
@@ -895,11 +894,10 @@
                deviceListScrolView = new VerticalScrolViewLayout
                {
                    X = Application.GetRealWidth(CommonFormResouce.X_Left),
                    Y = functionTypeScrowView.Bottom + Application.GetRealHeight(50),
                    Y = Application.GetRealHeight(35+275),
                    Width = Application.GetRealWidth(1028),
                    Height = functionSceneBodyView.Height - Application.GetRealHeight(279 + 50) - 1,
                    Height = Application.GetRealHeight(938) - 1,
                    BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
                };
                functionSceneBodyView.AddChidren(deviceListScrolView);
                tempFunctionTypeBtn = new FunctionButton();
@@ -987,18 +985,18 @@
                            var deviceTypeRowLayout = new RowLayout()
                            {
                                Height = Application.GetRealHeight(127 + 35),
                                Height = Application.GetRealHeight(129 + 35),
                                LineColor = ZigbeeColor.Current.GXCBackgroundColor,
                                Tag = deviceUI
                            };
                            deviceListScrolView.AddChidren(deviceTypeRowLayout);
                            var deviceRow = new FunctionRow(0, 35);
                            var deviceRow = new CategoryFunctionRow(0, 35);
                            deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                            deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
                            deviceRow.SetStatu(light.IsOnline == 1);
                            deviceRow.SetZoneText(deviceUI.GetZone());
                            deviceTypeRowLayout.AddChidren(deviceRow);
                            deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) =>
                            {
@@ -1007,6 +1005,7 @@
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
                                (send2 as Button).IsSelected = !(send2 as Button).IsSelected;
                                deviceRow.IsSelected = (send2 as Button).IsSelected;
                                if ((send2 as Button).IsSelected)
                                {
                                    light.SwitchControl(1);
@@ -1028,6 +1027,15 @@
                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                    }
                                });
                            };
                            deviceRow.ClickBtn.MouseUpEventHandler += (send2, e2) =>
                            {
                                var lightControl = new Phone.Device.Light.LightControl();
                                UserView.HomePage.Instance.AddChidren(lightControl);
                                UserView.HomePage.Instance.PageIndex += 1;
                                lightControl.action = RefreshBodyView;
                                lightControl.Show(deviceUI, room);
                            };
                            var editBtn = new CommonForm.RowLayoutEditButton()
@@ -1080,10 +1088,11 @@
                            };
                            deviceListScrolView.AddChidren(deviceTypeRowLayout);
                            var deviceRow = new FunctionRow(0, 35);
                            var deviceRow = new CategoryFunctionRow(0, 35);
                            deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                            deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
                            deviceRow.SetStatu(airSwitch.IsOnline == 1);
                            deviceRow.SetZoneText(deviceUI.GetZone());
                            deviceTypeRowLayout.AddChidren(deviceRow);
                            deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) =>
@@ -1093,8 +1102,8 @@
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
                                (send2 as CommonForm.SelectedStatuButton).IsSelected = !(send2 as CommonForm.SelectedStatuButton).IsSelected;
                                if ((send2 as CommonForm.SelectedStatuButton).IsSelected)
                                (send2 as Button).IsSelected = !(send2 as Button).IsSelected;
                                if ((send2 as Button).IsSelected)
                                {
                                    airSwitch.SwitchControl(1);
                                }
@@ -1115,6 +1124,15 @@
                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                    }
                                });
                            };
                            deviceRow.ClickBtn.MouseUpEventHandler += (send2, e2) =>
                            {
                                var lightControl = new Phone.Device.Light.LightControl();
                                UserView.HomePage.Instance.AddChidren(lightControl);
                                UserView.HomePage.Instance.PageIndex += 1;
                                lightControl.action = RefreshBodyView;
                                lightControl.Show(deviceUI, room);
                            };
                            var editBtn = new CommonForm.RowLayoutEditButton()
@@ -1163,16 +1181,17 @@
                            var deviceTypeRowLayout = new RowLayout()
                            {
                                Height = Application.GetRealHeight(127 + 35),
                                Height = Application.GetRealHeight(129 + 35),
                                LineColor = ZigbeeColor.Current.GXCBackgroundColor,
                                Tag = deviceUI
                            };
                            deviceListScrolView.AddChidren(deviceTypeRowLayout);
                            var deviceRow = new FunctionRow(0, 35);
                            var deviceRow = new CategoryFunctionRow(0, 35);
                            deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                            deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
                            deviceRow.SetStatu(dimmableLight.IsOnline == 1);
                            deviceRow.SetZoneText(deviceUI.GetZone());
                            deviceTypeRowLayout.AddChidren(deviceRow);
                            deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) =>
@@ -1182,8 +1201,8 @@
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
                                (send2 as CommonForm.SelectedStatuButton).IsSelected = !(send2 as CommonForm.SelectedStatuButton).IsSelected;
                                if ((send2 as CommonForm.SelectedStatuButton).IsSelected)
                                (send2 as Button).IsSelected = !(send2 as Button).IsSelected;
                                if ((send2 as Button).IsSelected)
                                {
                                    dimmableLight.SwitchControl(1);
                                }
@@ -1204,6 +1223,16 @@
                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                    }
                                });
                            };
                            deviceRow.ClickBtn.MouseUpEventHandler += (send2, e2) =>
                            {
                                var dimmableLightControl = new Phone.Device.Light.DimmableLightControl();
                                UserView.HomePage.Instance.AddChidren(dimmableLightControl);
                                UserView.HomePage.Instance.PageIndex += 1;
                                UserView.HomePage.Instance.ScrollEnabled = false;
                                dimmableLightControl.action = RefreshBodyView;
                                dimmableLightControl.Show(deviceUI, room);
                            };
                            var editBtn = new CommonForm.RowLayoutEditButton()
@@ -1434,7 +1463,7 @@
                    typeRowLayout.AddChidren(functionTypeIMG);
                    functionTypeIMG.ClickBtn.MouseUpEventHandler += ShowSameTypeFunction;
                    if (deviceType == room.DeviceUIList[0].CommonDevice.Type)
                    {
@@ -1452,7 +1481,7 @@
            var roomFL = new HorizontalScrolViewLayout()
            {
                X = Application.GetRealWidth(CommonFormResouce.X_Left),
                Height = Application.GetRealHeight(167),
                Height = Application.GetRealHeight(170),
                Width = Application.GetRealWidth(CommonPage.AppRealWidth - CommonFormResouce.X_Left),
                BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor
            };
@@ -1462,7 +1491,7 @@
            functionSceneBodyView = new FrameLayout()
            {
                Y = roomFL.Bottom,
                Height = Application.GetRealHeight(1316),
                Height = Application.GetRealHeight(973+279),
                BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor
            };
            functionSceneAutoBodyView.AddChidren(functionSceneBodyView);
@@ -1505,7 +1534,7 @@
                    {
                        RefreshFunction(room);
                    }
                }
                roomBtn.MouseUpEventHandler += (sender, e) =>
                {
@@ -1526,7 +1555,7 @@
                    }
                };
            }
        }
        #endregion
@@ -1556,7 +1585,7 @@
            {
                var sceneScrolView = new VerticalScrolViewLayout
                {
                    Y = Application.GetRealHeight(58)
                    //Y = Application.GetRealHeight(58)
                };
                functionSceneBodyView.AddChidren(sceneScrolView);
                foreach (var scene in sceneList)
@@ -1611,7 +1640,7 @@
                        Tag = scene
                    };
                    leftFL.AddChidren(collectionBtn);
                    var sceneNameBtn = new Button()
                    {
                        Width = Application.GetRealWidth(176),
@@ -1760,7 +1789,7 @@
                                }
                            };
                        }
                    };
                    deleteBtn.MouseUpEventHandler += delEvent;
                    //编辑场景
@@ -1816,6 +1845,7 @@
        #endregion
        #region ◆ 自动化__________________________
        /// <summary>
@@ -1825,7 +1855,7 @@
        {
            functionSceneAutoBodyView.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
            var bjFrameLayout = new FrameLayout
            {
                Width = Application.GetRealWidth(1080 - 58),
@@ -1992,7 +2022,7 @@
                var Idlist = await Logic.Send.GetLogicId(0);
                if (Idlist.Count != 0)
                {
                    var listlogic = await Logic.Send.ReadList(Idlist.Count,0);
                    var listlogic = await Logic.Send.ReadList(Idlist.Count, 0);
                    //foreach可能集合已被修改,枚举操作可能不会执行,可能出现崩溃(建议for)。
                    for (int j = 0; j < listlogic.Count; j++)
                    {
@@ -2145,78 +2175,6 @@
        }
        #region ◆ 控制状态_________________________
        /// <summary>
        /// 显示设备控制状态
        /// </summary>
        /// <param name="command">Command.</param>
        /// <param name="objValue">Object value.</param>
        private void UpdateDeviceControllStatu(string command, object objValue)
        {
            if (command != "DeviceDefaultAck" || objValue == null)
            {
                return;
            }
            var tempDevice = (CommonDevice)objValue;
            if (null == commonDeviceList.Find((obj) => obj.DeviceEpoint == tempDevice.DeviceEpoint && obj.DeviceAddr == tempDevice.DeviceAddr))
            {
                return;
            }
            //标记已经发送控制命令到网关
            sendedControlCommand = true;
            //DeviceUI.ShowStatuTip(R.MyInternationalizationString.Success);
        }
        /// <summary>
        /// 移除全部更新控制设备的action
        /// </summary>
        private void RemoveAllUpdateControlDeviceStatuAction()
        {
            foreach (var gateway in zbGatewayList)
            {
                //移除action
                if (gateway != null)
                {
                    gateway.ReportAction -= UpdateDeviceControllStatu;
                }
            }
        }
        /// <summary>
        /// 移除单个控制设备的更新状态action
        /// </summary>
        /// <param name="gateway">Gateway.</param>
        private void RemoveUpdateControlDeviceStatuAction(ZbGateway gateway)
        {
            //移除action
            if (gateway != null)
            {
                gateway.ReportAction -= UpdateDeviceControllStatu;
            }
        }
        /// <summary>
        /// 添加需要监控回调状态的网关和设备
        /// </summary>
        /// <param name="gatewayList">Gateway list.</param>
        /// <param name="gateway">Gateway.</param>
        /// <param name="deviceList">Device list.</param>
        /// <param name="common">Common.</param>
        private void AddZbGateway(List<ZbGateway> gatewayList, ZbGateway gateway, List<CommonDevice> deviceList, CommonDevice common)
        {
            if (null == gatewayList.Find((obj) => obj.getGatewayBaseInfo.gwID == gateway.getGatewayBaseInfo.gwID))
            {
                gatewayList.Add(gateway);
            }
            if (null == commonDeviceList.Find((obj) => obj.DeviceEpoint == common.DeviceEpoint && obj.DeviceAddr == common.DeviceAddr))
            {
                commonDeviceList.Add(common);
            }
        }
        #endregion
        private void StatusColor(Common.Logic logic, RowLayout logicRowlayout, int intvalue)
        {
@@ -2612,5 +2570,77 @@
            }
        }
        #endregion
        #region ◆ 控制状态_________________________
        /// <summary>
        /// 显示设备控制状态
        /// </summary>
        /// <param name="command">Command.</param>
        /// <param name="objValue">Object value.</param>
        private void UpdateDeviceControllStatu(string command, object objValue)
        {
            if (command != "DeviceDefaultAck" || objValue == null)
            {
                return;
            }
            var tempDevice = (CommonDevice)objValue;
            if (null == commonDeviceList.Find((obj) => obj.DeviceEpoint == tempDevice.DeviceEpoint && obj.DeviceAddr == tempDevice.DeviceAddr))
            {
                return;
            }
            //标记已经发送控制命令到网关
            sendedControlCommand = true;
            //DeviceUI.ShowStatuTip(R.MyInternationalizationString.Success);
        }
        /// <summary>
        /// 移除全部更新控制设备的action
        /// </summary>
        private void RemoveAllUpdateControlDeviceStatuAction()
        {
            foreach (var gateway in zbGatewayList)
            {
                //移除action
                if (gateway != null)
                {
                    gateway.ReportAction -= UpdateDeviceControllStatu;
                }
            }
        }
        /// <summary>
        /// 移除单个控制设备的更新状态action
        /// </summary>
        /// <param name="gateway">Gateway.</param>
        private void RemoveUpdateControlDeviceStatuAction(ZbGateway gateway)
        {
            //移除action
            if (gateway != null)
            {
                gateway.ReportAction -= UpdateDeviceControllStatu;
            }
        }
        /// <summary>
        /// 添加需要监控回调状态的网关和设备
        /// </summary>
        /// <param name="gatewayList">Gateway list.</param>
        /// <param name="gateway">Gateway.</param>
        /// <param name="deviceList">Device list.</param>
        /// <param name="common">Common.</param>
        private void AddZbGateway(List<ZbGateway> gatewayList, ZbGateway gateway, List<CommonDevice> deviceList, CommonDevice common)
        {
            if (null == gatewayList.Find((obj) => obj.getGatewayBaseInfo.gwID == gateway.getGatewayBaseInfo.gwID))
            {
                gatewayList.Add(gateway);
            }
            if (null == commonDeviceList.Find((obj) => obj.DeviceEpoint == common.DeviceEpoint && obj.DeviceAddr == common.DeviceAddr))
            {
                commonDeviceList.Add(common);
            }
        }
        #endregion
    }
}