陈嘉乐
2020-07-10 48ba446936b51fffafa7c3600c0dadc6ac0e8c20
ZigbeeApp/Shared/Phone/UserCenter/Residence/ResidenceManagementForm.cs
@@ -1,24 +1,40 @@
using Shared.Common;
using System;
using System;
using System.Collections.Generic;
using System.Text;
namespace Shared.Phone.UserCenter.Residence
{
    /// <summary>
    /// 住宅管理的画面★
    /// 住宅管理界面
    /// </summary>
    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
@@ -27,465 +43,854 @@
        /// <summary>
        /// 画面显示(底层会固定调用此方法,借以完成画面创建)
        /// </summary>
        public void ShowForm()
        /// <param name="i_CanDeleteResidence">能否删除当前住宅</param>
        public void ShowForm(bool i_CanDeleteResidence)
        {
            //设置标题信息
            base.SetTitleText(Language.StringByID(R.MyInternationalizationString.ResidenceManagement));
            //设置头部信息
            base.SetTitleText(Common.Config.Instance.Home.Name);
            if (UserCenterResourse.UserInfo.AuthorityNo == 1)
            //主人或者管理员才会出现这个菜单
            if (UserCenterResourse.UserInfo.AuthorityNo == 1 || UserCenterResourse.UserInfo.AuthorityNo == 2)
            {
                //右上添加按钮
                var btnTopIcon = new MostRightIconControl(69, 69);
                btnTopIcon.UnSelectedImagePath = "Item/Add.png";
                topFrameLayout.AddChidren(btnTopIcon);
                btnTopIcon.InitControl();
                btnTopIcon.ButtonClickEvent += (sender, e) =>
                //初始化右上角菜单
                this.InitTopRightMenu();
            }
            //初始化中部信息
            this.InitMiddleFrame(i_CanDeleteResidence);
        }
        /// <summary>
        /// 初始化中部信息
        /// </summary>
        /// <param name="i_CanDeleteResidence">能否删除当前住宅</param>
        private void InitMiddleFrame(bool i_CanDeleteResidence)
        {
            //清空bodyFrame
            this.ClearBodyFrame();
            //整个界面的上下滑动控件
            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)
            {
                //右箭头
                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)
            {
                rowHome.frameTable.UseClickStatu = true;
                rowHome.frameTable.ButtonClickEvent += (sender, e) =>
                {
                    //var info = new Common.ResponseEntity.ResidenceObj();
                    //this.ShowEditorForm(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.InitMiddleFrame();
            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 InitMiddleFrame()
        //{
        //    //清空bodyFrame
        //    this.ClearBodyFrame();
        /// <summary>
        /// 根据指定模式,初始化桌布控件
        /// </summary>
        private void InitFrameTableByMode()
        {
            this.frameTable.RemoveAll();
        //    listView = new VerticalScrolViewLayout();
        //    listView.Height = bodyFrameLayout.Height;
        //    bodyFrameLayout.AddChidren(listView);
        //    new System.Threading.Thread(() =>
        //    {
        //        //设置住宅信息
        //        this.SetResidenceInfo();
        //    })
        //    { IsBackground = true }.Start();
        //}
        ///// <summary>
        ///// 设置住宅信息
        ///// </summary>
        //private async void SetResidenceInfo()
        //{
        //    //开启进度条
        //    this.ShowProgressBar();
        //    Application.RunOnMainThread(() =>
        //    {
        //        this.listView?.RemoveAll();
        //    });
        //    //获取住宅信息
        //    var Pra = new GetResidenceInfoPra();
        //    string resultData = await UserCenterLogic.GetResponseDataByRequestHttps("App/GetHomePager", false, Pra);
        //    if (resultData == null)
        //    {
        //        //关闭进度条
        //        this.CloseProgressBar(ShowReLoadMode.YES);
        //        return;
        //    }
        //    this.dicResidenceData = new Dictionary<string, Common.ResponseEntity.ResidenceObj>();
        //    var pageData = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.ResponseEntity.ResidenceRes>(resultData);
        //    foreach (Common.ResponseEntity.ResidenceObj info in pageData.PageData)
        //    {
        //        if (info.IsOthreShare == false)
        //        {
        //            //收集该账号所拥有的自己的住宅的数据
        //            this.dicResidenceData[info.Id] = info;
        //        }
        //        Application.RunOnMainThread(() =>
        //        {
        //            if (this.Parent != null)
        //            {
        //                this.AddRowLayout(info);
        //            }
        //        });
        //    }
        //    //关闭进度条
        //    this.CloseProgressBar();
        //}
            //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)
        //{
        //    if (info.IsOthreShare == true)
        //    {
        //        return;
        //    }
        //    var rowLayout = new RowLayout();
        //    rowLayout.Height = ControlCommonResourse.ListViewRowHeight;
        //    this.listView.AddChidren(rowLayout);
        /// <summary>
        /// 初始化右上角菜单
        /// </summary>
        private void InitTopRightMenu()
        {
            var btnIcon = new MostRightIconControl(69, 69);
            btnIcon.UnSelectedImagePath = "Item/Add.png";
            topFrameLayout.AddChidren(btnIcon);
            btnIcon.InitControl();
            btnIcon.ButtonClickEvent += ((sender, e) =>
            {
                //0:还没有设置有模式 1:楼层模式 2:没有楼层模式
                AppResidenceMode = this.CheckAppResidenceMode();
                //没有设置过模式
                if (AppResidenceMode == 0)
                {
                    var frame = new TopRightMenuControl(2, 2);
                    //创建楼层
                    frame.AddRowMenu(Language.StringByID(R.MyInternationalizationString.uCreatFloor), "Item/CreatFloor.png", "Item/CreatFloorSelected.png", () =>
                    {
                        //创建楼层
                        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 += () =>
                        {
                            //根据指定模式,初始化桌布控件
                            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();
                    };
                }
            });
        }
        //    //图标
        //    var btnIcon = new RowLeftIconView();
        //    btnIcon.ChangedControlInPointMode();
        //    rowLayout.AddChidren(btnIcon);
        #endregion
        //    //住宅
        //    var txtResidence = new RowCenterView(true);
        //    txtResidence.Text = info.Name;
        //    rowLayout.AddChidren(txtResidence);
        //    txtResidence.X -= ControlCommonResourse.PointXXLeft;
        #region ■ 初始化楼层模式_____________________
        //    //不是分享过来的住宅
        //    if (info.IsOthreShare == false)
        //    {
        //        //编辑
        //        var btnEditor = new RowEditorButton();
        //        rowLayout.AddRightView(btnEditor);
        //        btnEditor.MouseUpEventHandler += (sender, e) =>
        //        {
        //            this.ShowEditorForm(info);
        //        };
        /// <summary>
        /// 初始化楼层模式
        /// </summary>
        private void InitControlByFloorMode()
        {
            var frameFloor = new FrameRowControl();
            frameFloor.UseClickStatu = false;
            frameFloor.Height = Application.GetRealHeight(115);
            frameFloor.BackgroundColor = UserCenterColor.Current.White;
            this.frameTable.AddChidren(frameFloor);
        //        //不能删除当前正在操作的住宅
        //        if (Common.Config.Instance.HomeId != info.Id)
        //        {
        //            //删除
        //            var btnDelete = new RowDeleteButton();
        //            rowLayout.AddRightView(btnDelete);
        //            btnDelete.MouseUpEventHandler += (sender, e) =>
        //            {
        //                //检测能否删除住宅
        //                if (this.CheckIsCanDeleteResidence(info) == false)
        //                {
        //                    return;
        //                }
        //                //确认要删除吗?
        //                string msg = Language.StringByID(R.MyInternationalizationString.uShowDoDeleteMsg);
        //                this.ShowConfirmMsg(msg, "DeleteResidence", info);
        //            };
        //        }
        //    }
        //    //成员的管理员权限,只能编辑,不能删除
        //    //if (info.AccountType == 1)
        //    //{
        //    //    //编辑
        //    //    var btnEditor = new RowEditorButton();
        //    //    rowLayout.AddRightView(btnEditor);
        //    //    btnEditor.MouseUpEventHandler += (sender, e) =>
        //    //    {
        //    //        this.ShowEditorForm(info);
        //    //    };
        //    //}
        //}
            //楼层
            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);
        //#endregion
            listView = new FrameListControl(29);
            listView.BackgroundColor = UserCenterColor.Current.White;
            listView.Y = frameFloor.Bottom;
            listView.Height = frameTable.Height - frameFloor.Bottom;
            this.frameTable.AddChidren(listView);
        //#region ■ 显示编辑画面_______________________
            //初始化楼层行
            this.InitFloorRow();
        }
        ///// <summary>
        ///// 显示编辑画面
        ///// </summary>
        ///// <param name="info"></param>
        //private void ShowEditorForm(Common.ResponseEntity.ResidenceObj info)
        //{
        //    //生成一个弹窗画面
        //    var dialogForm = new DialogInputFrameControl(this, DialogFrameMode.OnlyInput);
        /// <summary>
        /// 初始化楼层行
        /// </summary>
        private void InitFloorRow()
        {
            //获取楼层
            var dicFloor = HdlRoomLogic.Current.GetFloorSortList();
            this.listFloorSort.Clear();
            foreach (string keys in dicFloor.Keys)
            {
                listFloorSort.Add(keys);
            }
        //    if (string.IsNullOrEmpty(info.Name) == true)
        //    {
        //        //添加住宅
        //        dialogForm.SetTitleText(Language.StringByID(R.MyInternationalizationString.uAddResidence));
        //    }
        //    else
        //    {
        //        //编辑住宅
        //        dialogForm.SetTitleText(Language.StringByID(R.MyInternationalizationString.uEditorResidence));
        //    }
            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();
            });
        }
        //    //请输入住宅名称
        //    dialogForm.SetTipText(Language.StringByID(R.MyInternationalizationString.uPleaseInputResidenceName));
        //    if (info.Name != null)
        //    {
        //        dialogForm.InputText = info.Name;
        //    }
        //    //按下确认按钮
        //    dialogForm.ComfirmClickEvent += (()=>
        //    {
        //        string resiName = dialogForm.InputText;
        //        if (resiName == string.Empty)
        //        {
        //            //请输入住宅名称
        //            string msg = Language.StringByID(R.MyInternationalizationString.uPleaseInputResidenceName);
        //            this.ShowErrorMsg(msg);
        //            return;
        //        }
        //        //画面关闭
        //        dialogForm.CloseDialog();
        #endregion
        //        if (info.Name != resiName)
        //        {
        //            //保存住宅
        //            this.SaveResidence(resiName, info, string.IsNullOrEmpty(info.Name) == false);
        //        }
        //    });
        //}
        #region ■ 添加楼层行_________________________
        //#endregion
        /// <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);
            };
        //#region ■ 保存住宅___________________________
            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);
                };
        ///// <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)
        //{
        //    //检测能否保存住宅
        //    if (this.CheckIsCanSaveResidence(info.Id, ResidenceName, isEditor) == false)
        //    {
        //        return;
        //    }
        //    //开启进度条
        //    this.ShowProgressBar();
                //删除
                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)
                            {
                                //把第一个楼层ID给它
                                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 (isEditor == true)
        //    {
        //        var Pra = new EditorResidencePra();
        //        Pra.HomeId = info.Id;
        //        Pra.Name = ResidenceName;
        //        //编辑住宅
        //        bool flage = await UserCenterLogic.GetResultStatuByRequestHttps("App/EditHome", false, Pra);
        //        if (flage == false)
        //        {
        //            //关闭进度条
        //            this.CloseProgressBar();
        //            return;
        //        }
        //        //刷新内存的住宅名
        //        House.EditorHouseByHouseId(info.Id, ResidenceName);
        //        //重新刷新列表
        //        this.SetResidenceInfo();
        //    }
        //    else
        //    {
        //        var Pra = new AddResidencePra();
        //        Pra.Name = ResidenceName;
        //        //添加住宅
        //        string resultData = await UserCenterLogic.GetResponseDataByRequestHttps("App/AddHome", false, Pra);
        //        if (resultData == null)
        //        {
        //            //关闭进度条
        //            this.CloseProgressBar();
        //            return;
        //        }
                        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;
                    });
                };
            }
        }
        //        var newInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<List<NewResidenceInfo>>(resultData);
        /// <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 DialogInputControl();
            //创建楼层
            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));
            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.Text = floorName;
            }
            //按下确认按钮
            dialogForm.ComfirmClickEvent += ((textValue) =>
            {
                //还原左右菜单
                frameRow?.HideMenu();
        //        House.AddHouse(newInfo[0].Id, ResidenceName, 0);
        //        //重新刷新列表
        //        this.SetResidenceInfo();
        //    }
        //}
                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();
                    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 ■ 删除住宅___________________________
        #endregion
        ///// <summary>
        ///// 删除住宅
        ///// </summary>
        ///// <param name="info"></param>
        //public async void DeleteResidence(Common.ResponseEntity.ResidenceObj info)
        //{
        //    //开启进度条
        //    this.ShowProgressBar();
        #region ■ 初始化无楼层模式___________________
        //    var Pra = new DeleteResidencePra();
        //    Pra.HomeId = info.Id;
        /// <summary>
        /// 初始化无楼层模式
        /// </summary>
        private void InitControlByNotFloorMode()
        {
            var frameRoom = new FrameRowControl();
            frameRoom.UseClickStatu = false;
            frameRoom.Height = Application.GetRealHeight(115);
            frameRoom.BackgroundColor = UserCenterColor.Current.White;
            frameTable.AddChidren(frameRoom);
        //    bool result = await UserCenterLogic.GetResultStatuByRequestHttps("App/DelHome", false, Pra);
        //    if (result == false)
        //    {
        //        //关闭进度条
        //        this.CloseProgressBar();
        //        return;
        //    }
        //    House.DeleteHouseByHouseId(info.Id);
            //房间列表
            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);
        //    this.SetResidenceInfo();
        //}
            listView = new FrameListControl(29);
            listView.BackgroundColor = UserCenterColor.Current.White;
            listView.Y = frameRoom.Bottom;
            listView.Height = frameTable.Height - frameRoom.Bottom;
            frameTable.AddChidren(listView);
        //#endregion
            //初始化房间列表
            this.InitRoomListRow();
        }
        //#region ■ 一般方法___________________________
        /// <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);
            }
        ///// <summary>
        ///// 检测能否删除住宅
        ///// </summary>
        ///// <param name="info"></param>
        ///// <returns></returns>
        //private bool CheckIsCanDeleteResidence(Common.ResponseEntity.ResidenceObj info)
        //{
        //    if (this.dicResidenceData.Count == 1)
        //    {
        //        //如果此账号下只剩下唯一一个自己的住宅,当删除这个住宅时,提示不能删除
        //        //因为最少要有一个住宅
        //        if (this.dicResidenceData.ContainsKey(info.Id) == true)
        //        {
        //            //不能删除最后唯一的住宅
        //            string msg = Language.StringByID(R.MyInternationalizationString.uDoNotDeleteLastResidence);
        //            this.ShowErrorMsg(msg);
        //            return false;
        //        }
        //    }
        //    return true;
        //}
            for (int i = 0; i < listRoom.Count; i++)
            {
                //添加房间行
                this.AddRoomRow(listRoom[i], i != listRoom.Count - 1);
            }
            //调整桌布高度
            this.AdjustContrlTableHeight();
        }
        ///// <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)
        //{
        //    //住宅名字重复检测
        //    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;
        //}
        #endregion
        //#endregion
        #region ■ 添加房间行_________________________
        //#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);
            };
        ///// <summary>
        ///// 访问住宅信息接口的启动参数(查询专用)
        ///// </summary>
        //public class GetResidenceInfoPra:IfacePraCommon
        //{
        //    /// <summary>
        //    /// RequestVersion
        //    /// </summary>
        //    public string RequestVersion = Common.CommonPage.RequestVersion;
        //    /// <summary>
        //    /// ReqDto
        //    /// </summary>
        //    public TokenInfo ReqDto = new TokenInfo();
        //}
            if (room.IsSharedRoom == true)
            {
                //如果是分享的房间,不能编辑和修改
                return;
            }
        ///// <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
        //    };
        //}
            //编辑
            var btnEditor = frameRow.AddEditorControl();
            btnEditor.ButtonClickEvent += (sender, e) =>
            {
                var form = new EditorRoomInforForm();
                form.AddForm(room);
                form.FinishEditorEvent += (roomName) =>
                {
                    btnName.Text = roomName;
                };
            };
        ///// <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;
        //}
            //删除
            var btnDelete = frameRow.AddDeleteControl();
            btnDelete.ButtonClickEvent += (sender, e) =>
            {
                //确认删除房间?
                this.ShowMassage(ShowMsgType.Confirm, Language.StringByID(R.MyInternationalizationString.uDeleteRoomMsg), () =>
                {
                    HdlRoomLogic.Current.RemoveRoom(room.Id);
                    //保存顺序
                    this.listRoomSort.Remove(room.Id);
                    HdlRoomLogic.Current.SaveRoomSort(string.Empty, this.listRoomSort);
        ///// <summary>
        ///// 新住宅的信息
        ///// </summary>
        //public class NewResidenceInfo
        //{
        //    /// <summary>
        //    /// ZigbeeHomeGuid
        //    /// </summary>
        //    public string Id = string.Empty;
        //}
                    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;
                });
            };
        }
        ///// <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;
        //}
        #endregion
        ///// <summary>
        /////  删除住宅的启动参数
        ///// </summary>
        //public class DeleteResidencePra : 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 = "";
        //}
        //#endregion
        #region ■ 删除住宅___________________________
        /// <summary>
        /// 删除住宅
        /// </summary>
        public async void DeleteResidence()
        {
            //开启进度条
            this.ShowProgressBar();
            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();
            }
            //保存缓存
            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
        #region ■ 一般方法___________________________
        /// <summary>
        /// 检测App的住宅模式 0:还没有设置有模式 1:楼层模式 2:没有楼层模式
        /// </summary>
        /// <returns></returns>
        private int CheckAppResidenceMode()
        {
            if (Common.Config.Instance.Home.FloorDics.Count > 0)
            {
                //拥有楼层
                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.uFloorNameIsExist);
                    this.ShowMassage(ShowMsgType.Tip, msg);
                    return false;
                }
            }
            return true;
        }
        /// <summary>
        /// 调整控件桌布高度
        /// </summary>
        private void AdjustContrlTableHeight()
        {
            //调整桌布高度
            listView.AdjustRealHeight(Application.GetRealHeight(23));
            this.frameTable.Height = listView.Bottom;
            this.listBackContr.AdjustTableHeight();
        }
        #endregion
        #region ■ 结构体_____________________________
        /// <summary>
        ///  删除住宅的启动参数
        /// </summary>
        public class DeleteResidencePra : 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 = "";
        }
        #endregion
    }
}