From 9f326f4000847e6167d8166fa2f6a66f53cb3734 Mon Sep 17 00:00:00 2001 From: 黄学彪 <hxb@hdlchina.com.cn> Date: 星期四, 17 十二月 2020 09:07:13 +0800 Subject: [PATCH] 新云端Ver1.3 --- ZigbeeApp/Shared/Phone/UserCenter/Residence/ResidenceManagementForm.cs | 305 +++++++++++++++++++++++++------------------------- 1 files changed, 154 insertions(+), 151 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Residence/ResidenceManagementForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Residence/ResidenceManagementForm.cs index 8682058..86e3760 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> @@ -50,10 +42,14 @@ base.SetTitleText(Common.Config.Instance.Home.Name); //涓讳汉鎴栬�呯鐞嗗憳鎵嶄細鍑虹幇杩欎釜鑿滃崟 - if (UserCenterResourse.UserInfo.AuthorityNo == 1 || UserCenterResourse.UserInfo.AuthorityNo == 2) + if (HdlUserCenterResourse.ResidenceOption.AuthorityNo == 1 || HdlUserCenterResourse.ResidenceOption.AuthorityNo == 2) { - //鍒濆鍖栧彸涓婅鑿滃崟 - this.InitTopRightMenu(); + //鏌ョ湅妯℃澘鏃�,涓嶅厑璁哥紪杈� + if (Common.Config.Instance.Home.IsShowTemplate == false) + { + //鍒濆鍖栧彸涓婅鑿滃崟 + this.InitTopRightMenu(); + } } //鍒濆鍖栦腑閮ㄤ俊鎭� this.InitMiddleFrame(i_CanDeleteResidence); @@ -87,48 +83,42 @@ 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) + if (HdlUserCenterResourse.ResidenceOption.AuthorityNo == 1 || HdlUserCenterResourse.ResidenceOption.AuthorityNo == 2) { //鍙崇澶� rowHome.frameTable.AddRightArrow(); } //缁忕含搴� 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) + if (HdlUserCenterResourse.ResidenceOption.AuthorityNo == 1 || HdlUserCenterResourse.ResidenceOption.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(); @@ -336,8 +320,13 @@ form.AddForm(keys); }; - if (UserCenterResourse.UserInfo.AuthorityNo == 1 || UserCenterResourse.UserInfo.AuthorityNo == 2) + if (HdlUserCenterResourse.ResidenceOption.AuthorityNo == 1 || HdlUserCenterResourse.ResidenceOption.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,19 +654,15 @@ /// <summary> /// 鍒犻櫎浣忓畢 /// </summary> - public async void DeleteResidence() + private void DeleteResidence() { //寮�鍚繘搴︽潯 this.ShowProgressBar(); - if (Common.Config.Instance.Home.IsOthreShare == false) + if (Common.Config.Instance.Home.IsOtherShare == false) { //鍒犻櫎涓讳汉鑷繁鐨勪綇瀹� - var Pra = new DeleteResidencePra(); - Pra.HomeId = Common.Config.Instance.Home.Id; - Pra.LoginAccessToken = UserCenterLogic.GetConnectMainToken(); - - bool result = await UserCenterLogic.GetResultStatuByRequestHttps("App/DelHome", true, Pra); + var result = HdlResidenceLogic.Current.DeleteCloundHouse(Common.Config.Instance.Home.Id); if (result == false) { //鍏抽棴杩涘害鏉� @@ -682,13 +672,8 @@ } else { - //鍒犻櫎鍒嗕韩鐨勪綇瀹� - var Pra2 = new - { - HomeId = Common.Config.Instance.Home.Id, - PrimaryUserId = Common.Config.Instance.Home.MainUserDistributedMark - }; - bool result = await UserCenterLogic.GetResultStatuByRequestHttps("ZigbeeUsers/SubAccountDelShareHome", false, Pra2); + //鍒犻櫎鍒嗕韩鐨勪綇瀹�,浣跨敤涓讳汉鐨凾oken,鎶婅嚜宸卞垹浜� + var result = HdlMemberLogic.Current.DeleteMember(Common.Config.Instance.Guid); if (result == false) { //鍏抽棴杩涘害鏉� @@ -698,45 +683,95 @@ } //鍥犱负鍒犻櫎鐨勬槸褰撳墠鐨勪綇瀹�,鎵�浠ラ渶瑕佸厛鍒囨崲鍒板埆鐨勪綇瀹� - string deleteId = Common.Config.Instance.Home.Id; - string deleteFile = Common.Config.Instance.Home.FileName; - int index = 0; - for (; index < Common.Config.Instance.HomeFilePathList.Count; index++) + var listLocalHouse = HdlResidenceLogic.Current.GetAllLocalResidenceListByDirectory(); + //鍙栦竴涓綇瀹卛d + string houseId = string.Empty; + foreach (var myHouse in listLocalHouse) { - if (Common.Config.Instance.HomeFilePathList[index] == deleteFile) + houseId = myHouse.Id; + if (houseId != Common.Config.Instance.Home.Id) { - //褰撳墠浣忓畢鎵�澶勭殑浣嶇疆(浣忓畢鏁拌偗瀹氬ぇ浜�1,涓嶇劧涓嶄細鍑虹幇鍒犻櫎鎸夐挳) - if (index == 0) - { - //鍙栦笅涓�浣� - index++; - } - else - { - //鍙栧墠涓�浣� - index--; - } + //闅忎究鍙栦竴涓拰褰撳墠浣忓畢涓嶇浉绛夌殑ID break; } } - - var myHouse = Common.House.GetHouseByFilePath(Common.Config.Instance.HomeFilePathList[index]); + //褰撳墠浣忓畢ID + string nowHouseId = Common.Config.Instance.Home.Id; //鍒囨崲浣忓畢 - Common.Config.Instance.HomeId = myHouse.Id; - Common.Global.CreateHomeDirectory(myHouse.Id); - Common.Config.Instance.Save(); + bool result2 = HdlResidenceLogic.Current.SwitchResidence(houseId); + //鍒犳帀杩欎釜鏂囦欢澶� + HdlResidenceLogic.Current.DeleteHouseMemmory(nowHouseId); + if (result2 == false) + { + //寮�鍚簡璋冭瘯鍔熻兘 + return; + } - //鍒锋柊涓汉涓績鐨勫唴瀛樺強绾跨▼ - await UserCenterLogic.InitUserCenterMenmoryAndThread(false); - - //鍒犻櫎浣忓畢 - Common.House.DeleteHouseByHouseId(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 +785,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) @@ -758,48 +793,16 @@ //寮�鍚繘搴︽潯 this.ShowProgressBar(); - var Pra = new EditorResidencePra(); - Pra.HomeId = Common.Config.Instance.Home.Id; - Pra.Name = Common.Config.Instance.Home.Name; - Pra.LoginAccessToken = UserCenterLogic.GetConnectMainToken(); - Pra.Latitude = latitude; - Pra.Longitude = longitude; - - //缂栬緫浣忓畢 - bool flage = await UserCenterLogic.GetResultStatuByRequestHttps("App/EditHome", true, Pra); - if (flage == false) + var result = HdlResidenceLogic.Current.EditorResidenceLongitudeAndLatitude(latitude, longitude, addresName); + if (result == false) { //鍏抽棴杩涘害鏉� this.CloseProgressBar(); return; } - //璁剧疆鍏ㄩ儴缃戝叧鐨勪綇瀹呭湴鍧� - var listGateway = HdlGatewayLogic.Current.GetAllLocalGateway(); - foreach (var gateway in listGateway) - { - ZigBee.Device.ZbGateway realWay = null; - if (HdlGatewayLogic.Current.GetRealGateway(ref realWay, gateway) == false) - { - //閿欒:缃戝叧瀵硅薄涓㈠け - continue; - } - var result = HdlGatewayLogic.Current.SetGatewaySite(gateway, longitude, latitude, ShowErrorMode.YES); - if (result == false) - { - //鍏抽棴杩涘害鏉� - this.CloseProgressBar(); - return; - } - } //鍏抽棴杩涘害鏉� this.CloseProgressBar(); } - - //淇濆瓨缂撳瓨 - Common.Config.Instance.Home.Longitude = longitude; - Common.Config.Instance.Home.Latitude = latitude; - Common.Config.Instance.Home.ResidenceAddressName = addresName; - Common.Config.Instance.Home.Save(); HdlThreadLogic.Current.RunMain(() => { btnLocation.Text = addresName; -- Gitblit v1.8.0