陈嘉乐
2020-09-02 652243206427f35a256400a149a1734085824cb9
ZigbeeApp/Shared/Phone/UserCenter/Residence/ResidenceListForm.cs
@@ -23,10 +23,6 @@
        /// 住宅数据(无网时使用)
        /// </summary>
        private List<House> listLocalHouse = null;
        /// <summary>
        /// 住宅顺序
        /// </summary>
        private List<string> listResidenceSort = new List<string>();
        #endregion
@@ -67,13 +63,6 @@
            //清空bodyFrame
            this.ClearBodyFrame();
            //读取住宅顺序
            var strData = UserCenterLogic.LoadFileContent(UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.ResidenceSortFile));
            if (strData != null)
            {
                listResidenceSort = Newtonsoft.Json.JsonConvert.DeserializeObject<List<string>>(strData);
            }
            listView = new VerticalListControl(29);
            listView.Height = bodyFrameLayout.Height + Application.GetRealHeight(6);
            listView.BackgroundColor = UserCenterColor.Current.White;
@@ -89,7 +78,7 @@
        /// <param name="div">1:先读取云端,无法联网,再读取本地  2:只读云端  3:只读本地</param>
        private void SetResidenceInfo(int div)
        {
            HdlThreadLogic.Current.RunThread(async () =>
            HdlThreadLogic.Current.RunThread(() =>
            {
                //虚拟住宅的话,只读本地
                if (div == 3 || Config.Instance.Home.IsVirtually == true)
@@ -102,7 +91,7 @@
                    //开启进度条
                    this.ShowProgressBar();
                    //设置住宅信息(有网情况)
                    var result = await this.SetResidenceInfoByOnline();
                    var result = this.SetResidenceInfoByOnline();
                    if (result == true)
                    {
                        //云端读取成功
@@ -131,41 +120,18 @@
        /// <summary>
        /// 设置住宅信息(有网情况)
        /// </summary>
        private async System.Threading.Tasks.Task<bool> SetResidenceInfoByOnline()
        private bool SetResidenceInfoByOnline()
        {
            //获取住宅信息
            var Pra = new GetResidenceInfoPra();
            var listNotCheck = new List<string>() { "NotSetAgain" };
            string resultData = await UserCenterLogic.GetResponseDataByRequestHttps("App/GetHomePager", false, Pra, listNotCheck);
            if (resultData == null)
            string resultData = UserCenterLogic.GetResponseDataByRequestHttps("App/GetHomePager", false, Pra, new List<string> { "NotCheck" }, false);
            if (string.IsNullOrEmpty(resultData) == true)
            {
                return false;
            }
            var pageData = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.ResponseEntity.ResidenceRes>(resultData);
            //暂时存储数据
            var dicData = new Dictionary<string, Common.ResponseEntity.ResidenceObj>();
            for (int i = 0; i < pageData.PageData.Count; i++)
            {
                dicData[pageData.PageData[i].Id] = pageData.PageData[i];
                if (listResidenceSort.Contains(pageData.PageData[i].Id) == false)
                {
                    //新添加的住宅
                    listResidenceSort.Add(pageData.PageData[i].Id);
                }
            }
            for (int i = 0; i < listResidenceSort.Count; i++)
            {
                //移除掉不存在了的顺序
                if (dicData.ContainsKey(listResidenceSort[i]) == false)
                {
                    listResidenceSort.RemoveAt(i);
                    i--;
                }
            }
            //保存顺序
            string fullName = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.ResidenceSortFile);
            UserCenterLogic.SaveFileContent(fullName, listResidenceSort);
            //排序住宅
            var listHouse = HdlResidenceLogic.Current.SortHouse(pageData.PageData);
            HdlThreadLogic.Current.RunMain(() =>
            {
@@ -176,18 +142,14 @@
                listView.Height = bodyFrameLayout.Height;
                this.dicResidenceData = new Dictionary<string, Common.ResponseEntity.ResidenceObj>();
                for (int i = 0; i < listResidenceSort.Count; i++)
                for (int i = 0; i < listHouse.Count; i++)
                {
                    if (dicData.ContainsKey(listResidenceSort[i]) == false)
                    {
                        continue;
                    }
                    var info = dicData[listResidenceSort[i]];
                    var info = listHouse[i];
                    //收集该账号住宅的数据
                    this.dicResidenceData[info.Id] = info;
                    //添加住宅的行(有网情况)
                    this.AddRowLayoutByOnline(info, i != listResidenceSort.Count - 1);
                    this.AddRowLayoutByOnline(info, i != listHouse.Count - 1);
                }
                //调整列表控件的高度
                this.listView.AdjustRealHeight(Application.GetRealHeight(23));
@@ -215,14 +177,14 @@
                btnHome = rowLayout.frameTable.AddLeftCaption(info.Name, 800, 60, true);
                btnHome.TextSize = 15;
                btnHome.Y = Application.GetRealHeight(12) + rowLayout.chidrenYaxis;
                rowLayout.frameTable.AddChidren(btnHome, ChidrenBindMode.BindEventOnly);
                rowLayout.frameTable.AddChidren(btnHome, ChidrenBindMode.BindEvent);
                //当前住宅
                var btnNowView = rowLayout.frameTable.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uNowResidence), 800, 49, true);
                btnNowView.Y = Application.GetRealHeight(72) + rowLayout.chidrenYaxis;
                btnNowView.TextSize = 12;
                btnNowView.TextColor = UserCenterColor.Current.TextGrayColor1;
                rowLayout.frameTable.AddChidren(btnNowView, ChidrenBindMode.BindEventOnly);
                rowLayout.frameTable.AddChidren(btnNowView, ChidrenBindMode.BindEvent);
            }
            else
            {
@@ -250,7 +212,7 @@
                    }
                    this.ShowMassage(ShowMsgType.Confirm, msg, () =>
                    {
                        HdlThreadLogic.Current.RunThread(async () =>
                        HdlThreadLogic.Current.RunThread(() =>
                        {
                            //开启进度条
                            this.ShowProgressBar();
@@ -258,18 +220,16 @@
                            //检测本地有没有这个住宅
                            this.CheckIsExsitResidence(info);
                            Config.Instance.HomeId = info.Id;
                            //重新初始化住宅对象
                            Config.Instance.Home = House.GetHouseByHouseId(info.Id);
                            Config.Instance.Save();
                            //刷新个人中心的内存及线程
                            await UserCenterLogic.InitUserCenterMenmoryAndThread(false);
                            var result = HdlResidenceLogic.Current.SwitchResidence(info.Id);
                            HdlThreadLogic.Current.RunMain(() =>
                            {
                                //重新刷新列表
                                this.listView.RemoveAll();
                                this.SetResidenceInfo(2);
                                if (result == true)
                                {
                                    //重新刷新列表
                                    this.listView.RemoveAll();
                                    this.SetResidenceInfo(2);
                                }
                                //关闭进度条
                                this.CloseProgressBar();
                            });
@@ -290,6 +250,14 @@
                //分享的,不能更改
                return;
            }
            //过户
            var btnTransfer = rowLayout.AddDeleteControl();
            btnTransfer.TextID = R.MyInternationalizationString.uTransfer;
            btnTransfer.ButtonClickEvent += (sender, e) =>
            {
                var form = new TransferResidenceMainForm();
                form.AddForm();
            };
            //更改
            var btnChanged = rowLayout.AddEditorControl();
            btnChanged.TextID = R.MyInternationalizationString.uChanged1;
@@ -350,14 +318,14 @@
                btnHome = rowLayout.frameTable.AddLeftCaption(i_home.Name, 800, 60, true);
                btnHome.TextSize = 15;
                btnHome.Y = Application.GetRealHeight(12) + rowLayout.chidrenYaxis;
                rowLayout.frameTable.AddChidren(btnHome, ChidrenBindMode.BindEventOnly);
                rowLayout.frameTable.AddChidren(btnHome, ChidrenBindMode.BindEvent);
                //当前住宅
                var btnNowView = rowLayout.frameTable.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uNowResidence), 800, 49, true);
                btnNowView.Y = Application.GetRealHeight(72) + rowLayout.chidrenYaxis;
                btnNowView.TextSize = 12;
                btnNowView.TextColor = UserCenterColor.Current.TextGrayColor1;
                rowLayout.frameTable.AddChidren(btnNowView, ChidrenBindMode.BindEventOnly);
                rowLayout.frameTable.AddChidren(btnNowView, ChidrenBindMode.BindEvent);
            }
            else
            {
@@ -385,22 +353,18 @@
                    }
                    this.ShowMassage(ShowMsgType.Confirm, msg, () =>
                    {
                        HdlThreadLogic.Current.RunThread(async () =>
                        HdlThreadLogic.Current.RunThread(() =>
                        {
                            this.ShowProgressBar();
                            Config.Instance.HomeId = i_home.Id;
                            //重新初始化住宅对象
                            Config.Instance.Home = House.GetHouseByHouseId(i_home.Id);
                            Config.Instance.Save();
                            //刷新个人中心的内存及线程
                            await UserCenterLogic.InitUserCenterMenmoryAndThread(false);
                            var result = HdlResidenceLogic.Current.SwitchResidence(i_home.Id);
                            HdlThreadLogic.Current.RunMain(() =>
                            {
                                //重新刷新列表
                                this.listView.RemoveAll();
                                this.SetResidenceInfo(3);
                                if (result == true)
                                {
                                    //重新刷新列表
                                    this.listView.RemoveAll();
                                    this.SetResidenceInfo(3);
                                }
                                //关闭进度条
                                this.CloseProgressBar();
                            });
@@ -415,14 +379,14 @@
                    form.AddForm(flage);
                }
            };
            //更改
            var btnChanged = rowLayout.AddEditorControl();
            btnChanged.TextID = R.MyInternationalizationString.uChanged1;
            btnChanged.ButtonClickEvent += (sender, e) =>
            {
                //显示编辑名称界面
                this.ShowEditorNameForm(null, i_home, btnHome);
            };
            ////更改
            //var btnChanged = rowLayout.AddEditorControl();
            //btnChanged.TextID = R.MyInternationalizationString.uChanged1;
            //btnChanged.ButtonClickEvent += (sender, e) =>
            //{
            //    //显示编辑名称界面
            //    this.ShowEditorNameForm(null, i_home, btnHome);
            //};
        }
        #endregion
@@ -462,7 +426,10 @@
                    if (info != null)
                    {
                        //编辑云端的住宅名称
                        this.EditorResidenceName(textValue, info, btnHome);
                        HdlThreadLogic.Current.RunThread(() =>
                        {
                            this.EditorResidenceName(textValue, info, btnHome);
                        });
                    }
                    else
                    {
@@ -472,7 +439,7 @@
                            return;
                        }
                        //刷新内存的住宅名
                        House.EditorHouseByHouseId(i_house.Id, textValue);
                        HdlResidenceLogic.Current.EditorHouseByHouseId(i_house.Id, textValue);
                        //更改显示的名字
                        btnHome.Text = textValue;
                    }
@@ -486,7 +453,7 @@
        /// <param name="ResidenceName"></param>
        /// <param name="info"></param>
        /// <returns></returns>
        private async void EditorResidenceName(string ResidenceName, Common.ResponseEntity.ResidenceObj info, NormalViewControl btnHome)
        private void EditorResidenceName(string ResidenceName, Common.ResponseEntity.ResidenceObj info, NormalViewControl btnHome)
        {
            //检测能否保存住宅
            if (this.CheckIsCanSaveResidence(info.Id, ResidenceName, true) == false)
@@ -496,24 +463,21 @@
            //开启进度条
            this.ShowProgressBar();
            var Pra = new EditorResidencePra();
            Pra.HomeId = info.Id;
            Pra.Name = ResidenceName;
            Pra.IsOtherAccountCtrl = false;
            Pra.LoginAccessToken = Config.Instance.Token;
            var result = HdlResidenceLogic.Current.EditorResidenceName(info.Id, ResidenceName);
            //编辑住宅
            bool flage = await UserCenterLogic.GetResultStatuByRequestHttps("App/EditHome", false, Pra);
            //关闭进度条
            this.CloseProgressBar();
            if (flage == true)
            if (result == true)
            {
                //刷新内存的住宅名
                House.EditorHouseByHouseId(info.Id, ResidenceName);
                //更改显示的名字
                btnHome.Text = ResidenceName;
                info.Name = ResidenceName;
                HdlThreadLogic.Current.RunMain(() =>
                {
                    //刷新内存的住宅名
                    HdlResidenceLogic.Current.EditorHouseByHouseId(info.Id, ResidenceName);
                    //更改显示的名字
                    btnHome.Text = ResidenceName;
                    info.Name = ResidenceName;
                });
            }
        }
@@ -546,7 +510,10 @@
                dialogForm.CloseDialog();
                //保存住宅
                this.AddNewResidence(textValue);
                HdlThreadLogic.Current.RunThread(() =>
                {
                    this.AddNewResidence(textValue);
                });
            });
        }
@@ -555,7 +522,7 @@
        /// </summary>
        /// <param name="ResidenceName"></param>
        /// <returns></returns>
        private async void AddNewResidence(string ResidenceName)
        private void AddNewResidence(string ResidenceName)
        {
            //检测能否保存住宅
            if (this.CheckIsCanSaveResidence(string.Empty, ResidenceName, false) == false)
@@ -568,8 +535,8 @@
            var Pra = new AddResidencePra();
            Pra.Name = ResidenceName;
            //添加住宅
            string resultData = await UserCenterLogic.GetResponseDataByRequestHttps("App/AddHome", false, Pra);
            if (resultData == null)
            string resultData = UserCenterLogic.GetResponseDataByRequestHttps("App/AddHome", false, Pra);
            if (string.IsNullOrEmpty(resultData) == true)
            {
                //关闭进度条
                this.CloseProgressBar();
@@ -578,10 +545,15 @@
            var newInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<List<NewResidenceInfo>>(resultData);
            House.AddHouse(newInfo[0].Id, ResidenceName, 0);
            //重新刷新列表
            this.listView.RemoveAll();
            this.SetResidenceInfo(2);
            HdlResidenceLogic.Current.AddHouseToMemmory(newInfo[0].Id, ResidenceName);
            HdlThreadLogic.Current.RunMain(() =>
            {
                //重新刷新列表
                this.listView.RemoveAll();
                this.SetResidenceInfo(2);
            });
        }
        #endregion
@@ -740,10 +712,6 @@
                {
                    if (Config.Instance.HomeFilePathList.Contains($"House_{keys}.json") == false)
                    {
                        //保存顺序
                        listResidenceSort.Remove(keys);
                        HdlRoomLogic.Current.SaveFloorSort(listResidenceSort);
                        this.listView.RemoveAll();
                        //数据已经变更 重新设置住宅信息
                        this.SetResidenceInfo(2);