From 25429f085093d89d543a0b90e30d0d62d1b7dac9 Mon Sep 17 00:00:00 2001
From: hxb <hxb@hdlchina.com.cn>
Date: 星期二, 30 八月 2022 09:37:38 +0800
Subject: [PATCH] 合并了IOS的代码

---
 ZigbeeApp/Shared/Phone/UserCenter/Residence/ResidenceManagementForm.cs |  218 ++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 139 insertions(+), 79 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Residence/ResidenceManagementForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Residence/ResidenceManagementForm.cs
index 8682058..02092c1 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Residence/ResidenceManagementForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Residence/ResidenceManagementForm.cs
@@ -14,7 +14,7 @@
         /// <summary>
         /// 妗屽竷鎺т欢
         /// </summary>
-        private FrameLayout frameTable = null;
+        private NormalFrameLayout frameTable = null;
         /// <summary>
         /// 鍒楄〃鎺т欢(鐧借壊鑳屾櫙)
         /// </summary>
@@ -23,14 +23,6 @@
         /// 鏁翠釜鐣岄潰鐨勪笂涓嬫粦鍔ㄦ帶浠�
         /// </summary>
         private VerticalFrameControl listBackContr = null;
-        /// <summary>
-        /// 妤煎眰椤哄簭
-        /// </summary>
-        private List<string> listFloorSort = new List<string>();
-        /// <summary>
-        /// 鎴块棿椤哄簭
-        /// </summary>
-        private List<string> listRoomSort = new List<string>();
         /// <summary>
         /// 褰撳墠APP鐨勪綇瀹呮ā寮� 0:杩樻病鏈夎缃湁妯″紡 1:妤煎眰妯″紡 2:娌℃湁妤煎眰妯″紡
         /// </summary>
@@ -52,8 +44,12 @@
             //涓讳汉鎴栬�呯鐞嗗憳鎵嶄細鍑虹幇杩欎釜鑿滃崟
             if (UserCenterResourse.UserInfo.AuthorityNo == 1 || UserCenterResourse.UserInfo.AuthorityNo == 2)
             {
-                //鍒濆鍖栧彸涓婅鑿滃崟
-                this.InitTopRightMenu();
+                //鏌ョ湅妯℃澘鏃�,涓嶅厑璁哥紪杈�
+                if (Common.Config.Instance.Home.IsShowTemplate == false)
+                {
+                    //鍒濆鍖栧彸涓婅鑿滃崟
+                    this.InitTopRightMenu();
+                }
             }
             //鍒濆鍖栦腑閮ㄤ俊鎭�
             this.InitMiddleFrame(i_CanDeleteResidence);
@@ -87,13 +83,13 @@
             var btnHomeName = rowHome.frameTable.AddLeftCaption(Common.Config.Instance.Home.Name, 700, 60);
             btnHomeName.TextSize = 15;
             btnHomeName.Y = Application.GetRealHeight(35);
-            rowHome.frameTable.AddChidren(btnHomeName, ChidrenBindMode.BindEventOnly);
+            rowHome.frameTable.AddChidren(btnHomeName, ChidrenBindMode.BindEvent);
             //褰撳墠浣忓畢
             var btnNowView = rowHome.frameTable.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uNowResidence), 700, 49);
             btnNowView.TextSize = 12;
             btnNowView.Y = Application.GetRealHeight(95);
             btnNowView.TextColor = UserCenterColor.Current.TextGrayColor1;
-            rowHome.frameTable.AddChidren(btnNowView, ChidrenBindMode.BindEventOnly);
+            rowHome.frameTable.AddChidren(btnNowView, ChidrenBindMode.BindEvent);
             //涓讳汉鎴栬�呯鐞嗗憳鎵嶄細鍑虹幇杩欎釜鑿滃崟
             if (UserCenterResourse.UserInfo.AuthorityNo == 1 || UserCenterResourse.UserInfo.AuthorityNo == 2)
             {
@@ -102,33 +98,27 @@
             }
             //缁忕含搴�
             var btnLocation = rowHome.frameTable.AddMostRightView(string.Empty, 500);
+            btnLocation.IsMoreLines = true;
+            btnLocation.TextSize = 10;
             btnLocation.Text = Common.Config.Instance.Home.ResidenceAddressName;
 
             //涓讳汉鎴栬�呯鐞嗗憳鎵嶄細鍑虹幇杩欎釜鑿滃崟
             if (UserCenterResourse.UserInfo.AuthorityNo == 1 || UserCenterResourse.UserInfo.AuthorityNo == 2)
             {
                 rowHome.frameTable.UseClickStatu = true;
+                //鏌ョ湅妯℃澘鏃�,涓嶅厑璁哥紪杈�
+                if (Common.Config.Instance.Home.IsShowTemplate == true)
+                {
+                    rowHome.frameTable.CanClick = false;
+                }
                 rowHome.frameTable.ButtonClickEvent += (sender, e) =>
                 {
-                    //榛樿鍊� 23.134421,113.267189
-                    double latitude = Common.Config.Instance.Home.Latitude;
-                    double longitude = Common.Config.Instance.Home.Longitude;
-                    //鍦板浘
-                    GDMapKit.Show((mLatitude, mLongitude, mRadius, name) =>
-                    {
-                        HdlThreadLogic.Current.RunThread(() =>
-                        {
-                            //淇濆瓨浣忓畢鍦板潃
-                            this.SaveResidenceAdrress(btnLocation, mLatitude, mLongitude, name);
-                        });
-                    }, 
-                    Language.StringByID(R.MyInternationalizationString.uSelectAdrress),
-                    Language.StringByID(R.MyInternationalizationString.uSave),
-                    true, latitude, longitude, 100);
+                    //妫�娴嬫潈闄�,鐒跺悗鏄剧ず鍦板浘
+                    this.CheckAuthorityAndShowMap(btnLocation);
                 };
             }
 
-            if (i_CanDeleteResidence == true)
+            if (i_CanDeleteResidence == true && Common.Config.Instance.Home.IsShowTemplate == false)
             {
                 //鍒犻櫎
                 var btnDelete = new NormalViewControl(Application.GetRealWidth(184), rowHome.Height, false);
@@ -152,7 +142,7 @@
                 };
             }
             //鍒濆鍖栨甯�
-            this.frameTable = new FrameLayout();
+            this.frameTable = new NormalFrameLayout();
             frameTable.Y = rowHome.Bottom + Application.GetRealHeight(23);
             frameTable.Height = listBackContr.frameTable.Height - rowHome.Bottom - Application.GetRealHeight(23);
             listBackContr.frameTable.AddChidren(frameTable);
@@ -280,23 +270,17 @@
         {
             //鑾峰彇妤煎眰
             var dicFloor = HdlRoomLogic.Current.GetFloorSortList();
-            this.listFloorSort.Clear();
-            foreach (string keys in dicFloor.Keys)
-            {
-                listFloorSort.Add(keys);
-            }
-
-            if (Common.Config.Instance.Home.FloorDics.Count == 0)
+            if (dicFloor.Count == 0)
             {
                 return;
             }
             HdlThreadLogic.Current.RunMainInThread(() =>
             {
-                int count = listFloorSort.Count - 1;
-                for (int i = 0; i < listFloorSort.Count; i++)
+                int count = dicFloor.Count;
+                foreach (var keys in dicFloor.Keys)
                 {
-                    string keys = listFloorSort[i];
-                    this.AddFloorRow(keys, dicFloor[keys], i != count);
+                    count--;
+                    this.AddFloorRow(keys, dicFloor[keys], count != 0);
                 }
                 //璋冩暣鎺т欢楂樺害
                 this.AdjustContrlTableHeight();
@@ -338,6 +322,11 @@
 
             if (UserCenterResourse.UserInfo.AuthorityNo == 1 || UserCenterResourse.UserInfo.AuthorityNo == 2)
             {
+                //鏌ョ湅妯℃澘鏃�,涓嶅厑璁哥紪杈�
+                if (Common.Config.Instance.Home.IsShowTemplate == true)
+                {
+                    return;
+                }
                 //鏇存敼
                 var btnChanged = frameRow.AddEditorControl();
                 btnChanged.TextID = R.MyInternationalizationString.uChanged1;
@@ -364,17 +353,18 @@
                         Common.Config.Instance.Home.FloorDics.Remove(keys);
                         if (Common.Config.Instance.Home.CurrentFloorId == keys)
                         {
-                            //濡傛灉鍒犻櫎鐨勬槸褰撳墠妤煎眰鐨勮瘽
                             Common.Config.Instance.Home.CurrentFloorId = string.Empty;
-                            foreach (string floorId in Common.Config.Instance.Home.FloorDics.Keys)
+                            var dicFloor = HdlRoomLogic.Current.GetFloorSortList();
+                            foreach (var floorId in dicFloor.Keys)
                             {
-                                //鎶婄涓�涓ゼ灞侷D缁欏畠
+                                //鎶婄涓�涓ゼ灞傝祴鍊肩粰褰撳墠妤煎眰
                                 Common.Config.Instance.Home.CurrentFloorId = floorId;
                                 break;
                             }
                             //鍒犻櫎褰撳墠妤煎眰鐨勮瘽,闇�瑕佸幓鍒锋柊涓婚〉宸﹁竟鐨勬埧闂村垪琛�
                             HdlRoomLogic.Current.RefreshRoomListView();
                         }
+                        var uploadRoom = false;
                         var listDeleteId = new List<string>();
                         var listAllRoom = HdlRoomLogic.Current.GetAllListRooms();
                         for (int i = 0; i < listAllRoom.Count; i++)
@@ -383,11 +373,11 @@
                             {
                                 listDeleteId.Add(listAllRoom[i].Id);
                             }
-                        }
-                        //濡傛灉褰撳墠閫夋嫨鐨勬埧闂存槸鍒犻櫎瀵硅薄鐨勮瘽
-                        if (HdlRoomLogic.Current.CurrentRoom.FloorId == keys)
-                        {
-                            HdlRoomLogic.Current.CurrentRoom = HdlRoomLogic.Current.GetLoveRoom();
+                            if (listAllRoom[i].ListDevice.Count > 0)
+                            {
+                                //闇�瑕佷笂浼犵┖闂村尯鍩�
+                                uploadRoom = true;
+                            }
                         }
                         //鍒犻櫎鎴块棿
                         foreach (string roomId in listDeleteId)
@@ -395,9 +385,6 @@
                             HdlRoomLogic.Current.RemoveRoom(roomId);
                         }
                         Common.Config.Instance.Home.Save();
-                        //淇濆瓨椤哄簭
-                        listFloorSort.Remove(keys);
-                        HdlRoomLogic.Current.SaveFloorSort(listFloorSort);
 
                         if (Common.Config.Instance.Home.FloorDics.Count == 0)
                         {
@@ -425,6 +412,13 @@
                             //璋冩暣妗屽竷楂樺害
                             this.AdjustContrlTableHeight();
                         }
+                        if (uploadRoom == true)
+                        {
+                            //涓婁紶绌洪棿鍖哄煙淇℃伅
+                            HdlRoomLogic.Current.SetRoomInfoToGateway();
+                        }
+                        //鍒犻櫎妤煎眰鐨勮瘽,涓婚〉闇�瑕侀噸鏂板埛鏂�
+                        UserView.UserPage.Instance.RefreshAllForm = true;
                     });
                 };
             }
@@ -478,14 +472,15 @@
                     {
                         keys = Guid.NewGuid().ToString();
                     }
+                    bool hadFloor = Common.Config.Instance.Home.CurrentFloorId != string.Empty;
                     Common.Config.Instance.Home.FloorDics[keys] = textValue;
                     Common.Config.Instance.Home.Save();
-                    if (Common.Config.Instance.Home.CurrentFloorId == string.Empty)
+                    if (hadFloor == false)
                     {
-                        Common.Config.Instance.Home.CurrentFloorId = keys;
                         //鍒涘缓绗竴涓柊鐨勬ゼ灞傜殑璇�,闇�瑕佸幓鍒锋柊涓婚〉宸﹁竟鐨勬埧闂村垪琛�
                         HdlRoomLogic.Current.RefreshRoomListView();
                     }
+
                     if (btnFloor != null)
                     {
                         btnFloor.Text = textValue;
@@ -495,6 +490,8 @@
                         //鏍规嵁鎸囧畾妯″紡,鍒濆鍖栨甯冩帶浠�
                         this.InitFrameTableByMode();
                     }
+                    //鍒涘缓鎴栬�呬慨鏀规ゼ灞傜殑璇�,涓婚〉闇�瑕侀噸鏂板埛鏂�
+                    UserView.UserPage.Instance.RefreshAllForm = true;
                 }
             });
         }
@@ -539,12 +536,6 @@
         {
             //鑾峰彇妤煎眰鐨勬埧闂�
             var listRoom = HdlRoomLogic.Current.GetFloorSortRoom(string.Empty);
-            this.listRoomSort.Clear();
-            for (int i = 0; i < listRoom.Count; i++)
-            {
-                this.listRoomSort.Add(listRoom[i].Id);
-            }
-
             for (int i = 0; i < listRoom.Count; i++)
             {
                 //娣诲姞鎴块棿琛�
@@ -592,7 +583,6 @@
                 //濡傛灉鏄垎浜殑鎴块棿锛屼笉鑳界紪杈戝拰淇敼
                 return;
             }
-
             //缂栬緫
             var btnEditor = frameRow.AddEditorControl();
             btnEditor.ButtonClickEvent += (sender, e) =>
@@ -604,7 +594,12 @@
                     btnName.Text = roomName;
                 };
             };
-
+            //鏌ョ湅妯℃澘鏃�,涓嶅厑璁哥紪杈�
+            if (Common.Config.Instance.Home.IsShowTemplate == true)
+            {
+                btnEditor.Text = Language.StringByID(R.MyInternationalizationString.uSearch1);
+                return;
+            }
             //鍒犻櫎
             var btnDelete = frameRow.AddDeleteControl();
             btnDelete.ButtonClickEvent += (sender, e) =>
@@ -612,15 +607,7 @@
                 //纭鍒犻櫎鎴块棿?
                 this.ShowMassage(ShowMsgType.Confirm, Language.StringByID(R.MyInternationalizationString.uDeleteRoomMsg), () =>
                 {
-                    if (HdlRoomLogic.Current.CurrentRoom.Id == room.Id)
-                    {
-                        //濡傛灉鍒犻櫎鐨勬槸褰撳墠鎴块棿鐨勮瘽
-                        HdlRoomLogic.Current.CurrentRoom = HdlRoomLogic.Current.GetLoveRoom();
-                    }
                     HdlRoomLogic.Current.RemoveRoom(room.Id);
-                    //淇濆瓨椤哄簭
-                    this.listRoomSort.Remove(room.Id);
-                    HdlRoomLogic.Current.SaveRoomSort(string.Empty, this.listRoomSort);
 
                     var listAllRoom = HdlRoomLogic.Current.GetAllListRooms();
                     if (listAllRoom.Count <= 1)
@@ -649,6 +636,13 @@
                         //璋冩暣妗屽竷楂樺害
                         this.AdjustContrlTableHeight();
                     }
+                    if (room.ListDevice.Count > 0)
+                    {
+                        //涓婁紶绌洪棿鍖哄煙淇℃伅
+                        HdlRoomLogic.Current.SetRoomInfoToGateway();
+                    }
+                    //鍒犻櫎鎴块棿鐨勮瘽,涓婚〉闇�瑕侀噸鏂板埛鏂�
+                    UserView.UserPage.Instance.RefreshAllForm = true;
                 });
             };
         }
@@ -660,7 +654,7 @@
         /// <summary>
         /// 鍒犻櫎浣忓畢
         /// </summary>
-        public async void DeleteResidence()
+        private void DeleteResidence()
         {
             //寮�鍚繘搴︽潯
             this.ShowProgressBar();
@@ -672,7 +666,7 @@
                 Pra.HomeId = Common.Config.Instance.Home.Id;
                 Pra.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
 
-                bool result = await UserCenterLogic.GetResultStatuByRequestHttps("App/DelHome", true, Pra);
+                bool result = UserCenterLogic.GetResultStatuByRequestHttps("App/DelHome", true, Pra);
                 if (result == false)
                 {
                     //鍏抽棴杩涘害鏉�
@@ -688,7 +682,7 @@
                     HomeId = Common.Config.Instance.Home.Id,
                     PrimaryUserId = Common.Config.Instance.Home.MainUserDistributedMark
                 };
-                bool result = await UserCenterLogic.GetResultStatuByRequestHttps("ZigbeeUsers/SubAccountDelShareHome", false, Pra2);
+                bool result = UserCenterLogic.GetResultStatuByRequestHttps("ZigbeeUsers/SubAccountDelShareHome", false, Pra2);
                 if (result == false)
                 {
                     //鍏抽棴杩涘害鏉�
@@ -720,23 +714,89 @@
                 }
             }
 
-            var myHouse = Common.House.GetHouseByFilePath(Common.Config.Instance.HomeFilePathList[index]);
+            var myHouse = HdlResidenceLogic.Current.GetHouseByFilePath(Common.Config.Instance.HomeFilePathList[index]);
             //鍒囨崲浣忓畢
             Common.Config.Instance.HomeId = myHouse.Id;
+            Common.Config.Instance.Home = myHouse;
             Common.Global.CreateHomeDirectory(myHouse.Id);
             Common.Config.Instance.Save();
 
             //鍒锋柊涓汉涓績鐨勫唴瀛樺強绾跨▼
-            await UserCenterLogic.InitUserCenterMenmoryAndThread(false);
+            bool result2 = UserCenterLogic.InitUserCenterMenmoryAndThread(false);
+            if (result2 == false)
+            {
+                //寮�鍚簡璋冭瘯鍔熻兘
+                return;
+            }
 
             //鍒犻櫎浣忓畢
-            Common.House.DeleteHouseByHouseId(deleteId);
+            HdlResidenceLogic.Current.DeleteHouseMemmory(deleteId);
 
-            Application.RunOnMainThread(() =>
+            HdlThreadLogic.Current.RunMain(() =>
             {
                 //鍏抽棴鐣岄潰
                 this.CloseForm();
             });
+        }
+
+        #endregion
+
+        #region 鈻� 鏄剧ず鍦板浘___________________________
+
+        /// <summary>
+        /// 妫�娴嬫潈闄�,鐒跺悗鏄剧ず鍦板浘
+        /// </summary>
+        /// <param name="btnLocation">鍦板潃鏄剧ず鎺т欢</param>
+        private void CheckAuthorityAndShowMap(NormalViewControl btnLocation)
+        {
+#if Android
+            //鐢宠瀹氫綅鏉冮檺
+            ((BaseActivity)Application.Activity).SetGPSLocationPermission((result1) =>
+            {
+                if (result1 == false) { return; }
+
+                //鐢宠鍏佽绋嬪簭鍐欏叆澶栭儴瀛樺偍锛屽SD鍗′笂鍐欐枃浠�
+                ((BaseActivity)Application.Activity).SetPermission((result2) =>
+                {
+                    if (result2 == false) { return; }
+                     //璇诲彇鐢佃瘽鐘舵�佹潈闄�
+                     ((BaseActivity)Application.Activity).SetPermission((result3) =>
+                     {
+                         if (result3 == false) { return; }
+                         //鏄剧ず鍦板浘
+                         this.ShowMap(btnLocation);
+                     }, "android.permission.READ_PHONE_STATE");
+
+                }, "android.permission.WRITE_EXTERNAL_STORAGE");
+            });
+#endif
+#if iOS
+            //鏄剧ず鍦板浘
+            this.ShowMap(btnLocation);
+#endif
+        }
+
+        /// <summary>
+        /// 鏄剧ず鍦板浘
+        /// </summary>
+        /// <param name="btnLocation">鍦板潃鏄剧ず鎺т欢</param>
+        private void ShowMap(NormalViewControl btnLocation)
+        {
+            //榛樿鍊� 23.134421,113.267189
+            double latitude = Common.Config.Instance.Home.Latitude;
+            double longitude = Common.Config.Instance.Home.Longitude;
+            //鍦板浘
+            GDMapKit.Show((mLatitude, mLongitude, mRadius, name) =>
+            {
+                HdlThreadLogic.Current.RunThread(() =>
+                {
+                    //淇濆瓨浣忓畢鍦板潃
+                    this.SaveResidenceAdrress(btnLocation, mLatitude, mLongitude, name);
+                });
+            },
+            Language.StringByID(R.MyInternationalizationString.uSelectAdrress),
+            Language.StringByID(R.MyInternationalizationString.uSave),
+            true, latitude, longitude, 100);
         }
 
         #endregion
@@ -750,7 +810,7 @@
         /// <param name="latitude">绾害</param>
         /// <param name="longitude">缁忓害</param>
         /// <param name="addresName">浣嶇疆鍚嶇О</param>
-        private async void SaveResidenceAdrress(NormalViewControl btnLocation, double latitude, double longitude, string addresName)
+        private void SaveResidenceAdrress(NormalViewControl btnLocation, double latitude, double longitude, string addresName)
         {
             //濡傛灉涓嶆槸铏氭嫙浣忓畢,鎵嶆洿鏂颁簯绔�
             if (Common.Config.Instance.Home.IsVirtually == false)
@@ -766,7 +826,7 @@
                 Pra.Longitude = longitude;
 
                 //缂栬緫浣忓畢
-                bool flage = await UserCenterLogic.GetResultStatuByRequestHttps("App/EditHome", true, Pra);
+                bool flage = UserCenterLogic.GetResultStatuByRequestHttps("App/EditHome", true, Pra);
                 if (flage == false)
                 {
                     //鍏抽棴杩涘害鏉�

--
Gitblit v1.8.0