From c7df85937f73fb347ee0b19e9c052d2d00a6df6c Mon Sep 17 00:00:00 2001 From: 黄学彪 <hxb@hdlchina.com.cn> Date: 星期五, 18 九月 2020 13:58:19 +0800 Subject: [PATCH] 新版本 --- ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/RoomDeviceGroupMenuControl.cs | 134 +++++++++++++++++++++++++++----------------- 1 files changed, 83 insertions(+), 51 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/RoomDeviceGroupMenuControl.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/RoomDeviceGroupMenuControl.cs index 056f16c..f4e0c58 100755 --- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/RoomDeviceGroupMenuControl.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/RoomDeviceGroupMenuControl.cs @@ -21,7 +21,7 @@ /// </summary> public Action<List<CommonDevice>> SelectDeviceEvent = null; /// <summary> - /// 褰撳墠閫夋嫨鐨勪富閿� + /// 褰撳墠閫夋嫨鐨勪富閿�(鎴块棿绫诲瀷鏃讹細鎴块棿ID 璁惧绫诲瀷鏃讹細鏂囨湰淇℃伅) /// </summary> public string nowSelectKeys { @@ -29,28 +29,37 @@ { if (dicDevice != null) { - return oldSelectKeys.ToString(); + int index = 0; + foreach (var rId in dicDevice.Keys) + { + if (index == oldSelectIndex) + { + return rId.ToString(); + } + index++; + } + return string.Empty; } - return dicRoom[oldSelectKeys].Id; + return listRoom[oldSelectIndex].Id; } } /// <summary> - /// 褰撳墠閫夋嫨鐨勪富閿�(鍐呴儴浣跨敤) + /// 褰撳墠閫夋嫨鐨勭储寮�(鍐呴儴浣跨敤) /// </summary> - private int oldSelectKeys = -1; + private int oldSelectIndex = -1; /// <summary> /// 鎴块棿瀵硅薄 /// </summary> - private Dictionary<int, Common.Room> dicRoom = null; + private List<Common.Room> listRoom = null; /// <summary> /// 璁惧瀵硅薄 /// </summary> - private Dictionary<int, List<CommonDevice>> dicDevice = null; + private Dictionary<string, List<CommonDevice>> dicDevice = null; /// <summary> /// 鍓嶅洖閫夋嫨鐨勬帶浠� /// </summary> - private FrameLayoutControl oldFrameBack = null; + private FrameLayoutStatuControl oldFrameBack = null; /// <summary> /// 鍓嶅洖閫夋嫨鐨勬帶浠� /// </summary> @@ -66,19 +75,15 @@ /// <param name="i_listRoom">鎴块棿鍒楄〃</param> public RoomDeviceGroupMenuControl(List<Common.Room> i_listRoom) { - this.dicRoom = new Dictionary<int, Common.Room>(); - for (int i = 0; i < i_listRoom.Count; i++) - { - this.dicRoom[i] = i_listRoom[i]; - } + this.listRoom = i_listRoom; this.Height = Application.GetRealHeight(204); } /// <summary> /// 璁惧缁勫悎鐨勮彍鍗曟帶浠� /// </summary> - /// <param name="i_dicDevice">璁惧鍒楄〃,keys:R鏂囦欢閲岄潰鐨勬暟瀛楃紪鍙�</param> - public RoomDeviceGroupMenuControl(Dictionary<int, List<CommonDevice>> i_dicDevice) + /// <param name="i_dicDevice">璁惧鍒楄〃,keys:鏂囨湰</param> + public RoomDeviceGroupMenuControl(Dictionary<string, List<CommonDevice>> i_dicDevice) { this.dicDevice = i_dicDevice; this.Height = Application.GetRealHeight(204); @@ -100,49 +105,71 @@ frameTemp.Width = ControlCommonResourse.XXLeft / 2; scrolContr.AddChidren(frameTemp); - if (this.dicRoom != null) + var btnTempWidth = new ButtonBase(); + btnTempWidth.TextSize = 12; + if (this.listRoom != null) { //鍒濆鍖栨埧闂存ā寮忕殑鎺т欢 - foreach (int keys in dicRoom.Keys) + for (int i = 0; i < listRoom.Count; i++) { - if (oldSelectKeys == -1) + if (oldSelectIndex == -1) { //鍒濆鍊� - oldSelectKeys = keys; + oldSelectIndex = i; } - this.DoInitControl(scrolContr, keys, dicRoom[keys].Name); + + //璁$畻瀛楃鐨勭湡瀹炲搴� + btnTempWidth.Text = listRoom[i].Name; + this.DoInitControl(scrolContr, i.ToString(), i, listRoom[i].Name, btnTempWidth.GetRealWidthByText()); } } else { //鍒濆鍖栬澶囨ā寮忕殑鎺т欢 - foreach (int keys in dicDevice.Keys) + int index = 0; + foreach (string strKeys in dicDevice.Keys) { - if (oldSelectKeys == -1) + if (oldSelectIndex == -1) { //鍒濆鍊� - oldSelectKeys = keys; + oldSelectIndex = index; } - this.DoInitControl(scrolContr, keys, Language.StringByID(keys)); + //璁$畻瀛楃鐨勭湡瀹炲搴� + btnTempWidth.Text = strKeys; + this.DoInitControl(scrolContr, strKeys, index, btnTempWidth.Text, btnTempWidth.GetRealWidthByText()); + index++; } } + //璁╂帶浠舵粦鍔ㄥ埌鎸囧畾鐨勭储寮曚綅缃� + scrolContr.ScrollToViewIndex(oldSelectIndex + 1); } /// <summary> /// 鍒濆鍖栨帶浠� /// </summary> /// <param name="scrolContr">鍒楄〃鎺т欢</param> - /// <param name="keys">瀛楀吀鐨勪富閿�</param> + /// <param name="strKey">瀛楀吀鐨勪富閿�</param> + /// <param name="index">绱㈠紩</param> /// <param name="text">鏄剧ず鏂囨湰</param> - private void DoInitControl(HorizontalScrolViewLayout scrolContr, int keys, string text) + /// <param name="textWidth">鏂囨湰鐪熷疄瀹藉害</param> + private void DoInitControl(HorizontalScrolViewLayout scrolContr, string strKey, int index, string text, int textWidth) { + //甯﹀簳鍥炬帶浠剁殑鏈�灏忓搴� + int minWidth = Application.GetRealWidth(255); + //甯﹀簳鍥炬帶浠剁殑鐪熷疄瀹藉害 <鏂囧瓧鐨勫搴︾殑璁$畻 frameBack.Width - (int)(frameBack.Height * 0.47)> + int realWidth = textWidth + (int)(Application.GetRealHeight(159) * 0.47); + if (realWidth < minWidth) + { + realWidth = minWidth; + } + //甯﹀浘鐗囩殑 - var frameBack = new FrameLayoutControl(); + var frameBack = new FrameLayoutStatuControl(); frameBack.UseClickStatu = false; frameBack.Gravity = Gravity.Center; frameBack.Height = Application.GetRealHeight(159); - frameBack.Width = Application.GetRealWidth(255); - if (oldSelectKeys == keys) + frameBack.Width = realWidth; + if (oldSelectIndex == index) { frameBack.BackgroundImagePath = "Item/RoomIconBackgroundSelected.png"; oldFrameBack = frameBack; @@ -153,12 +180,12 @@ } scrolContr.AddChidren(frameBack); //鏂囧瓧 - var btnText = new NormalViewControl(frameBack.Width - (int)(frameBack.Height * 0.47), frameBack.Height, false); + var btnText = new NormalViewControl(textWidth, frameBack.Height, false); btnText.Gravity = Gravity.CenterHorizontal; btnText.Text = text; btnText.TextSize = 12; btnText.TextAlignment = TextAlignment.Center; - if (oldSelectKeys == keys) + if (oldSelectIndex == index) { btnText.TextColor = UserCenterColor.Current.White; oldBtnText = btnText; @@ -167,16 +194,16 @@ { btnText.TextColor = UserCenterColor.Current.TextGrayColor1; } - frameBack.AddChidren(btnText, ChidrenBindMode.BindEventOnly); + frameBack.AddChidren(btnText, ChidrenBindMode.BindEvent); frameBack.ButtonClickEvent += (sender, e) => { - if (oldSelectKeys == keys) + if (oldSelectIndex == index) { //鍚屼竴涓笢瑗� return; } - oldSelectKeys = keys; + oldSelectIndex = index; //鐘舵�佸彉鏇� frameBack.BackgroundImagePath = "Item/RoomIconBackgroundSelected.png"; @@ -189,24 +216,24 @@ //璋冪敤鍥炶皟鍑芥暟 if (this.dicDevice != null) { - this.SelectDeviceEvent?.Invoke(this.dicDevice[keys]); + this.SelectDeviceEvent?.Invoke(this.dicDevice[strKey]); } - else if (this.dicRoom != null) + else if (this.listRoom != null) { - this.SelectRoomEvent?.Invoke(this.dicRoom[keys]); + this.SelectRoomEvent?.Invoke(this.listRoom[Convert.ToInt32(strKey)]); } }; //璋冪敤鍥炶皟鍑芥暟 - if (oldSelectKeys == keys) + if (oldSelectIndex == index) { if (this.dicDevice != null) { - this.SelectDeviceEvent?.Invoke(this.dicDevice[keys]); + this.SelectDeviceEvent?.Invoke(this.dicDevice[strKey]); } - else if (this.dicRoom != null) + else if (this.listRoom != null) { - this.SelectRoomEvent?.Invoke(this.dicRoom[keys]); + this.SelectRoomEvent?.Invoke(this.listRoom[Convert.ToInt32(strKey)]); } } } @@ -233,26 +260,31 @@ /// <summary> /// 璁剧疆鍒濆閫夋嫨(璇峰湪鍒濆鍖栧畬鎴愪箣鍓嶈皟鐢�) /// </summary> - /// <param name="keys">鎴块棿ID 鎴栬�� R鏂囦欢閲岄潰鐨勬暟鍊肩紪鍙�(杞负瀛楃涓茬被鍨�)</param> - public void SetDefultIndex(string keys) + /// <param name="strKey">鎴块棿ID 鎴栬�� 鏂囨湰淇℃伅</param> + public void SetDefultIndex(string strKey) { - if (dicRoom != null) + if (listRoom != null) { - foreach (int index in dicRoom.Keys) + for (int index = 0; index < listRoom.Count; index++) { - if (dicRoom[index].Id == keys) + if (listRoom[index].Id == strKey) { - oldSelectKeys = index; + oldSelectIndex = index; break; } } } - else if (keys != string.Empty) + else if (strKey != string.Empty) { - int textId = Convert.ToInt32(keys); - if (dicDevice.ContainsKey(textId) == true) + int i = 0; + foreach (string rId in dicDevice.Keys) { - oldSelectKeys = textId; + if (rId == strKey) + { + oldSelectIndex = i; + break; + } + i++; } } } -- Gitblit v1.8.0