From 2bf5ec775cb57d8015bee58c745a1e48081ff1b1 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期二, 15 十月 2019 11:06:05 +0800
Subject: [PATCH] 首次合并了全部的代码

---
 ZigbeeApp/Shared/Phone/UserCenter/SharedContent/SearchConfigureSharedListRoomForm.cs |  355 ++++++++++++++++++++++++++++++++++++----------------------
 1 files changed, 219 insertions(+), 136 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/SharedContent/SearchConfigureSharedListRoomForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/SharedContent/SearchConfigureSharedListRoomForm.cs
index 679257b..fba4234 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/SharedContent/SearchConfigureSharedListRoomForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/SharedContent/SearchConfigureSharedListRoomForm.cs
@@ -7,16 +7,16 @@
 namespace Shared.Phone.UserCenter.SharedContent
 {
     /// <summary>
-    /// 鏌ョ湅宸插叡浜唴瀹圭殑鎴块棿鍒楄〃鐣岄潰
+    /// 鏌ョ湅宸插叡浜唴瀹圭殑鎴块棿鍒楄〃鐣岄潰鈽�
     /// </summary>
-    public class SearchConfigureSharedListRoomForm : UserCenterCommonForm
+    public class SearchConfigureSharedListRoomForm : EditorCommonForm
     {
         #region 鈻� 鍙橀噺澹版槑___________________________
 
         /// <summary>
         /// 鍒楄〃鎺т欢
         /// </summary>
-        private VerticalScrolViewLayout listView = null;
+        private VerticalFrameControl listView = null;
         /// <summary>
         /// 鎴愬憳淇℃伅
         /// </summary>
@@ -33,53 +33,43 @@
         /// <summary>
         /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
         /// </summary>
-        /// <param name="i_memberResult">鎴愬憳淇℃伅</param>
-        /// <param name="i_memberShardInfo">鎴愬憳鐨勫叡浜俊鎭�</param>
-        public void ShowForm(MemberInfoRes i_memberResult, MemberShardInfoData i_memberShardInfo)
-        {
-            this.memberResult = i_memberResult;
+        /// <param name="i_memberResult">鎴愬憳淇℃伅</param>
+        /// <param name="i_memberShardInfo">鎴愬憳鐨勫叡浜俊鎭�</param>
+        public void ShowForm(MemberInfoRes i_memberResult, MemberShardInfoData i_memberShardInfo)
+        {
+            this.memberResult = i_memberResult;
             this.memberShardInfo = i_memberShardInfo;
-            this.memberShardInfo.SubAccountDistributedMark = this.memberResult.SubAccountDistributedMark;
-
-            //璁剧疆澶撮儴淇℃伅
-            base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uHadSharedContent));
+            this.memberShardInfo.SubAccountDistributedMark = this.memberResult.SubAccountDistributedMark;
+
+            //璁剧疆澶撮儴淇℃伅
+            base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uShared2));
 
             //娣诲姞鍥炬爣
-            var btnAdd = new TopLayoutMostRightView();
+            var btnAdd = new MostRightIconControl(69, 69);
             btnAdd.UnSelectedImagePath = "Item/Add.png";
-            btnAdd.SelectedImagePath = "Item/AddSelected.png";
-            btnAdd.MouseUpEventHandler += (sender, e) =>
-            {
-                var form = new ConfigureNewSharedListRoomForm();
-                base.AddForm(form, this.memberResult, this.memberShardInfo);
-            };
-            topFrameLayout.AddChidren(btnAdd);
-
-            //鍒濆鍖栦腑閮ㄤ俊鎭�
-            this.InitMiddleFrame();
-        }
-
+            btnAdd.ButtonClickEvent += (sender, e) =>
+            {
+                var form = new ConfigureNewSharedListRoomForm();
+                form.AddForm(this.memberResult, this.memberShardInfo);
+            };
+            topFrameLayout.AddChidren(btnAdd);
+            btnAdd.InitControl();
+
+            //鍒濆鍖栦腑閮ㄤ俊鎭�
+            this.InitMiddleFrame();
+        }
+
         /// <summary>
         /// 鍒濆鍖栦腑閮ㄤ俊鎭�
-        /// </summary>
-        private void InitMiddleFrame()
-        {
-            bodyFrameLayout.RemoveAll();
+        /// </summary>
+        private void InitMiddleFrame()
+        {
+            //娓呯┖bodyFrame
+            this.ClearBodyFrame();
 
-            //鍖哄煙鍒楄〃
-            var btnTitle = new TitleViewControl(1000, true);
-            btnTitle.TextID = R.MyInternationalizationString.uAreaList;
-            btnTitle.Y = Application.GetRealHeight(30);
-            bodyFrameLayout.AddChidren(btnTitle);
-
-            this.listView = new VerticalScrolViewLayout();
-            listView.Y = btnTitle.Bottom + Application.GetRealHeight(30);
-            listView.Height = bodyFrameLayout.Height - Application.GetRealHeight(30) - btnTitle.Bottom;
-            bodyFrameLayout.AddChidren(listView);
-
-            new System.Threading.Thread(async () =>
+            HdlThreadLogic.Current.RunThread(async () =>
             {
-                //鑾峰彇鎴愬憳鐨勫叡浜垪琛�(杩斿洖鏂囦欢鐨勫悕瀛楀拰涓婚敭)
+                //鑾峰彇鎴愬憳鐨勫叡浜垪琛�
                 var result = await this.GetMemberShardContentListAndSetToLocation();
                 if (result == false)
                 {
@@ -90,8 +80,7 @@
                 //鍒濆鍖栧尯鍩熷垪琛�
                 this.InitAreaListRow();
 
-            })
-            { IsBackground = true }.Start();
+            });
         }
 
         #endregion
@@ -105,54 +94,115 @@
         {
             if (memberShardInfo.dicShardRoom.Count == 0)
             {
-                Application.RunOnMainThread(() =>
+                HdlThreadLogic.Current.RunMain(() =>
+                {
+                    //鏄剧ず娌℃湁鍒嗕韩鏁版嵁妯″紡
+                    this.ShowNotShardMode();
+                });
+            }
+            else
+            {
+                //鍚堝苟鍚屼竴妤煎眰鐨勬埧闂�
+                var dicGroup = new Dictionary<string, List<Common.Room>>();
+                foreach (var room in memberShardInfo.dicShardRoom.Values)
+                {
+                    if (dicGroup.ContainsKey(room.FloorId) == false)
+                    {
+                        dicGroup[room.FloorId] = new List<Common.Room>();
+                    }
+                    dicGroup[room.FloorId].Add(room);
+                }
+
+                HdlThreadLogic.Current.RunMain(() =>
                 {
                     bodyFrameLayout.RemoveAll();
-                    //璇烽厤缃叡浜澶�
-                    var btnMsg = new MsgViewControl(bodyFrameLayout.Width, false);
-                    btnMsg.Gravity = Gravity.CenterVertical;
-                    btnMsg.TextID = R.MyInternationalizationString.uPleaseConfigureShardDeviceMsg;
-                    bodyFrameLayout.AddChidren(btnMsg);
-                });
-                return;
-            }
-            foreach (var room in memberShardInfo.dicShardRoom.Values)
-            {
-                Application.RunOnMainThread(() =>
-                {
-                    this.AddRoomRow(room);
+
+                    this.listView = new VerticalFrameControl(29);
+                    listView.Height = bodyFrameLayout.Height;
+                    bodyFrameLayout.AddChidren(listView);
+
+                    //娣诲姞鍚勮嚜妤煎眰鐨勬埧闂村垪琛�
+                    foreach (var floorId in dicGroup.Keys)
+                    {
+                        this.AddRoomListRow(floorId, dicGroup[floorId]);
+                    }
                 });
             }
         }
 
         /// <summary>
-        /// 娣诲姞鎴块棿琛�
+        /// 娣诲姞鎴块棿鍒楄〃琛�
         /// </summary>
-        /// <param name="room"></param>
-        private void AddRoomRow(Common.Room room)
+        /// <param name="listRoom"></param>
+        private void AddRoomListRow(string floorId, List<Common.Room> listRoom)
         {
-            var row = new StatuRowLayout(listView);
-            //鎴块棿鍚�
-            var btnName = new RowCenterView(false);
-            btnName.Text = room.Name;
-            row.AddChidren(btnName);
+            var frameBack = new FrameListControl(29);
+            frameBack.BackgroundColor = UserCenterColor.Current.White;
+            frameBack.Height = 10;
+            this.listView.AddChidrenFrame(frameBack);
 
-            var btnDelete = new RowDeleteButton();
-            row.AddRightView(btnDelete);
-            btnDelete.MouseUpEventHandler += (sender, e) =>
+            //妤煎眰
+            if (string.IsNullOrEmpty(floorId) == false)
             {
-                //纭畾绉婚櫎璇ュ叡浜尯鍩燂紵
-                string msg = Language.StringByID(R.MyInternationalizationString.uDeleteShardAreaMsg);
-                this.ShowConfirmMsg(msg, "DoDeleteShardContentByRoom", room);
-            };
+                var btnFloor = new NormalViewControl(800, 60, true);
+                btnFloor.X = ControlCommonResourse.XXLeft;
+                btnFloor.Y = Application.GetRealHeight(52);
+                btnFloor.TextColor = UserCenterColor.Current.TextColor2;
+                btnFloor.TextSize = 15;
+                frameBack.AddChidren(btnFloor);
+                if (memberShardInfo.dicShardFloor.ContainsKey(floorId) == true)
+                {
+                    btnFloor.Text = memberShardInfo.dicShardFloor[floorId];
+                }
+                else
+                {
+                    btnFloor.Text = "UnKnown";
+                }
+            }
 
-            row.AddRightIconControl();
-
-            row.MouseUpEvent += (sender, e) =>
+            for (int i = 0; i < listRoom.Count; i++)
             {
-                var form = new SearchConfigureSharedMainForm();
-                this.AddForm(form, room, memberResult, memberShardInfo);
-            };
+                var room = listRoom[i];
+                var frameRow = new RowLayoutControl(frameBack.rowSpace / 2);
+                frameBack.AddChidren(frameRow);
+                //鍥炬爣
+                var btnIcon = frameRow.frameTable.AddLeftIcon(81);
+                btnIcon.UnSelectedImagePath = "Item/RoomIcon.png";
+                //鍚嶇О
+                var btnName = frameRow.frameTable.AddLeftCaption(room.Name, 600);
+                btnName.TextSize = 15;
+                //鍙崇澶�
+                frameRow.frameTable.AddRightArrow();
+                if (i != listRoom.Count - 1)
+                {
+                    //搴曠嚎
+                    frameRow.frameTable.AddBottomLine();
+                }
+                frameRow.frameTable.ButtonClickEvent += (sender, e) =>
+                {
+                };
+
+                //鍒犻櫎
+                var btnDelete = new NormalViewControl(Application.GetRealWidth(184), frameRow.Height, false);
+                btnDelete.BackgroundColor = 0xfff75858;
+                btnDelete.TextSize = 12;
+                btnDelete.TextColor = UserCenterColor.Current.White;
+                btnDelete.TextAlignment = TextAlignment.Center;
+                btnDelete.TextID = R.MyInternationalizationString.uDelete;
+                frameRow.AddRightView(btnDelete);
+                btnDelete.ButtonClickEvent += (sender, e) =>
+                {
+                    //纭鍒犻櫎鍏变韩鎴块棿锛�
+                    string msg = Language.StringByID(R.MyInternationalizationString.uDeleteShardRoomMsg);
+                    this.ShowMassage(ShowMsgType.Confirm, msg, () =>
+                    {
+                        //鍒犻櫎鍏变韩鍖哄煙
+                        this.DoDeleteShardContentByRoom(room);
+                    });
+                };
+            }
+            //璋冩暣瀛愭帶浠禙rame楂樺害
+            this.listView.AdjustChidrenFrameHeight(frameBack, Application.GetRealHeight(29));
         }
         #endregion
 
@@ -168,10 +218,11 @@
             var listDevice = new List<CommonDevice>();
             foreach (var deviceUi in room.DeviceUIList)
             {
-                var device = deviceUi.CommonDevice;
+                var device = deviceUi.CommonDevice;
                 if (device == null)
                 {
-                    var byteData = HdlShardLogic.Current.GetShardFileContent(deviceUi.DeviceFileName);
+                    string deviceFile = deviceUi.FileName.Replace("DeviceUI_", string.Empty);
+                    var byteData = HdlShardLogic.Current.GetShardFileContent(deviceFile);
                     if (byteData == null)
                     {
                         continue;
@@ -187,20 +238,19 @@
                 listScene.Add(sceneUi);
             }
 
-            new System.Threading.Thread(async () =>
+            HdlThreadLogic.Current.RunThread(async () =>
             {
                 //鎵ц鍒犻櫎
                 var result = await HdlShardLogic.Current.DoDeleteSharedContent(memberShardInfo, room, listDevice, listScene);
                 if (result == true)
                 {
-                    Application.RunOnMainThread(() =>
+                    HdlThreadLogic.Current.RunMain(() =>
                     {
                         //閲嶆柊鍒锋柊鐣岄潰
                         this.InitMiddleFrame();
                     });
                 }
-            })
-            { IsBackground = true }.Start();
+            });
         }
 
         #endregion
@@ -228,7 +278,7 @@
                 HouseDistributedMark = Shared.Common.Config.Instance.HomeId,
                 IsOtherAccountControl = Common.Config.Instance.isAdministrator
             };
-            var result = await UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeDataShare/GetShareDataBySubAccount", infoPra);
+            var result = await UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeDataShare/GetShareDataBySubAccount", false, infoPra);
             if (result == null)
             {
                 //鍏抽棴杩涘害鏉�
@@ -284,6 +334,9 @@
             memberShardInfo.dicShardRoom = new Dictionary<string, Common.Room>();
 
             var listFile = HdlShardLogic.Current.GetLocalAllShardFile();
+            //璁惧鏂囦欢(鍒嗕韩鐨�,鑰屼笉鏄湰鍦扮殑)
+            var dicDeviceFile = new Dictionary<string, string>();
+            //鍏堝垵濮嬪寲鎴块棿
             foreach (string fileName in listFile)
             {
                 if (fileName.StartsWith("Room_") == true)
@@ -299,20 +352,21 @@
 
                     if (memberShardInfo.dicAllMemberShard.ContainsKey(fileName) == false)
                     {
-                        //鍏堝垵濮嬪寲鎴块棿
                         memberShardInfo.dicAllMemberShard[fileName] = new HashSet<string>();
                     }
                 }
+                else if (fileName.StartsWith("Device_") == true)
+                {
+                    //璁惧鏂囦欢
+                    string[] MyArry = fileName.Split(new string[] { "_" }, StringSplitOptions.RemoveEmptyEntries);
+                    if (MyArry.Length == 4)
+                    {
+                        string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(MyArry[2], Convert.ToInt32(MyArry[3]));
+                        dicDeviceFile[mainKeys] = fileName;
+                    }
+                }
             }
-            //璁剧疆鎴块棿閲岄潰璁惧鐨刄I瀵硅薄(鍥犱负杩欎釜涓滆タ鏄弽搴忓垪鍖栧嚭鏉ョ殑,璁惧UI瀵硅薄鏄笉搴忓垪鍖栧璞�)
-            this.InitRoomAttributeData();
-        }
 
-        /// <summary>
-        /// 鍒濆鍖栨埧闂寸殑灞炴�у璞″叏閮ㄧ殑鏈湴鏂囦欢
-        /// </summary>
-        private void InitRoomAttributeData()
-        {
             //璁剧疆鎴块棿閲岄潰璁惧鐨刄I瀵硅薄(鍥犱负杩欎釜涓滆タ鏄弽搴忓垪鍖栧嚭鏉ョ殑,璁惧UI瀵硅薄鏄笉搴忓垪鍖栧璞�)
             foreach (var tempRoom in memberShardInfo.dicShardRoom.Values)
             {
@@ -321,23 +375,18 @@
                 //娣诲姞鎴块棿
                 listShard.Add(tempRoom.FileName);
 
-                //杩樺師UI璁惧瀵硅薄
+                //杩樺師璁惧瀵硅薄
                 tempRoom.DeviceUIList.Clear();
                 foreach (string uiPath in tempRoom.DeviceUIFilePathList)
                 {
-                    var byteData = HdlShardLogic.Current.GetShardFileContent(uiPath);
-                    if (byteData == null)
+                    string deviceFile = uiPath.Replace("DeviceUI_", string.Empty);
+                    if (HdlShardLogic.Current.IsFileExists(deviceFile) == false)
                     {
                         continue;
                     }
-                    string valueData = System.Text.Encoding.UTF8.GetString(byteData);
-                    var tempUi = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.DeviceUI>(valueData);
-                    tempRoom.DeviceUIList.Add(tempUi);
-
-                    //璁惧UI
-                    listShard.Add(tempUi.FileName);
+                    tempRoom.DeviceUIList.Add(Common.LocalDevice.Current.GetDeviceUI(uiPath));
                     //璁惧
-                    listShard.Add(tempUi.DeviceFileName);
+                    listShard.Add(deviceFile);
                 }
                 //杩樺師鍦烘櫙瀵硅薄
                 tempRoom.SceneUIList.Clear();
@@ -355,22 +404,54 @@
                     //鍦烘櫙鐨勪富閿�
                     listShard.Add(tempUi.FileName);
                     //浠庡満鏅璞¢噷闈㈣幏鍙栧叏閮ㄧ殑缁戝畾鐩爣鐨勬枃浠跺悕瀛�
-                    this.GetSceneBindFileName(tempUi, ref listShard);
+                    this.GetSceneBindFileName(tempUi, dicDeviceFile, ref listShard);
+                }
+            }
+        }
+
+        /// <summary>
+        /// 浠庡満鏅璞¢噷闈㈣幏鍙栧叏閮ㄧ殑缁戝畾鐩爣鐨勬枃浠跺悕瀛�
+        /// </summary>
+        /// <param name="scene">鍦烘櫙</param>
+        /// <param name="dicDeviceFile">鍒嗕韩鐨勮澶囨枃浠�</param>
+        /// <param name="listFile">鏂囦欢鍒楄〃(閲岄潰瀛樼殑鏄澶嘦I鏂囦欢鍜岃澶囨枃浠跺拰鍦烘櫙鏂囦欢)</param>
+        private void GetSceneBindFileName(Common.SceneUI scene, Dictionary<string, string> dicDeviceFile, ref HashSet<string> listFile)
+        {
+            foreach (var data in scene.AddSceneMemberDataList)
+            {
+                //璁惧
+                if (data.Type == 0)
+                {
+                    var mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(data.DeviceAddr, data.Epoint);
+                    if (dicDeviceFile.ContainsKey(mainKeys) == true && listFile.Contains(dicDeviceFile[mainKeys]) == false)
+                    {
+                        listFile.Add(dicDeviceFile[mainKeys]);
+                    }
+                }
+                if (data.Type == 1)
+                {
+                    var sceneTemp = new Common.SceneUI();
+                    sceneTemp.Id = data.ElseScenesId;
+                    if (listFile.Contains(sceneTemp.FileName))
+                    {
+                        listFile.Add(sceneTemp.FileName);
+                    }
                 }
             }
         }
 
         #endregion
 
-        #region 鈻� 鐣岄潰閲嶆柊婵�娲讳簨浠禵__________________
+        #region 鈻� 鐣岄潰閲嶆柊婵�娲讳簨浠禵__________________
 
         /// <summary>
         /// 鑷韩鐨勪笂灞傜晫闈㈠叧闂悗,瀹冭嚜韬浜庢渶涓婂眰鏃�,瑙﹀彂鐨勪簨浠�
-        /// </summary>
-        public override void FormActionAgainEvent()
+        /// </summary>
+        public override int FormActionAgainEvent()
         {
             //閲嶆柊鍒锋柊鐣岄潰
             this.InitMiddleFrame();
+            return 1;
         }
 
         #endregion
@@ -378,38 +459,40 @@
         #region 鈻� 涓�鑸柟娉昣__________________________
 
         /// <summary>
-        /// 浠庡満鏅璞¢噷闈㈣幏鍙栧叏閮ㄧ殑缁戝畾鐩爣鐨勬枃浠跺悕瀛�
+        /// 鏄剧ず娌℃湁鍒嗕韩鏁版嵁妯″紡
         /// </summary>
-        /// <param name="scene">鍦烘櫙</param>
-        /// <param name="listFile">鏂囦欢鍒楄〃(閲岄潰瀛樼殑鏄澶嘦I鏂囦欢鍜岃澶囨枃浠跺拰鍦烘櫙鏂囦欢)</param>
-        private void GetSceneBindFileName(Common.SceneUI scene, ref HashSet<string> listFile)
+        private void ShowNotShardMode()
         {
-            foreach (var data in scene.AddSceneMemberDataList)
+            bodyFrameLayout.RemoveAll();
+            //鍥剧墖
+            var btnPic = new PicViewControl(383, 279);
+            btnPic.Gravity = Gravity.CenterHorizontal;
+            btnPic.Y = Application.GetRealHeight(498);
+            btnPic.UnSelectedImagePath = "Item/NotShardPic.png";
+            bodyFrameLayout.AddChidren(btnPic);
+
+            //杩樻病鏈夊叡浜尯鍩熺粰鎴愬憳{0}鍙偣鍑诲彸涓婅鈥�+鈥濇坊鍔�
+            string msg = Language.StringByID(R.MyInternationalizationString.uNotShardComtentMsg);
+            string[] Arry = msg.Split(new string[] { "{0}" }, StringSplitOptions.RemoveEmptyEntries);
+            var btnMsg1 = new NormalViewControl(bodyFrameLayout.Width, Application.GetRealHeight(50), false);
+            btnMsg1.Y = Application.GetRealHeight(962);
+            btnMsg1.TextAlignment = TextAlignment.Center;
+            btnMsg1.TextSize = 12;
+            btnMsg1.TextColor = UserCenterColor.Current.TextGrayColor1;
+            btnMsg1.Text = Arry[0];
+            bodyFrameLayout.AddChidren(btnMsg1);
+            if (Arry.Length > 1)
             {
-                //璁惧
-                if (data.Type == 0)
-                {
-                    var device = Common.LocalDevice.Current.GetDevice(data.DeviceAddr, data.Epoint);
-                    if (device != null)
-                    {
-                        string uiName = "DeviceUI_" + device.FilePath;
-                        if (listFile.Contains(uiName) == false)
-                        {
-                            listFile.Add(uiName);
-                            listFile.Add(device.FilePath);
-                        }
-                    }
-                }
-                if (data.Type == 1)
-                {
-                    var sceneTemp = Common.Room.CurrentRoom.GetSceneUIBySceneId(data.ElseScenesId);
-                    if (sceneTemp != null && listFile.Contains(sceneTemp.FileName))
-                    {
-                        listFile.Add(sceneTemp.FileName);
-                    }
-                }
+                var btnMsg2 = new NormalViewControl(bodyFrameLayout.Width, Application.GetRealHeight(50), false);
+                btnMsg2.Y = btnMsg1.Bottom;
+                btnMsg2.TextAlignment = TextAlignment.Center;
+                btnMsg2.TextSize = 12;
+                btnMsg2.TextColor = UserCenterColor.Current.TextGrayColor1;
+                btnMsg2.Text = Arry[1];
+                bodyFrameLayout.AddChidren(btnMsg2);
             }
         }
+
         #endregion
 
         #region 鈻� 缁撴瀯浣揰____________________________

--
Gitblit v1.8.0