From d6fb0646531172f23648441c224cdcccd721b894 Mon Sep 17 00:00:00 2001 From: xm <1271024303@qq.com> Date: 星期一, 14 十二月 2020 09:59:01 +0800 Subject: [PATCH] 请合并代码,完成晾衣架最终功能。 --- ZigbeeApp/Shared/Phone/UserCenter/DoorLock/FunctionSetting.cs | 499 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 499 insertions(+), 0 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/FunctionSetting.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/FunctionSetting.cs new file mode 100755 index 0000000..eb1ccdc --- /dev/null +++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/FunctionSetting.cs @@ -0,0 +1,499 @@ +锘縰sing System; +using System.Collections.Generic; +using Shared.Common; +using Shared.Phone.UserView; +using ZigBee.Device; + +namespace Shared.Phone.UserCenter.DoorLock +{ + public class FunctionSetting : DoorLockCommonLayout + { + #region 鏋勯�犲嚱鏁� + /// <summary> + /// 鏋勯�犲嚱鏁� + /// </summary> + /// <param name="doorLock"></param> + public FunctionSetting(Room room, CommonDevice doorLock) + { + this.doorLock = doorLock as ZigBee.Device.DoorLock; + currentRoom = room; + deviceUI = doorLock; + listNewDevice.Add(doorLock); + BackgroundColor = Shared.Common.ZigbeeColor.Current.GXCTopViewBackgroundColor; + } + #endregion + + #region 鍙橀噺鐢虫槑 + public ZigBee.Device.DoorLock doorLock = null; + /// <summary> + /// 褰撳墠鎴块棿 + /// </summary> + Room currentRoom; + /// <summary> + /// 璁惧UI瀵硅薄 + /// </summary> + CommonDevice deviceUI; + /// <summary> + /// 璁惧闇�瑕佷繚瀛樼殑璁惧鍚嶅瓧 + /// </summary> + private Dictionary<int, string> dicDeviceSaveName = new Dictionary<int, string>(); + /// <summary> + /// 褰撳墠閫夋嫨鐨勮澶� + /// </summary> + private CommonDevice nowSelectDevice = null; + /// <summary> + /// 璁惧澶囨敞鐨勬帶浠� + /// </summary> + private FrameCaptionInputControl btnDeviceName = null; + /// <summary> + /// 璁惧鐨勬煇涓�鍥炶矾 + /// </summary> + private CommonDevice deviceObj = null; + /// <summary> + /// 璁惧瀵硅薄 + /// </summary> + private List<CommonDevice> listNewDevice = new List<CommonDevice> { }; + Action action; + Action actionNone; + string modifyDeviceName = ""; + bool IsModifyName = true; + public Action<string> devicNameAction; + private VerticalListControl listview = null;//鍔熻兘鍒楄〃 + FrameLayout bottomFrameLayout; + #endregion + + #region UI鏄剧ず + /// <summary> + /// UI鏄剧ず + /// </summary> + public void Show() + { + this.TopFrameLayout(this, Language.StringByID(R.MyInternationalizationString.DoorLockFunctionSetting)); + + EventHandler<MouseEventArgs> eHandlerBack = (sender, e) => + { + RemoveFromParent(); + }; + this.btnBack.MouseUpEventHandler += eHandlerBack; + this.btnBackFrameLayout.MouseUpEventHandler += eHandlerBack; + this.MidFrameLayout(this); + + MidFrameLayoutContent(); + + } + #endregion + + #region 涓儴鏄剧ず + public void MidFrameLayoutContent() + { + //鍥剧墖 + var btnPic = new DeviceInfoIconControl(); + btnPic.Y = Application.GetRealHeight(92); + btnPic.Gravity = Gravity.CenterHorizontal; + this.midFrameLayout.AddChidren(btnPic); + btnPic.InitControl(doorLock); + + var btnDeviceText = new Button() + { + Y = Application.GetRealHeight(288), + Height = Application.GetRealHeight(60), + Gravity = Gravity.CenterHorizontal, + TextColor = ZigbeeColor.Current.XMBlack, + TextSize = 15, + Text = Common.LocalDevice.Current.GetDeviceMacName(doorLock), + }; + this.midFrameLayout.AddChidren(btnDeviceText); + + BottomFrameLayout(); + } + #endregion + + #region 搴曢儴鏄剧ず + public void BottomFrameLayout() + { + #region UI + bottomFrameLayout = new FrameLayout() + { + Height = Application.GetRealHeight(1319), + Y = Application.GetRealHeight(418), + BackgroundColor = ZigbeeColor.Current.XMWhite, + }; + this.midFrameLayout.AddChidren(bottomFrameLayout); + bottomFrameLayout.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight); + + var informationEdit = new Button() + { + Height = Application.GetRealHeight(60), + X = Application.GetRealWidth(58), + Y = Application.GetRealHeight(81), + Text = Language.StringByID(R.MyInternationalizationString.InformationEdit), + TextColor = Shared.Common.ZigbeeColor.Current.XMBlack, + TextAlignment = TextAlignment.CenterLeft, + TextSize = 15, + }; + bottomFrameLayout.AddChidren(informationEdit); + + listview = new VerticalListControl() + { + Height = Application.GetRealHeight(1319 - 141), + Y = Application.GetRealHeight(170), + }; + bottomFrameLayout.AddChidren(listview); + #endregion + + FunctionDetail(doorLock); + } + #endregion + + #region 鍔熻兘鏄剧ず + void FunctionDetail(ZigBee.Device.DoorLock doorLock) + { + listview.RemoveAll(); + //璁惧澶囨敞 + string caption = Language.StringByID(R.MyInternationalizationString.DeviceRemarkXm); + string deviceName = Common.LocalDevice.Current.GetDeviceMacName(doorLock); + var btnNote = new FrameCaptionInputControl(caption, deviceName, listview.rowSpace / 2); + btnNote.txtInput.MaxByte = 48;//闄愬埗鍙兘杈撳叆48涓瓧鑺� + listview.AddChidren(btnNote); + btnNote.InitControl(); + //鍒掔嚎 + btnNote.AddBottomLine(); + btnNote.txtInput.FinishInputEvent += () => + { + string oldName = Common.LocalDevice.Current.GetDeviceMacName(doorLock); + if (btnNote.Text == string.Empty) + { + btnNote.Text = oldName; + } + if (oldName != btnNote.Text) + { + //淇敼鍚嶅瓧 + this.DeviceReName(btnNote.Text, false); + } + }; + + //鎵�灞炲尯鍩� + var rowBeloneArea = new BelongAreaControl(listview.rowSpace / 2); + listview.AddChidren(rowBeloneArea); + rowBeloneArea.InitControl(Language.StringByID(R.MyInternationalizationString.uBelongArea), this.listNewDevice); + //搴曠嚎 + rowBeloneArea.AddBottomLine(); + + var listCheck = new List<string>(); + rowBeloneArea.SelectRoomEvent += (roomKeys) => + { + //閫夋嫨鏈垎閰嶆椂,娓呯┖ + if (roomKeys == string.Empty) { listCheck = new List<string>(); } + foreach (var device in this.listNewDevice) + { + if (roomKeys == string.Empty) + { + //濡傛灉閫夋嫨鐨勬槸鏈垎閰嶏紝鍒欏畠鐨勫叏閮ㄥ洖璺棤鏉′欢鍏ㄩ儴娓呯┖鎴块棿 + HdlRoomLogic.Current.ChangedRoom(device, roomKeys); + continue; + } + var room = HdlRoomLogic.Current.GetRoomByDevice(device); + string mainKeys = LocalDevice.Current.GetDeviceMainKeys(device); + if (room == null) + { + //杩欓噷鏈夌偣鐗规畩,濡傛灉鍥炶矾娌℃湁璁剧疆鏈夊尯鍩熺殑鏃跺��,鎵嶈缃� + listCheck.Add(mainKeys); + HdlRoomLogic.Current.ChangedRoom(device, roomKeys); + } + else if (listCheck.Contains(mainKeys) == true) + { + //濡傛灉杩欎釜鍥炶矾涔嬪墠閮借繕娌℃湁鍖哄煙,鍦ㄦ湰鐣岄潰杩樻病鏈夊叧闂箣鍓�,鍙互鏃犳潯浠堕殢渚垮彉鏇� + HdlRoomLogic.Current.ChangedRoom(device, roomKeys); + } + } + //淇濆瓨璁惧鎴块棿绱㈠紩 + Common.LocalDevice.Current.SaveRealDeviceRoomId(this.listNewDevice, roomKeys); + }; + + //璁惧妯″潡 + caption = Language.StringByID(R.MyInternationalizationString.BelongDevice); + deviceName = Common.LocalDevice.Current.GetDeviceObjectText(listNewDevice); + var btnType = new FrameCaptionViewControl(caption, deviceName, listview.rowSpace / 2); + btnType.UseClickStatu = false; + listview.AddChidren(btnType); + btnType.InitControl(); + //鍒掔嚎 + btnType.AddBottomLine(); + + //娣诲姞鍏ㄩ儴鑿滃崟 + this.AddAllMenuRow(); + FinishInitControl(bottomFrameLayout, this.listview); + //淇濆瓨 + var btnFinish = new BottomClickButton(); + btnFinish.Y = Application.GetRealHeight(1054); + btnFinish.TextID = R.MyInternationalizationString.uSave; + bottomFrameLayout.AddChidren(btnFinish); + btnFinish.ButtonClickEvent += (sender, e) => + { + string oldName = Common.LocalDevice.Current.GetDeviceMacName(listNewDevice[0]); + if (btnNote.Text.Trim() == string.Empty) + { + btnNote.Text = oldName; + } + if (oldName != btnNote.Text.Trim()) + { + //淇敼鍚嶅瓧 + this.DeviceReName(btnNote.Text.Trim(), true); + } + else + { + //鍏抽棴鑷韩 + this.CloseForm(); + } + }; + } + #endregion + + #region 娣诲姞鍏ㄩ儴鑿滃崟 + /// <summary> + /// 娣诲姞鍏ㄩ儴鑿滃崟 + /// </summary> + private void AddAllMenuRow() + { + if (UserCenterResourse.UserInfo.AuthorityNo == 1) + { + //娣诲姞銆愪复鏃跺瘑鐮併�戣 + this.AddTempPasswordRow(); + //娣诲姞銆愯繙绋嬪紑閿併�戣 + this.AddRemoteUnLocksRow(); + //娣诲姞銆愰棬閿佹椂闂淬�戣 + this.AddDoorLocksTimeRow(); + } + else + { + //娣诲姞銆愯繙绋嬪紑閿併�戣 + this.AddRemoteUnLocksRow(); + } + } + #endregion + + #region 涓存椂瀵嗙爜 + /// <summary> + /// 涓存椂瀵嗙爜 + /// </summary> + private void AddTempPasswordRow() + { + //鐢ㄦ埛绠$悊 + string caption = Language.StringByID(R.MyInternationalizationString.TemporaryPassword); + var btnRow = new FrameRowControl(listview.rowSpace / 2); + listview.AddChidren(btnRow); + btnRow.AddLeftCaption(caption, 600); + //鍚戝彸鍥炬爣 + btnRow.AddRightArrow(); + //搴曠嚎 + btnRow.AddBottomLine(); + btnRow.ButtonClickEvent += async (sender, e) => + { + action = async () => + { + var temporaryPassword = new Shared.Phone.UserCenter.DoorLock.TemporaryPassword(doorLock); + Shared.Phone.UserView.HomePage.Instance.AddChidren(temporaryPassword); + Shared.Phone.UserView.HomePage.Instance.PageIndex += 1; + temporaryPassword.Show(); + }; + actionNone = async () => + { + Shared.Phone.UserCenter.DoorLock.DoorLockCommonLayout.SecurityRequest(doorLock); + }; + HdlCheckLogic.Current.CheckSecondarySecurity(action, actionNone); + }; + } + + #endregion + + #region 杩滅▼寮�閿� + /// <summary> + /// 娣诲姞銆愯繙绋嬪紑閿併�戣锛堥棬閿佷笓鐢級 + /// </summary> + private void AddRemoteUnLocksRow() + { + //杩滅▼寮�閿� + string caption = Language.StringByID(R.MyInternationalizationString.uRemoteUnLocks); + var btnRow = new FrameRowControl(listview.rowSpace / 2); + btnRow.UseClickStatu = false; + listview.AddChidren(btnRow); + btnRow.AddLeftCaption(caption, 600); + //寮�鍏冲浘鏍� + var btnswitch = btnRow.AddMostRightSwitchIcon(); + //搴曠嚎 + btnRow.AddBottomLine(); + + var doorLock = (ZigBee.Device.DoorLock)listNewDevice[0]; + if (string.IsNullOrEmpty(doorLock.RemoteUnlockPassword) == false) + { + btnswitch.IsSelected = true; + } + + btnswitch.ButtonClickEvent += async (sender, e) => + { + if (UserCenterResourse.UserInfo.AuthorityNo == 1) + { + if (btnswitch.IsSelected == true) + { + btnswitch.IsSelected = false; + doorLock.RemoteUnlockPassword = string.Empty; + return; + } + var frame = new DoorLock.DoorLockCommonLayout(); + frame.RemotePasswordDialog((ZigBee.Device.DoorLock)listNewDevice[0], btnswitch.btnIcon); + frame = null; + } + else + { + var result = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockOperateAccess(doorLock, Shared.Common.Config.Instance.Guid); + if (result == false) + { + var result1 = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockUnlockAccess(doorLock, Shared.Common.Config.Instance.Guid); + if (result1 == true) + { + if (btnswitch.IsSelected == true) + { + btnswitch.IsSelected = false; + doorLock.RemoteUnlockPassword = string.Empty; + return; + } + var frame = new DoorLock.DoorLockCommonLayout(); + frame.RemotePasswordDialog((ZigBee.Device.DoorLock)listNewDevice[0], btnswitch.btnIcon); + frame = null; + } + else + { + this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.NoAccess)); + } + } + else + { + this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.AccountIsFreezed)); + } + } + }; + } + + #endregion + + #region 闂ㄩ攣鏃堕棿 + + /// <summary> + /// 娣诲姞銆愰棬閿佹椂闂淬�戣锛堥棬閿佷笓鐢級 + /// </summary> + private void AddDoorLocksTimeRow() + { + //闂ㄩ攣鏃堕棿 + string caption = Language.StringByID(R.MyInternationalizationString.uDoorLocksTime); + var btnRow = new FrameRowControl(listview.rowSpace / 2); + listview.AddChidren(btnRow); + btnRow.AddLeftCaption(caption, 600); + //鍚戝彸鍥炬爣 + btnRow.AddRightArrow(); + //搴曠嚎 + btnRow.AddBottomLine(); + var doorLock = this.listNewDevice[0] as ZigBee.Device.DoorLock; + btnRow.ButtonClickEvent += async (sender, e) => + { + if (UserCenterResourse.UserInfo.AuthorityNo == 1) + { + var tempPage = new Shared.Phone.UserCenter.DoorLock.TimeSettignPage(doorLock, "DoorLockTime"); + Shared.Phone.UserView.HomePage.Instance.AddChidren(tempPage); + Shared.Phone.UserView.HomePage.Instance.PageIndex += 1; + tempPage.Show(); + } + else + { + var result = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockOperateAccess(doorLock, Shared.Common.Config.Instance.Guid); + if (result == false) + { + var tempPage = new Shared.Phone.UserCenter.DoorLock.TimeSettignPage(doorLock, "DoorLockTime"); + Shared.Phone.UserView.HomePage.Instance.AddChidren(tempPage); + Shared.Phone.UserView.HomePage.Instance.PageIndex += 1; + tempPage.Show(); + } + else + { + this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.AccountIsFreezed)); + } + } + }; + } + + #endregion + + #region 璁惧閲嶅懡鍚� + /// <summary> + /// 璁惧閲嶅懡鍚� + /// </summary> + /// <param name="i_deviceName">deviceName.</param> + private void DeviceReName(string i_deviceName, bool closeForm) + { + //寮�鍚繘搴︽潯 + this.ShowProgressBar(); + + //淇敼MAC鍚� + string deviceName = i_deviceName.Trim(); + var result = Common.LocalDevice.Current.ReMacName(listNewDevice, deviceName); + //鍏抽棴杩涘害鏉� + this.CloseProgressBar(); + + if (result == false) + { + return; + } + else + { + if (devicNameAction != null) + { + devicNameAction(deviceName); + } + } + if (closeForm == true) + { + //鍏抽棴鐣岄潰 + this.CloseForm(); + } + else + { + //璁惧澶囨敞淇敼鎴愬姛! + string msg = Language.StringByID(R.MyInternationalizationString.uDeviceReNoteSuccess); + this.ShowMassage(ShowMsgType.Tip, msg); + } + } + #endregion + + #region 琛屾暟瓒呰繃瀹瑰櫒鏃讹紝琛ヤ竴涓┖鐧紽rameLayout + /// <summary> + /// 琛屾暟瓒呰繃瀹瑰櫒鏃讹紝琛ヤ竴涓┖鐧紽rameLayout锛屼娇涔嬭兘婊戝姩 + /// </summary> + void FinishInitControl(FrameLayout bodyFrameLayout, VerticalListControl listview) + { + if (listview.ChildrenCount > 0) + { + var realHeight = listview.GetChildren(0).Height * listview.ChildrenCount; + + if (bodyFrameLayout.Height - Application.GetRealHeight(1054) + realHeight > listview.Height) + { + //淇冧娇琚尅浣忕殑鑿滃崟鑳藉鍚戜笂婊戝姩 + var frameTemp = new FrameLayout(); + frameTemp.Height = bodyFrameLayout.Height - Application.GetRealHeight(1054) + Application.GetRealHeight(115); + listview.AddChidren(frameTemp); + } + } + } + #endregion + + #region 绉婚櫎鏂规硶 + /// <summary> + /// 閲嶅啓绉婚櫎鏂规硶 + /// </summary> + public override void RemoveFromParent() + { + base.RemoveFromParent(); + } + #endregion + } +} + + -- Gitblit v1.8.0