| | |
| | | public UserDoorLockPage(Room room, CommonDevice doorLock) |
| | | { |
| | | //徐梅的门锁界面打开(网关全局接收时使用) |
| | | ControlCommonResourse.IsDoorLockPageOpen = true; |
| | | //ControlCommonResourse.IsDoorLockPageOpen = true; |
| | | this.doorLock = doorLock as ZigBee.Device.DoorLock; |
| | | currentRoom = room; |
| | | deviceUI = doorLock; |
| | | BackgroundColor = ZigbeeColor.Current.GXCTopViewBackgroundColor; |
| | | ZbGateway.StatusList.Add(this); |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | ControlCommonResourse.UpdateDoorLockStatusAction = (obj) => |
| | | { |
| | | UpdateNomallyOpenStatus(); |
| | | }; |
| | | |
| | | UserCenter.DoorLock.DoorLockCommonInfo.UpdateCurrentDoorlockAction += (DoorlockKey, status) => |
| | | { |
| | | var key = doorLock.DeviceAddr + doorLock.DeviceEpoint; |
| | | if (DoorlockKey == key) |
| | | { |
| | | DoorLockCommonInfo.NormallyOpenModeValue(this.doorLock, status); |
| | | UpdateNomallyOpenStatus(); |
| | | } |
| | | }; |
| | | }); |
| | | } |
| | | |
| | | #region 变量申明 |
| | |
| | | /// 逻辑中是否有常开模式
|
| | | /// </summary> |
| | | private bool haveLogicNormallyOpenMode = false;
|
| | | |
| | | /// <summary> |
| | | /// 门锁深度控制上报窗口是否弹出 |
| | | /// </summary> |
| | | public static bool canShowDialog = true; |
| | | |
| | | /// <summary> |
| | | /// 当前电量 |
| | |
| | | } |
| | | } |
| | | |
| | | //网关执行逻辑,常开模式失效上报 |
| | | //if (typeTag == "DoorLockAlarmsSendAlarmInform" && tempDevice != null) |
| | | //{ |
| | | // var doorL = (ZigBee.Device.DoorLock)tempDevice; |
| | | |
| | | // if (doorL.DeviceAddr + doorL.DeviceEpoint == doorLock.DeviceAddr + doorLock.DeviceEpoint) |
| | | // { |
| | | // //非主人不弹这个窗口 |
| | | // if (UserCenterResourse.UserInfo.AuthorityNo != 1) |
| | | // { |
| | | // return; |
| | | // } |
| | | // if (doorLock.IsDoorLockNormallyMode) |
| | | // { |
| | | // if (canOpenNormallyMode) |
| | | // { |
| | | // Application.RunOnMainThread(() => |
| | | // { |
| | | // Action<bool> action = (obj) => |
| | | // { |
| | | // UpdateNomallyOpenStatus(); |
| | | // }; |
| | | // DoorLockCommonInfo.NomallyOpenModeInvalidDialog(doorLock, DoorLockCommonInfo.DoorLockMessType.ServicePush, haveLogicNormallyOpenMode, action); |
| | | // }); |
| | | // } |
| | | // } |
| | | // } |
| | | //} |
| | | |
| | | if (typeTag == "DeviceStatusReport" && tempDevice != null) |
| | | { |
| | | if (tempDevice != null) |
| | |
| | | canOpenNormallyMode = DoorLockCommonInfo.CanNormallyOpen(doorLock); |
| | | if (canOpenNormallyMode) |
| | | { |
| | | //获取门锁常开模式 |
| | | //1、获取门锁常开模式 |
| | | var resultRes = await DoorLockCommonInfo.GetNormallyOpenMode(doorLock); |
| | | if (resultRes == null) |
| | | { |
| | |
| | | tempRes = false; |
| | | } |
| | | DoorLockCommonInfo.NormallyOpenModeValue(doorLock, tempRes); |
| | | Application.RunOnMainThread(async () => |
| | | { |
| | | var resTemp = await Shared.Phone.Device.Logic.SkipView.Exist(3,doorLock); |
| | | if (resTemp == 1) |
| | | { |
| | | haveLogicNormallyOpenMode = true; |
| | | } |
| | | else if (resTemp == 0) |
| | | { |
| | | haveLogicNormallyOpenMode = false; |
| | | } |
| | | }); |
| | | |
| | | //Application.RunOnMainThread(async () => |
| | | //{ |
| | | //var resTemp = await Shared.Phone.Device.Logic.SkipView.Exist(3, doorLock); |
| | | //if (resTemp == 1) |
| | | //{ |
| | | // haveLogicNormallyOpenMode = true; |
| | | //} |
| | | //else if (resTemp == 0) |
| | | //{ |
| | | // haveLogicNormallyOpenMode = false; |
| | | //} |
| | | //}); |
| | | } |
| | | } |
| | | else |
| | |
| | | canVolume = DoorLockCommonInfo.CanVolume(doorLock); |
| | | if (canVolume) |
| | | { |
| | | //读取音量 |
| | | //2、读取音量 |
| | | var resultRes = await doorLock.GetVolumeAsync(); |
| | | if (resultRes == null || resultRes.volumeResponseData == null) |
| | | { |
| | |
| | | }); |
| | | } |
| | | |
| | | //读取门锁电量:簇ID:1 属性ID 33 |
| | | //3、读取门锁电量:簇ID:1 属性ID 33 |
| | | doorLock.ReadAttri(Cluster_ID.Power, AttriButeId.DoorLockPower); |
| | | //上报电量等1秒 |
| | | System.Threading.Thread.Sleep(1000); |
| | |
| | | Shared.Phone.UserView.HomePage.Instance.AddChidren(functionSetting); |
| | | Shared.Phone.UserView.HomePage.Instance.PageIndex += 1; |
| | | functionSetting.Show(); |
| | | canShowDialog = false; |
| | | //DoorLockCommonInfo.canShowDialog = false; |
| | | functionSetting.devicNameAction += (deviceRename) => |
| | | { |
| | | if (!string.IsNullOrEmpty(deviceRename)) |
| | |
| | | //历史记录 ---- stan |
| | | var form = new DeviceDoorLock.DoorLockHistoryLogForm(); |
| | | form.AddForm(this.doorLock.DeviceAddr); |
| | | canShowDialog = false; |
| | | //DoorLockCommonInfo.canShowDialog = false; |
| | | }; |
| | | btnRecordFrameLayout.MouseDownEventHandler += handerRecord; |
| | | btnRecord.MouseDownEventHandler += handerRecord; |
| | |
| | | //开锁事件 |
| | | EventHandler<MouseEventArgs> hander1 = async (sender, e) => |
| | | { |
| | | canShowDialog = true; |
| | | if (doorLock.IsDoorLockNormallyMode) |
| | | { |
| | | if (canOpenNormallyMode)
|
| | |
| | | //关锁事件 |
| | | EventHandler<MouseEventArgs> hander2 = (sender, e) => |
| | | { |
| | | canShowDialog = true; |
| | | if (canOpenNormallyMode) |
| | | { |
| | | if (doorLock.IsDoorLockNormallyMode) |
| | |
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// 常开模式失效处理
|
| | | /// </summary>
|
| | | private void NomallyOpenModeInvalidDialog(bool IsFromReport = false) |
| | | { |
| | | if (!canShowDialog) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | if (UserCenterResourse.UserInfo.AuthorityNo != 1) |
| | | { |
| | | this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.OnlyMasterOperate)); |
| | | return; |
| | | } |
| | | string msg = Language.StringByID(R.MyInternationalizationString.NomallyModeIsCanceled).Replace("{0}", "\r\n"); |
| | | var confirm = Language.StringByID(R.MyInternationalizationString.SureCancel); |
| | | var alert = new ShowDoorLockMsgControl(ShowDoorLockMsgControl.DoorLockMsgType.NomallyOpenMode, msg, confirm); |
| | | if (haveLogicNormallyOpenMode) |
| | | { |
| | | //有逻辑设置的弹窗 |
| | | alert = new ShowDoorLockMsgControl(ShowDoorLockMsgControl.DoorLockMsgType.CancelNomallyOpenModeWithLogic, msg, confirm); |
| | | } |
| | | alert.Show(); |
| | | |
| | | alert.MsgControlClickEvent += async () => |
| | | { |
| | | if (IsFromReport) |
| | | { |
| | | //上报“常开模式”已被取消,app默认了“常开模式”被取消 |
| | | DoorLockCommonInfo.NormallyOpenModeValue(doorLock, false); |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | UpdateNomallyOpenStatus(); |
| | | }); |
| | | |
| | | if (haveLogicNormallyOpenMode) |
| | | { |
| | | //此处删除温居城的常开模式特殊逻辑 |
| | | var resTemp1 = await Shared.Phone.Device.Logic.SkipView.GetLogicAll(doorLock); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | //app默认“常开模式”还是开启 |
| | | DoorLockCommonInfo.NormallyOpenModeValue(doorLock, true); |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | UpdateNomallyOpenStatus(); |
| | | }); |
| | | } |
| | | }; |
| | | |
| | | alert.CancelClickEvent += async () => |
| | | { |
| | | if (IsFromReport) |
| | | { |
| | | //上报“常开模式”已被取消 |
| | | Application.RunOnMainThread(() => { CommonPage.Loading.Start(""); }); |
| | | |
| | | if (haveLogicNormallyOpenMode) |
| | | { |
| | | //此处删除温居城的常开模式特殊逻辑 |
| | | var resTemp1 = await Shared.Phone.Device.Logic.SkipView.GetLogicAll(doorLock); |
| | | } |
| | | //app重新开启“常开模式” |
| | | var result = await doorLock.SetNormallyOpenModeFuncAsync(true); |
| | | if (result == null || result.defaultControlResponseData == null) |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | string msg0 = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime); |
| | | this.ShowTipMsg(msg0); |
| | | DoorLockCommonInfo.NormallyOpenModeValue(doorLock, false); |
| | | UpdateNomallyOpenStatus(); |
| | | }); |
| | | return; |
| | | } |
| | | if (result.defaultControlResponseData.status != 0) |
| | | { |
| | | string msg1 = Language.StringByID(R.MyInternationalizationString.OpenNormallyOpenModeFailed); |
| | | this.ShowTipMsg(msg1); |
| | | DoorLockCommonInfo.NormallyOpenModeValue(doorLock, false); |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | UpdateNomallyOpenStatus(); |
| | | }); |
| | | return; |
| | | } |
| | | else |
| | | { |
| | | //保持“常开成功” |
| | | DoorLockCommonInfo.NormallyOpenModeValue(doorLock, true); |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | UpdateNomallyOpenStatus(); |
| | | }); |
| | | |
| | | //创建常开模式的特殊逻辑 |
| | | var resu = await Shared.Phone.Device.Logic.SkipView.LockAddModifyLogic(DoorLockCommonInfo.NormallyOpenModeInvalidTime, doorLock); |
| | | //if (!resu) |
| | | //{ |
| | | // string msg0 = Language.StringByID(R.MyInternationalizationString.AddLogicNormallyModeFailed); |
| | | // this.ShowTipMsg(msg0); |
| | | //} |
| | | |
| | | CommonPage.Loading.Hide(); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | //app操作不取消“常开模式” |
| | | DoorLockCommonInfo.NormallyOpenModeValue(doorLock, true); |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | UpdateNomallyOpenStatus(); |
| | | }); |
| | | } |
| | | }; |
| | | |
| | | alert.ConfirmClickEvent += async () => |
| | | { |
| | | if (IsFromReport) |
| | | { |
| | | //上报门锁“常开模式”已经取消,现在app确认“常开模式”取消 |
| | | DoorLockCommonInfo.NormallyOpenModeValue(doorLock, false); |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | UpdateNomallyOpenStatus(); |
| | | }); |
| | | |
| | | if (haveLogicNormallyOpenMode) |
| | | { |
| | | //此处删除温居城的常开模式特殊逻辑 |
| | | var resTemp1 = await Shared.Phone.Device.Logic.SkipView.GetLogicAll(doorLock); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | //app操作取消“常开模式” |
| | | Application.RunOnMainThread(() => { CommonPage.Loading.Start(""); }); |
| | | var result = await doorLock.SetNormallyOpenModeFuncAsync(false); |
| | | if (result == null || result.defaultControlResponseData == null) |
| | | { |
| | | string msg0 = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime); |
| | | this.ShowTipMsg(msg0); |
| | | return; |
| | | } |
| | | if (result.defaultControlResponseData.status != 0) |
| | | { |
| | | string msg1 = Language.StringByID(R.MyInternationalizationString.CloseNormallyOpenModeFailed); |
| | | this.ShowTipMsg(msg1); |
| | | return; |
| | | } |
| | | else |
| | | {
|
| | | //添加App开启常开模式的历史记录
|
| | | HdlDeviceDoorLockLogic.Current.AddDoorHistoryLog(this.doorLock, 9002, string.Empty); |
| | | |
| | | //app确认取消“常开模式”成功 |
| | | DoorLockCommonInfo.NormallyOpenModeValue(doorLock, false); |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | UpdateNomallyOpenStatus(); |
| | | }); |
| | | |
| | | if (haveLogicNormallyOpenMode) |
| | | { |
| | | //此处删除温居城的常开模式特殊逻辑 |
| | | var resTemp1 = await Shared.Phone.Device.Logic.SkipView.GetLogicAll(doorLock); |
| | | } |
| | | string msg2 = Language.StringByID(R.MyInternationalizationString.CloseNormallyOpenModeSuccess); |
| | | this.ShowTipMsg(msg2); |
| | | } |
| | | } |
| | | }; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 已经开启常开模式提示 |
| | | /// </summary> |
| | | public void AlreadyOpenNormallyMode() |
| | | { |
| | | //常开模式开启提示 |
| | | string msgNomallyModeIsTurnOn = Language.StringByID(R.MyInternationalizationString.NomallyModeIsTurnOn); |
| | | var doorLockInValidSetting = Language.StringByID(R.MyInternationalizationString.DoorLockInValidSetting); |
| | | var alertNomallyModeIsTurnOn = new ShowDoorLockMsgControl(ShowDoorLockMsgControl.DoorLockMsgType.DoorLockLogic, msgNomallyModeIsTurnOn, doorLockInValidSetting); |
| | | alertNomallyModeIsTurnOn.Show(); |
| | | alertNomallyModeIsTurnOn.MsgControlClickEvent += async () => |
| | | { |
| | | //默认创建常开模式的特殊逻辑 |
| | | var res = await Shared.Phone.Device.Logic.SkipView.LockAddModifyLogic(DoorLockCommonInfo.NormallyOpenModeInvalidTime, doorLock); |
| | | //if (!res) |
| | | //{ |
| | | //string msg0 = Language.StringByID(R.MyInternationalizationString.AddLogicNormallyModeFailed); |
| | | // this.ShowTipMsg(msg0); |
| | | //return; |
| | | //} |
| | | }; |
| | | //点击自动化 |
| | | alertNomallyModeIsTurnOn.LogicClickEvent += () => |
| | | { |
| | | //逻辑调用前记得移除 |
| | | ZbGateway.StatusList.Remove(this); |
| | | //调用逻辑界面 |
| | | Shared.Phone.Device.Logic.SkipView.SkipAddLogic(2, doorLock); |
| | | }; |
| | | alertNomallyModeIsTurnOn.InvalidClickEvent += async () => |
| | | { |
| | | NomallyOpenModeInvalidTimeDialog(); |
| | | }; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 常开模式失效时间处理 |
| | | /// </summary> |
| | | private void NomallyOpenModeInvalidTimeDialog() |
| | | { |
| | | //失效设置 |
| | | string msgTimeInValidSetting = Language.StringByID(R.MyInternationalizationString.DoorLockOpenAllTheTime); |
| | | var timeConfrim = Language.StringByID(R.MyInternationalizationString.Confrim); |
| | | var alertTimeInValidSetting = new ShowDoorLockMsgControl(ShowDoorLockMsgControl.DoorLockMsgType.InValid, msgTimeInValidSetting, timeConfrim); |
| | | alertTimeInValidSetting.Show(); |
| | | |
| | | alertTimeInValidSetting.InvalidTimeAction += async (obj) => |
| | | { |
| | | //常开模式失效时间设置成功 |
| | | var temp = int.Parse(obj); |
| | | DoorLockCommonInfo.NormallyOpenModeInvalidTime = temp; |
| | | //默认创建常开模式的特殊逻辑 |
| | | var res = await Shared.Phone.Device.Logic.SkipView.LockAddModifyLogic(DoorLockCommonInfo.NormallyOpenModeInvalidTime, doorLock); |
| | | if (res == 0) |
| | | { |
| | | //默认创建常开模式失败 |
| | | string msg0 = Language.StringByID(R.MyInternationalizationString.AddLogicNormallyModeFailed); |
| | | var alert = new UserCenter.ShowMsgControl(UserCenter.ShowMsgType.Normal, msg0, Language.StringByID(R.MyInternationalizationString.confrim)); |
| | | alert.Show(); |
| | | //二次加载弹窗 常开模式开启提示 |
| | | NomallyOpenModeInvalidTimeDialog(); |
| | | } |
| | | }; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 常开模式状态更新 |
| | | /// </summary> |
| | | private void UpdateNomallyOpenStatus() |
| | |
| | | public override void RemoveFromParent() |
| | | { |
| | | //徐梅的门锁界面关闭(网关全局接收时使用) |
| | | ControlCommonResourse.IsDoorLockPageOpen = false; |
| | | //ControlCommonResourse.IsDoorLockPageOpen = false; |
| | | ControlCommonResourse.UpdateDoorLockStatusAction = null; |
| | | UserCenter.DoorLock.DoorLockCommonInfo.UpdateCurrentDoorlockAction = null; |
| | | if (IsDrawerLockMode) |
| | | { |
| | | CommonPage.Instance.IsDrawerLockMode = false; |