| | |
| | | /// </summary> |
| | | private ButtonLineForm automationBtn; |
| | | /// <summary> |
| | | /// 中部背景bodyView |
| | | /// 场景功能中部背景bodyView |
| | | /// </summary> |
| | | public FrameLayout functionSceneBodyView; |
| | | /// <summary> |
| | | /// 中部背景bodyView |
| | | /// </summary> |
| | | public FrameLayout functionSceneAutoBodyView; |
| | | /// <summary> |
| | | /// 相同的设备列表 |
| | | /// </summary> |
| | |
| | | /// <param name="selectedBtn">选中那个界面 0--功能 1--场景 2--自动化 </param> |
| | | public void Show(int selectedBtn = 1) |
| | | { |
| | | |
| | | ZbGateway.StatusList.Add(this); |
| | | RemoveAll(); |
| | | |
| | |
| | | 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) |
| | | { |
| | |
| | | { |
| | | var floors = new SelectFloor (); |
| | | AddChidren(floors); |
| | | floors.Init(599,357); |
| | | floors.Init(599,357,Direction.Right); |
| | | floors.FloorAction += (floorName) => |
| | | { |
| | | floorBtn.Text = floorName; |
| | | RefreshBodyView(); |
| | | }; |
| | | } |
| | | |
| | |
| | | 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(); |
| | | } |
| | | |
| | |
| | | /// </summary> |
| | | public void RefreshBodyView() |
| | | { |
| | | functionSceneBodyView.RemoveAll(); |
| | | functionSceneAutoBodyView.RemoveAll(); |
| | | if (functionBtn.IsSelected) |
| | | { |
| | | ShowFunction(); |
| | |
| | | /// </summary> |
| | | public void ShowFunction() |
| | | { |
| | | //移除监听 |
| | | RemoveAllUpdateControlDeviceStatuAction(); |
| | | //选择功能--直接从房间的devicelist中获取 |
| | | Shared.Common.Room.GetAllRoomDeviceUIList(); |
| | | Shared.Common.Room.GetAllRoomDeviceTypeList(); |
| | | if (Common.Room.AllRoomDeviceUIList == null) |
| | | { |
| | | return; |
| | | } |
| | | if (Common.Room.AllRoomDeviceUIList.Count == 0) |
| | | { |
| | | ShowNoFunctionTip(); |
| | | } |
| | | else |
| | | { |
| | | functionTypeScrowView = new HorizontalScrolViewLayout |
| | | { |
| | | X=Application.GetRealWidth(CommonFormResouce.X_Left), |
| | | Height = Application.GetRealHeight(279), |
| | | Width = Application.GetRealWidth(1028), |
| | | BackgroundColor=ZigbeeColor.Current.GXCBackgroundColor |
| | | }; |
| | | functionSceneBodyView.AddChidren(functionTypeScrowView); |
| | | |
| | | deviceListScrolView = new VerticalScrolViewLayout |
| | | { |
| | | X = Application.GetRealWidth(CommonFormResouce.X_Left), |
| | | Y = functionTypeScrowView.Bottom + Application.GetRealHeight(50), |
| | | Width = Application.GetRealWidth(1028), |
| | | Height = functionSceneBodyView.Height - Application.GetRealHeight(279+50) - 1, |
| | | BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor |
| | | |
| | | }; |
| | | functionSceneBodyView.AddChidren(deviceListScrolView); |
| | | tempFunctionTypeBtn = new FunctionButton(); |
| | | |
| | | foreach (var deviceType in Common.Room.AllRoomDeviceTypeList) |
| | | { |
| | | 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; |
| | | |
| | | deviceListScrolView.RemoveAll(); |
| | | |
| | | var sameTypeList = new List<DeviceUI> { }; |
| | | foreach (var devieceUI in Common.Room.AllRoomDeviceUIList) |
| | | { |
| | | if (devieceUI == null || devieceUI.CommonDevice == null) |
| | | { |
| | | continue; |
| | | } |
| | | if (devieceUI.CommonDevice.Type.ToString() == (typeSender as Button).Tag.ToString()) |
| | | { |
| | | if (!sameTypeList.Contains(devieceUI)) |
| | | { |
| | | sameTypeList.Add(devieceUI); |
| | | } |
| | | } |
| | | } |
| | | foreach (var deviceUI in sameTypeList) |
| | | { |
| | | //删除设备 |
| | | EventHandler<MouseEventArgs> delEvent = (delSender, delE) => |
| | | { |
| | | var alert = new CustomAlert(); |
| | | AddChidren(alert); |
| | | alert.Show(Language.StringByID(R.MyInternationalizationString.ConfirmDelete)); |
| | | alert.ResultEventHandler += (e2) => |
| | | { |
| | | if (e2) |
| | | { |
| | | Shared.Common.Room.CurrentRoom.DeleteDevice(deviceUI.CommonDevice); |
| | | deviceListScrolView.RemoveViewByTag((delSender as Button).Tag); |
| | | sameTypeList.Remove(deviceUI); |
| | | if (sameTypeList.Count == 0) |
| | | { |
| | | RefreshBodyView(); |
| | | } |
| | | } |
| | | }; |
| | | }; |
| | | EventHandler<MouseEventArgs> deviceDetailHandler = (send2, e2) => |
| | | { |
| | | var detailInfo = new Device.CommonForm.DeviceDetailInfo { }; |
| | | UserView.HomePage.Instance.AddChidren(detailInfo); |
| | | UserView.HomePage.Instance.PageIndex += 1; |
| | | detailInfo.Show(deviceUI, Shared.Common.Room.CurrentRoom); |
| | | detailInfo.action = RefreshBodyView; |
| | | }; |
| | | |
| | | if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.OnOffOutput) |
| | | { |
| | | //灯 |
| | | var light = deviceUI.CommonDevice as ZigBee.Device.ToggleLight; |
| | | //补上非远程 |
| | | if (light.Gateway == null) |
| | | { |
| | | continue; |
| | | } |
| | | if (light.Gateway.IsVirtual) |
| | | { |
| | | UserHomeView.ReadStatus(light, () => |
| | | { |
| | | light.ReadOnOffStatus(); |
| | | light.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch); |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | //防止短时间内多次读取状态 |
| | | if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - light.LastDateTime).TotalSeconds) |
| | | { |
| | | light.ReadOnOffStatus(); |
| | | light.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch); |
| | | } |
| | | } |
| | | |
| | | var deviceTypeRowLayout = new RowLayout() |
| | | { |
| | | Height = Application.GetRealHeight(127+35), |
| | | LineColor = ZigbeeColor.Current.GXCBackgroundColor, |
| | | Tag = deviceUI |
| | | }; |
| | | deviceListScrolView.AddChidren(deviceTypeRowLayout); |
| | | |
| | | var deviceRow = new FunctionRow(0, 35); |
| | | deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath); |
| | | deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName); |
| | | deviceRow.SetStatu(light.IsOnline == 1); |
| | | deviceTypeRowLayout.AddChidren(deviceRow); |
| | | |
| | | |
| | | deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) => |
| | | { |
| | | zbGateway = deviceUI.CommonDevice.Gateway; |
| | | sendedControlCommand = false; |
| | | 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) |
| | | { |
| | | light.SwitchControl(1); |
| | | } |
| | | else |
| | | { |
| | | light.SwitchControl(0); |
| | | } |
| | | //控制延时回调 |
| | | DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () => |
| | | { |
| | | if (Parent == null) |
| | | { |
| | | return; |
| | | } |
| | | RemoveUpdateControlDeviceStatuAction(zbGateway); |
| | | if (sendedControlCommand == false) |
| | | { |
| | | DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL); |
| | | } |
| | | }); |
| | | }; |
| | | |
| | | var editBtn = new CommonForm.RowLayoutEditButton() |
| | | { |
| | | Tag = deviceUI, |
| | | Radius = 0 |
| | | }; |
| | | deviceTypeRowLayout.AddRightView(editBtn); |
| | | editBtn.MouseUpEventHandler += deviceDetailHandler; |
| | | |
| | | var delBtn = new Device.CommonForm.RowLayoutDeleteButton() |
| | | { |
| | | Tag = deviceUI, |
| | | Radius = 0 |
| | | }; |
| | | deviceTypeRowLayout.AddRightView(delBtn); |
| | | delBtn.MouseUpEventHandler += delEvent; |
| | | } |
| | | else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.AirSwitch) |
| | | { |
| | | //空气开关 |
| | | var airSwitch = deviceUI.CommonDevice as ZigBee.Device.AirSwitch; |
| | | //补上非远程 |
| | | if (airSwitch.Gateway == null) |
| | | { |
| | | continue; |
| | | } |
| | | if (airSwitch.Gateway.IsVirtual) |
| | | { |
| | | UserHomeView.ReadStatus(airSwitch, () => |
| | | { |
| | | airSwitch.ReadOnOffStatus(); |
| | | airSwitch.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch); |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | if ((DateTime.Now - airSwitch.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan) |
| | | { |
| | | airSwitch.ReadOnOffStatus(); |
| | | airSwitch.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch); |
| | | } |
| | | } |
| | | |
| | | var deviceTypeRowLayout = new RowLayout() |
| | | { |
| | | Height = Application.GetRealHeight(127 + 35), |
| | | LineColor = ZigbeeColor.Current.GXCBackgroundColor, |
| | | Tag = deviceUI |
| | | }; |
| | | deviceListScrolView.AddChidren(deviceTypeRowLayout); |
| | | |
| | | var deviceRow = new FunctionRow(0, 35); |
| | | deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath); |
| | | deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName); |
| | | deviceRow.SetStatu(airSwitch.IsOnline == 1); |
| | | deviceTypeRowLayout.AddChidren(deviceRow); |
| | | |
| | | deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) => |
| | | { |
| | | zbGateway = deviceUI.CommonDevice.Gateway; |
| | | sendedControlCommand = false; |
| | | 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) |
| | | { |
| | | airSwitch.SwitchControl(1); |
| | | } |
| | | else |
| | | { |
| | | airSwitch.SwitchControl(0); |
| | | } |
| | | //控制延时回调 |
| | | DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () => |
| | | { |
| | | if (Parent == null) |
| | | { |
| | | return; |
| | | } |
| | | RemoveUpdateControlDeviceStatuAction(zbGateway); |
| | | if (sendedControlCommand == false) |
| | | { |
| | | DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL); |
| | | } |
| | | }); |
| | | }; |
| | | |
| | | var editBtn = new CommonForm.RowLayoutEditButton() |
| | | { |
| | | Tag = deviceUI, |
| | | Radius = 0 |
| | | }; |
| | | deviceTypeRowLayout.AddRightView(editBtn); |
| | | editBtn.MouseUpEventHandler += deviceDetailHandler; |
| | | |
| | | var delBtn = new Device.CommonForm.RowLayoutDeleteButton() |
| | | { |
| | | Tag = deviceUI, |
| | | Radius = 0 |
| | | }; |
| | | deviceTypeRowLayout.AddRightView(delBtn); |
| | | delBtn.MouseUpEventHandler += delEvent; |
| | | } |
| | | else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.DimmableLight) |
| | | { |
| | | //调光灯 |
| | | var dimmableLight = deviceUI.CommonDevice as ZigBee.Device.DimmableLight; |
| | | //补上非远程 |
| | | if (dimmableLight.Gateway == null) |
| | | { |
| | | continue; |
| | | } |
| | | if (dimmableLight.Gateway.IsVirtual) |
| | | { |
| | | UserHomeView.ReadStatus(dimmableLight, () => |
| | | { |
| | | dimmableLight.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch); |
| | | dimmableLight.ReadOnOffStatus(); |
| | | dimmableLight.ReadLevel(); |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | if ((DateTime.Now - dimmableLight.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan) |
| | | { |
| | | dimmableLight.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch); |
| | | dimmableLight.ReadOnOffStatus(); |
| | | dimmableLight.ReadLevel(); |
| | | } |
| | | } |
| | | |
| | | var deviceTypeRowLayout = new RowLayout() |
| | | { |
| | | Height = Application.GetRealHeight(127 + 35), |
| | | LineColor = ZigbeeColor.Current.GXCBackgroundColor, |
| | | Tag = deviceUI |
| | | }; |
| | | deviceListScrolView.AddChidren(deviceTypeRowLayout); |
| | | |
| | | var deviceRow = new FunctionRow(0, 35); |
| | | deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath); |
| | | deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName); |
| | | deviceRow.SetStatu(dimmableLight.IsOnline == 1); |
| | | deviceTypeRowLayout.AddChidren(deviceRow); |
| | | |
| | | deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) => |
| | | { |
| | | zbGateway = deviceUI.CommonDevice.Gateway; |
| | | sendedControlCommand = false; |
| | | 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) |
| | | { |
| | | dimmableLight.SwitchControl(1); |
| | | } |
| | | else |
| | | { |
| | | dimmableLight.SwitchControl(0); |
| | | } |
| | | //控制延时回调 |
| | | DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () => |
| | | { |
| | | if (Parent == null) |
| | | { |
| | | return; |
| | | } |
| | | RemoveUpdateControlDeviceStatuAction(zbGateway); |
| | | if (sendedControlCommand == false) |
| | | { |
| | | DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL); |
| | | } |
| | | }); |
| | | }; |
| | | |
| | | var editBtn = new CommonForm.RowLayoutEditButton() |
| | | { |
| | | Tag = deviceUI, |
| | | Radius = 0 |
| | | }; |
| | | deviceTypeRowLayout.AddRightView(editBtn); |
| | | editBtn.MouseUpEventHandler += deviceDetailHandler; |
| | | |
| | | var delBtn = new Device.CommonForm.RowLayoutDeleteButton() |
| | | { |
| | | Tag = deviceUI, |
| | | Radius = 0 |
| | | }; |
| | | deviceTypeRowLayout.AddRightView(delBtn); |
| | | delBtn.MouseUpEventHandler += delEvent; |
| | | |
| | | } |
| | | else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.Thermostat) |
| | | { |
| | | //空调 |
| | | var ac = deviceUI.CommonDevice as ZigBee.Device.AC; |
| | | //补上非远程 |
| | | if (ac.Gateway == null) |
| | | { |
| | | continue; |
| | | } |
| | | if (ac.Gateway.IsVirtual) |
| | | { |
| | | //发送读取状态命令 |
| | | UserView.UserHomeView.ReadStatus(ac, () => |
| | | { |
| | | ac.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch); |
| | | ac.ReadFanMode(); |
| | | ac.ReadSystemMode(); |
| | | ac.ReadLocalTemperature(); |
| | | ac.ReadCoolingSetpoint(); |
| | | ac.ReadHeatingSetpoint(); |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | //防止短时间内多次读取设备状态 |
| | | if ((DateTime.Now - ac.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan) |
| | | { |
| | | ac.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch); |
| | | ac.ReadFanMode(); |
| | | ac.ReadSystemMode(); |
| | | ac.ReadLocalTemperature(); |
| | | ac.ReadCoolingSetpoint(); |
| | | ac.ReadHeatingSetpoint(); |
| | | } |
| | | } |
| | | |
| | | var deviceTypeRowLayout = new RowLayout() |
| | | { |
| | | Height = Application.GetRealHeight(127 + 35), |
| | | LineColor = ZigbeeColor.Current.GXCBackgroundColor, |
| | | Tag = deviceUI |
| | | }; |
| | | deviceListScrolView.AddChidren(deviceTypeRowLayout); |
| | | |
| | | var deviceRow = new FunctionRow(0, 35); |
| | | deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath); |
| | | deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName); |
| | | deviceRow.SetStatu(ac.IsOnline == 1); |
| | | deviceTypeRowLayout.AddChidren(deviceRow); |
| | | |
| | | deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) => |
| | | { |
| | | zbGateway = deviceUI.CommonDevice.Gateway; |
| | | sendedControlCommand = false; |
| | | 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) |
| | | { |
| | | ac.Open(); |
| | | } |
| | | else |
| | | { |
| | | ac.Close(); |
| | | } |
| | | //控制延时回调 |
| | | DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () => |
| | | { |
| | | if (Parent == null) |
| | | { |
| | | return; |
| | | } |
| | | RemoveUpdateControlDeviceStatuAction(zbGateway); |
| | | if (sendedControlCommand == false) |
| | | { |
| | | DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL); |
| | | } |
| | | }); |
| | | }; |
| | | |
| | | var editBtn = new CommonForm.RowLayoutEditButton() |
| | | { |
| | | Tag = deviceUI, |
| | | Radius = 0 |
| | | }; |
| | | deviceTypeRowLayout.AddRightView(editBtn); |
| | | editBtn.MouseUpEventHandler += deviceDetailHandler; |
| | | |
| | | var delBtn = new Device.CommonForm.RowLayoutDeleteButton() |
| | | { |
| | | Tag = deviceUI, |
| | | Radius = 0 |
| | | }; |
| | | deviceTypeRowLayout.AddRightView(delBtn); |
| | | delBtn.MouseUpEventHandler += delEvent; |
| | | } |
| | | else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.WindowCoveringDevice) |
| | | { |
| | | //卷帘 |
| | | var rollerShade = deviceUI.CommonDevice as ZigBee.Device.Rollershade; |
| | | //不上非远程 |
| | | if (rollerShade.Gateway == null) |
| | | { |
| | | continue; |
| | | } |
| | | if (rollerShade.Gateway.IsVirtual) |
| | | { |
| | | UserHomeView.ReadStatus(rollerShade, () => |
| | | { |
| | | rollerShade.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch); |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | //防止短时间内多次读取 |
| | | if ((DateTime.Now - rollerShade.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan) |
| | | { |
| | | rollerShade.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch); |
| | | } |
| | | } |
| | | |
| | | |
| | | var deviceTypeRowLayout = new RowLayout() |
| | | { |
| | | Height = Application.GetRealHeight(127 + 35), |
| | | LineColor = ZigbeeColor.Current.GXCLineColor, |
| | | Tag = deviceUI |
| | | }; |
| | | deviceListScrolView.AddChidren(deviceTypeRowLayout); |
| | | |
| | | var deviceRow = new FunctionRow(0, 35); |
| | | deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath); |
| | | deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName); |
| | | deviceRow.SetStatu(rollerShade.IsOnline == 1); |
| | | deviceTypeRowLayout.AddChidren(deviceRow); |
| | | |
| | | var editBtn = new CommonForm.RowLayoutEditButton() |
| | | { |
| | | Tag = deviceUI, |
| | | Radius = 0 |
| | | }; |
| | | deviceTypeRowLayout.AddRightView(editBtn); |
| | | editBtn.MouseUpEventHandler += deviceDetailHandler; |
| | | |
| | | var delBtn = new Device.CommonForm.RowLayoutDeleteButton() |
| | | { |
| | | Tag = deviceUI, |
| | | Radius = 0 |
| | | }; |
| | | deviceTypeRowLayout.AddRightView(delBtn); |
| | | delBtn.MouseUpEventHandler += delEvent; |
| | | |
| | | |
| | | deviceRow.SwitchBtn.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | zbGateway = deviceUI.CommonDevice.Gateway; |
| | | sendedControlCommand = false; |
| | | zbGateway.ReportAction += UpdateDeviceControllStatu; |
| | | AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice); |
| | | |
| | | (sender as CommonForm.SelectedStatuButton).IsSelected = !(sender as CommonForm.SelectedStatuButton).IsSelected; |
| | | if ((sender as CommonForm.SelectedStatuButton).IsSelected) |
| | | { |
| | | rollerShade.CurtainUpDownStopControl(0); |
| | | } |
| | | else |
| | | { |
| | | rollerShade.CurtainUpDownStopControl(1); |
| | | } |
| | | |
| | | //控制延时回调 |
| | | DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () => |
| | | { |
| | | if (Parent == null) |
| | | { |
| | | return; |
| | | } |
| | | RemoveUpdateControlDeviceStatuAction(zbGateway); |
| | | if (sendedControlCommand == false) |
| | | { |
| | | DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL); |
| | | } |
| | | }); |
| | | }; |
| | | } |
| | | else |
| | | { |
| | | |
| | | } |
| | | } |
| | | AddRoomView(); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | Height = Application.GetRealHeight(200), |
| | | Width = Application.GetRealWidth(700), |
| | | Gravity = Gravity.CenterHorizontal, |
| | | TextID = R.MyInternationalizationString.NoFunction, |
| | | //Text = "没有功能 \n 请在个人中心中--设备管理处添加", |
| | | 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(); |
| | | functionSceneBodyView.RemoveAll(); |
| | | |
| | | if (room.DeviceUIList.Count == 0) |
| | | { |
| | | ShowNoFunctionTip(); |
| | | } |
| | | else |
| | | { |
| | | functionTypeScrowView = new HorizontalScrolViewLayout |
| | | { |
| | | X = Application.GetRealWidth(CommonFormResouce.X_Left), |
| | | Height = Application.GetRealHeight(279), |
| | | Width = Application.GetRealWidth(1028), |
| | | BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor |
| | | }; |
| | | functionSceneBodyView.AddChidren(functionTypeScrowView); |
| | | |
| | | deviceListScrolView = new VerticalScrolViewLayout |
| | | { |
| | | X = Application.GetRealWidth(CommonFormResouce.X_Left), |
| | | Y = functionTypeScrowView.Bottom + Application.GetRealHeight(50), |
| | | Width = Application.GetRealWidth(1028), |
| | | Height = functionSceneBodyView.Height - Application.GetRealHeight(279 + 50) - 1, |
| | | BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor |
| | | |
| | | }; |
| | | functionSceneBodyView.AddChidren(deviceListScrolView); |
| | | tempFunctionTypeBtn = new FunctionButton(); |
| | | |
| | | EventHandler<MouseEventArgs> ShowSameTypeFunction = (object typeSender, MouseEventArgs mouseEventArgs) => |
| | | { |
| | | tempFunctionTypeBtn.IsSelected = false; |
| | | tempFunctionTypeBtn = (typeSender as Button).Parent as FunctionButton; |
| | | ((typeSender as Button).Parent as FunctionButton).IsSelected = true; |
| | | |
| | | deviceListScrolView.RemoveAll(); |
| | | |
| | | var sameTypeList = new List<DeviceUI> { }; |
| | | foreach (var devieceUI in room.DeviceUIList) |
| | | { |
| | | if (devieceUI == null || devieceUI.CommonDevice == null) |
| | | { |
| | | continue; |
| | | } |
| | | if (devieceUI.CommonDevice.Type.ToString() == (typeSender as Button).Tag.ToString()) |
| | | { |
| | | if (!sameTypeList.Contains(devieceUI)) |
| | | { |
| | | sameTypeList.Add(devieceUI); |
| | | } |
| | | } |
| | | } |
| | | foreach (var deviceUI in sameTypeList) |
| | | { |
| | | //删除设备 |
| | | EventHandler<MouseEventArgs> delEvent = (delSender, delE) => |
| | | { |
| | | var alert = new CustomAlert(); |
| | | AddChidren(alert); |
| | | alert.Show(Language.StringByID(R.MyInternationalizationString.ConfirmDelete)); |
| | | alert.ResultEventHandler += (e2) => |
| | | { |
| | | if (e2) |
| | | { |
| | | Shared.Common.Room.CurrentRoom.DeleteDevice(deviceUI.CommonDevice); |
| | | deviceListScrolView.RemoveViewByTag((delSender as Button).Tag); |
| | | sameTypeList.Remove(deviceUI); |
| | | if (sameTypeList.Count == 0) |
| | | { |
| | | RefreshBodyView(); |
| | | } |
| | | } |
| | | }; |
| | | }; |
| | | EventHandler<MouseEventArgs> deviceDetailHandler = (send2, e2) => |
| | | { |
| | | var detailInfo = new Device.CommonForm.DeviceDetailInfo { }; |
| | | UserView.HomePage.Instance.AddChidren(detailInfo); |
| | | UserView.HomePage.Instance.PageIndex += 1; |
| | | detailInfo.Show(deviceUI, Shared.Common.Room.CurrentRoom); |
| | | detailInfo.action = RefreshBodyView; |
| | | }; |
| | | |
| | | if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.OnOffOutput) |
| | | { |
| | | //灯 |
| | | var light = deviceUI.CommonDevice as ZigBee.Device.ToggleLight; |
| | | //补上非远程 |
| | | if (light.Gateway == null) |
| | | { |
| | | continue; |
| | | } |
| | | if (light.Gateway.IsVirtual) |
| | | { |
| | | UserHomeView.ReadStatus(light, () => |
| | | { |
| | | light.ReadOnOffStatus(); |
| | | light.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch); |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | //防止短时间内多次读取状态 |
| | | if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - light.LastDateTime).TotalSeconds) |
| | | { |
| | | light.ReadOnOffStatus(); |
| | | light.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch); |
| | | } |
| | | } |
| | | |
| | | var deviceTypeRowLayout = new RowLayout() |
| | | { |
| | | Height = Application.GetRealHeight(127 + 35), |
| | | LineColor = ZigbeeColor.Current.GXCBackgroundColor, |
| | | Tag = deviceUI |
| | | }; |
| | | deviceListScrolView.AddChidren(deviceTypeRowLayout); |
| | | |
| | | var deviceRow = new FunctionRow(0, 35); |
| | | deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath); |
| | | deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName); |
| | | deviceRow.SetStatu(light.IsOnline == 1); |
| | | deviceTypeRowLayout.AddChidren(deviceRow); |
| | | |
| | | |
| | | deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) => |
| | | { |
| | | zbGateway = deviceUI.CommonDevice.Gateway; |
| | | sendedControlCommand = false; |
| | | 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) |
| | | { |
| | | light.SwitchControl(1); |
| | | } |
| | | else |
| | | { |
| | | light.SwitchControl(0); |
| | | } |
| | | //控制延时回调 |
| | | DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () => |
| | | { |
| | | if (Parent == null) |
| | | { |
| | | return; |
| | | } |
| | | RemoveUpdateControlDeviceStatuAction(zbGateway); |
| | | if (sendedControlCommand == false) |
| | | { |
| | | DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL); |
| | | } |
| | | }); |
| | | }; |
| | | |
| | | var editBtn = new CommonForm.RowLayoutEditButton() |
| | | { |
| | | Tag = deviceUI, |
| | | Radius = 0 |
| | | }; |
| | | deviceTypeRowLayout.AddRightView(editBtn); |
| | | editBtn.MouseUpEventHandler += deviceDetailHandler; |
| | | |
| | | var delBtn = new Device.CommonForm.RowLayoutDeleteButton() |
| | | { |
| | | Tag = deviceUI, |
| | | Radius = 0 |
| | | }; |
| | | deviceTypeRowLayout.AddRightView(delBtn); |
| | | delBtn.MouseUpEventHandler += delEvent; |
| | | } |
| | | else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.AirSwitch) |
| | | { |
| | | //空气开关 |
| | | var airSwitch = deviceUI.CommonDevice as ZigBee.Device.AirSwitch; |
| | | //补上非远程 |
| | | if (airSwitch.Gateway == null) |
| | | { |
| | | continue; |
| | | } |
| | | if (airSwitch.Gateway.IsVirtual) |
| | | { |
| | | UserHomeView.ReadStatus(airSwitch, () => |
| | | { |
| | | airSwitch.ReadOnOffStatus(); |
| | | airSwitch.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch); |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | if ((DateTime.Now - airSwitch.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan) |
| | | { |
| | | airSwitch.ReadOnOffStatus(); |
| | | airSwitch.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch); |
| | | } |
| | | } |
| | | |
| | | var deviceTypeRowLayout = new RowLayout() |
| | | { |
| | | Height = Application.GetRealHeight(127 + 35), |
| | | LineColor = ZigbeeColor.Current.GXCBackgroundColor, |
| | | Tag = deviceUI |
| | | }; |
| | | deviceListScrolView.AddChidren(deviceTypeRowLayout); |
| | | |
| | | var deviceRow = new FunctionRow(0, 35); |
| | | deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath); |
| | | deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName); |
| | | deviceRow.SetStatu(airSwitch.IsOnline == 1); |
| | | deviceTypeRowLayout.AddChidren(deviceRow); |
| | | |
| | | deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) => |
| | | { |
| | | zbGateway = deviceUI.CommonDevice.Gateway; |
| | | sendedControlCommand = false; |
| | | 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) |
| | | { |
| | | airSwitch.SwitchControl(1); |
| | | } |
| | | else |
| | | { |
| | | airSwitch.SwitchControl(0); |
| | | } |
| | | //控制延时回调 |
| | | DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () => |
| | | { |
| | | if (Parent == null) |
| | | { |
| | | return; |
| | | } |
| | | RemoveUpdateControlDeviceStatuAction(zbGateway); |
| | | if (sendedControlCommand == false) |
| | | { |
| | | DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL); |
| | | } |
| | | }); |
| | | }; |
| | | |
| | | var editBtn = new CommonForm.RowLayoutEditButton() |
| | | { |
| | | Tag = deviceUI, |
| | | Radius = 0 |
| | | }; |
| | | deviceTypeRowLayout.AddRightView(editBtn); |
| | | editBtn.MouseUpEventHandler += deviceDetailHandler; |
| | | |
| | | var delBtn = new Device.CommonForm.RowLayoutDeleteButton() |
| | | { |
| | | Tag = deviceUI, |
| | | Radius = 0 |
| | | }; |
| | | deviceTypeRowLayout.AddRightView(delBtn); |
| | | delBtn.MouseUpEventHandler += delEvent; |
| | | } |
| | | else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.DimmableLight) |
| | | { |
| | | //调光灯 |
| | | var dimmableLight = deviceUI.CommonDevice as ZigBee.Device.DimmableLight; |
| | | //补上非远程 |
| | | if (dimmableLight.Gateway == null) |
| | | { |
| | | continue; |
| | | } |
| | | if (dimmableLight.Gateway.IsVirtual) |
| | | { |
| | | UserHomeView.ReadStatus(dimmableLight, () => |
| | | { |
| | | dimmableLight.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch); |
| | | dimmableLight.ReadOnOffStatus(); |
| | | dimmableLight.ReadLevel(); |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | if ((DateTime.Now - dimmableLight.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan) |
| | | { |
| | | dimmableLight.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch); |
| | | dimmableLight.ReadOnOffStatus(); |
| | | dimmableLight.ReadLevel(); |
| | | } |
| | | } |
| | | |
| | | var deviceTypeRowLayout = new RowLayout() |
| | | { |
| | | Height = Application.GetRealHeight(127 + 35), |
| | | LineColor = ZigbeeColor.Current.GXCBackgroundColor, |
| | | Tag = deviceUI |
| | | }; |
| | | deviceListScrolView.AddChidren(deviceTypeRowLayout); |
| | | |
| | | var deviceRow = new FunctionRow(0, 35); |
| | | deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath); |
| | | deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName); |
| | | deviceRow.SetStatu(dimmableLight.IsOnline == 1); |
| | | deviceTypeRowLayout.AddChidren(deviceRow); |
| | | |
| | | deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) => |
| | | { |
| | | zbGateway = deviceUI.CommonDevice.Gateway; |
| | | sendedControlCommand = false; |
| | | 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) |
| | | { |
| | | dimmableLight.SwitchControl(1); |
| | | } |
| | | else |
| | | { |
| | | dimmableLight.SwitchControl(0); |
| | | } |
| | | //控制延时回调 |
| | | DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () => |
| | | { |
| | | if (Parent == null) |
| | | { |
| | | return; |
| | | } |
| | | RemoveUpdateControlDeviceStatuAction(zbGateway); |
| | | if (sendedControlCommand == false) |
| | | { |
| | | DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL); |
| | | } |
| | | }); |
| | | }; |
| | | |
| | | var editBtn = new CommonForm.RowLayoutEditButton() |
| | | { |
| | | Tag = deviceUI, |
| | | Radius = 0 |
| | | }; |
| | | deviceTypeRowLayout.AddRightView(editBtn); |
| | | editBtn.MouseUpEventHandler += deviceDetailHandler; |
| | | |
| | | var delBtn = new Device.CommonForm.RowLayoutDeleteButton() |
| | | { |
| | | Tag = deviceUI, |
| | | Radius = 0 |
| | | }; |
| | | deviceTypeRowLayout.AddRightView(delBtn); |
| | | delBtn.MouseUpEventHandler += delEvent; |
| | | |
| | | } |
| | | else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.Thermostat) |
| | | { |
| | | //空调 |
| | | var ac = deviceUI.CommonDevice as ZigBee.Device.AC; |
| | | //补上非远程 |
| | | if (ac.Gateway == null) |
| | | { |
| | | continue; |
| | | } |
| | | if (ac.Gateway.IsVirtual) |
| | | { |
| | | //发送读取状态命令 |
| | | UserView.UserHomeView.ReadStatus(ac, () => |
| | | { |
| | | ac.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch); |
| | | ac.ReadFanMode(); |
| | | ac.ReadSystemMode(); |
| | | ac.ReadLocalTemperature(); |
| | | ac.ReadCoolingSetpoint(); |
| | | ac.ReadHeatingSetpoint(); |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | //防止短时间内多次读取设备状态 |
| | | if ((DateTime.Now - ac.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan) |
| | | { |
| | | ac.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch); |
| | | ac.ReadFanMode(); |
| | | ac.ReadSystemMode(); |
| | | ac.ReadLocalTemperature(); |
| | | ac.ReadCoolingSetpoint(); |
| | | ac.ReadHeatingSetpoint(); |
| | | } |
| | | } |
| | | |
| | | var deviceTypeRowLayout = new RowLayout() |
| | | { |
| | | Height = Application.GetRealHeight(127 + 35), |
| | | LineColor = ZigbeeColor.Current.GXCBackgroundColor, |
| | | Tag = deviceUI |
| | | }; |
| | | deviceListScrolView.AddChidren(deviceTypeRowLayout); |
| | | |
| | | var deviceRow = new FunctionRow(0, 35); |
| | | deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath); |
| | | deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName); |
| | | deviceRow.SetStatu(ac.IsOnline == 1); |
| | | deviceTypeRowLayout.AddChidren(deviceRow); |
| | | |
| | | deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) => |
| | | { |
| | | zbGateway = deviceUI.CommonDevice.Gateway; |
| | | sendedControlCommand = false; |
| | | 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) |
| | | { |
| | | ac.Open(); |
| | | } |
| | | else |
| | | { |
| | | ac.Close(); |
| | | } |
| | | //控制延时回调 |
| | | DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () => |
| | | { |
| | | if (Parent == null) |
| | | { |
| | | return; |
| | | } |
| | | RemoveUpdateControlDeviceStatuAction(zbGateway); |
| | | if (sendedControlCommand == false) |
| | | { |
| | | DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL); |
| | | } |
| | | }); |
| | | }; |
| | | |
| | | var editBtn = new CommonForm.RowLayoutEditButton() |
| | | { |
| | | Tag = deviceUI, |
| | | Radius = 0 |
| | | }; |
| | | deviceTypeRowLayout.AddRightView(editBtn); |
| | | editBtn.MouseUpEventHandler += deviceDetailHandler; |
| | | |
| | | var delBtn = new Device.CommonForm.RowLayoutDeleteButton() |
| | | { |
| | | Tag = deviceUI, |
| | | Radius = 0 |
| | | }; |
| | | deviceTypeRowLayout.AddRightView(delBtn); |
| | | delBtn.MouseUpEventHandler += delEvent; |
| | | } |
| | | else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.WindowCoveringDevice) |
| | | { |
| | | //卷帘 |
| | | var rollerShade = deviceUI.CommonDevice as ZigBee.Device.Rollershade; |
| | | //不上非远程 |
| | | if (rollerShade.Gateway == null) |
| | | { |
| | | continue; |
| | | } |
| | | if (rollerShade.Gateway.IsVirtual) |
| | | { |
| | | UserHomeView.ReadStatus(rollerShade, () => |
| | | { |
| | | rollerShade.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch); |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | //防止短时间内多次读取 |
| | | if ((DateTime.Now - rollerShade.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan) |
| | | { |
| | | rollerShade.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch); |
| | | } |
| | | } |
| | | |
| | | |
| | | var deviceTypeRowLayout = new RowLayout() |
| | | { |
| | | Height = Application.GetRealHeight(127 + 35), |
| | | LineColor = ZigbeeColor.Current.GXCLineColor, |
| | | Tag = deviceUI |
| | | }; |
| | | deviceListScrolView.AddChidren(deviceTypeRowLayout); |
| | | |
| | | var deviceRow = new FunctionRow(0, 35); |
| | | deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath); |
| | | deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName); |
| | | deviceRow.SetStatu(rollerShade.IsOnline == 1); |
| | | deviceTypeRowLayout.AddChidren(deviceRow); |
| | | |
| | | var editBtn = new CommonForm.RowLayoutEditButton() |
| | | { |
| | | Tag = deviceUI, |
| | | Radius = 0 |
| | | }; |
| | | deviceTypeRowLayout.AddRightView(editBtn); |
| | | editBtn.MouseUpEventHandler += deviceDetailHandler; |
| | | |
| | | var delBtn = new Device.CommonForm.RowLayoutDeleteButton() |
| | | { |
| | | Tag = deviceUI, |
| | | Radius = 0 |
| | | }; |
| | | deviceTypeRowLayout.AddRightView(delBtn); |
| | | delBtn.MouseUpEventHandler += delEvent; |
| | | |
| | | |
| | | deviceRow.SwitchBtn.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | zbGateway = deviceUI.CommonDevice.Gateway; |
| | | sendedControlCommand = false; |
| | | zbGateway.ReportAction += UpdateDeviceControllStatu; |
| | | AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice); |
| | | |
| | | (sender as CommonForm.SelectedStatuButton).IsSelected = !(sender as CommonForm.SelectedStatuButton).IsSelected; |
| | | if ((sender as CommonForm.SelectedStatuButton).IsSelected) |
| | | { |
| | | rollerShade.CurtainUpDownStopControl(0); |
| | | } |
| | | else |
| | | { |
| | | rollerShade.CurtainUpDownStopControl(1); |
| | | } |
| | | |
| | | //控制延时回调 |
| | | DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () => |
| | | { |
| | | if (Parent == null) |
| | | { |
| | | return; |
| | | } |
| | | RemoveUpdateControlDeviceStatuAction(zbGateway); |
| | | if (sendedControlCommand == false) |
| | | { |
| | | DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL); |
| | | } |
| | | }); |
| | | }; |
| | | } |
| | | else |
| | | { |
| | | |
| | | } |
| | | } |
| | | }; |
| | | |
| | | 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 AddRoomView() |
| | | { |
| | | var roomFL = new HorizontalScrolViewLayout() |
| | | { |
| | | X = Application.GetRealWidth(CommonFormResouce.X_Left), |
| | | Height = Application.GetRealHeight(167), |
| | | Width = Application.GetRealWidth(CommonPage.AppRealWidth - CommonFormResouce.X_Left), |
| | | BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor |
| | | }; |
| | | functionSceneAutoBodyView.AddChidren(roomFL); |
| | | |
| | | //功能和场景bodyView |
| | | functionSceneBodyView = new FrameLayout() |
| | | { |
| | | Y = roomFL.Bottom, |
| | | Height = Application.GetRealHeight(1316), |
| | | BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor |
| | | }; |
| | | 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 |
| | |
| | | /// </summary> |
| | | public void ShowScene() |
| | | { |
| | | //刷新场景 |
| | | //var reFreshResult=await Shared.Common.Room.RefreshSceneUIList(); |
| | | Shared.Common.SceneRoomUI.GetAllSceneRoomUIList(); |
| | | if (SceneRoomUI.AllSceneRoomUIList == null) |
| | | { |
| | | return; |
| | | } |
| | | var sceneList = SceneRoomUI.AllSceneRoomUIList; |
| | | Shared.Common.Room.GetAllRoomDeviceUIList(); |
| | | AddRoomView(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// RefreshScene |
| | | /// </summary> |
| | | /// <param name="room"></param> |
| | | public void RefreshScene(Common.Room room) |
| | | { |
| | | var sceneList = room.SceneUIList; |
| | | if (sceneList.Count == 0) |
| | | { |
| | | ShowNoSceneTip(); |
| | |
| | | { |
| | | var sceneScrolView = new VerticalScrolViewLayout |
| | | { |
| | | Y=Application.GetRealHeight(58) |
| | | 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 |
| | | }; |
| | |
| | | |
| | | 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) |
| | | X = Application.GetRealWidth(179), |
| | | 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), |
| | | 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); |
| | | |
| | | var collectionBtn = new Button |
| | | { |
| | | X=Application.GetRealWidth(23), |
| | | Y=Application.GetRealHeight(23), |
| | | Width=Application.GetMinRealAverage(65), |
| | | Height=Application.GetMinRealAverage(65), |
| | | UnSelectedImagePath="Item/Collection.png", |
| | | SelectedImagePath="Item/CollectionSelected.png" |
| | | X = Application.GetRealWidth(23), |
| | | Y = Application.GetRealHeight(23), |
| | | Width = Application.GetMinRealAverage(65), |
| | | Height = Application.GetMinRealAverage(65), |
| | | UnSelectedImagePath = "Item/Collection.png", |
| | | SelectedImagePath = "Item/CollectionSelected.png" |
| | | }; |
| | | leftFL.AddChidren(collectionBtn); |
| | | |
| | |
| | | Width = Application.GetRealWidth(176), |
| | | Height = Application.GetRealHeight(200), |
| | | TextColor = ZigbeeColor.Current.GXCTextWhiteColor, |
| | | Text = sceneRoomUI.sceneUI.Name, |
| | | Text = scene.Name, |
| | | Gravity = Gravity.Center, |
| | | IsMoreLines=true |
| | | IsMoreLines = true |
| | | }; |
| | | leftFL.AddChidren(sceneNameBtn); |
| | | |
| | |
| | | var delayBtn = new RowLayoutDeleteButton |
| | | { |
| | | TextID = R.MyInternationalizationString.Delay, |
| | | Tag = sceneRoomUI.sceneUI.SceneDelayTime |
| | | Tag = scene.SceneDelayTime |
| | | }; |
| | | sceneRowLayout.AddLeftView(delayBtn); |
| | | |
| | | //编辑 |
| | | var settingBtn = new Device.CommonForm.RowLayoutEditButton() |
| | | { |
| | | TextID=R.MyInternationalizationString.Setting, |
| | | Tag = sceneRoomUI.sceneUI.SceneDelayTime |
| | | TextID = R.MyInternationalizationString.Setting, |
| | | 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) |
| | | { |
| | |
| | | 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); |
| | |
| | | //1成功 |
| | | if (removeSceneAllData.removeSceneData.Result == 1) |
| | | { |
| | | sceneRoomUI.room.RemoveScene(sceneRoomUI.sceneUI); |
| | | room.RemoveScene(scene); |
| | | //RefreshBodyView(); |
| | | sceneScrolView.RemoveViewByTag((sender as Button).Tag); |
| | | } |
| | |
| | | //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); |
| | |
| | | //编辑场景 |
| | | settingBtn.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | SceneRoomUI.EditScene(sceneRoomUI.sceneUI, sceneRoomUI.room); |
| | | SceneRoomUI.EditScene(scene,room); |
| | | }; |
| | | //编辑延时 |
| | | delayBtn.MouseUpEventHandler += (sender, e) => |
| | |
| | | // { |
| | | // 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; |
| | |
| | | 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 |