From 48ba446936b51fffafa7c3600c0dadc6ac0e8c20 Mon Sep 17 00:00:00 2001 From: 陈嘉乐 <cjl@hdlchina.com.cn> Date: 星期五, 10 七月 2020 10:52:13 +0800 Subject: [PATCH] 2020-07-10-01 --- ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs | 405 ++++++++++++--------------------------------------------- 1 files changed, 90 insertions(+), 315 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs old mode 100644 new mode 100755 index 096bed2..9856a3c --- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs @@ -17,12 +17,24 @@ 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(() => + { + UserCenter.DoorLock.DoorLockCommonInfo.UpdateCurrentDoorlockAction += (DoorlockKey, status) => + { + var key = doorLock.DeviceAddr; + if (DoorlockKey == key) + { + DoorLockCommonInfo.NormallyOpenModeValue(this.doorLock, status); + UpdateNomallyOpenStatus(); + } + }; + }); } #region 鍙橀噺鐢虫槑 @@ -41,7 +53,8 @@ /// <summary> /// 閫昏緫涓槸鍚︽湁甯稿紑妯″紡 /// </summary> - private bool HaveLogicNormallyOpenMode = false; + private bool haveLogicNormallyOpenMode = false; + /// <summary> /// 褰撳墠鐢甸噺 /// </summary> @@ -77,7 +90,7 @@ /// <summary> /// 涓儴甯冨眬涓棬閿佸悕绉版樉绀� /// </summary> - Button btnDoorLockTitle; + NormalViewControl btnDoorLockTitle; /// <summary> /// 鍒嗕韩 /// </summary> @@ -246,18 +259,15 @@ }; this.midFrameLayout.AddChidren(midTopFrameLayout); - //闂ㄩ攣鏍囬 - btnDoorLockTitle = new Button() - { - Width = Application.GetRealWidth(250), - Height = Application.GetRealHeight(60), - X = Application.GetRealWidth(372), - Y = Application.GetRealHeight(46), - TextColor = Shared.Common.ZigbeeColor.Current.XMBlack, - TextSize = 15, - TextAlignment = TextAlignment.Center, - IsBold = true, - }; + //璁惧鍚嶇О + btnDoorLockTitle = new NormalViewControl(100, 60, true); + btnDoorLockTitle.Y = Application.GetRealHeight(46); + btnDoorLockTitle.TextSize = 15; + btnDoorLockTitle.IsBold = true; + btnDoorLockTitle.Text = Common.LocalDevice.Current.GetDeviceMacName(doorLock); + btnDoorLockTitle.Width = btnDoorLockTitle.GetRealWidthByText(); + btnDoorLockTitle.TextAlignment = TextAlignment.Center; + btnDoorLockTitle.Gravity = Gravity.CenterHorizontal; midTopFrameLayout.AddChidren(btnDoorLockTitle); //璁板綍 @@ -609,7 +619,14 @@ { if (canOpenNormallyMode) { - Application.RunOnMainThread(() => { NomallyOpenModeInvalidDialog(true); }); + Application.RunOnMainThread(() => + { + Action<bool> action = (obj) => + { + UpdateNomallyOpenStatus(); + }; + DoorLockCommonInfo.NomallyOpenModeInvalidDialog(doorLock, DoorLockCommonInfo.DoorLockMessType.ServicePush, haveLogicNormallyOpenMode, action); + }); } } } @@ -658,7 +675,7 @@ canOpenNormallyMode = DoorLockCommonInfo.CanNormallyOpen(doorLock); if (canOpenNormallyMode) { - //鑾峰彇闂ㄩ攣甯稿紑妯″紡 + //1銆佽幏鍙栭棬閿佸父寮�妯″紡 var resultRes = await DoorLockCommonInfo.GetNormallyOpenMode(doorLock); if (resultRes == null) { @@ -682,16 +699,17 @@ tempRes = false; } DoorLockCommonInfo.NormallyOpenModeValue(doorLock, tempRes); + Application.RunOnMainThread(async () => { - var resTemp = await Shared.Phone.Device.Logic.SkipView.Exist(3,doorLock); - if (resTemp == 1) + var resTemp = await Shared.Phone.Device.Logic.SkipView.Exist(2, doorLock); + if (resTemp == 0) { - HaveLogicNormallyOpenMode = true; + haveLogicNormallyOpenMode = false; } - else if (resTemp == 0) + else { - HaveLogicNormallyOpenMode = false; + haveLogicNormallyOpenMode = true; } }); } @@ -708,7 +726,7 @@ canVolume = DoorLockCommonInfo.CanVolume(doorLock); if (canVolume) { - //璇诲彇闊抽噺 + //2銆佽鍙栭煶閲� var resultRes = await doorLock.GetVolumeAsync(); if (resultRes == null || resultRes.volumeResponseData == null) { @@ -742,7 +760,7 @@ }); } - //璇诲彇闂ㄩ攣鐢甸噺锛氱皣ID锛�1 灞炴�D 33 + //3銆佽鍙栭棬閿佺數閲忥細绨嘔D锛�1 灞炴�D 33 doorLock.ReadAttri(Cluster_ID.Power, AttriButeId.DoorLockPower); //涓婃姤鐢甸噺绛�1绉� System.Threading.Thread.Sleep(1000); @@ -770,7 +788,6 @@ /// </summary> public void ClickHandle() { - //闂ㄩ攣鏍囬 btnDoorLockTitle.Text = Common.LocalDevice.Current.GetDeviceMacName(doorLock); @@ -785,14 +802,11 @@ //璁剧疆 EventHandler<MouseEventArgs> btnFuncSetHander = (sender, e) => { - //鎵撳紑鍏朵粬鐣岄潰鏃跺墠绉婚櫎銆愭殏鏃朵笉绉婚櫎銆� - //RemoveFromParent(); - var functionSetting = new Shared.Phone.UserCenter.DoorLock.FunctionSetting(currentRoom, doorLock); Shared.Phone.UserView.HomePage.Instance.AddChidren(functionSetting); Shared.Phone.UserView.HomePage.Instance.PageIndex += 1; functionSetting.Show(); - + //DoorLockCommonInfo.canShowDialog = false; functionSetting.devicNameAction += (deviceRename) => { if (!string.IsNullOrEmpty(deviceRename)) @@ -823,6 +837,7 @@ //鍘嗗彶璁板綍 ---- stan var form = new DeviceDoorLock.DoorLockHistoryLogForm(); form.AddForm(this.doorLock.DeviceAddr); + //DoorLockCommonInfo.canShowDialog = false; }; btnRecordFrameLayout.MouseDownEventHandler += handerRecord; btnRecord.MouseDownEventHandler += handerRecord; @@ -850,7 +865,14 @@ { if (canOpenNormallyMode) { - NomallyOpenModeInvalidDialog(false); + Application.RunOnMainThread(() => + { + Action<bool> action = (obj) => + { + UpdateNomallyOpenStatus(); + }; + DoorLockCommonInfo.NomallyOpenModeInvalidDialog(doorLock, DoorLockCommonInfo.DoorLockMessType.AppOperate, haveLogicNormallyOpenMode, action); + }); } else { @@ -876,7 +898,14 @@ { if (doorLock.IsDoorLockNormallyMode) { - NomallyOpenModeInvalidDialog(); + Application.RunOnMainThread(() => + { + Action<bool> action = (obj) => + { + UpdateNomallyOpenStatus(); + }; + DoorLockCommonInfo.NomallyOpenModeInvalidDialog(doorLock, DoorLockCommonInfo.DoorLockMessType.AppOperate, haveLogicNormallyOpenMode, action); + }); } } else @@ -1039,7 +1068,7 @@ action = () => { - //绯荤粺瀵嗙爜鏀寔鎿嶄綔闂ㄩ攣鍚庯紝璋冪敤娓╁眳鍩庣殑鐣岄潰銆愬父寮�鑷姩鍖栥�� + //WJC鐨勪唬鐮侊細绯荤粺瀵嗙爜鏀寔鎿嶄綔闂ㄩ攣鍚庯紝璋冪敤娓╁眳鍩庣殑鐣岄潰銆愬父寮�鑷姩鍖栥�� if (doorLock == null) { ///闃叉鎶涘紓甯� @@ -1052,289 +1081,36 @@ if (Common.Logic.LogicDviceList.Count == 0) { Common.Logic.LogicDviceList.AddRange(LocalDevice.Current.listAllDevice.ToArray()); - } - - var addLogicPage = new Shared.Phone.Device.Logic.SoneLogicList(); - UserView.HomePage.Instance.AddChidren(addLogicPage); - UserView.HomePage.Instance.PageIndex += 1; - addLogicPage.Show(); - addLogicPage._if = true; - addLogicPage.action += (w) => - { - doorLock.IsDoorLockNormallyMode = w; - ///鐣欑粰寰愭鐢ㄧ殑 - UpdateNomallyOpenStatus(); - }; + } + var addLogicPage = new Shared.Phone.Device.Logic.SoneLogicList(); + UserView.HomePage.Instance.AddChidren(addLogicPage); + UserView.HomePage.Instance.PageIndex += 1; + addLogicPage.Show(); + addLogicPage.action += async (w) => + { + DoorLockCommonInfo.NormallyOpenModeValue(doorLock, w); + UpdateNomallyOpenStatus(); + //杩斿洖鎸夐敭娓呯┖褰撳墠閫昏緫瀹氫箟鐨凩ogicAction + UserCenter.DoorLock.DoorLockCommonInfo.LogicAction = null; + //鏄惁瀛樺湪甯稿紑妯″紡 + var resTemp = Shared.Common.Logic.SoneLogicList; + if (resTemp.Count == 0) + { + haveLogicNormallyOpenMode = false; + } + else + { + haveLogicNormallyOpenMode = true; + } - }; - HdlCheckLogic.Current.CheckSecondarySecurity(action); + UserCenter.DoorLock.DoorLockCommonInfo.UpdateCurrentDoorlockAction -= addLogicPage.updateCurrentDoorlockActionTemp; + }; + }; + HdlCheckLogic.Current.CheckSecondarySecurity(action); + + } - - } - - /// <summary> - /// 甯稿紑妯″紡澶辨晥澶勭悊 - /// </summary> - public void NomallyOpenModeInvalidDialog(bool IsFromReport = false) - { - 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 resTemp = await Shared.Phone.Device.Logic.SkipView.Exist(3,doorLock); - //if (resTemp == 3) - //{ - // string msg0 = Language.StringByID(R.MyInternationalizationString.CancelLogicNormallyModeFailed); - // this.ShowTipMsg(msg0); - //} - } - } - else - { - //app榛樿鈥滃父寮�妯″紡鈥濊繕鏄紑鍚� - DoorLockCommonInfo.NormallyOpenModeValue(doorLock, true); - Application.RunOnMainThread(() => - { - UpdateNomallyOpenStatus(); - }); - } - }; - - alert.CancelClickEvent += async () => - { - if (IsFromReport) - { - //涓婃姤鈥滃父寮�妯″紡鈥濆凡琚彇娑� - Application.RunOnMainThread(() => { CommonPage.Loading.Start(""); }); - //鍏堝垹闄ゅ凡澶辨晥鐨勨�滃父寮�妯″紡鈥濈殑閫昏緫 - if (HaveLogicNormallyOpenMode) - { - var resTemp = await Shared.Phone.Device.Logic.SkipView.Exist(3,doorLock); - //if (resTemp == 3) - //{ - // string msg0 = Language.StringByID(R.MyInternationalizationString.CancelLogicNormallyModeFailed2); - // this.ShowTipMsg(msg0); - // return; - //} - } - //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 resTemp = await Shared.Phone.Device.Logic.SkipView.Exist(3,doorLock); - //if (resTemp == 3) - //{ - // string msg0 = Language.StringByID(R.MyInternationalizationString.CancelLogicNormallyModeFailed); - // this.ShowTipMsg(msg0); - //} - } - } - 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 resTemp = await Shared.Phone.Device.Logic.SkipView.Exist(3,doorLock); - //鍥犱负鐩墠鏈哄埗闂锛岄�昏緫缁忓父澶辫触锛屾墍浠ヤ笉鎻愮ず锛屽悗鏈熸満鍒惰鏀癸紝閲嶆柊鍋氫竴涓繖涓晫闈� - //if (resTemp == 3) - //{ - // string msg0 = Language.StringByID(R.MyInternationalizationString.CancelLogicNormallyModeFailed); - // this.ShowTipMsg(msg0); - //} - //else if (resTemp == 2) - //{ - // string msg2 = Language.StringByID(R.MyInternationalizationString.CloseNormallyOpenModeSuccess); - // this.ShowTipMsg(msg2); - //} - } - 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> /// 甯稿紑妯″紡鐘舵�佹洿鏂� /// </summary> private void UpdateNomallyOpenStatus() @@ -1434,8 +1210,7 @@ /// </summary> public override void RemoveFromParent() { - //寰愭鐨勯棬閿佺晫闈㈠叧闂�(缃戝叧鍏ㄥ眬鎺ユ敹鏃朵娇鐢�) - ControlCommonResourse.IsDoorLockPageOpen = false; + UserCenter.DoorLock.DoorLockCommonInfo.UpdateCurrentDoorlockAction = null; if (IsDrawerLockMode) { CommonPage.Instance.IsDrawerLockMode = false; -- Gitblit v1.8.0