From 9c16d3614d9b88c637f967518a329f239fcd3aaf Mon Sep 17 00:00:00 2001 From: lss <316519258@qq.com> Date: 星期五, 12 六月 2020 09:22:04 +0800 Subject: [PATCH] 2020.06.12 --- ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/RoomDeviceGroupMenuControl.cs | 209 ++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 169 insertions(+), 40 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..79a91eb 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 璁惧绫诲瀷鏃讹細R鏂囦欢閲岄潰鐨処D) /// </summary> public string nowSelectKeys { @@ -29,20 +29,28 @@ { if (dicDevice != null) { - return oldSelectKeys.ToString(); + int index = 0; + foreach (var rId in dicDevice.Keys) + { + if (index == oldSelectIndex) + { + return rId.ToString(); + } + } + 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> @@ -50,7 +58,7 @@ /// <summary> /// 鍓嶅洖閫夋嫨鐨勬帶浠� /// </summary> - private FrameLayoutControl oldFrameBack = null; + private FrameLayoutStatuControl oldFrameBack = null; /// <summary> /// 鍓嶅洖閫夋嫨鐨勬帶浠� /// </summary> @@ -66,11 +74,7 @@ /// <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); } @@ -100,32 +104,43 @@ 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, i, listRoom[i].Name, btnTempWidth.GetRealWidthByText()); } } else { //鍒濆鍖栬澶囨ā寮忕殑鎺т欢 + int index = 0; foreach (int keys in dicDevice.Keys) { - if (oldSelectKeys == -1) + if (oldSelectIndex == -1) { //鍒濆鍊� - oldSelectKeys = keys; + oldSelectIndex = index; } - this.DoInitControl(scrolContr, keys, Language.StringByID(keys)); + //璁$畻瀛楃鐨勭湡瀹炲搴� + btnTempWidth.Text = Language.StringByID(keys); + this.DoInitControl(scrolContr, keys, index, btnTempWidth.Text, btnTempWidth.GetRealWidthByText()); + index++; } } + //璁╂帶浠舵粦鍔ㄥ埌鎸囧畾鐨勭储寮曚綅缃� + scrolContr.ScrollToViewIndex(oldSelectIndex + 1); } /// <summary> @@ -133,16 +148,27 @@ /// </summary> /// <param name="scrolContr">鍒楄〃鎺т欢</param> /// <param name="keys">瀛楀吀鐨勪富閿�</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, int keys, 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 +179,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 +193,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"; @@ -191,25 +217,122 @@ { this.SelectDeviceEvent?.Invoke(this.dicDevice[keys]); } - else if (this.dicRoom != null) + else if (this.listRoom != null) { - this.SelectRoomEvent?.Invoke(this.dicRoom[keys]); + this.SelectRoomEvent?.Invoke(this.listRoom[keys]); } }; //璋冪敤鍥炶皟鍑芥暟 - if (oldSelectKeys == keys) + if (oldSelectIndex == index) { if (this.dicDevice != null) { this.SelectDeviceEvent?.Invoke(this.dicDevice[keys]); } - else if (this.dicRoom != null) + else if (this.listRoom != null) { - this.SelectRoomEvent?.Invoke(this.dicRoom[keys]); + this.SelectRoomEvent?.Invoke(this.listRoom[keys]); } } } + + /// <summary> + /// 鍒濆鍖栨帶浠� + /// </summary> + /// <param name="scrolContr">鍒楄〃鎺т欢</param> + /// <param name="keys">瀛楀吀鐨勪富閿�</param> + /// <param name="index">绱㈠紩</param> + /// <param name="text">鏄剧ず鏂囨湰</param> + /// <param name="textWidth">鏂囨湰鐪熷疄瀹藉害</param> + private void DoInitControl2(HorizontalScrolViewLayout scrolContr, int keys, 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 FrameLayoutStatuControl(); + frameBack.UseClickStatu = false; + frameBack.Gravity = Gravity.Center; + frameBack.Height = Application.GetRealHeight(159); + frameBack.Width = realWidth; + frameBack.BorderWidth = 1; + frameBack.BorderColor = UserCenterColor.Current.TextColor1; + scrolContr.AddChidren(frameBack); + if (oldSelectIndex == index) + { + frameBack.SetViewShadow(true); + frameBack.BackgroundColor = UserCenterColor.Current.TextColor1; + oldFrameBack = frameBack; + } + + //鏂囧瓧 + var btnText = new NormalViewControl(textWidth, frameBack.Height, false); + btnText.Gravity = Gravity.CenterHorizontal; + btnText.Text = text; + btnText.TextSize = 12; + btnText.TextAlignment = TextAlignment.Center; + if (oldSelectIndex == index) + { + btnText.TextColor = UserCenterColor.Current.White; + oldBtnText = btnText; + } + else + { + btnText.TextColor = UserCenterColor.Current.TextGrayColor1; + } + frameBack.AddChidren(btnText, ChidrenBindMode.BindEvent); + + frameBack.ButtonClickEvent += (sender, e) => + { + if (oldSelectIndex == index) + { + //鍚屼竴涓笢瑗� + return; + } + oldSelectIndex = index; + + //鐘舵�佸彉鏇� + frameBack.SetViewShadow(true); + frameBack.BackgroundColor = UserCenterColor.Current.TextColor1; + btnText.TextColor = UserCenterColor.Current.White; + + oldFrameBack.SetViewShadow(false); + oldFrameBack.BackgroundColor = UserCenterColor.Current.Transparent; + oldBtnText.TextColor = UserCenterColor.Current.TextGrayColor1; + oldFrameBack = frameBack; + oldBtnText = btnText; + //璋冪敤鍥炶皟鍑芥暟 + if (this.dicDevice != null) + { + this.SelectDeviceEvent?.Invoke(this.dicDevice[keys]); + } + else if (this.listRoom != null) + { + this.SelectRoomEvent?.Invoke(this.listRoom[keys]); + } + }; + + //璋冪敤鍥炶皟鍑芥暟 + if (oldSelectIndex == index) + { + if (this.dicDevice != null) + { + this.SelectDeviceEvent?.Invoke(this.dicDevice[keys]); + } + else if (this.listRoom != null) + { + this.SelectRoomEvent?.Invoke(this.listRoom[keys]); + } + } + } + #endregion @@ -236,23 +359,29 @@ /// <param name="keys">鎴块棿ID 鎴栬�� R鏂囦欢閲岄潰鐨勬暟鍊肩紪鍙�(杞负瀛楃涓茬被鍨�)</param> public void SetDefultIndex(string keys) { - 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 == keys) { - oldSelectKeys = index; + oldSelectIndex = index; break; } } } else if (keys != string.Empty) { + int i = 0; int textId = Convert.ToInt32(keys); - if (dicDevice.ContainsKey(textId) == true) + foreach (int rId in dicDevice.Keys) { - oldSelectKeys = textId; + if (rId == textId) + { + oldSelectIndex = i; + break; + } + i++; } } } -- Gitblit v1.8.0