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