From 48ba446936b51fffafa7c3600c0dadc6ac0e8c20 Mon Sep 17 00:00:00 2001 From: 陈嘉乐 <cjl@hdlchina.com.cn> Date: 星期五, 10 七月 2020 10:52:13 +0800 Subject: [PATCH] 2020-07-10-01 --- ZigbeeApp/Shared/Phone/UserCenter/Residence/ResidenceManagementForm.cs | 1065 +++++++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 740 insertions(+), 325 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Residence/ResidenceManagementForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Residence/ResidenceManagementForm.cs index f4afb3d..1fdf829 100755 --- a/ZigbeeApp/Shared/Phone/UserCenter/Residence/ResidenceManagementForm.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/Residence/ResidenceManagementForm.cs @@ -1,24 +1,40 @@ -锘縰sing Shared.Common; -using System; +锘縰sing System; using System.Collections.Generic; +using System.Text; namespace Shared.Phone.UserCenter.Residence { /// <summary> - /// 浣忓畢绠$悊鐨勭敾闈⑩槄 + /// 浣忓畢绠$悊鐣岄潰 /// </summary> - public class ResidenceManagementForm : UserCenterCommonForm + public class ResidenceManagementForm : EditorCommonForm { #region 鈻� 鍙橀噺澹版槑___________________________ /// <summary> - /// 鍒楄〃鎺т欢 + /// 妗屽竷鎺т欢 /// </summary> - private VerticalScrolViewLayout listView = null; + private FrameLayout frameTable = null; /// <summary> - /// 浣忓畢鏁版嵁 + /// 鍒楄〃鎺т欢(鐧借壊鑳屾櫙) /// </summary> - private Dictionary<string, Common.ResponseEntity.ResidenceObj> dicResidenceData = null; + private FrameListControl listView = null; + /// <summary> + /// 鏁翠釜鐣岄潰鐨勪笂涓嬫粦鍔ㄦ帶浠� + /// </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> + private int AppResidenceMode = 0; #endregion @@ -26,267 +42,613 @@ /// <summary> /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓) - /// </summary> - public void ShowForm() - { - //璁剧疆鏍囬淇℃伅 - base.SetTitleText(Language.StringByID(R.MyInternationalizationString.ResidenceManagement)); - - if (UserCenterResourse.UserInfo.AuthorityNo == 1) - { - //鍙充笂娣诲姞鎸夐挳 - var btnTopIcon = new TopLayoutMostRightView(); - btnTopIcon.UnSelectedImagePath = "Item/Add.png"; - btnTopIcon.SelectedImagePath = "Item/AddSelected.png"; - topFrameLayout.AddChidren(btnTopIcon); - btnTopIcon.MouseUpEventHandler += (sender, e) => - { - var info = new Common.ResponseEntity.ResidenceObj(); - this.ShowEditorForm(info); - }; - } - - //鍒濆鍖栦腑閮ㄦ帶浠� - this.InitMiddleFrame(); - } - - /// <summary> - /// 鍒濆鍖栦腑閮ㄦ帶浠� - /// </summary> - private void InitMiddleFrame() + /// </summary> + /// <param name="i_CanDeleteResidence">鑳藉惁鍒犻櫎褰撳墠浣忓畢</param> + public void ShowForm(bool i_CanDeleteResidence) { - listView = new VerticalScrolViewLayout(); - listView.Height = bodyFrameLayout.Height; - bodyFrameLayout.AddChidren(listView); + //璁剧疆澶撮儴淇℃伅 + base.SetTitleText(Common.Config.Instance.Home.Name); - new System.Threading.Thread(() => + //涓讳汉鎴栬�呯鐞嗗憳鎵嶄細鍑虹幇杩欎釜鑿滃崟 + if (UserCenterResourse.UserInfo.AuthorityNo == 1 || UserCenterResourse.UserInfo.AuthorityNo == 2) { - //璁剧疆浣忓畢淇℃伅 - this.SetResidenceInfo(); - }) - { IsBackground = true }.Start(); + //鍒濆鍖栧彸涓婅鑿滃崟 + this.InitTopRightMenu(); + } + //鍒濆鍖栦腑閮ㄤ俊鎭� + this.InitMiddleFrame(i_CanDeleteResidence); } /// <summary> - /// 璁剧疆浣忓畢淇℃伅 + /// 鍒濆鍖栦腑閮ㄤ俊鎭� /// </summary> - private async void SetResidenceInfo() + /// <param name="i_CanDeleteResidence">鑳藉惁鍒犻櫎褰撳墠浣忓畢</param> + private void InitMiddleFrame(bool i_CanDeleteResidence) { - //寮�鍚繘搴︽潯 - this.ShowProgressBar(); + //娓呯┖bodyFrame + this.ClearBodyFrame(); - Application.RunOnMainThread(() => + //鏁翠釜鐣岄潰鐨勪笂涓嬫粦鍔ㄦ帶浠� + this.listBackContr = new VerticalFrameControl(); + listBackContr.Height = bodyFrameLayout.Height; + bodyFrameLayout.AddChidren(listBackContr); + + //浣忓畢琛� + var rowHome = new RowLayoutControl(); + rowHome.Height = Application.GetRealHeight(173); + rowHome.BackgroundColor = UserCenterColor.Current.White; + listBackContr.frameTable.AddChidren(rowHome); + rowHome.frameTable.UseClickStatu = false; + + var btnAdreeIcon = rowHome.frameTable.AddLeftIcon(81); + btnAdreeIcon.UnSelectedImagePath = "Item/FixedPositionSelected.png"; + + //浣忓畢鍚嶇О + 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.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.BindEvent); + //涓讳汉鎴栬�呯鐞嗗憳鎵嶄細鍑虹幇杩欎釜鑿滃崟 + if (UserCenterResourse.UserInfo.AuthorityNo == 1 || UserCenterResourse.UserInfo.AuthorityNo == 2) { - this.listView.RemoveAll(); - }); - //鑾峰彇浣忓畢淇℃伅 - var Pra = new GetResidenceInfoPra(); - string resultData = await UserCenterLogic.GetResponseDataByRequestHttps("App/GetHomePager", Pra); - if (resultData == null) - { - //鍏抽棴杩涘害鏉� - this.CloseProgressBar(ShowReLoadMode.YES); - return; + //鍙崇澶� + rowHome.frameTable.AddRightArrow(); } - this.dicResidenceData = new Dictionary<string, Common.ResponseEntity.ResidenceObj>(); + //缁忕含搴� + var btnLocation = rowHome.frameTable.AddMostRightView(string.Empty, 500); + btnLocation.IsMoreLines = true; + btnLocation.TextSize = 10; + btnLocation.Text = Common.Config.Instance.Home.ResidenceAddressName; - var pageData = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.ResponseEntity.ResidenceRes>(resultData); - foreach (Common.ResponseEntity.ResidenceObj info in pageData.PageData) + //涓讳汉鎴栬�呯鐞嗗憳鎵嶄細鍑虹幇杩欎釜鑿滃崟 + if (UserCenterResourse.UserInfo.AuthorityNo == 1 || UserCenterResourse.UserInfo.AuthorityNo == 2) { - if (info.IsOthreShare == false) + rowHome.frameTable.UseClickStatu = true; + rowHome.frameTable.ButtonClickEvent += (sender, e) => { - //鏀堕泦璇ヨ处鍙锋墍鎷ユ湁鐨勮嚜宸辩殑浣忓畢鐨勬暟鎹� - this.dicResidenceData[info.Id] = info; - } - - Application.RunOnMainThread(() => - { - this.AddRowLayout(info); - }); + //榛樿鍊� 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.CloseProgressBar(); + + if (i_CanDeleteResidence == true) + { + //鍒犻櫎 + var btnDelete = new NormalViewControl(Application.GetRealWidth(184), rowHome.Height, false); + btnDelete.BackgroundColor = 0xfff75858; + btnDelete.TextAlignment = TextAlignment.Center; + btnDelete.TextColor = UserCenterColor.Current.White; + btnDelete.TextSize = 12; + btnDelete.TextID = R.MyInternationalizationString.uDelete; + rowHome.AddRightView(btnDelete); + btnDelete.ButtonClickEvent += (sender, e) => + { + //纭鍒犻櫎浣忓畢鍙婃墍鏈夋ゼ灞傘�佹埧闂�? + string msg = Language.StringByID(R.MyInternationalizationString.uDeleteResidenceMsg); + this.ShowMassage(ShowMsgType.Confirm, msg, () => + { + HdlThreadLogic.Current.RunThread(() => + { + this.DeleteResidence(); + }); + }); + }; + } + //鍒濆鍖栨甯� + this.frameTable = new FrameLayout(); + frameTable.Y = rowHome.Bottom + Application.GetRealHeight(23); + frameTable.Height = listBackContr.frameTable.Height - rowHome.Bottom - Application.GetRealHeight(23); + listBackContr.frameTable.AddChidren(frameTable); + + //鏍规嵁鎸囧畾妯″紡,鍒濆鍖栨甯冩帶浠� + this.InitFrameTableByMode(); + } + + /// <summary> + /// 鏍规嵁鎸囧畾妯″紡,鍒濆鍖栨甯冩帶浠� + /// </summary> + private void InitFrameTableByMode() + { + this.frameTable.RemoveAll(); + + //0:杩樻病鏈夎缃湁妯″紡 1:妤煎眰妯″紡 2:娌℃湁妤煎眰妯″紡 + AppResidenceMode = this.CheckAppResidenceMode(); + if (AppResidenceMode == 1) + { + //鍒濆鍖栨ゼ灞傛ā寮� + this.InitControlByFloorMode(); + } + else if (AppResidenceMode == 2) + { + //鍒濆鍖栨棤妤煎眰妯″紡 + this.InitControlByNotFloorMode(); + } } #endregion - #region 鈻� 娣诲姞浣忓畢鐨勮_______________________ + #region 鈻� 鍙充笂瑙掕彍鍗昣________________________ /// <summary> - /// 娣诲姞浣忓畢鐨勮 + /// 鍒濆鍖栧彸涓婅鑿滃崟 /// </summary> - /// <param name="info"></param> - private void AddRowLayout(Common.ResponseEntity.ResidenceObj info) + private void InitTopRightMenu() { - var rowLayout = new RowLayout(); - rowLayout.Height = ControlCommonResourse.ListViewRowHeight; - this.listView.AddChidren(rowLayout); - - //鍥炬爣 - var btnIcon = new RowLeftIconView(); - btnIcon.ChangedControlInPointMode(); - rowLayout.AddChidren(btnIcon); - - //浣忓畢 - var txtResidence = new RowCenterView(true); - txtResidence.Text = info.Name; - rowLayout.AddChidren(txtResidence); - txtResidence.X -= ControlCommonResourse.PointXXLeft; - - //涓嶆槸鍒嗕韩杩囨潵鐨勪綇瀹� - if (info.IsOthreShare == false) + var btnIcon = new MostRightIconControl(69, 69); + btnIcon.UnSelectedImagePath = "Item/Add.png"; + topFrameLayout.AddChidren(btnIcon); + btnIcon.InitControl(); + btnIcon.ButtonClickEvent += ((sender, e) => { - //缂栬緫 - var btnEditor = new RowEditorButton(); - rowLayout.AddRightView(btnEditor); - btnEditor.MouseUpEventHandler += (sender, e) => + //0:杩樻病鏈夎缃湁妯″紡 1:妤煎眰妯″紡 2:娌℃湁妤煎眰妯″紡 + AppResidenceMode = this.CheckAppResidenceMode(); + //娌℃湁璁剧疆杩囨ā寮� + if (AppResidenceMode == 0) { - this.ShowEditorForm(info); - }; - - //涓嶈兘鍒犻櫎褰撳墠姝e湪鎿嶄綔鐨勪綇瀹� - if (Common.Config.Instance.HomeId != info.Id) - { - //鍒犻櫎 - var btnDelete = new RowDeleteButton(); - rowLayout.AddRightView(btnDelete); - btnDelete.MouseUpEventHandler += (sender, e) => + var frame = new TopRightMenuControl(2, 2); + //鍒涘缓妤煎眰 + frame.AddRowMenu(Language.StringByID(R.MyInternationalizationString.uCreatFloor), "Item/CreatFloor.png", "Item/CreatFloorSelected.png", () => { - //妫�娴嬭兘鍚﹀垹闄や綇瀹� - if (this.CheckIsCanDeleteResidence(info) == false) + //鍒涘缓妤煎眰 + this.CreatOrEditorFloor(null, null, string.Empty, string.Empty); + }); + //鍒涘缓鎴块棿 + frame.AddRowMenu(Language.StringByID(R.MyInternationalizationString.uCreatRoom), "Item/RoomIcon.png", "Item/RoomIconSelected.png", () => + { + var form = new AddNewRoomForm(); + form.AddForm(string.Empty); + form.FinishEditorEvent += () => { - return; - } - //纭瑕佸垹闄ゅ悧锛� - string msg = Language.StringByID(R.MyInternationalizationString.uShowDoDeleteMsg); - this.ShowConfirmMsg(msg, "DeleteResidence", info); + //鏍规嵁鎸囧畾妯″紡,鍒濆鍖栨甯冩帶浠� + this.InitFrameTableByMode(); + }; + }); + } + //妤煎眰妯″紡 + else if (AppResidenceMode == 1) + { + //鍒涘缓妤煎眰 + this.CreatOrEditorFloor(null, null, string.Empty, string.Empty); + } + //鏃犳ゼ灞傛ā寮� + else if (AppResidenceMode == 2) + { + var form = new AddNewRoomForm(); + form.AddForm(string.Empty); + form.FinishEditorEvent += () => + { + //鏍规嵁鎸囧畾妯″紡,鍒濆鍖栨甯冩帶浠� + this.InitFrameTableByMode(); }; } - } - //鎴愬憳鐨勭鐞嗗憳鏉冮檺,鍙兘缂栬緫锛屼笉鑳藉垹闄� - if (info.AccountType == 1) - { - //缂栬緫 - var btnEditor = new RowEditorButton(); - rowLayout.AddRightView(btnEditor); - btnEditor.MouseUpEventHandler += (sender, e) => - { - this.ShowEditorForm(info); - }; - } + }); } #endregion - #region 鈻� 鏄剧ず缂栬緫鐢婚潰_______________________ + #region 鈻� 鍒濆鍖栨ゼ灞傛ā寮廮____________________ /// <summary> - /// 鏄剧ず缂栬緫鐢婚潰 + /// 鍒濆鍖栨ゼ灞傛ā寮� /// </summary> - /// <param name="info"></param> - private void ShowEditorForm(Common.ResponseEntity.ResidenceObj info) + private void InitControlByFloorMode() + { + var frameFloor = new FrameRowControl(); + frameFloor.UseClickStatu = false; + frameFloor.Height = Application.GetRealHeight(115); + frameFloor.BackgroundColor = UserCenterColor.Current.White; + this.frameTable.AddChidren(frameFloor); + + //妤煎眰 + var btnFloor = frameFloor.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uFloor), 200, 60); + btnFloor.Y = Application.GetRealHeight(49); + btnFloor.TextColor = UserCenterColor.Current.TextColor2; + btnFloor.TextSize = 15; + frameFloor.AddChidren(btnFloor, ChidrenBindMode.NotBind); + + listView = new FrameListControl(29); + listView.BackgroundColor = UserCenterColor.Current.White; + listView.Y = frameFloor.Bottom; + listView.Height = frameTable.Height - frameFloor.Bottom; + this.frameTable.AddChidren(listView); + + //鍒濆鍖栨ゼ灞傝 + this.InitFloorRow(); + } + + /// <summary> + /// 鍒濆鍖栨ゼ灞傝 + /// </summary> + private void InitFloorRow() + { + //鑾峰彇妤煎眰 + 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) + { + return; + } + HdlThreadLogic.Current.RunMainInThread(() => + { + int count = listFloorSort.Count - 1; + for (int i = 0; i < listFloorSort.Count; i++) + { + string keys = listFloorSort[i]; + this.AddFloorRow(keys, dicFloor[keys], i != count); + } + //璋冩暣鎺т欢楂樺害 + this.AdjustContrlTableHeight(); + }); + } + + #endregion + + #region 鈻� 娣诲姞妤煎眰琛宊________________________ + + /// <summary> + /// 娣诲姞妤煎眰琛� + /// </summary> + /// <param name="keys"></param> + /// <param name="floorName"></param> + /// <param name="addLine"></param> + private void AddFloorRow(string keys, string floorName, bool addLine) + { + var frameRow = new RowLayoutControl(listView.rowSpace / 2); + frameRow.MainKeys = keys; + this.listView.AddChidren(frameRow); + //鍥炬爣 + var btnIcon = frameRow.frameTable.AddLeftIcon(81); + btnIcon.UnSelectedImagePath = "Floor/FloorSelected.png"; + //妤煎眰鍚嶇О + var btnFloor = frameRow.frameTable.AddLeftCaption(floorName, 500); + btnFloor.TextSize = 15; + //鍚戝彸绠ご + frameRow.frameTable.AddRightArrow(); + if (addLine == true) + { + frameRow.frameTable.AddBottomLine(); + } + frameRow.frameTable.ButtonClickEvent += (sender, e) => + { + var form = new FloorListRoomForm(); + form.AddForm(keys); + }; + + if (UserCenterResourse.UserInfo.AuthorityNo == 1 || UserCenterResourse.UserInfo.AuthorityNo == 2) + { + //鏇存敼 + var btnChanged = frameRow.AddEditorControl(); + btnChanged.TextID = R.MyInternationalizationString.uChanged1; + btnChanged.ButtonClickEvent += (sender, e) => + { + //鍒涘缓鎴栬�呯紪杈戞ゼ灞� + this.CreatOrEditorFloor(frameRow, btnFloor, keys, floorName); + }; + + //鍒犻櫎 + 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) => + { + //纭鍒犻櫎妤煎眰鍙婂叾鎵�鏈夋埧闂�? + this.ShowMassage(ShowMsgType.Confirm, Language.StringByID(R.MyInternationalizationString.uDeleteFloorMsg), () => + { + //绉婚櫎妤煎眰 + 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) + { + //鎶婄涓�涓ゼ灞侷D缁欏畠 + Common.Config.Instance.Home.CurrentFloorId = floorId; + break; + } + //鍒犻櫎褰撳墠妤煎眰鐨勮瘽,闇�瑕佸幓鍒锋柊涓婚〉宸﹁竟鐨勬埧闂村垪琛� + HdlRoomLogic.Current.RefreshRoomListView(); + } + var listDeleteId = new List<string>(); + var listAllRoom = HdlRoomLogic.Current.GetAllListRooms(); + for (int i = 0; i < listAllRoom.Count; i++) + { + if (listAllRoom[i].FloorId == keys) + { + listDeleteId.Add(listAllRoom[i].Id); + } + } + //鍒犻櫎鎴块棿 + foreach (string roomId in listDeleteId) + { + HdlRoomLogic.Current.RemoveRoom(roomId); + } + Common.Config.Instance.Home.Save(); + //淇濆瓨椤哄簭 + listFloorSort.Remove(keys); + HdlRoomLogic.Current.SaveFloorSort(listFloorSort); + + if (Common.Config.Instance.Home.FloorDics.Count == 0) + { + //鏍规嵁鎸囧畾妯″紡,鍒濆鍖栨甯冩帶浠� + this.InitFrameTableByMode(); + } + else + { + bool canMove = false; + for (int i = 0; i < listView.ChildrenCount; i++) + { + var myRow = listView.GetChildren(i) as RowLayoutControl; + if (myRow != null && myRow.MainKeys == keys) + { + canMove = true; + continue; + } + if (canMove == true) + { + //瀹冧箣鍚庣殑琛岋紝鍏ㄩ儴寰�涓婄Щ + myRow.Y -= frameRow.Height; + } + } + frameRow.RemoveFromParent(); + //璋冩暣妗屽竷楂樺害 + this.AdjustContrlTableHeight(); + } + //鍒犻櫎妤煎眰鐨勮瘽,涓婚〉闇�瑕侀噸鏂板埛鏂� + UserView.UserPage.Instance.RefreshForm = true; + }); + }; + } + } + + /// <summary> + /// 鍒涘缓鎴栬�呯紪杈戞ゼ灞� + /// </summary> + /// <param name="btnFloor"></param> + /// <param name="keys"></param> + /// <param name="floorName"></param> + private void CreatOrEditorFloor(RowLayoutControl frameRow, NormalViewControl btnFloor, string keys, string floorName) { //鐢熸垚涓�涓脊绐楃敾闈� - var dialogForm = new DialogInputFrameControl(this, DialogFrameMode.OnlyInput); - - if (string.IsNullOrEmpty(info.Name) == true) + var dialogForm = new DialogInputControl(); + //鍒涘缓妤煎眰 + dialogForm.SetTitleText(Language.StringByID(R.MyInternationalizationString.uCreatFloor)); + if (keys != string.Empty) { - //娣诲姞浣忓畢 - dialogForm.SetTitleText(Language.StringByID(R.MyInternationalizationString.uAddResidence)); + //鏇存敼鍚嶇О + dialogForm.SetTitleText(Language.StringByID(R.MyInternationalizationString.uChangedName)); + } + //璇疯緭鍏ユゼ灞傚悕绉� + dialogForm.SetTipText(Language.StringByID(R.MyInternationalizationString.uPleaseInputFloorName)); + if (Common.Config.Instance.Home.FloorDics.ContainsKey(keys) == true) + { + dialogForm.Text = Common.Config.Instance.Home.FloorDics[keys]; + floorName = Common.Config.Instance.Home.FloorDics[keys]; } else { - //缂栬緫浣忓畢 - dialogForm.SetTitleText(Language.StringByID(R.MyInternationalizationString.uEditorResidence)); + dialogForm.Text = floorName; } - - //璇疯緭鍏ヤ綇瀹呭悕绉� - dialogForm.SetTipText(Language.StringByID(R.MyInternationalizationString.uPleaseInputResidenceName)); - if (info.Name != null) - { - dialogForm.InputText = info.Name; - } - //鎸変笅纭鎸夐挳 - dialogForm.ComfirmClickEvent += (()=> + dialogForm.ComfirmClickEvent += ((textValue) => { - string resiName = dialogForm.InputText; - if (resiName == string.Empty) + //杩樺師宸﹀彸鑿滃崟 + frameRow?.HideMenu(); + + if (this.CheckFloorName(keys, textValue) == false) { - //璇疯緭鍏ヤ綇瀹呭悕绉� - string msg = Language.StringByID(R.MyInternationalizationString.uPleaseInputResidenceName); - this.ShowErrorMsg(msg); + //妤煎眰鍚嶇О妫�娴� return; } //鐢婚潰鍏抽棴 dialogForm.CloseDialog(); - - if (info.Name != resiName) + if (floorName != textValue) { - //淇濆瓨浣忓畢 - this.SaveResidence(resiName, info, string.IsNullOrEmpty(info.Name) == false); + //缂栬緫鎴栬�呭垱寤烘ゼ灞傚悕绉� + if (keys == string.Empty) + { + keys = Guid.NewGuid().ToString(); + } + Common.Config.Instance.Home.FloorDics[keys] = textValue; + Common.Config.Instance.Home.Save(); + if (Common.Config.Instance.Home.CurrentFloorId == string.Empty) + { + Common.Config.Instance.Home.CurrentFloorId = keys; + //鍒涘缓绗竴涓柊鐨勬ゼ灞傜殑璇�,闇�瑕佸幓鍒锋柊涓婚〉宸﹁竟鐨勬埧闂村垪琛� + HdlRoomLogic.Current.RefreshRoomListView(); + } + if (btnFloor != null) + { + btnFloor.Text = textValue; + } + else + { + //鏍规嵁鎸囧畾妯″紡,鍒濆鍖栨甯冩帶浠� + this.InitFrameTableByMode(); + } + //鍒涘缓鎴栬�呬慨鏀规ゼ灞傜殑璇�,涓婚〉闇�瑕侀噸鏂板埛鏂� + UserView.UserPage.Instance.RefreshForm = true; } }); } + #endregion - #region 鈻� 淇濆瓨浣忓畢___________________________ + #region 鈻� 鍒濆鍖栨棤妤煎眰妯″紡___________________ /// <summary> - /// 淇濆瓨浣忓畢 + /// 鍒濆鍖栨棤妤煎眰妯″紡 /// </summary> - /// <param name="ResidenceName"></param> - /// <param name="info"></param> - /// <param name="isEditor"></param> - /// <returns></returns> - private async void SaveResidence(string ResidenceName, Common.ResponseEntity.ResidenceObj info, bool isEditor) + private void InitControlByNotFloorMode() { - //妫�娴嬭兘鍚︿繚瀛樹綇瀹� - if (this.CheckIsCanSaveResidence(info.Id, ResidenceName, isEditor) == false) + var frameRoom = new FrameRowControl(); + frameRoom.UseClickStatu = false; + frameRoom.Height = Application.GetRealHeight(115); + frameRoom.BackgroundColor = UserCenterColor.Current.White; + frameTable.AddChidren(frameRoom); + + //鎴块棿鍒楄〃 + var btnRoomList = frameRoom.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uRoomList), 200, 60); + btnRoomList.Y = Application.GetRealHeight(50); + btnRoomList.TextColor = UserCenterColor.Current.TextColor2; + btnRoomList.TextSize = 15; + frameRoom.AddChidren(btnRoomList, ChidrenBindMode.NotBind); + + listView = new FrameListControl(29); + listView.BackgroundColor = UserCenterColor.Current.White; + listView.Y = frameRoom.Bottom; + listView.Height = frameTable.Height - frameRoom.Bottom; + frameTable.AddChidren(listView); + + //鍒濆鍖栨埧闂村垪琛� + this.InitRoomListRow(); + } + + /// <summary> + /// 鍒濆鍖栨埧闂村垪琛� + /// </summary> + private void InitRoomListRow() + { + //鑾峰彇妤煎眰鐨勬埧闂� + 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++) + { + //娣诲姞鎴块棿琛� + this.AddRoomRow(listRoom[i], i != listRoom.Count - 1); + } + //璋冩暣妗屽竷楂樺害 + this.AdjustContrlTableHeight(); + } + + #endregion + + #region 鈻� 娣诲姞鎴块棿琛宊________________________ + + /// <summary> + /// 娣诲姞鎴块棿琛� + /// </summary> + /// <param name="room"></param> + /// <param name="addLine"></param> + private void AddRoomRow(Common.Room room, bool addLine) + { + var frameRow = new RowLayoutControl(listView.rowSpace / 2); + frameRow.MainKeys = room.Id; + listView.AddChidren(frameRow); + //鍥炬爣 + var btnIcon = frameRow.frameTable.AddLeftIcon(81); + btnIcon.UnSelectedImagePath = "Item/RoomIconSelected.png"; + //鍚嶇О + var btnName = frameRow.frameTable.AddLeftCaption(room.Name, 600); + btnName.TextSize = 15; + //鍙崇澶� + frameRow.frameTable.AddRightArrow(); + if (addLine == true) + { + //搴曠嚎 + frameRow.frameTable.AddBottomLine(); + } + frameRow.frameTable.ButtonClickEvent += (sender, e) => + { + var form = new LookRoomSettionForm(); + form.AddForm(room); + }; + + if (room.IsSharedRoom == true) + { + //濡傛灉鏄垎浜殑鎴块棿锛屼笉鑳界紪杈戝拰淇敼 return; } - //寮�鍚繘搴︽潯 - this.ShowProgressBar(); - if (isEditor == true) + //缂栬緫 + var btnEditor = frameRow.AddEditorControl(); + btnEditor.ButtonClickEvent += (sender, e) => { - var Pra = new EditorResidencePra(); - Pra.HomeId = info.Id; - Pra.Name = ResidenceName; - //缂栬緫浣忓畢 - bool flage = await UserCenterLogic.GetResultStatuByRequestHttps("App/EditHome", Pra); - if (flage == false) + var form = new EditorRoomInforForm(); + form.AddForm(room); + form.FinishEditorEvent += (roomName) => { - //鍏抽棴杩涘害鏉� - this.CloseProgressBar(); - return; - } - //鍒锋柊鍐呭瓨鐨勪綇瀹呭悕 - House.EditorHouseByHouseId(info.Id, ResidenceName); - //閲嶆柊鍒锋柊鍒楄〃 - this.SetResidenceInfo(); - } - else + btnName.Text = roomName; + }; + }; + + //鍒犻櫎 + var btnDelete = frameRow.AddDeleteControl(); + btnDelete.ButtonClickEvent += (sender, e) => { - var Pra = new AddResidencePra(); - Pra.Name = ResidenceName; - //娣诲姞浣忓畢 - string resultData = await UserCenterLogic.GetResponseDataByRequestHttps("App/AddHome", Pra); - if (resultData == null) + //纭鍒犻櫎鎴块棿? + this.ShowMassage(ShowMsgType.Confirm, Language.StringByID(R.MyInternationalizationString.uDeleteRoomMsg), () => { - //鍏抽棴杩涘害鏉� - this.CloseProgressBar(); - return; - } + HdlRoomLogic.Current.RemoveRoom(room.Id); + //淇濆瓨椤哄簭 + this.listRoomSort.Remove(room.Id); + HdlRoomLogic.Current.SaveRoomSort(string.Empty, this.listRoomSort); - var newInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<List<NewResidenceInfo>>(resultData); - - House.AddHouse(newInfo[0].Id, ResidenceName, 0); - //閲嶆柊鍒锋柊鍒楄〃 - this.SetResidenceInfo(); - } + var listAllRoom = HdlRoomLogic.Current.GetAllListRooms(); + if (listAllRoom.Count <= 1) + { + //鏍规嵁鎸囧畾妯″紡,鍒濆鍖栨甯冩帶浠� + this.InitFrameTableByMode(); + } + else + { + bool canMove = false; + for (int i = 0; i < listView.ChildrenCount; i++) + { + var myRow = listView.GetChildren(i) as RowLayoutControl; + if (myRow != null && myRow.MainKeys == room.Id) + { + canMove = true; + continue; + } + if (canMove == true) + { + //瀹冧箣鍚庣殑琛岋紝鍏ㄩ儴寰�涓婄Щ + myRow.Y -= frameRow.Height; + } + } + frameRow.RemoveFromParent(); + //璋冩暣妗屽竷楂樺害 + this.AdjustContrlTableHeight(); + } + //鍒犻櫎鎴块棿鐨勮瘽,涓婚〉闇�瑕侀噸鏂板埛鏂� + UserView.UserPage.Instance.RefreshForm = true; + }); + }; } #endregion @@ -296,25 +658,150 @@ /// <summary> /// 鍒犻櫎浣忓畢 /// </summary> - /// <param name="info"></param> - public async void DeleteResidence(Common.ResponseEntity.ResidenceObj info) + public async void DeleteResidence() { //寮�鍚繘搴︽潯 this.ShowProgressBar(); - var Pra = new DeleteResidencePra(); - Pra.HomeId = info.Id; - - bool result = await UserCenterLogic.GetResultStatuByRequestHttps("App/DelHome", Pra); - if (result == false) + if (Common.Config.Instance.Home.IsOthreShare == 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); + if (result == false) + { + //鍏抽棴杩涘害鏉� + this.CloseProgressBar(); + return; + } + } + 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); + if (result == false) + { + //鍏抽棴杩涘害鏉� + this.CloseProgressBar(); + return; + } + } + + //鍥犱负鍒犻櫎鐨勬槸褰撳墠鐨勪綇瀹�,鎵�浠ラ渶瑕佸厛鍒囨崲鍒板埆鐨勪綇瀹� + 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++) + { + if (Common.Config.Instance.HomeFilePathList[index] == deleteFile) + { + //褰撳墠浣忓畢鎵�澶勭殑浣嶇疆(浣忓畢鏁拌偗瀹氬ぇ浜�1,涓嶇劧涓嶄細鍑虹幇鍒犻櫎鎸夐挳) + if (index == 0) + { + //鍙栦笅涓�浣� + index++; + } + else + { + //鍙栧墠涓�浣� + index--; + } + break; + } + } + + var myHouse = HdlResidenceLogic.Current.GetHouseByFilePath(Common.Config.Instance.HomeFilePathList[index]); + //鍒囨崲浣忓畢 + Common.Config.Instance.HomeId = myHouse.Id; + Common.Global.CreateHomeDirectory(myHouse.Id); + Common.Config.Instance.Save(); + + //鍒锋柊涓汉涓績鐨勫唴瀛樺強绾跨▼ + await UserCenterLogic.InitUserCenterMenmoryAndThread(false); + + //鍒犻櫎浣忓畢 + HdlResidenceLogic.Current.DeleteHouseMemmory(deleteId); + + Application.RunOnMainThread(() => + { + //鍏抽棴鐣岄潰 + this.CloseForm(); + }); + } + + #endregion + + #region 鈻� 淇濆瓨浣忓畢鍦板浘鍦板潃___________________ + + /// <summary> + /// 淇濆瓨浣忓畢鍦板潃 + /// </summary> + /// <param name="btnLocation">鏄剧ず鎺т欢</param> + /// <param name="latitude">绾害</param> + /// <param name="longitude">缁忓害</param> + /// <param name="addresName">浣嶇疆鍚嶇О</param> + private async void SaveResidenceAdrress(NormalViewControl btnLocation, double latitude, double longitude, string addresName) + { + //濡傛灉涓嶆槸铏氭嫙浣忓畢,鎵嶆洿鏂颁簯绔� + if (Common.Config.Instance.Home.IsVirtually == false) + { + //寮�鍚繘搴︽潯 + 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) + { + //鍏抽棴杩涘害鏉� + 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(); - return; } - House.DeleteHouseByHouseId(info.Id); - this.SetResidenceInfo(); + //淇濆瓨缂撳瓨 + 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; + }); } #endregion @@ -322,21 +809,48 @@ #region 鈻� 涓�鑸柟娉昣__________________________ /// <summary> - /// 妫�娴嬭兘鍚﹀垹闄や綇瀹� + /// 妫�娴婣pp鐨勪綇瀹呮ā寮� 0:杩樻病鏈夎缃湁妯″紡 1:妤煎眰妯″紡 2:娌℃湁妤煎眰妯″紡 /// </summary> - /// <param name="info"></param> /// <returns></returns> - private bool CheckIsCanDeleteResidence(Common.ResponseEntity.ResidenceObj info) + private int CheckAppResidenceMode() { - if (this.dicResidenceData.Count == 1) + if (Common.Config.Instance.Home.FloorDics.Count > 0) { - //濡傛灉姝よ处鍙蜂笅鍙墿涓嬪敮涓�涓�涓嚜宸辩殑浣忓畢锛屽綋鍒犻櫎杩欎釜浣忓畢鏃讹紝鎻愮ず涓嶈兘鍒犻櫎 - //鍥犱负鏈�灏戣鏈変竴涓綇瀹� - if (this.dicResidenceData.ContainsKey(info.Id) == true) + //鎷ユ湁妤煎眰 + return 1; + } + if (HdlRoomLogic.Current.GetAllListRooms().Count > 1) + { + //鏃犳ゼ灞傛ā寮� + return 2; + } + + return 0; + } + + + /// <summary> + /// 妫�娴嬫ゼ灞傚悕绉� + /// </summary> + /// <param name="keys">涓婚敭</param> + /// <param name="newFloorName">鏂扮殑妤煎眰鍚嶇О</param> + /// <returns></returns> + private bool CheckFloorName(string keys, string newFloorName) + { + if (newFloorName == string.Empty) + { + //璇疯緭鍏ヤ綇瀹呭悕绉� + string msg = Language.StringByID(R.MyInternationalizationString.uPleaseInputFloorName); + this.ShowMassage(ShowMsgType.Tip, msg); + return false; + } + foreach (string floorKeys in Common.Config.Instance.Home.FloorDics.Keys) + { + if (floorKeys != keys && newFloorName == Common.Config.Instance.Home.FloorDics[floorKeys]) { - //涓嶈兘鍒犻櫎鏈�鍚庡敮涓�鐨勪綇瀹� - string msg = Language.StringByID(R.MyInternationalizationString.uDoNotDeleteLastResidence); - this.ShowErrorMsg(msg); + //妤煎眰鍚嶇О宸茬粡瀛樺湪 + string msg = Language.StringByID(R.MyInternationalizationString.uFloorNameIsExist); + this.ShowMassage(ShowMsgType.Tip, msg); return false; } } @@ -344,119 +858,19 @@ } /// <summary> - /// 妫�娴嬭兘鍚︿繚瀛樹綇瀹� + /// 璋冩暣鎺т欢妗屽竷楂樺害 /// </summary> - /// <param name="residenceId">浣忓畢ID</param> - /// <param name="residenceName">浣忓畢鍚�</param> - /// <param name="isEditor">isEditor</param> - /// <returns></returns> - private bool CheckIsCanSaveResidence(string residenceId, string residenceName, bool isEditor) + private void AdjustContrlTableHeight() { - //浣忓畢鍚嶅瓧閲嶅妫�娴� - foreach (string strId in this.dicResidenceData.Keys) - { - if (residenceId != strId && residenceName == this.dicResidenceData[strId].Name) - { - //浣忓畢鍚嶅瓧宸茬粡瀛樺湪 - int msgId = isEditor == true ? R.MyInternationalizationString.EditZigbeeHome_Exist : R.MyInternationalizationString.AddZigbeeHome_Exist; - string msg = Language.StringByID(msgId); - this.ShowErrorMsg(msg); - return false; - } - } - return true; + //璋冩暣妗屽竷楂樺害 + listView.AdjustRealHeight(Application.GetRealHeight(23)); + this.frameTable.Height = listView.Bottom; + this.listBackContr.AdjustTableHeight(); } #endregion #region 鈻� 缁撴瀯浣揰____________________________ - - /// <summary> - /// 璁块棶浣忓畢淇℃伅鎺ュ彛鐨勫惎鍔ㄥ弬鏁�(鏌ヨ涓撶敤) - /// </summary> - public class GetResidenceInfoPra:IfacePraCommon - { - /// <summary> - /// RequestVersion - /// </summary> - public string RequestVersion = Common.CommonPage.RequestVersion; - /// <summary> - /// ReqDto - /// </summary> - public TokenInfo ReqDto = new TokenInfo(); - } - - /// <summary> - /// 璁块棶浣忓畢淇℃伅鎺ュ彛鐨勫惎鍔ㄥ弬鏁�(鏌ヨ涓撶敤) - /// </summary> - public class TokenInfo - { - /// <summary> - /// LoginAccessToken - /// </summary> - public string LoginAccessToken = Common.Config.Instance.Token; - /// <summary> - /// PageSetting - /// </summary> - public PageSettingInfo PageSetting = new PageSettingInfo() - { - Page = 1, - PageSize = 500 - }; - } - - /// <summary> - /// 娣诲姞浣忓畢鐨勫惎鍔ㄥ弬鏁� - /// </summary> - public class AddResidencePra:IfacePraCommon - { - /// <summary> - /// RequestVersion - /// </summary> - public string RequestVersion = Common.CommonPage.RequestVersion; - /// <summary> - /// LoginAccessToken - /// </summary> - public string LoginAccessToken = Common.Config.Instance.Token; - /// <summary> - /// Name - /// </summary> - public string Name = string.Empty; - } - - /// <summary> - /// 鏂颁綇瀹呯殑淇℃伅 - /// </summary> - public class NewResidenceInfo - { - /// <summary> - /// ZigbeeHomeGuid - /// </summary> - public string Id = string.Empty; - } - - /// <summary> - /// 缂栬緫浣忓畢鐨勫惎鍔ㄥ弬鏁� - /// </summary> - public class EditorResidencePra : IfacePraCommon - { - /// <summary> - /// RequestVersion - /// </summary> - public string RequestVersion = Common.CommonPage.RequestVersion; - /// <summary> - /// LoginAccessToken - /// </summary> - public string LoginAccessToken = Common.Config.Instance.Token; - /// <summary> - /// ZigbeeHomeId - /// </summary> - public string HomeId = ""; - /// <summary> - /// Name - /// </summary> - public string Name = string.Empty; - } /// <summary> /// 鍒犻櫎浣忓畢鐨勫惎鍔ㄥ弬鏁� @@ -476,6 +890,7 @@ /// </summary> public string HomeId = ""; } + #endregion } } -- Gitblit v1.8.0