From 3aa397ab145382935492b11c1f18c9634e69910b Mon Sep 17 00:00:00 2001 From: xm <1271024303@qq.com> Date: 星期四, 10 十二月 2020 16:45:00 +0800 Subject: [PATCH] 请合并,门锁和晾衣架第一版代码 --- ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFunctionSettionForm.cs | 1247 ++++++++++++++++++++++++++++++++++------------------------ 1 files changed, 723 insertions(+), 524 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFunctionSettionForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFunctionSettionForm.cs old mode 100755 new mode 100644 index 3b352d4..36d7d65 --- a/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFunctionSettionForm.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFunctionSettionForm.cs @@ -1,533 +1,732 @@ 锘縰sing System; using System.Collections.Generic; using System.Text; +using Java.Util; using ZigBee.Device; namespace Shared.Phone.UserCenter.Device -{ +{ + /// <summary> + /// 璁惧鐨勫姛鑳借缃晫闈� + /// </summary> + public class DeviceFunctionSettionForm : EditorCommonForm + { + #region 鈻� 鍙橀噺澹版槑___________________________ + /// <summary> - /// 璁惧鐨勫姛鑳借缃晫闈� + /// 鍒楄〃鎺т欢 /// </summary> - public class DeviceFunctionSettionForm : EditorCommonForm - { - #region 鈻� 鍙橀噺澹版槑___________________________ - - /// <summary> - /// 鍒楄〃鎺т欢 - /// </summary> - private FrameListControl listview = null; - /// <summary> - /// 褰撳墠閫夋嫨鐨勮澶� - /// </summary> - private CommonDevice nowSelectDevice = null; - /// <summary> - /// 褰撳墠閫夋嫨鐨勫洖璺帶浠� - /// </summary> - private NormalViewControl nowSelectControl = null; - /// <summary> - /// 璁惧澶囨敞鐨勬帶浠� - /// </summary> - private FrameCaptionInputControl frameDeviceName = null; - /// <summary> - /// 璁惧鐨勬煇涓�鍥炶矾 - /// </summary> - private CommonDevice deviceObj = null; - /// <summary> - /// 鍙樉绀哄悓涓�绉嶇被鍨嬬殑鍥炶矾 - /// </summary> - private bool onlyType = false; - /// <summary> - /// 璁惧闇�瑕佷繚瀛樼殑璁惧鍚嶅瓧 - /// </summary> - private Dictionary<int, string> dicDeviceSaveName = new Dictionary<int, string>(); - /// <summary> - /// 淇℃伅缂栬緫鎺т欢 - /// </summary> - private InformationEditorControl tableContr = null; - - #endregion - - #region 鈻� 鍒濆鍖朹____________________________ - - /// <summary> - /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓) - /// </summary> - /// <param name="i_device">璁惧鐨勬煇涓�鍥炶矾</param> - /// <param name="i_onlyType">鍙樉绀哄悓涓�绉嶇被鍨嬬殑鍥炶矾</param> - public void ShowForm(CommonDevice i_device, bool i_onlyType) - { - this.deviceObj = i_device; - this.onlyType = i_onlyType; - - //璁剧疆澶撮儴淇℃伅 - base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uFunctionSettingUp)); - - //鍒濆鍖栦腑閮ㄤ俊鎭� - this.InitMiddleFrame(); - - //鍒濆鍖栧彸涓婅鑿滃崟 - this.InitTopRightMenu(); - } - - /// <summary> - /// 鍒濆鍖栦腑閮ㄤ俊鎭� - /// </summary> - private void InitMiddleFrame() - { - //娓呯┖bodyFrame - this.ClearBodyFrame(); - - var listBackControl = new VerticalFrameControl(); - listBackControl.Height = bodyFrameLayout.Height; - bodyFrameLayout.AddChidren(listBackControl); - - //鍒濆鍖栨甯� - this.tableContr = new InformationEditorControl(); - - if (this.deviceObj.Type == DeviceType.FreshAir || this.deviceObj.Type == DeviceType.PMSensor) - { - this.listview = tableContr.InitControl(listBackControl.frameTable, Language.StringByID(R.MyInternationalizationString.uDeviceEditor), 1028); - } - else - { - this.listview = tableContr.InitControl(listBackControl.frameTable, Language.StringByID(R.MyInternationalizationString.uDeviceEditor), 1128); - } - - //鍒濆鍖栬澶囧洖璺浘鏍� - this.InitDeviceEpointIcon(listBackControl); - - //淇濆瓨 - var btnFinish = new BottomClickButton(); - btnFinish.TextID = R.MyInternationalizationString.uSave; - bodyFrameLayout.AddChidren(btnFinish); - btnFinish.ButtonClickEvent += (sender, e) => - { - //璁板綍璧峰綋鍓嶆鍦ㄦ搷浣滅殑鍥炶矾鍚嶅瓧 - dicDeviceSaveName[nowSelectDevice.DeviceEpoint] = frameDeviceName.Text.Trim(); - foreach (var epoint in dicDeviceSaveName.Keys) - { - var device = Common.LocalDevice.Current.GetDevice(deviceObj.DeviceAddr, epoint); - if (device == null || dicDeviceSaveName[epoint] == string.Empty) - { - //涓嶈兘鍏佽绌虹櫧鍚嶅瓧 - continue; - } - string newName = dicDeviceSaveName[epoint]; - string oldName = Common.LocalDevice.Current.GetDeviceEpointName(device); - if (oldName != newName) - { - //璁惧鍚嶇О淇敼 - var result = Common.LocalDevice.Current.ReName(device, newName); - if (result == false) - { - return; - } - } - } - //鍏抽棴鑷韩 - this.CloseForm(); - }; - //濡傛灉褰撳墠鏄睍绀烘ā鏉�,鍒欎笉鑳界紪杈� - if (Common.Config.Instance.Home.IsShowTemplate == true) - { - btnFinish.CanClick = false; - } - } - - /// <summary> - /// 鍒濆鍖栬彍鍗曡 - /// </summary> - private void InitMenuRow() - { - this.listview.RemoveAll(); - - //鍥炶矾澶囨敞 - string caption = Language.StringByID(R.MyInternationalizationString.uDeviceEpointNote); - string nameValue = Common.LocalDevice.Current.GetDeviceEpointName(nowSelectDevice); - if (dicDeviceSaveName.ContainsKey(nowSelectDevice.DeviceEpoint) == true) - { - nameValue = dicDeviceSaveName[nowSelectDevice.DeviceEpoint]; - } - - this.frameDeviceName = new FrameCaptionInputControl(caption, nameValue, listview.rowSpace / 2); - this.frameDeviceName.txtInput.MaxByte = 48;//闄愬埗鍙兘杈撳叆48涓瓧鑺� - listview.AddChidren(frameDeviceName); - frameDeviceName.InitControl(); - frameDeviceName.AddBottomLine(); - //濡傛灉褰撳墠鏄睍绀烘ā鏉�,鍒欓渶瑕佸鐞� - if (Common.Config.Instance.Home.IsShowTemplate == false) - { - frameDeviceName.txtInput.FinishInputEvent += () => - { - string oldName = Common.LocalDevice.Current.GetDeviceEpointName(nowSelectDevice); - if (frameDeviceName.Text.Trim() == string.Empty) - { - //灏嗗悕瀛楄繕鍘� - frameDeviceName.Text = oldName; - } - if (oldName != frameDeviceName.Text.Trim()) - { - //璁惧鍚嶇О淇敼 - var result = Common.LocalDevice.Current.ReName(nowSelectDevice, frameDeviceName.Text.Trim()); - if (result == false) - { - return; - } - //鍥炶矾澶囨敞淇敼鎴愬姛! - string msg = Language.StringByID(R.MyInternationalizationString.uDeviceEpointReNoteSuccess); - this.ShowMassage(ShowMsgType.Tip, msg); - } - }; - } - - //鎵�灞炲尯鍩� - var rowBeloneArea = new BelongAreaControl(listview.rowSpace / 2); - listview.AddChidren(rowBeloneArea); - rowBeloneArea.InitControl(Language.StringByID(R.MyInternationalizationString.uBelongArea), nowSelectDevice); - //搴曠嚎 - rowBeloneArea.AddBottomLine(); - rowBeloneArea.SelectRoomEvent += (roomKeys) => - { - //鍙樻洿鎴块棿 - HdlRoomLogic.Current.ChangedRoom(nowSelectDevice, roomKeys); - }; - - //娣诲姞鍔熻兘绫诲瀷琛� - this.AddFunctionTypeRow(); - //鍒濆鍖栨甯冨畬鎴� - tableContr.FinishInitControl(); - } - - #endregion - - #region 鈻� 鍙充笂瑙掕彍鍗昣________________________ - - /// <summary> - /// 鍒濆鍖栧彸涓婅鑿滃崟 - /// </summary> - private void InitTopRightMenu() - { - //妫�娴嬫鍥炶矾鏄惁鎷ユ湁瀹氫綅鍔熻兘 - if (Common.LocalDevice.Current.DeviceIsCanFixedPosition(nowSelectDevice) == false - || Common.Config.Instance.Home.IsShowTemplate == true) - { - return; - } - var btnIcon = new MostRightIconControl(69, 69); - btnIcon.UnSelectedImagePath = "Item/More.png"; - topFrameLayout.AddChidren(btnIcon); - btnIcon.InitControl(); - btnIcon.ButtonClickEvent += ((sender, e) => - { - //鏄剧ず鍙充笂瑙掕彍鍗曠晫闈� - this.ShowTopRightMenu(); - }); - } - - /// <summary> - /// 鏄剧ず鍙充笂瑙掕彍鍗曠晫闈� - /// </summary> - private void ShowTopRightMenu() - { - int menuCount = 1; - string deviceMenu = string.Empty; - //妫�娴嬫鍥炶矾鏄惁鎷ユ湁瀹氫綅鍔熻兘 - bool canTest = Common.LocalDevice.Current.DeviceIsCanFixedPosition(nowSelectDevice); - //if (canTest == true) - //{ - // menuCount = 2; - //} - var frame = new TopRightMenuControl(menuCount, 1); - if (canTest == true) - { - //瀹氫綅 - deviceMenu = Language.StringByID(R.MyInternationalizationString.uFixedPosition); - frame.AddRowMenu(deviceMenu, "Item/FixedPosition.png", "Item/FixedPositionSelected.png", () => - { - //鍙戦�佸畾浣嶅姛鑳� - Common.LocalDevice.Current.SetFixedPositionCommand(nowSelectDevice); - }); - } - - //鍒犻櫎 - //deviceMenu = Language.StringByID(R.MyInternationalizationString.uDelete); - //frame.AddRowMenu(deviceMenu, "Item/DeleteIcon2.png", "Item/DeleteIcon2Selected.png", () => - //{ - //}); - } - - #endregion - - #region 鈻� 鍔熻兘绫诲瀷___________________________ - - /// <summary> - /// 娣诲姞鍔熻兘绫诲瀷琛� - /// </summary> - private void AddFunctionTypeRow() - { - //鑷畾涔夊姛鑳界被鍨嬫帶浠� - var rowFunction = new DeviceFunctionTypeRowControl(nowSelectDevice, listview.rowSpace / 2); - if (rowFunction.CanShowRow == false) - { - return; - } - listview.AddChidren(rowFunction); - rowFunction.InitControl(); - //搴曠嚎 - rowFunction.AddBottomLine(); - } - - #endregion - - #region 鈻� 鍒濆鍖栬澶囧洖璺浘鏍嘷________________ - - /// <summary> - /// 鍒濆鍖栬澶囧洖璺浘鏍� - /// </summary> - private void InitDeviceEpointIcon(VerticalFrameControl listBackControl) - { - //鑾峰彇鎸夌粍鍒嗛厤鐨勮澶� - var listIcon = this.GetAllDeviceGroup(); - - var frameBorder = new FrameLayout(); - frameBorder.Y = Application.GetRealHeight(147); - frameBorder.Gravity = Gravity.CenterHorizontal; - frameBorder.Width = this.GetPictrueRealSize(887); - frameBorder.Height = Application.GetRealHeight(423); - frameBorder.Radius = (uint)Application.GetRealHeight(6); - listBackControl.frameTable.AddChidren(frameBorder); - - var frameBack = new FrameLayout(); - frameBack.Height = frameBorder.Height; - - if (listIcon.Count > 2) - { - //闇�瑕佹粦鍔ㄦ帶浠� - var listControl = new VerticalScrolViewLayout(); - listControl.Height = frameBorder.Height; - frameBorder.AddChidren(listControl); - - listControl.AddChidren(frameBack); - } - else - { - //涓嶉渶瑕佹粦鍔ㄦ帶浠� - frameBorder.AddChidren(frameBack); - } - - int index = 0; - for (int i = 0; i < listIcon.Count; i++) - { - var frame = new FrameLayout(); - frame.Width = frameBorder.Width; - frame.Height = this.GetPictrueRealSize(124); - frameBack.AddChidren(frame); - //鍒濆鍖栦竴琛岃澶囧浘鏍� - this.InitDeviceIconFrame(frame, listIcon[i], ref index); - - if (listIcon.Count == 1) - { - frame.Gravity = Gravity.CenterVertical; - - //濡傛灉鏄柊椋� - if (deviceObj.Type == DeviceType.FreshAir) - { - frame.RemoveFromParent(); - frameBorder.Y = Application.GetRealHeight(0); - frameBorder.Height = Application.GetRealHeight(709); - frameBack.BackgroundImagePath = "FreshAir/FreshAirRealDevicePic.png"; - frameBack.Width = this.GetPictrueRealSize(878); - frameBack.Height = this.GetPictrueRealSize(354); - frameBack.Y = Application.GetRealHeight(153); - frameBack.Gravity = Gravity.Center; - } - - //濡傛灉鏄疨M2.5 - if (deviceObj.Type == DeviceType.PMSensor) - { - frame.RemoveFromParent(); - frameBorder.Y = Application.GetRealHeight(0); - frameBorder.Height = Application.GetRealHeight(708); - frameBack.BackgroundImagePath = "RealDevice/SensorPMTwoPointFive.png"; - frameBack.Width = this.GetPictrueRealSize(418); - frameBack.Height = this.GetPictrueRealSize(403); - frameBack.Y = Application.GetRealHeight(153); - frameBack.Gravity = Gravity.Center; - } - } - else - { - frame.Y = this.GetPictrueRealSize(58) + (frameBack.ChildrenCount - 1) * (frame.Height + this.GetPictrueRealSize(60)); - } - } - - if (listIcon.Count > 2) - { - //璁$畻鐪熷疄楂樺害 - int realHeight = this.GetPictrueRealSize(58 + 58);//涓婁笅闂磋窛 - realHeight += frameBack.ChildrenCount * this.GetPictrueRealSize(124);//鍦嗗湀楂樺害 - realHeight += (frameBack.ChildrenCount - 1) * this.GetPictrueRealSize(60);//鍦嗗湀闂磋窛 - if (realHeight > frameBack.Height) - { - //鍙樻洿楂樺害 - frameBack.Height = realHeight; - } - } - } - - /// <summary> - /// 鍒濆鍖栦竴琛岃澶囧浘鏍� - /// </summary> - /// <param name="frame"></param> - /// <param name="listDevice"></param> - /// <param name="index"></param> - /// <returns></returns> - private void InitDeviceIconFrame(FrameLayout frame, List<CommonDevice> listDevice, ref int index) - { - NormalViewControl btnTemp = null; - //闂磋窛 - int space = this.GetPictrueRealSize(84); - int defultXX = (frame.Width - frame.Height * listDevice.Count - (listDevice.Count - 1) * space) / 2; - for (int i = 0; i < listDevice.Count; i++) - { - index++; - var btnIcon = new NormalViewControl(frame.Height, frame.Height, false); - btnIcon.Name = "btn" + listDevice[i].DeviceEpoint; - btnIcon.X = defultXX + i * (frame.Height + space); - btnIcon.Radius = (uint)frame.Height / 2; - btnIcon.BorderWidth = 2; - btnIcon.BorderColor = 0xff979797; - btnIcon.TextAlignment = TextAlignment.Center; - btnIcon.TextColor = UserCenterColor.Current.TextGrayColor3; - btnIcon.TextSize = 13; - btnIcon.Text = "CH" + index; - frame.AddChidren(btnIcon); - //鐐瑰嚮浜嬩欢 - btnIcon.ButtonClickEvent += this.DeviceEpointSelectEvent; - - if (listDevice[i].DeviceEpoint == deviceObj.DeviceEpoint) - { - btnTemp = btnIcon; - } - } - if (btnTemp != null) - { - //鍒濆鍖栬彍鍗曡 - this.DeviceEpointSelectEvent(btnTemp, null); - } - } - - /// <summary> - /// 鑾峰彇鎸夌粍鍒嗛厤鐨勮澶� - /// </summary> - /// <returns></returns> - private List<List<CommonDevice>> GetAllDeviceGroup() - { - bool hadDevice = false; - var listDevice = Common.LocalDevice.Current.GetDevicesByMac(deviceObj.DeviceAddr); - var listRelay = new List<CommonDevice>(); - foreach (var device in listDevice) - { - if (device.Type == DeviceType.OnOffSwitch) - { - //杩欎釜鐣岄潰涓嶅鐞嗗共鎺ョ偣 - continue; - } - if (this.onlyType == true && device.Type != deviceObj.Type) - { - //鍙鍚屼竴绉嶇被鍨嬬殑 - continue; - } - - //鑾峰彇璁惧灞炰簬銆愮畝绾﹀鍔熻兘闈㈡澘銆� - var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(listDevice); - if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.ButtonPanel_SimpleMultifunction) - { - if (device.Type == DeviceType.TemperatureSensor && device.DeviceEpoint == 1) - { - //绠�绾﹀鍔熻兘闈㈡澘绗�1鍥炶矾鏄竴涓粦瀹氭俯婀垮害浼犳劅鍣ㄧ绫诲瀷锛屼笉鏄湡鐨勬俯婀垮害鐨勪紶鎰熷櫒锛岄渶瑕佸睆钄芥帀 - continue; - } - } - - listRelay.Add(device); - if (device.DeviceEpoint == deviceObj.DeviceEpoint) - { - //鑳藉鍖归厤寰楀埌杩欎釜鍥炶矾 - hadDevice = true; - } - } - //鎺掑簭 - listRelay.Sort((obj1, obj2) => - { - if (obj1.DeviceEpoint > obj2.DeviceEpoint) - { - return 1; - } - return -1; - }); - if (hadDevice == false) - { - //濡傛灉鍖归厤涓嶅埌杩欎釜鍥炶矾,鍒欓粯璁ょ涓�涓� - this.deviceObj = listRelay[0]; - } - - //浠庝笅寰�涓�4涓负涓�缁� - var listIcon = new List<List<CommonDevice>>(); - var listTemp = new List<CommonDevice>(); - for (int i = listRelay.Count - 1; i >= 0; i--) - { - listTemp.Insert(0, listRelay[i]); - if (listTemp.Count == 4) - { - listIcon.Insert(0, listTemp); - listTemp = new List<CommonDevice>(); - } - } - if (listTemp.Count > 0) - { - listIcon.Insert(0, listTemp); - } - return listIcon; - } - #endregion - - #region 鈻� 鍥炶矾閫夋嫨___________________________ - - /// <summary> - /// 鍥炶矾閫夋嫨浜嬩欢 - /// </summary> - /// <param name="sender"></param> - /// <param name="e"></param> - private void DeviceEpointSelectEvent(object sender, MouseEventArgs e) - { - var nowContr = (NormalViewControl)sender; - if (nowSelectControl != null) - { - //鍚屼竴涓笢瑗�,涓嶉笩浠� - if (nowSelectControl.Name == nowContr.Name) - { - return; - } - //涓嶉�夋嫨鐘舵�� - nowSelectControl.BorderColor = 0xff979797; - nowSelectControl.TextSize = 13; - nowSelectControl.TextColor = UserCenterColor.Current.TextGrayColor3; - //璁板綍瀹冪殑鍚嶅瓧 - dicDeviceSaveName[nowSelectDevice.DeviceEpoint] = frameDeviceName.Text.Trim(); - } - //閫夋嫨鐘舵�� - nowContr.BorderColor = 0xfffb744a; - nowContr.TextSize = 14; - nowContr.TextColor = UserCenterColor.Current.TextColor1; - - nowSelectControl = nowContr; - nowSelectDevice = Common.LocalDevice.Current.GetDevice(deviceObj.DeviceAddr, Convert.ToInt32(nowContr.Name.Replace("btn", string.Empty))); - - //閲嶆柊鍒濆鍖栬彍鍗曡 - this.InitMenuRow(); - } - - #endregion - } + private FrameListControl listview = null; + /// <summary> + /// 褰撳墠閫夋嫨鐨勮澶� + /// </summary> + private CommonDevice nowSelectDevice = null; + /// <summary> + /// 褰撳墠閫夋嫨鐨勫洖璺帶浠� + /// </summary> + private NormalViewControl nowSelectControl = null; + /// <summary> + /// 璁惧澶囨敞鐨勬帶浠� + /// </summary> + private FrameCaptionInputControl frameDeviceName = null; + /// <summary> + /// 璁惧鐨勬煇涓�鍥炶矾 + /// </summary> + private CommonDevice deviceObj = null; + /// <summary> + /// 鍙樉绀哄悓涓�绉嶇被鍨嬬殑鍥炶矾 + /// </summary> + private bool onlyType = false; + /// <summary> + /// 璁惧闇�瑕佷繚瀛樼殑璁惧鍚嶅瓧 + /// </summary> + private Dictionary<int, string> dicDeviceSaveName = new Dictionary<int, string>(); + /// <summary> + /// 淇℃伅缂栬緫鎺т欢 + /// </summary> + private InformationEditorControl tableContr = null; + + #endregion + + #region 鈻� 鍒濆鍖朹____________________________ + + /// <summary> + /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓) + /// </summary> + /// <param name="i_device">璁惧鐨勬煇涓�鍥炶矾</param> + /// <param name="i_onlyType">鍙樉绀哄悓涓�绉嶇被鍨嬬殑鍥炶矾</param> + public void ShowForm(CommonDevice i_device, bool i_onlyType) + { + this.deviceObj = i_device; + this.onlyType = i_onlyType; + + //璁剧疆澶撮儴淇℃伅 + base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uFunctionSettingUp)); + + //鍒濆鍖栦腑閮ㄤ俊鎭� + this.InitMiddleFrame(); + + //鍒濆鍖栧彸涓婅鑿滃崟 + this.InitTopRightMenu(); + } + + /// <summary> + /// 鍒濆鍖栦腑閮ㄤ俊鎭� + /// </summary> + private void InitMiddleFrame() + { + //娓呯┖bodyFrame + this.ClearBodyFrame(); + + var listBackControl = new VerticalFrameControl(); + listBackControl.Height = bodyFrameLayout.Height; + bodyFrameLayout.AddChidren(listBackControl); + + //鍒濆鍖栨甯� + this.tableContr = new InformationEditorControl(); + + if (this.deviceObj.Type == DeviceType.FreshAir || this.deviceObj.Type == DeviceType.PMSensor) + { + this.listview = tableContr.InitControl(listBackControl.frameTable, Language.StringByID(R.MyInternationalizationString.uDeviceEditor), 1028); + } + else if (this.deviceObj.Type == DeviceType.Airer) + { + //鏅捐。鏋惰澶囧彧瀛樺彇鍥炶矾1锛屽鏋滄槸鏅捐。鏋讹紝榛樿绔偣閮芥槸1锛� + this.deviceObj.DeviceEpoint = 1; + this.listview = tableContr.InitControl(listBackControl.frameTable, Language.StringByID(R.MyInternationalizationString.uDeviceEditor), 1342); + } + + else + { + this.listview = tableContr.InitControl(listBackControl.frameTable, Language.StringByID(R.MyInternationalizationString.uDeviceEditor), 1128); + } + + //鍒濆鍖栬澶囧洖璺浘鏍� + this.InitDeviceEpointIcon(listBackControl); + + //淇濆瓨 + var btnFinish = new BottomClickButton(); + btnFinish.TextID = R.MyInternationalizationString.uSave; + bodyFrameLayout.AddChidren(btnFinish); + btnFinish.ButtonClickEvent += (sender, e) => + { + //璁板綍璧峰綋鍓嶆鍦ㄦ搷浣滅殑鍥炶矾鍚嶅瓧 + dicDeviceSaveName[nowSelectDevice.DeviceEpoint] = frameDeviceName.Text.Trim(); + foreach (var epoint in dicDeviceSaveName.Keys) + { + var device = Common.LocalDevice.Current.GetDevice(deviceObj.DeviceAddr, epoint); + if (device == null || dicDeviceSaveName[epoint] == string.Empty) + { + //涓嶈兘鍏佽绌虹櫧鍚嶅瓧 + continue; + } + string newName = dicDeviceSaveName[epoint]; + string oldName = Common.LocalDevice.Current.GetDeviceEpointName(device); + if (oldName != newName) + { + //璁惧鍚嶇О淇敼 + var result = Common.LocalDevice.Current.ReName(device, newName); + if (result == false) + { + return; + } + } + } + + //濡傛灉鏄櫨琛f灦 + if (deviceObj.Type == DeviceType.Airer) + { + var airer = deviceObj as Airer; + SetAirerFunTimeDevice(airer); + } + else + { + //鍏抽棴鑷韩 + this.CloseForm(); + } + + }; + //濡傛灉褰撳墠鏄睍绀烘ā鏉�,鍒欎笉鑳界紪杈� + if (Common.Config.Instance.Home.IsShowTemplate == true) + { + btnFinish.CanClick = false; + } + } + + /// <summary> + /// 鍒濆鍖栬彍鍗曡 + /// </summary> + private void InitMenuRow() + { + this.listview.RemoveAll(); + + //鍥炶矾澶囨敞 + string caption = Language.StringByID(R.MyInternationalizationString.uDeviceEpointNote); + string nameValue = Common.LocalDevice.Current.GetDeviceEpointName(nowSelectDevice); + if (this.deviceObj.Type == DeviceType.Airer) + { + nameValue = Common.LocalDevice.Current.GetDeviceMacName(nowSelectDevice); + } + if (dicDeviceSaveName.ContainsKey(nowSelectDevice.DeviceEpoint) == true) + { + nameValue = dicDeviceSaveName[nowSelectDevice.DeviceEpoint]; + } + + this.frameDeviceName = new FrameCaptionInputControl(caption, nameValue, listview.rowSpace / 2); + this.frameDeviceName.txtInput.MaxByte = 48;//闄愬埗鍙兘杈撳叆48涓瓧鑺� + listview.AddChidren(frameDeviceName); + frameDeviceName.InitControl(); + frameDeviceName.AddBottomLine(); + //濡傛灉褰撳墠鏄睍绀烘ā鏉�,鍒欓渶瑕佸鐞� + if (Common.Config.Instance.Home.IsShowTemplate == false) + { + frameDeviceName.txtInput.FinishInputEvent += () => + { + string oldName = Common.LocalDevice.Current.GetDeviceEpointName(nowSelectDevice); + if (frameDeviceName.Text.Trim() == string.Empty) + { + //灏嗗悕瀛楄繕鍘� + frameDeviceName.Text = oldName; + } + if (oldName != frameDeviceName.Text.Trim()) + { + //璁惧鍚嶇О淇敼 + var result = Common.LocalDevice.Current.ReName(nowSelectDevice, frameDeviceName.Text.Trim()); + if (result == false) + { + return; + } + //鍥炶矾澶囨敞淇敼鎴愬姛! + string msg = Language.StringByID(R.MyInternationalizationString.uDeviceEpointReNoteSuccess); + this.ShowMassage(ShowMsgType.Tip, msg); + } + }; + } + + //鎵�灞炲尯鍩� + var rowBeloneArea = new BelongAreaControl(listview.rowSpace / 2); + listview.AddChidren(rowBeloneArea); + rowBeloneArea.InitControl(Language.StringByID(R.MyInternationalizationString.uBelongArea), nowSelectDevice); + //搴曠嚎 + rowBeloneArea.AddBottomLine(); + rowBeloneArea.SelectRoomEvent += (roomKeys) => + { + //鍙樻洿鎴块棿 + HdlRoomLogic.Current.ChangedRoom(nowSelectDevice, roomKeys); + }; + //娣诲姞鍔熻兘绫诲瀷琛� + this.AddFunctionTypeRow(); + + if (this.deviceObj.Type == DeviceType.Airer) + { + var airer = this.deviceObj as Airer; + //娣诲姞鐑樺共鏃堕棿琛� + this.AddAirerDryTimeRow(airer); + //娣诲姞椋庡共鏃堕棿琛� + this.AddAirerWindTimeRow(airer); + //娣诲姞娑堟瘨鏃堕棿琛� + this.AddAirerDisinfectTimeRow(airer); + } + + //鍒濆鍖栨甯冨畬鎴� + tableContr.FinishInitControl(); + } + + #endregion + + #region 鈻� 鍙充笂瑙掕彍鍗昣________________________ + + /// <summary> + /// 鍒濆鍖栧彸涓婅鑿滃崟 + /// </summary> + private void InitTopRightMenu() + { + //妫�娴嬫鍥炶矾鏄惁鎷ユ湁瀹氫綅鍔熻兘 + if (Common.LocalDevice.Current.DeviceIsCanFixedPosition(nowSelectDevice) == false + || Common.Config.Instance.Home.IsShowTemplate == true) + { + return; + } + var btnIcon = new MostRightIconControl(69, 69); + btnIcon.UnSelectedImagePath = "Item/More.png"; + topFrameLayout.AddChidren(btnIcon); + btnIcon.InitControl(); + btnIcon.ButtonClickEvent += ((sender, e) => + { + //鏄剧ず鍙充笂瑙掕彍鍗曠晫闈� + this.ShowTopRightMenu(); + }); + } + + /// <summary> + /// 鏄剧ず鍙充笂瑙掕彍鍗曠晫闈� + /// </summary> + private void ShowTopRightMenu() + { + int menuCount = 1; + string deviceMenu = string.Empty; + //妫�娴嬫鍥炶矾鏄惁鎷ユ湁瀹氫綅鍔熻兘 + bool canTest = Common.LocalDevice.Current.DeviceIsCanFixedPosition(nowSelectDevice); + //if (canTest == true) + //{ + // menuCount = 2; + //} + var frame = new TopRightMenuControl(menuCount, 1); + if (canTest == true) + { + //瀹氫綅 + deviceMenu = Language.StringByID(R.MyInternationalizationString.uFixedPosition); + frame.AddRowMenu(deviceMenu, "Item/FixedPosition.png", "Item/FixedPositionSelected.png", () => + { + //鍙戦�佸畾浣嶅姛鑳� + Common.LocalDevice.Current.SetFixedPositionCommand(nowSelectDevice); + }); + } + + //鍒犻櫎 + //deviceMenu = Language.StringByID(R.MyInternationalizationString.uDelete); + //frame.AddRowMenu(deviceMenu, "Item/DeleteIcon2.png", "Item/DeleteIcon2Selected.png", () => + //{ + //}); + } + + #endregion + + #region 鈻� 鍔熻兘绫诲瀷___________________________ + + /// <summary> + /// 娣诲姞鍔熻兘绫诲瀷琛� + /// </summary> + private void AddFunctionTypeRow() + { + //鑷畾涔夊姛鑳界被鍨嬫帶浠� + var rowFunction = new DeviceFunctionTypeRowControl(nowSelectDevice, listview.rowSpace / 2); + if (rowFunction.CanShowRow == false) + { + return; + } + listview.AddChidren(rowFunction); + rowFunction.InitControl(); + //搴曠嚎 + rowFunction.AddBottomLine(); + } + #endregion + + #region 鈻� 鏅捐。鏋朵笓鐢╛________________________ + #region 鈻� 鐑樺共鏃堕棿_________________________ + /// <summary> + /// 鐑樺共鏃堕棿琛� + /// </summary> + private void AddAirerDryTimeRow(Airer airer) + { + var rowAirer = new AiererTimeControl(listview.rowSpace / 2); + listview.AddChidren(rowAirer); + var text = Language.StringByID(R.MyInternationalizationString.AirerDefault) + 3 + Language.StringByID(R.MyInternationalizationString.AirerHour); + if (airer.DryTime != 0) + { + double result = airer.DryTime / 60.0; + var hour = Math.Round(result, 2); + text = hour + Language.StringByID(R.MyInternationalizationString.AirerHour); + } + rowAirer.InitControl(airer, bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.AirerDryTime), text, 1); + //搴曠嚎 + rowAirer.AddBottomLine(); + rowAirer.SelectTimeEvent += (v1, v2) => + { + //double result = second / 3600.0; + //var hour = Math.Round(result, 1); + //text = hour + Language.StringByID(R.MyInternationalizationString.AirerHour); + //rowAirer.InitControl(airer, bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.AirerDryTime), text, 1); + }; + + } + #endregion + + #region 鈻� 椋庡共鏃堕棿_________________________ + /// <summary> + /// 椋庡共鏃堕棿琛� + /// </summary> + private void AddAirerWindTimeRow(Airer airer) + { + var rowAirer = new AiererTimeControl(listview.rowSpace / 2); + listview.AddChidren(rowAirer); + var text = Language.StringByID(R.MyInternationalizationString.AirerDefault) + 3 + Language.StringByID(R.MyInternationalizationString.AirerHour); + if (airer.WindTime != 0) + { + double result = airer.WindTime / 60.0; + var hour = Math.Round(result, 1); + text = hour + Language.StringByID(R.MyInternationalizationString.AirerHour); + } + rowAirer.InitControl(airer, bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.AirerWindTime), text, 2); + //搴曠嚎 + rowAirer.AddBottomLine(); + rowAirer.SelectTimeEvent += (v1, v2) => + { + //double result = second / 3600.0; + //var hour = Math.Round(result, 1); + //text = hour + Language.StringByID(R.MyInternationalizationString.AirerHour); + //rowAirer.InitControl(airer, bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.AirerDryTime), text, 1); + }; + } + #endregion + + #region 鈻� 娑堟瘨鏃堕棿_________________________ + /// <summary> + /// 娑堟瘨鏃堕棿琛� + /// </summary> + private void AddAirerDisinfectTimeRow(Airer airer) + { + var rowAirer = new AiererTimeControl(listview.rowSpace / 2); + listview.AddChidren(rowAirer); + var text = Language.StringByID(R.MyInternationalizationString.AirerDefault) + 30 + Language.StringByID(R.MyInternationalizationString.AirerMin); + if (airer.DisinfectTime != 0) + { + text = airer.DisinfectTime + Language.StringByID(R.MyInternationalizationString.AirerMin); + } + rowAirer.InitControl(airer, bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.AirerDisinfectTime), text, 3); + //搴曠嚎 + rowAirer.AddBottomLine(); + rowAirer.SelectTimeEvent += (v1, v2) => + { + + }; + } + #endregion + + #region 鈻� 璇诲彇鏃堕棿鍛戒护___________________ + + /// <summary> + /// 璇诲彇鏃堕棿鍛戒护 + /// </summary> + public void ReadAirerFunTimeDevice() + { + + } + + #endregion + + /// <summary> + /// 璁惧鏃堕棿璁剧疆 + /// </summary> + private void SetAirerFunTimeDevice(Airer airer) + { + HdlThreadLogic.Current.RunThread(async () => + { + //鎵撳紑杩涘害鏉� + this.ShowProgressBar(); + + //鍒欒璁剧疆瀵瑰簲鐨勫姛鑳芥椂闂� + List<CommonDevice> listdevice = new List<CommonDevice>(); + + for (int i = 3; i < 6; i++) + { + int time = 0; + listdevice.Add(deviceObj); + switch (i) + { + case 3: + time = airer.WindTime; + break; + case 4: + time = airer.DryTime; + break; + case 5: + time = airer.DisinfectTime; + break; + } + bool result = await Common.LocalDevice.Current.SetAirerTimeDevice(listdevice, airer, time, i); + if (result == false) + { + airer.WindTime = airer.WindRemainTime = 0; + airer.DryTime = airer.DryRemainTime = 0; + airer.DisinfectTime = airer.DisinfectTime = 0; + HdlThreadLogic.Current.RunMainInThread(() => + { + this.InitMiddleFrame(); + }); + //鍏抽棴杩涘害鏉� + this.CloseProgressBar(); + return; + } + } + //鍏抽棴杩涘害鏉� + this.CloseProgressBar(); + //鍏抽棴鑷韩 + this.CloseForm(); + }); + } + #endregion + + #region 鈻� 鍒濆鍖栬澶囧洖璺浘鏍嘷________________ + + /// <summary> + /// 鍒濆鍖栬澶囧洖璺浘鏍� + /// </summary> + private void InitDeviceEpointIcon(VerticalFrameControl listBackControl) + { + //鑾峰彇鎸夌粍鍒嗛厤鐨勮澶� + var listIcon = this.GetAllDeviceGroup(); + + var frameBorder = new FrameLayout(); + frameBorder.Y = Application.GetRealHeight(147); + frameBorder.Gravity = Gravity.CenterHorizontal; + frameBorder.Width = this.GetPictrueRealSize(887); + frameBorder.Height = Application.GetRealHeight(423); + frameBorder.Radius = (uint)Application.GetRealHeight(6); + listBackControl.frameTable.AddChidren(frameBorder); + + var frameBack = new FrameLayout(); + frameBack.Height = frameBorder.Height; + + if (listIcon.Count > 2) + { + //闇�瑕佹粦鍔ㄦ帶浠� + var listControl = new VerticalScrolViewLayout(); + listControl.Height = frameBorder.Height; + frameBorder.AddChidren(listControl); + + listControl.AddChidren(frameBack); + } + else + { + //涓嶉渶瑕佹粦鍔ㄦ帶浠� + frameBorder.AddChidren(frameBack); + } + + int index = 0; + for (int i = 0; i < listIcon.Count; i++) + { + var frame = new FrameLayout(); + frame.Width = frameBorder.Width; + frame.Height = this.GetPictrueRealSize(124); + frameBack.AddChidren(frame); + //鍒濆鍖栦竴琛岃澶囧浘鏍� + this.InitDeviceIconFrame(frame, listIcon[i], ref index); + + if (listIcon.Count == 1) + { + frame.Gravity = Gravity.CenterVertical; + + //濡傛灉鏄柊椋� + if (deviceObj.Type == DeviceType.FreshAir) + { + frame.RemoveFromParent(); + frameBorder.Y = Application.GetRealHeight(0); + frameBorder.Height = Application.GetRealHeight(709); + frameBack.BackgroundImagePath = "FreshAir/FreshAirRealDevicePic.png"; + frameBack.Width = this.GetPictrueRealSize(878); + frameBack.Height = this.GetPictrueRealSize(354); + frameBack.Y = Application.GetRealHeight(153); + frameBack.Gravity = Gravity.Center; + } + + //濡傛灉鏄疨M2.5 + if (deviceObj.Type == DeviceType.PMSensor) + { + frame.RemoveFromParent(); + frameBorder.Y = Application.GetRealHeight(0); + frameBorder.Height = Application.GetRealHeight(708); + frameBack.BackgroundImagePath = "RealDevice/SensorPMTwoPointFive.png"; + frameBack.Width = this.GetPictrueRealSize(418); + frameBack.Height = this.GetPictrueRealSize(403); + frameBack.Y = Application.GetRealHeight(153); + frameBack.Gravity = Gravity.Center; + } + + //濡傛灉鏄櫨琛f灦 + if (deviceObj.Type == DeviceType.Airer) + { + frame.RemoveFromParent(); + frameBorder.Y = Application.GetRealHeight(0); + frameBorder.Height = Application.GetRealHeight(709); + frameBack.BackgroundImagePath = "Airer/Airer216.png"; + frameBack.Width = this.GetPictrueRealSize(207); + frameBack.Height = this.GetPictrueRealSize(207); + frameBack.Y = Application.GetRealHeight(92); + frameBack.Gravity = Gravity.CenterHorizontal; + } + } + else + { + frame.Y = this.GetPictrueRealSize(58) + (frameBack.ChildrenCount - 1) * (frame.Height + this.GetPictrueRealSize(60)); + } + } + + //濡傛灉鏄櫨琛f灦,鏈�5涓洖璺紝浣嗘槸5涓洖璺彧鏄唬琛ㄤ笉鍚屽姛鑳戒娇鐢紝涓嶆槸鐪熷疄鐨勫搴旇澶囷紝鎵�浠ラ粯璁ゅ彧鏄剧ず绗竴鍥炶矾 + if (deviceObj.Type != DeviceType.Airer) + { + if (listIcon.Count > 2) + { + //璁$畻鐪熷疄楂樺害 + int realHeight = this.GetPictrueRealSize(58 + 58);//涓婁笅闂磋窛 + realHeight += frameBack.ChildrenCount * this.GetPictrueRealSize(124);//鍦嗗湀楂樺害 + realHeight += (frameBack.ChildrenCount - 1) * this.GetPictrueRealSize(60);//鍦嗗湀闂磋窛 + if (realHeight > frameBack.Height) + { + //鍙樻洿楂樺害 + frameBack.Height = realHeight; + } + } + } + } + + /// <summary> + /// 鍒濆鍖栦竴琛岃澶囧浘鏍� + /// </summary> + /// <param name="frame"></param> + /// <param name="listDevice"></param> + /// <param name="index"></param> + /// <returns></returns> + private void InitDeviceIconFrame(FrameLayout frame, List<CommonDevice> listDevice, ref int index) + { + NormalViewControl btnTemp = null; + //闂磋窛 + int space = this.GetPictrueRealSize(84); + int defultXX = (frame.Width - frame.Height * listDevice.Count - (listDevice.Count - 1) * space) / 2; + for (int i = 0; i < listDevice.Count; i++) + { + index++; + var btnIcon = new NormalViewControl(frame.Height, frame.Height, false); + btnIcon.Name = "btn" + listDevice[i].DeviceEpoint; + btnIcon.X = defultXX + i * (frame.Height + space); + btnIcon.Radius = (uint)frame.Height / 2; + btnIcon.BorderWidth = 2; + btnIcon.BorderColor = 0xff979797; + btnIcon.TextAlignment = TextAlignment.Center; + btnIcon.TextColor = UserCenterColor.Current.TextGrayColor3; + btnIcon.TextSize = 13; + btnIcon.Text = "CH" + index; + frame.AddChidren(btnIcon); + //鐐瑰嚮浜嬩欢 + btnIcon.ButtonClickEvent += this.DeviceEpointSelectEvent; + + if (listDevice[i].DeviceEpoint == deviceObj.DeviceEpoint) + { + btnTemp = btnIcon; + } + } + if (btnTemp != null) + { + //鍒濆鍖栬彍鍗曡 + this.DeviceEpointSelectEvent(btnTemp, null); + } + } + + /// <summary> + /// 鑾峰彇鎸夌粍鍒嗛厤鐨勮澶� + /// </summary> + /// <returns></returns> + private List<List<CommonDevice>> GetAllDeviceGroup() + { + bool hadDevice = false; + var listDevice = Common.LocalDevice.Current.GetDevicesByMac(deviceObj.DeviceAddr); + var listRelay = new List<CommonDevice>(); + foreach (var device in listDevice) + { + if (device.Type == DeviceType.OnOffSwitch) + { + //杩欎釜鐣岄潰涓嶅鐞嗗共鎺ョ偣 + continue; + } + if (this.onlyType == true && device.Type != deviceObj.Type) + { + //鍙鍚屼竴绉嶇被鍨嬬殑 + continue; + } + + //鑾峰彇璁惧灞炰簬銆愮畝绾﹀鍔熻兘闈㈡澘銆� + var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(listDevice); + if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.ButtonPanel_SimpleMultifunction) + { + if (device.Type == DeviceType.TemperatureSensor && device.DeviceEpoint == 1) + { + //绠�绾﹀鍔熻兘闈㈡澘绗�1鍥炶矾鏄竴涓粦瀹氭俯婀垮害浼犳劅鍣ㄧ绫诲瀷锛屼笉鏄湡鐨勬俯婀垮害鐨勪紶鎰熷櫒锛岄渶瑕佸睆钄芥帀 + continue; + } + } + + listRelay.Add(device); + if (device.DeviceEpoint == deviceObj.DeviceEpoint) + { + //鑳藉鍖归厤寰楀埌杩欎釜鍥炶矾 + hadDevice = true; + } + } + //鎺掑簭 + listRelay.Sort((obj1, obj2) => + { + if (obj1.DeviceEpoint > obj2.DeviceEpoint) + { + return 1; + } + return -1; + }); + if (hadDevice == false) + { + //濡傛灉鍖归厤涓嶅埌杩欎釜鍥炶矾,鍒欓粯璁ょ涓�涓� + this.deviceObj = listRelay[0]; + } + + //浠庝笅寰�涓�4涓负涓�缁� + var listIcon = new List<List<CommonDevice>>(); + var listTemp = new List<CommonDevice>(); + for (int i = listRelay.Count - 1; i >= 0; i--) + { + listTemp.Insert(0, listRelay[i]); + if (listTemp.Count == 4) + { + listIcon.Insert(0, listTemp); + listTemp = new List<CommonDevice>(); + } + } + if (listTemp.Count > 0) + { + listIcon.Insert(0, listTemp); + } + return listIcon; + } + #endregion + + #region 鈻� 鍥炶矾閫夋嫨___________________________ + + /// <summary> + /// 鍥炶矾閫夋嫨浜嬩欢 + /// </summary> + /// <param name="sender"></param> + /// <param name="e"></param> + private void DeviceEpointSelectEvent(object sender, MouseEventArgs e) + { + var nowContr = (NormalViewControl)sender; + if (nowSelectControl != null) + { + //鍚屼竴涓笢瑗�,涓嶉笩浠� + if (this.deviceObj.Type != DeviceType.Airer) + { + if (nowSelectControl.Name == nowContr.Name) + { + return; + } + } + + //涓嶉�夋嫨鐘舵�� + nowSelectControl.BorderColor = 0xff979797; + nowSelectControl.TextSize = 13; + nowSelectControl.TextColor = UserCenterColor.Current.TextGrayColor3; + //璁板綍瀹冪殑鍚嶅瓧 + dicDeviceSaveName[nowSelectDevice.DeviceEpoint] = frameDeviceName.Text.Trim(); + } + //閫夋嫨鐘舵�� + nowContr.BorderColor = 0xfffb744a; + nowContr.TextSize = 14; + nowContr.TextColor = UserCenterColor.Current.TextColor1; + + nowSelectControl = nowContr; + nowSelectDevice = Common.LocalDevice.Current.GetDevice(deviceObj.DeviceAddr, Convert.ToInt32(nowContr.Name.Replace("btn", string.Empty))); + + //閲嶆柊鍒濆鍖栬彍鍗曡 + this.InitMenuRow(); + } + + #endregion + } } -- Gitblit v1.8.0