using System; using System.Collections.Generic; using System.Globalization; using Shared.Common; using Shared.Phone.UserCenter; using ZigBee.Device; namespace Shared.Phone.Device.CommonForm { public class DeviceDetailInfo : FrameLayout { #region ◆ 变量____________________________ /// /// bodyFrameLayout /// private FrameLayout bodyFrameLayout; /// /// 所属区域 /// private string roomName; /// /// action /// public Action EditAction; /// /// curRoom /// private Common.Room curRoom; /// /// curRoom /// private Common.Room befRoom; /// /// sharedRow /// private DeviceInfoRow sharedRow; /// /// functionTypeRow /// private DeviceInfoRow functionTypeRow; #endregion #region ◆ 移除____________________________ /// /// RemoveFromParent /// public override void RemoveFromParent() { EditAction = null; base.RemoveFromParent(); } #endregion #region ◆ 构造方法_________________________ /// /// DeviceDetailInfo /// public DeviceDetailInfo() { BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor; } #endregion #region ◆ 显示界面_________________________ /// /// Show /// /// /// public void Show(DeviceUI device, Common.Room room) { Init(device); AddTop(); AddBodyView(device,room); } #endregion #region Add____________________________________ /// /// AddTop /// public void AddTop() { var top = new TopFrameLayout(); AddChidren(top); top.InitTopview(); top.SetTopTitle(R.MyInternationalizationString.FunctionSetting); top.backButton.MouseUpEventHandler += (sender, e) => { RemoveFromParent(); }; } /// /// AddBodyView /// public void AddBodyView(DeviceUI device, Common.Room room) { bodyFrameLayout = new FrameLayout() { Y = Application.GetRealHeight(184), Height = Application.GetRealHeight(1737), BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor, }; AddChidren(bodyFrameLayout); var deviceBG = new Button() { Y = Application.GetRealHeight(118), Width = Application.GetMinRealAverage(207), Height = Application.GetMinRealAverage(207), Gravity = Gravity.CenterHorizontal, BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor, Radius = (uint)Application.GetMinRealAverage(207/2) }; bodyFrameLayout.AddChidren(deviceBG); var deviceBG2 = new Button() { Y = Application.GetRealHeight(130), Width = Application.GetMinRealAverage(184), Height = Application.GetMinRealAverage(184), Gravity = Gravity.CenterHorizontal, BackgroundColor = ZigbeeColor.Current.GXCSelectedBackgroundColor, Radius = (uint)Application.GetMinRealAverage(184/2) }; bodyFrameLayout.AddChidren(deviceBG2); var deviceIMG = new Button() { Y = Application.GetRealHeight(161), Width = Application.GetMinRealAverage(124), Height = Application.GetMinRealAverage(124), UnSelectedImagePath = device.IconPath, Gravity = Gravity.CenterHorizontal }; bodyFrameLayout.AddChidren(deviceIMG); var info = Common.LocalDevice.Current.GetDeviceBelongEnumInfo(device.CommonDevice); var deviceTypeName = new Button() { Y = Application.GetRealHeight(360), Width = Application.GetRealWidth(900), Height = Application.GetRealHeight(80), TextColor = ZigbeeColor.Current.GXCTextBlackColor, TextID = info.BeloneTextId, Gravity = Gravity.CenterHorizontal, TextSize = 15 }; bodyFrameLayout.AddChidren(deviceTypeName); var infoFL = new FrameLayout { Y = Application.GetRealHeight(540), Height = Application.GetRealHeight(1195), BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor }; bodyFrameLayout.AddChidren(infoFL); var rectCornerID = HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight; infoFL.SetCornerWithSameRadius(Application.GetRealHeight(58), rectCornerID); var tipBtn = new Button { X = Application.GetRealWidth(CommonFormResouce.X_Left), Y = Application.GetRealHeight(81), Width = Application.GetRealWidth(500), Height = Application.GetRealHeight(60), TextColor = ZigbeeColor.Current.GXCTextDeepBlackColor, TextAlignment = TextAlignment.CenterLeft, TextSize = 15, TextID = R.MyInternationalizationString.EditInfo }; infoFL.AddChidren(tipBtn); var infoScrolView = new VerticalScrolViewLayout { Y = Application.GetRealHeight(170-12), Height = Application.GetRealHeight(600), ScrollEnabled = false, VerticalScrollBarEnabled = false }; infoFL.AddChidren(infoScrolView); var nameFL = new FrameLayout { Height = Application.GetRealHeight(127 + 12) }; infoScrolView.AddChidren(nameFL); var nameRow = new DeviceInfoEditRow(12); nameRow.Init(); nameRow.SetTipTitle($"{Language.StringByID(R.MyInternationalizationString.FunctionName)} : "); nameRow.SetTitle(string.IsNullOrEmpty(Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice)) ? Language.StringByID(R.MyInternationalizationString.UNKnown) : Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice)); nameFL.AddChidren(nameRow); var zoneFL = new FrameLayout { Height = Application.GetRealHeight(127 + 12) }; if (room != null && room.IsLove == false) { infoScrolView.AddChidren(zoneFL); } var zoneRow = new DeviceInfoRow(12); zoneRow.Init(); zoneRow.SetTipTitle($"{Language.StringByID(R.MyInternationalizationString.BelongZone)} : "); zoneRow.SetTitle(roomName); zoneFL.AddChidren(zoneRow); var modelFL = new FrameLayout { Height = Application.GetRealHeight(127 + 12) }; infoScrolView.AddChidren(modelFL); var modelRow = new DeviceInfoRow(12); modelRow.Init(); modelRow.SetTipTitle($"{Language.StringByID(R.MyInternationalizationString.BelongModel)} : "); modelRow.SetTitle(string.IsNullOrEmpty(device.CommonDevice.DeviceName) ? Language.StringByID(R.MyInternationalizationString.UNKnown) : device.CommonDevice.DeviceName); modelRow.HideNext(true); modelFL.AddChidren(modelRow); if (device.CommonDevice.Type==DeviceType.OnOffOutput || device.CommonDevice.Type==DeviceType.AirSwitch) { var typeFL = new FrameLayout { Height = Application.GetRealHeight(127 + 12) }; infoScrolView.AddChidren(typeFL); functionTypeRow = new DeviceInfoRow(12); functionTypeRow.Init(); functionTypeRow.SetTipTitle($"{Language.StringByID(R.MyInternationalizationString.FunctionType)} : "); //functionTypeRow.SetTitle(device.CommonDevice.DfunctionType); typeFL.AddChidren(functionTypeRow); var dfunctionType = device.CommonDevice.DfunctionType; //功能类型的翻译名字 string strT = string.Empty; if (dfunctionType == DeviceFunctionType.A灯光) { strT = Language.StringByID(R.MyInternationalizationString.uLight); } else if (dfunctionType == DeviceFunctionType.A开关) { strT = Language.StringByID(R.MyInternationalizationString.uSwitch); } else if (dfunctionType == DeviceFunctionType.A插座) { strT = Language.StringByID(R.MyInternationalizationString.uSocket1); } functionTypeRow.SetTitle(strT); functionTypeRow.ClickBtn.MouseUpEventHandler += (sender, e) => { var DfunctionType = device.CommonDevice.DfunctionType; //功能类型的翻译名字 int nowSelectNo = 1; string strType = string.Empty; if (DfunctionType == DeviceFunctionType.A灯光) { strType = Language.StringByID(R.MyInternationalizationString.uLight); nowSelectNo = 1; } else if (DfunctionType == DeviceFunctionType.A开关) { strType = Language.StringByID(R.MyInternationalizationString.uSwitch); nowSelectNo = 0; } else if (DfunctionType == DeviceFunctionType.A插座) { strType = Language.StringByID(R.MyInternationalizationString.uSocket1); nowSelectNo = 2; } //显示列表 var listText = new List(); listText.Add(Language.StringByID(R.MyInternationalizationString.uSwitch));//开关 listText.Add(Language.StringByID(R.MyInternationalizationString.uLight));//灯光 listText.Add(Language.StringByID(R.MyInternationalizationString.uSocket1));//插座 //标题:选择功能类型 var title = Language.StringByID(R.MyInternationalizationString.uSelectFunctionType); var form = new BottomItemSelectForm(); form.AddForm(title, listText, nowSelectNo); form.FinishSelectEvent += (selectNo) => { functionTypeRow.NameText.Text = listText[selectNo]; nowSelectNo = selectNo; //记录起当前选择的功能类型 if (selectNo == 0) { device.CommonDevice.DfunctionType = DeviceFunctionType.A开关; } else if (selectNo == 1) { device.CommonDevice.DfunctionType = DeviceFunctionType.A灯光; } else { device.CommonDevice.DfunctionType = DeviceFunctionType.A插座; } }; }; } var confirmBtn = new CommonForm.CompleteButton(962, 900, 127); confirmBtn.SetTitle(R.MyInternationalizationString.Save); infoFL.AddChidren(confirmBtn); #region event EventHandler selectZoneEvent = (sender, e) => { var zone = new SelectZone(); zone.Init(); zone.ZoneAction += (selectRoom) => { curRoom = selectRoom; zoneRow.SetTitle(selectRoom.GetZoneName()); }; }; zoneRow.ClickBtn.MouseUpEventHandler += selectZoneEvent; EventHandler selectDeviceIconEvent = (sender, e) => { var localPic = new DeviceIconSelectedIMGByLocal(); UserView.HomePage.Instance.AddChidren(localPic); UserView.HomePage.Instance.PageIndex += 1; localPic.Show(); localPic.action = (unSelectedImagePath, selectedImagePath) => { deviceIMG.UnSelectedImagePath = unSelectedImagePath; deviceIMG.SelectedImagePath = selectedImagePath; device.CommonDevice.IsCustomizeImage = true; }; }; deviceIMG.MouseUpEventHandler += selectDeviceIconEvent; confirmBtn.MouseUpEventHandler += (sender, e) => { try { CommonPage.Loading.Start(); if (device.CommonDevice == null) { CommonFormResouce.ShowTip(Language.StringByID(R.MyInternationalizationString.FailedPleaseTryAgain)); return; } if (device.CommonDevice.Type == DeviceType.OnOffOutput || device.CommonDevice.Type == DeviceType.AirSwitch) { if (device.IsCustomizeImage == false) { if (device.CommonDevice.DfunctionType == DeviceFunctionType.A开关) { device.CommonDevice.IconPath = "Device/Switch.png"; } else if (device.CommonDevice.DfunctionType == DeviceFunctionType.A插座) { device.CommonDevice.IconPath = "Device/Socket1.png"; } else if (device.CommonDevice.DfunctionType == DeviceFunctionType.A灯光) { device.CommonDevice.IconPath = "Device/Light.png"; } } else { //改图片 device.CommonDevice.IconPath = deviceIMG.UnSelectedImagePath; } } else { //改图片 device.CommonDevice.IconPath = deviceIMG.UnSelectedImagePath; } bool result; new System.Threading.Thread(async () => { result = await LocalDevice.Current.ReName(device.CommonDevice, nameRow.NameText.Text.Trim()); Application.RunOnMainThread(() => { CommonPage.Loading.Hide(); if (result) { //改房间 Shared.Common.Room.CurrentRoom.ChangedRoom(device.CommonDevice, curRoom.Id); device.CommonDevice.ReSave(); EditAction?.Invoke(device, curRoom); RemoveFromParent(); } else { CommonFormResouce.ShowTip(Language.StringByID(R.MyInternationalizationString.FailedPleaseTryAgain)); } }); }) { IsBackground = true }.Start(); } catch { CommonPage.Loading.Hide(); } }; #endregion } /// /// Init /// /// public void Init(DeviceUI device) { roomName = device.GetZone(); befRoom = Common.Room.CurrentRoom.GetRoomByDevice(device.CommonDevice); curRoom = Common.Room.CurrentRoom.GetRoomByDevice(device.CommonDevice); } #endregion } }