using System; using System.Collections.Generic; using Shared.Common; using ZigBee.Device; namespace Shared.Phone.UserCenter.DoorLock { public class FunctionSettingSub : DoorLockCommonLayout, ZigBee.Common.IStatus { /// /// 构造函数 /// /// public FunctionSettingSub(ZigBee.Device.DoorLock doorLock) { this.doorLock = doorLock; BackgroundColor = Shared.Common.ZigbeeColor.Current.GXCTopViewBackgroundColor; ZigBee.Device.ZbGateway.StatusList.Add(this); } #region ◆ 变量申明__________________________ ZigBee.Device.DoorLock doorLock; public Action devicNameAction; bool IsModifyName = true; string modifyDeviceName = ""; #endregion /// /// UI显示 /// public void Show() { this.TopFrameLayout(this, Language.StringByID(R.MyInternationalizationString.DoorLockFunctionSetting)); EventHandler eHandlerBack = (sender, e) => { RemoveFromParent(); }; this.btnBack.MouseUpEventHandler += eHandlerBack; this.btnBackFrameLayout.MouseUpEventHandler += eHandlerBack; this.MidFrameLayout(this); MidFrameLayoutContent(); } public void MidFrameLayoutContent() { var MidTopFrameLayout = new FrameLayout() { X = Application.GetRealWidth(449), Y = Application.GetRealHeight(58), Width = Application.GetRealWidth(184), Height = Application.GetRealHeight(184), BackgroundImagePath = "DoorLock/DoorlockPicture.png", }; this.midFrameLayout.AddChidren(MidTopFrameLayout); 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(); } public void BottomFrameLayout() { #region UI var 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); for (int i = 0; i < 4; i++) { var bottomRowLayout = new FrameLayout() { Height = Application.GetRealHeight(58), }; bottomFrameLayout.AddChidren(bottomRowLayout); var btnName = new Button() { Width = Application.GetRealWidth(233), Height = Application.GetRealHeight(58), X = Application.GetRealWidth(58), TextColor = Shared.Common.ZigbeeColor.Current.XMBlack, TextAlignment = TextAlignment.CenterLeft, TextSize = 14, }; bottomRowLayout.AddChidren(btnName); var btnNextFrameLayout = new FrameLayout() { Width = Application.GetRealWidth(104), Height = Application.GetRealHeight(58), X = Application.GetRealWidth(861 + 58), }; bottomRowLayout.AddChidren(btnNextFrameLayout); var btnNext = new Button() { Width = Application.GetRealWidth(58), Height = Application.GetRealHeight(58), X = Application.GetRealWidth(46) }; btnNextFrameLayout.AddChidren(btnNext); var btnLine = new FrameLayout() { Width = Application.GetRealWidth(965), Height = 1, X = Application.GetRealWidth(58), BackgroundColor = Shared.Common.ZigbeeColor.Current.XMRowLine, Visible = false, }; bottomFrameLayout.AddChidren(btnLine); if (i == 0) { bottomRowLayout.Y = Application.GetRealHeight(220); btnName.Text = Language.StringByID(R.MyInternationalizationString.DeviceRemarkXm) + ":"; btnNextFrameLayout.Width = btnNext.Width = Application.GetRealWidth(789 - 58 - 20); btnNextFrameLayout.X = Application.GetRealWidth(233 + 20); var btnDeviceNameEditText = new EditText() { X = Application.GetRealWidth(46), Width = Application.GetRealWidth(731), Height = Application.GetRealHeight(58), TextColor = ZigbeeColor.Current.XMGray3, TextSize = 14, PlaceholderTextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor2, TextAlignment = TextAlignment.CenterLeft, Text = string.IsNullOrEmpty(doorLock.DeviceName) ? Language.StringByID(R.MyInternationalizationString.UNKnown) : doorLock.DeviceName, }; btnNextFrameLayout.AddChidren(btnDeviceNameEditText); btnDeviceNameEditText.TextChangeEventHandler += (sender, e) => { modifyDeviceName = btnDeviceNameEditText.Text; }; Action actionEdit = async (obj) => { try { Application.RunOnMainThread(() => { CommonPage.Loading.Start("Loading..."); }); var doorLockDeviceList = new List { }; doorLockDeviceList.Add(doorLock); var result = await Common.LocalDevice.Current.ReMacName(doorLockDeviceList, btnDeviceNameEditText.Text); if (result) { IsModifyName = false; } else { IsModifyName = true; } } catch { } finally { Application.RunOnMainThread(() => { CommonPage.Loading.Hide(); }); } }; btnDeviceNameEditText.EditorEnterAction += actionEdit; btnLine.Visible = true; btnLine.Y = Application.GetRealHeight(303); } else if (i == 1) { bottomRowLayout.Y = Application.GetRealHeight(312); bottomRowLayout.Height = Application.GetRealHeight(127); btnName.Width = Application.GetRealWidth(0); btnNextFrameLayout.Width = Application.GetRealWidth(0); //所属区域 var rowBeloneArea = new BelongAreaControl(0); bottomRowLayout.AddChidren(rowBeloneArea); rowBeloneArea.InitControl(Language.StringByID(R.MyInternationalizationString.uBelongArea), doorLock); //底线 rowBeloneArea.AddBottomLine(); rowBeloneArea.SelectRoomEvent += (roomKeys) => { //变更房间 //Common.Room.CurrentRoom.ChangedRoom(doorLock, roomKeys); }; btnLine.Visible = false; } else if (i == 2) { bottomRowLayout.Y = Application.GetRealHeight(481); btnName.Text = Language.StringByID(R.MyInternationalizationString.BelongModel) + ":"; btnNextFrameLayout.Width = btnNext.Width = Application.GetRealWidth(789 - 58 - 20); btnNextFrameLayout.X = Application.GetRealWidth(253); btnNext.TextAlignment = TextAlignment.CenterLeft; btnNext.Height = Application.GetRealHeight(58); btnNext.Text = doorLock.DeviceName; btnNext.TextColor = Shared.Common.ZigbeeColor.Current.XMGray3; btnNext.TextSize = 14; btnLine.Visible = true; btnLine.Y = Application.GetRealHeight(575); } else if (i == 3) { bottomRowLayout.Y = Application.GetRealHeight(585 + 35); btnNext.X = Application.GetRealWidth(0); btnName.Text = Language.StringByID(R.MyInternationalizationString.RemotelyUnlock); btnNext.Width = Application.GetRealWidth(104); btnNext.Height = Application.GetRealHeight(63); btnNext.UnSelectedImagePath = "DoorLock/Switch.png"; btnNext.SelectedImagePath = "DoorLock/SwitchOn.png"; btnLine.Visible = true; btnLine.Y = Application.GetRealHeight(714); if (string.IsNullOrEmpty(doorLock.RemoteUnlockPassword)) { btnNext.IsSelected = false; } else { btnNext.IsSelected = true; } } int currentIndex = i; EventHandler eHandler = async (sender, e) => { if (currentIndex == 3) { 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) { btnNext.IsSelected = !btnNext.IsSelected; if (btnNext.IsSelected) { if (string.IsNullOrEmpty(doorLock.RemoteUnlockPassword)) { RemotePasswordDialog(doorLock, btnNext); } } else { doorLock.RemoteUnlockPassword = ""; } } else { new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.NoAccess), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance); } } else { new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.AccountIsFreezed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance); } } }; btnNext.MouseDownEventHandler += eHandler; if (i != 3) { bottomRowLayout.MouseDownEventHandler += eHandler; btnName.MouseDownEventHandler += eHandler; btnNextFrameLayout.MouseDownEventHandler += eHandler; } #endregion } //保存 var btnFinifh = new Button() { Width = Application.GetRealWidth(907), Height = Application.GetRealHeight(127), Y = Application.GetRealHeight(1472), Gravity = Gravity.CenterHorizontal, Radius = (uint)Application.GetRealHeight(127) / 2, TextID = R.MyInternationalizationString.Save, BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack, TextColor = Shared.Common.ZigbeeColor.Current.XMWhite, TextSize = 16, IsBold = true, }; this.midFrameLayout.AddChidren(btnFinifh); btnFinifh.MouseUpEventHandler += (sender, e) => { System.Threading.Tasks.Task.Run(async () => { Application.RunOnMainThread(() => { CommonPage.Loading.Start("Loading..."); }); try { if (IsModifyName) { var doorLockDeviceList = new List { }; doorLockDeviceList.Add(doorLock); var result = await Common.LocalDevice.Current.ReMacName(doorLockDeviceList, modifyDeviceName); if (result) { if (devicNameAction != null) { devicNameAction(modifyDeviceName); } } } } catch { } finally { Application.RunOnMainThread(() => { CommonPage.Loading.Hide(); }); } }); }; } #region ◆ 接口实现__________________________ /// /// 处理变化事件 --将弃用 改用DeviceInfoChange() /// /// The changed. /// Common. public void Changed(CommonDevice common) { } /// /// 处理变化事件 /// /// /// public void DeviceInfoChange(CommonDevice common, string typeTag) { } /// /// Changeds the IL ogic status. /// /// Logic. public void ChangedILogicStatus(ZigBee.Device.Logic logic) { } /// /// Changeds the IS cene status. /// /// Scene. public void ChangedISceneStatus(Scene scene) { } #endregion } }