From 3272ca5b51e19f7f8a827b0f68400570a547fe60 Mon Sep 17 00:00:00 2001 From: 陈嘉乐 <cjl@hdlchina.com.cn> Date: 星期二, 28 四月 2020 15:02:44 +0800 Subject: [PATCH] 2020-04-28-1 --- ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFunctionSettionForm.cs | 273 +++++++++++++++++++++++++++-------------------------- 1 files changed, 139 insertions(+), 134 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFunctionSettionForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFunctionSettionForm.cs index dfba0ac..47590b7 100755 --- a/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFunctionSettionForm.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFunctionSettionForm.cs @@ -15,7 +15,7 @@ /// <summary> /// 鍒楄〃鎺т欢 /// </summary> - private VerticalListControl listview = null; + private FrameListControl listview = null; /// <summary> /// 褰撳墠閫夋嫨鐨勮澶� /// </summary> @@ -29,13 +29,21 @@ /// </summary> private FrameCaptionInputControl btnDeviceName = null; /// <summary> - /// 璁惧Mac鍦板潃 + /// 璁惧鐨勬煇涓�鍥炶矾 /// </summary> - private string deviceMac = string.Empty; + private CommonDevice deviceObj = null; /// <summary> /// 璁惧闇�瑕佷繚瀛樼殑璁惧鍚嶅瓧 /// </summary> private Dictionary<int, string> dicDeviceSaveName = new Dictionary<int, string>(); + /// <summary> + /// 璁惧闇�瑕佷繚瀛樼殑璁惧鍔熻兘 + /// </summary> + private Dictionary<int, DeviceFunctionType> dicDeviceFuncType = new Dictionary<int, DeviceFunctionType>(); + /// <summary> + /// 淇℃伅缂栬緫鎺т欢 + /// </summary> + private InformationEditorControl tableContr = null; #endregion @@ -44,10 +52,10 @@ /// <summary> /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓) /// </summary> - /// <param name="i_deviceMac">璁惧Mac鍦板潃</param> - public void ShowForm(string i_deviceMac) + /// <param name="i_device">璁惧鐨勬煇涓�鍥炶矾</param> + public void ShowForm(CommonDevice i_device) { - this.deviceMac = i_deviceMac; + this.deviceObj = i_device; //璁剧疆澶撮儴淇℃伅 base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uFunctionSettingUp)); @@ -67,19 +75,19 @@ //娓呯┖bodyFrame this.ClearBodyFrame(); + var listBackControl = new VerticalFrameControl(); + listBackControl.Height = bodyFrameLayout.Height; + bodyFrameLayout.AddChidren(listBackControl); + //鍒濆鍖栨甯� - this.InitFrameTable(); + this.tableContr = new InformationEditorControl(); + this.listview = tableContr.InitControl(listBackControl.frameTable, Language.StringByID(R.MyInternationalizationString.uDeviceEditor), 1028); + //鍒濆鍖栬澶囧洖璺浘鏍� - this.InitDeviceEpointIcon(); + this.InitDeviceEpointIcon(listBackControl); //淇濆瓨 var btnFinish = new BottomClickButton(); - //鍊熺敤Y杞村潗鏍�(璁╄繖涓尯鍩熶笉鑳界偣鍑昏彍鍗�) - var frameBack = new FrameLayout(); - frameBack.Y = btnFinish.Yaxis; - frameBack.Height = bodyFrameLayout.Height - btnFinish.Yaxis; - bodyFrameLayout.AddChidren(frameBack); - btnFinish.TextID = R.MyInternationalizationString.uSave; bodyFrameLayout.AddChidren(btnFinish); btnFinish.ButtonClickEvent += async (sender, e) => @@ -90,7 +98,7 @@ this.ShowProgressBar(); foreach (var epoint in dicDeviceSaveName.Keys) { - var device = Common.LocalDevice.Current.GetDevice(deviceMac, epoint); + var device = Common.LocalDevice.Current.GetDevice(deviceObj.DeviceAddr, epoint); if (device == null || dicDeviceSaveName[epoint] == string.Empty) { //涓嶈兘鍏佽绌虹櫧鍚嶅瓧 @@ -109,6 +117,38 @@ return; } } + } + foreach (var epoint in dicDeviceFuncType.Keys) + { + var device = Common.LocalDevice.Current.GetDevice(deviceObj.DeviceAddr, epoint); + if (device == null) + { + continue; + } + //璁剧疆鍔熻兘绫诲瀷 + device.DfunctionType = dicDeviceFuncType[epoint]; + if (device.IsCustomizeImage == true) + { + continue; + } + //閲嶆柊璁剧疆鍥剧墖 + if (device.DfunctionType == DeviceFunctionType.A寮�鍏�) + { + device.IconPath = "Device/Switch.png"; + } + else if (device.DfunctionType == DeviceFunctionType.A鎻掑骇) + { + device.IconPath = "Device/Socket1.png"; + } + else if (device.DfunctionType == DeviceFunctionType.A鐏厜) + { + device.IconPath = "Device/Light.png"; + } + else + { + device.IconPath = "Device/RelayEpoint.png"; + } + device.ReSave(); } this.CloseProgressBar(); //鍏抽棴鑷韩 @@ -158,45 +198,21 @@ }; //鎵�灞炲尯鍩� - List<string> listRoomName = Common.Room.CurrentRoom.GetRoomListNameByDevice(nowSelectDevice); - caption = Language.StringByID(R.MyInternationalizationString.uBelongArea); - nameValue = Common.Room.CurrentRoom.GetRoomName(listRoomName); - var btnBeloneArea = new FrameCaptionViewControl(caption, nameValue, listview.rowSpace / 2); - listview.AddChidren(btnBeloneArea); - btnBeloneArea.InitControl(); + var rowBeloneArea = new BelongAreaControl(listview.rowSpace / 2); + listview.AddChidren(rowBeloneArea); + rowBeloneArea.InitControl(Language.StringByID(R.MyInternationalizationString.uBelongArea), nowSelectDevice); //搴曠嚎 - btnBeloneArea.AddBottomLine(); - //鍙崇澶� - btnBeloneArea.AddRightArrow(); - btnBeloneArea.ButtonClickEvent += (sender, e) => + rowBeloneArea.AddBottomLine(); + rowBeloneArea.SelectRoomEvent += (roomKeys) => { - var form = new SelectRoomForm(); - form.AddForm(listRoomName); - form.ActionSelectRoom = (list) => - { - //鍙樻洿鎴块棿 - Common.Room.CurrentRoom.ChangedRoom(nowSelectDevice, list); - - btnBeloneArea.Text = Common.Room.CurrentRoom.GetRoomName(list); - listRoomName.Clear(); - listRoomName.AddRange(list); - }; + //鍙樻洿鎴块棿 + HdlRoomLogic.Current.ChangedRoom(nowSelectDevice, roomKeys); }; //娣诲姞鍔熻兘绫诲瀷琛� this.AddFunctionTypeRow(); - - //鍊熺敤Y杞村潗鏍� - var btnTemp = new BottomClickButton(); - var realHeight = listview.GetChildren(0).Height * listview.ChildrenCount; - if (bodyFrameLayout.Height - btnTemp.Yaxis + realHeight > listview.Height) - { - //淇冧娇琚尅浣忕殑鑿滃崟鑳藉鍚戜笂婊戝姩 - var frameTemp = new FrameLayout(); - frameTemp.Height = bodyFrameLayout.Height - btnTemp.Yaxis + Application.GetRealHeight(115); - listview.AddChidren(frameTemp); - } - btnTemp = null; + //鍒濆鍖栨甯冨畬鎴� + tableContr.FinishInitControl(); } #endregion @@ -208,6 +224,11 @@ /// </summary> private void InitTopRightMenu() { + //妫�娴嬫鍥炶矾鏄惁鎷ユ湁瀹氫綅鍔熻兘 + if (Common.LocalDevice.Current.DeviceIsCanFixedPosition(nowSelectDevice) == false) + { + return; + } var btnIcon = new MostRightIconControl(69, 69); btnIcon.UnSelectedImagePath = "Item/More.png"; topFrameLayout.AddChidren(btnIcon); @@ -228,11 +249,11 @@ string deviceMenu = string.Empty; //妫�娴嬫鍥炶矾鏄惁鎷ユ湁瀹氫綅鍔熻兘 bool canTest = Common.LocalDevice.Current.DeviceIsCanFixedPosition(nowSelectDevice); - if (canTest == true) - { - menuCount = 2; - } - var frame = new TopRightMenuControl(this, menuCount); + //if (canTest == true) + //{ + // menuCount = 2; + //} + var frame = new TopRightMenuControl(menuCount, 1); if (canTest == true) { //瀹氫綅 @@ -245,10 +266,10 @@ } //鍒犻櫎 - deviceMenu = Language.StringByID(R.MyInternationalizationString.uDelete); - frame.AddRowMenu(deviceMenu, "Item/DeleteIcon2.png", "Item/DeleteIcon2Selected.png", () => - { - }); + //deviceMenu = Language.StringByID(R.MyInternationalizationString.uDelete); + //frame.AddRowMenu(deviceMenu, "Item/DeleteIcon2.png", "Item/DeleteIcon2Selected.png", () => + //{ + //}); } #endregion @@ -266,32 +287,31 @@ { //鍔熻兘绫诲瀷 string caption = Language.StringByID(R.MyInternationalizationString.uFunctionType); + var DfunctionType = nowSelectDevice.DfunctionType; + if (this.dicDeviceFuncType.ContainsKey(nowSelectDevice.DeviceEpoint) == true) + { + DfunctionType = this.dicDeviceFuncType[nowSelectDevice.DeviceEpoint]; + } //鍔熻兘绫诲瀷鐨勭炕璇戝悕瀛� int nowSelectNo = 1; string strType = string.Empty; - if (nowSelectDevice.DfunctionType == DeviceFunctionType.A鐏厜) + if (DfunctionType == DeviceFunctionType.A鐏厜) { strType = Language.StringByID(R.MyInternationalizationString.uLight); nowSelectNo = 1; } - else if (nowSelectDevice.DfunctionType == DeviceFunctionType.A寮�鍏�) + else if (DfunctionType == DeviceFunctionType.A寮�鍏�) { strType = Language.StringByID(R.MyInternationalizationString.uSwitch); nowSelectNo = 0; } - else if (nowSelectDevice.DfunctionType == DeviceFunctionType.A鎻掑骇) + else if (DfunctionType == DeviceFunctionType.A鎻掑骇) { strType = Language.StringByID(R.MyInternationalizationString.uSocket1); nowSelectNo = 2; } - else - { - //榛樿鐏厜 - strType = Language.StringByID(R.MyInternationalizationString.uLight); - nowSelectDevice.DfunctionType = DeviceFunctionType.A鐏厜; - nowSelectDevice.ReSave(); - } + var btnFunction = new FrameCaptionViewControl(caption, strType, listview.rowSpace / 2); btnFunction.UseClickStatu = false; listview.AddChidren(btnFunction); @@ -315,25 +335,38 @@ //鏍囬:閫夋嫨鍔熻兘绫诲瀷 var title = Language.StringByID(R.MyInternationalizationString.uSelectFunctionType); - var form = new BottomDialogSelectForm(); + var form = new BottomItemSelectForm(); + form.CancelCallEvent = true;//鍏佽鍙栨秷 form.AddForm(title, listText, nowSelectNo); form.FinishSelectEvent += (selectNo) => { - btnFunction.Text = listText[selectNo]; - nowSelectNo = selectNo; - if (selectNo == 0) + if (selectNo == -1) { - nowSelectDevice.DfunctionType = DeviceFunctionType.A寮�鍏�; - } - else if (selectNo == 1) - { - nowSelectDevice.DfunctionType = DeviceFunctionType.A鐏厜; + //閫夋嫨鍙栨秷 + btnFunction.Text = string.Empty; } else { - nowSelectDevice.DfunctionType = DeviceFunctionType.A鎻掑骇; + btnFunction.Text = listText[selectNo]; } - nowSelectDevice.ReSave(); + nowSelectNo = selectNo; + //璁板綍璧峰綋鍓嶉�夋嫨鐨勫姛鑳界被鍨� + if (selectNo == 0) + { + dicDeviceFuncType[nowSelectDevice.DeviceEpoint] = DeviceFunctionType.A寮�鍏�; + } + else if (selectNo == 1) + { + dicDeviceFuncType[nowSelectDevice.DeviceEpoint] = DeviceFunctionType.A鐏厜; + } + else if (selectNo == 2) + { + dicDeviceFuncType[nowSelectDevice.DeviceEpoint] = DeviceFunctionType.A鎻掑骇; + } + else + { + dicDeviceFuncType[nowSelectDevice.DeviceEpoint] = DeviceFunctionType.A鏈畾涔�; + } }; }; } @@ -347,9 +380,10 @@ /// <summary> /// 鍒濆鍖栬澶囧洖璺浘鏍� /// </summary> - private void InitDeviceEpointIcon() + private void InitDeviceEpointIcon(VerticalFrameControl listBackControl) { - var listDevice = Common.LocalDevice.Current.GetDevicesByMac(deviceMac); + bool hadDevice = false; + var listDevice = Common.LocalDevice.Current.GetDevicesByMac(deviceObj.DeviceAddr); var listSort = new List<CommonDevice>(); foreach (var device in listDevice) { @@ -358,6 +392,11 @@ || device.Type == DeviceType.ColorDimmableLight) { listSort.Add(device); + if (device.DeviceEpoint == deviceObj.DeviceEpoint) + { + //鑳藉鍖归厤寰楀埌杩欎釜鍥炶矾 + hadDevice = true; + } } } //鎺掑簭 @@ -369,16 +408,21 @@ } return -1; }); + if (hadDevice == false) + { + //濡傛灉鍖归厤涓嶅埌杩欎釜鍥炶矾,鍒欓粯璁ょ涓�涓� + this.deviceObj = listSort[0]; + } var frameBorder = new FrameLayout(); frameBorder.Y = Application.GetRealHeight(150); frameBorder.Gravity = Gravity.CenterHorizontal; frameBorder.Width = Application.GetMinRealAverage(426); frameBorder.Height = Application.GetMinRealAverage(426); - bodyFrameLayout.AddChidren(frameBorder); + listBackControl.frameTable.AddChidren(frameBorder); var btnPic = new PicViewControl(frameBorder.Width, frameBorder.Height, false); - btnPic.UnSelectedImagePath = "Device/PanelTable.png"; + btnPic.UnSelectedImagePath = "DeviceItem/PanelTable.png"; frameBorder.AddChidren(btnPic); if (listSort.Count == 4) @@ -403,9 +447,8 @@ /// </summary> /// <param name="frame">鎵╁ぇ鐐瑰嚮鍖哄煙鐨勫鍣�</param> /// <param name="device">璁惧瀵硅薄</param> - /// <param name="isFirst">鏄惁鏄涓�涓�</param> /// <returns></returns> - private void InitDeviceIcon(FrameLayoutControl frame, CommonDevice device, bool isFirst) + private void InitDeviceIcon(FrameLayoutControl frame, CommonDevice device) { //涓嶄娇鐢ㄧ偣鍑荤壒鏁� frame.UseClickStatu = false; @@ -413,7 +456,7 @@ var btnIcon = new NormalViewControl(Application.GetMinRealAverage(52), Application.GetMinRealAverage(52), false); btnIcon.Name = "btn" + device.DeviceEpoint; btnIcon.Gravity = Gravity.Center; - btnIcon.Radius = (uint)Application.GetMinRealAverage(6); + btnIcon.RadiusEx = 16; btnIcon.BorderWidth = 2; btnIcon.BorderColor = 0xff979797; frame.AddChidren(btnIcon, ChidrenBindMode.BindEventOnly); @@ -424,7 +467,7 @@ this.DeviceEpointSelectEvent(btnIcon, null); }; - if (isFirst == true) + if (device.DeviceEpoint == deviceObj.DeviceEpoint) { //鍒濆鍖栬彍鍗曡 this.DeviceEpointSelectEvent(btnIcon, null); @@ -450,7 +493,7 @@ frame1.Gravity = Gravity.CenterHorizontal; frameBack.AddChidren(frame1); //鍒濆鍖栬澶囧浘鏍� - this.InitDeviceIcon(frame1, listDevice[0], true); + this.InitDeviceIcon(frame1, listDevice[0]); //鎸夐敭2 var frame2 = new FrameLayoutControl(); @@ -460,7 +503,7 @@ frame2.Gravity = Gravity.CenterHorizontal; frameBack.AddChidren(frame2); //鍒濆鍖栬澶囧浘鏍� - this.InitDeviceIcon(frame2, listDevice[1], false); + this.InitDeviceIcon(frame2, listDevice[1]); } #endregion @@ -482,7 +525,7 @@ frame1.Gravity = Gravity.CenterHorizontal; frameBack.AddChidren(frame1); //鍒濆鍖栬澶囧浘鏍� - this.InitDeviceIcon(frame1, listDevice[0], true); + this.InitDeviceIcon(frame1, listDevice[0]); //鎸夐敭2 var frame2 = new FrameLayoutControl(); @@ -492,7 +535,7 @@ frame2.Y = Application.GetMinRealAverage(245); frameBack.AddChidren(frame2); //鍒濆鍖栬澶囧浘鏍� - this.InitDeviceIcon(frame2, listDevice[1], false); + this.InitDeviceIcon(frame2, listDevice[1]); //鎸夐敭3 var frame3 = new FrameLayoutControl(); @@ -502,7 +545,7 @@ frame3.Y = Application.GetMinRealAverage(245); frameBack.AddChidren(frame3); //鍒濆鍖栬澶囧浘鏍� - this.InitDeviceIcon(frame3, listDevice[2], false); + this.InitDeviceIcon(frame3, listDevice[2]); } #endregion @@ -524,7 +567,7 @@ frame1.Y = Application.GetMinRealAverage(63); frameBack.AddChidren(frame1); //鍒濆鍖栬澶囧浘鏍� - this.InitDeviceIcon(frame1, listDevice[0], true); + this.InitDeviceIcon(frame1, listDevice[0]); //鎸夐敭2 var frame2 = new FrameLayoutControl(); @@ -534,7 +577,7 @@ frame2.Y = Application.GetMinRealAverage(63); frameBack.AddChidren(frame2); //鍒濆鍖栬澶囧浘鏍� - this.InitDeviceIcon(frame2, listDevice[1], false); + this.InitDeviceIcon(frame2, listDevice[1]); //鎸夐敭3 var frame3 = new FrameLayoutControl(); @@ -544,7 +587,7 @@ frame3.Y = Application.GetMinRealAverage(245); frameBack.AddChidren(frame3); //鍒濆鍖栬澶囧浘鏍� - this.InitDeviceIcon(frame3, listDevice[2], false); + this.InitDeviceIcon(frame3, listDevice[2]); //鎸夐敭4 var frame4 = new FrameLayoutControl(); @@ -554,45 +597,7 @@ frame4.Y = Application.GetMinRealAverage(245); frameBack.AddChidren(frame4); //鍒濆鍖栬澶囧浘鏍� - this.InitDeviceIcon(frame4, listDevice[3], false); - } - - #endregion - - #region 鈻� 鍒濆鍖栨甯僟________________________ - - /// <summary> - /// 鍒濆鍖栨甯� - /// </summary> - private void InitFrameTable() - { - //寮у害鐨勫渾鐨勪竴鍗婄殑楂樺害(鍥哄畾) - int halfRoundHeigth = Application.GetRealHeight(116) / 2; - //寮у害鐨勫渾 - var btnRound = new NormalViewControl(bodyFrameLayout.Width, halfRoundHeigth * 2, false); - btnRound.Y = Application.GetRealHeight(708); - btnRound.BackgroundColor = UserCenterColor.Current.White; - btnRound.Radius = (uint)halfRoundHeigth; - bodyFrameLayout.AddChidren(btnRound); - //鏄庣粏鍒楄〃鐨勬甯冿紝鐧借壊鑳屾櫙(瑕嗙洊寮у害鐨勫渾鐨勫崐杈�) - var detailBackFrame = new FrameLayout(); - detailBackFrame.Y = btnRound.Bottom - btnRound.Height / 2; - detailBackFrame.Height = Application.GetRealHeight(1028);//楂樺害灏辨槸瑕佸畠瓒呰繃 - detailBackFrame.BackgroundColor = UserCenterColor.Current.White; - bodyFrameLayout.AddChidren(detailBackFrame); - - //璁惧缂栬緫 - var btnTile = new NormalViewControl(800, 60, true); - btnTile.X = ControlCommonResourse.XXLeft; - btnTile.TextSize = 15; - btnTile.TextColor = UserCenterColor.Current.TextColor2; - btnTile.TextID = R.MyInternationalizationString.uDeviceEditor; - detailBackFrame.AddChidren(btnTile); - - this.listview = new VerticalListControl(12); - listview.Y = btnTile.Bottom + Application.GetRealHeight(17); - listview.Height = Application.GetRealHeight(1028) - halfRoundHeigth - btnTile.Bottom - Application.GetRealHeight(17); - detailBackFrame.AddChidren(listview); + this.InitDeviceIcon(frame4, listDevice[3]); } #endregion @@ -627,7 +632,7 @@ nowContr.TextColor = UserCenterColor.Current.TextColor1; nowSelectControl = nowContr; - nowSelectDevice = Common.LocalDevice.Current.GetDevice(deviceMac, Convert.ToInt32(nowContr.Name.Replace("btn", string.Empty))); + nowSelectDevice = Common.LocalDevice.Current.GetDevice(deviceObj.DeviceAddr, Convert.ToInt32(nowContr.Name.Replace("btn", string.Empty))); //閲嶆柊鍒濆鍖栬彍鍗曡 this.InitMenuRow(); -- Gitblit v1.8.0