using System; using System.Collections.Generic; using System.Text; namespace Shared.Phone.UserCenter.Residence { /// /// 住宅管理界面 /// public class ResidenceManagementForm : EditorCommonForm { #region ■ 变量声明___________________________ /// /// 列表控件 /// private VerticalListControl listView = null; /// /// 列表控件最大高度 /// private int MaxListViewHeight = 0; /// /// 楼层顺序 /// private List listFloorSort = new List(); #endregion #region ■ 初始化_____________________________ /// /// 画面显示(底层会固定调用此方法,借以完成画面创建) /// /// 能否删除当前住宅 public void ShowForm(bool i_CanDeleteResidence) { //设置头部信息 base.SetTitleText(Common.Config.Instance.Home.Name); //判断能否删除住宅 if (i_CanDeleteResidence == true) { //初始化右上角菜单 this.InitTopRightMenu(); } //初始化中部信息 this.InitMiddleFrame(); } /// /// 初始化中部信息 /// private void InitMiddleFrame() { //清空bodyFrame this.ClearBodyFrame(); var frameHome = new FrameRowControl(); frameHome.Height = Application.GetRealHeight(173); frameHome.BackgroundColor = UserCenterColor.Current.White; bodyFrameLayout.AddChidren(frameHome); var btnAdreeIcon = frameHome.AddLeftIcon(81); btnAdreeIcon.UnSelectedImagePath = "Item/FixedPositionSelected.png"; //住宅名称 var btnHomeName = frameHome.AddLeftCaption(Common.Config.Instance.Home.Name, 700, 60); btnHomeName.TextSize = 15; btnHomeName.Y = Application.GetRealHeight(35); frameHome.AddChidren(btnHomeName, ChidrenBindMode.BindEventOnly); //当前住宅 var btnNowView = frameHome.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uNowResidence), 700, 49); btnNowView.TextSize = 12; btnNowView.Y = Application.GetRealHeight(95); btnNowView.TextColor = UserCenterColor.Current.TextGrayColor1; frameHome.AddChidren(btnNowView, ChidrenBindMode.BindEventOnly); //右箭头 frameHome.AddRightArrow(); var frameFloor = new FrameRowControl(); frameFloor.UseClickStatu = false; frameFloor.Y = frameHome.Bottom + Application.GetRealHeight(23); frameFloor.Height = Application.GetRealHeight(115); frameFloor.BackgroundColor = UserCenterColor.Current.White; bodyFrameLayout.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); if (UserCenterResourse.UserInfo.AuthorityNo == 1 || UserCenterResourse.UserInfo.AuthorityNo == 2) { //添加楼层 var btnAddFloor = frameFloor.AddMostRightEmptyIcon(69, 69); frameFloor.ChangedChidrenBindMode(btnAddFloor, ChidrenBindMode.NotBind); btnAddFloor.Y = Application.GetRealHeight(46); btnAddFloor.UnSelectedImagePath = "Item/Add.png"; btnAddFloor.ButtonClickEvent += (sender, e) => { //创建楼层 this.CreatOrEditorFloor(string.Empty, string.Empty); }; } this.MaxListViewHeight = bodyFrameLayout.Height - frameFloor.Bottom; listView = new VerticalListControl(29); listView.BackgroundColor = UserCenterColor.Current.White; listView.Y = frameFloor.Bottom; listView.Height = MaxListViewHeight; bodyFrameLayout.AddChidren(listView); //初始化楼层行 this.InitFloorRow(); } /// /// 初始化楼层行 /// private void InitFloorRow() { //获取楼层 var dicFloor = Common.Room.CurrentRoom.GetFloorSortList(); this.listFloorSort.Clear(); foreach (string keys in dicFloor.Keys) { listFloorSort.Add(keys); } listView.Height = MaxListViewHeight; listView.RemoveAll(); 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); } //调整控件高度 listView.AdjustRealHeight(Application.GetRealHeight(23)); }); } #endregion #region ■ 添加楼层行_________________________ /// /// 添加楼层行 /// /// /// /// private void AddFloorRow(string keys, string floorName, bool addLine) { var frameRow = new RowLayoutControl(listView.rowSpace / 2); 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 = new NormalViewControl(Application.GetRealWidth(184), frameRow.Height, false); btnChanged.BackgroundColor = 0xff4a4a4a; btnChanged.TextSize = 12; btnChanged.TextColor = UserCenterColor.Current.White; btnChanged.TextAlignment = TextAlignment.Center; btnChanged.TextID = R.MyInternationalizationString.uChanged1; frameRow.AddRightView(btnChanged); btnChanged.ButtonClickEvent += (sender, e) => { //创建或者编辑楼层 this.CreatOrEditorFloor(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.DeleteFloor(keys); }; } } #endregion #region ■ 创建或编辑楼层_____________________ /// /// 创建或者编辑楼层 /// /// /// private void CreatOrEditorFloor(string keys, string floorName) { //生成一个弹窗画面 var dialogForm = new DialogInputFrameControl(this, DialogFrameMode.OnlyInput); //创建楼层 dialogForm.SetTitleText(Language.StringByID(R.MyInternationalizationString.uCreatFloor)); if (keys != string.Empty) { //更改名称 dialogForm.SetTitleText(Language.StringByID(R.MyInternationalizationString.uChangedName)); } //请输入楼层名称 dialogForm.SetTipText(Language.StringByID(R.MyInternationalizationString.uPleaseInputFloorName)); dialogForm.Text = floorName; //按下确认按钮 dialogForm.ComfirmClickEvent += ((textValue) => { if (this.CheckFloorName(keys, textValue) == false) { //楼层名称检测 return; } //画面关闭 dialogForm.CloseDialog(); if (floorName != textValue) { //编辑或者创建楼层名称 if (keys == string.Empty) { keys = Guid.NewGuid().ToString(); } Common.Config.Instance.Home.FloorDics[keys] = textValue; Common.Config.Instance.Home.Save(); //重新初始化楼层行 this.InitFloorRow(); } }); } /// /// 检测楼层名称 /// /// 主键 /// 新的楼层名称 /// private bool CheckFloorName(string keys, string newFloorName) { if (newFloorName == string.Empty) { //请输入住宅名称 string msg = Language.StringByID(R.MyInternationalizationString.uPleaseInputFloorName); this.ShowMassage(ShowMsgType.Error, 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.uFloorNameIsExist); this.ShowMassage(ShowMsgType.Error, msg); return false; } } return true; } #endregion #region ■ 删除楼层___________________________ /// /// 删除楼层 /// /// private void DeleteFloor(string keys) { //确认删除楼层及其所有房间? this.ShowMassage(ShowMsgType.Confirm, Language.StringByID(R.MyInternationalizationString.uDeleteFloorMsg), () => { //如果是分享的房间,不能编辑和修改 return; } //编辑 var btnEditor = frameRow.AddEditorControl(); btnEditor.ButtonClickEvent += (sender, e) => { var form = new EditorRoomInforForm(); form.AddForm(room); form.FinishEditorEvent += (roomName) => { btnName.Text = roomName; }; }; //删除 var btnDelete = frameRow.AddDeleteControl(); btnDelete.ButtonClickEvent += (sender, e) => { //确认删除房间? this.ShowMassage(ShowMsgType.Confirm, Language.StringByID(R.MyInternationalizationString.uDeleteRoomMsg), () => { if (Common.Room.Lists[i].FloorId == keys) { listDeleteFile.Add(Common.Room.Lists[i].FileName); } } //删除房间 foreach (string fileName in listDeleteFile) { Common.Room.CurrentRoom.Remove(fileName); } //如果当前选择的房间是删除对象的话 if (Common.Room.CurrentRoom.FloorId == keys) { Common.Room.CurrentRoom = Common.Room.Lists[0]; } Common.Config.Instance.Home.Save(); //重新初始化楼层行 listFloorSort.Remove(keys); this.InitFloorRow(); }); } #endregion #region ■ 右上角菜单_________________________ /// /// 初始化右上角菜单 /// private void InitTopRightMenu() { var btnIcon = new MostRightIconControl(69, 69); btnIcon.UnSelectedImagePath = "Item/More.png"; topFrameLayout.AddChidren(btnIcon); btnIcon.InitControl(); btnIcon.ButtonClickEvent += ((sender, e) => { var frame = new TopRightMenuControl(this, 1); //删除住宅 frame.AddRowMenu(Language.StringByID(R.MyInternationalizationString.uDeleteResidence), "Item/DeleteIcon2.png", "Item/DeleteIcon2Selected.png", () => { //确认删除住宅及所有楼层、房间? string msg = Language.StringByID(R.MyInternationalizationString.uDeleteResidenceMsg); this.ShowMassage(ShowMsgType.Confirm, msg, () => { this.DeleteResidence(); }); }); }); } /// /// 删除住宅 /// public async void DeleteResidence() { //开启进度条 this.ShowProgressBar(); var Pra = new DeleteResidencePra(); Pra.HomeId = Common.Config.Instance.Home.Id; Pra.LoginAccessToken = UserCenterLogic.GetConnectMainToken(); bool result = await UserCenterLogic.GetResultStatuByRequestHttps("App/DelHome", true, Pra); //关闭进度条 this.CloseProgressBar(); if (result == false) { return; } HdlThreadLogic.Current.RunThread(async () => { //因为删除的是当前的住宅,所以需要先切换到别的住宅 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 = Common.House.GetHouseByFilePath(Common.Config.Instance.HomeFilePathList[index]); //切换住宅 Common.Config.Instance.HomeId = myHouse.Id; Common.Global.CreateHomeDirectory(myHouse.Id); Common.Config.Instance.Save(); //刷新个人中心的内存及线程 await UserCenterLogic.InitUserCenterMenmoryAndThread(); Common.Room.InitAllRoom(); //删除住宅 Common.House.DeleteHouseByHouseId(deleteId); Application.RunOnMainThread(() => { //关闭界面 this.CloseForm(); }); }); } #endregion #region ■ 结构体_____________________________ /// /// 删除住宅的启动参数 /// public class DeleteResidencePra : IfacePraCommon { /// /// RequestVersion /// public string RequestVersion = Common.CommonPage.RequestVersion; /// /// LoginAccessToken /// public string LoginAccessToken = Common.Config.Instance.Token; /// /// ZigbeeHomeId /// public string HomeId = ""; } #endregion } }