From 9a4b76398009cf76c508d61f7e48fb6f5cb7ac2d Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期二, 21 七月 2020 09:46:53 +0800
Subject: [PATCH] 请合并最新多功能面板代码
---
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/FunctionSetting.cs | 498 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 498 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..8d69a71
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/FunctionSetting.cs
@@ -0,0 +1,498 @@
+锘縰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);
+ 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