From f71e74b5f0d2716fbf05da016cdaa18d64e09f80 Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期四, 31 十二月 2020 17:01:18 +0800
Subject: [PATCH] 又换完成最新门锁。空气质量传感器完成数据和基本配置功能。开发图表和自动化的同事可下载此代码

---
 ZigbeeApp/Shared/Phone/UserCenter/Residence/ResidenceListMainForm.cs |  918 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 918 insertions(+), 0 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Residence/ResidenceListMainForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Residence/ResidenceListMainForm.cs
new file mode 100755
index 0000000..d37511f
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Residence/ResidenceListMainForm.cs
@@ -0,0 +1,918 @@
+锘縰sing Shared.Common;
+using System;
+using System.Collections.Generic;
+
+namespace Shared.Phone.UserCenter.Residence
+{
+    /// <summary>
+    /// 浣忓畢绠$悊鐨勭敾闈⑩槄
+    /// </summary>
+    public class ResidenceListMainForm : EditorCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 鍒楄〃鎺т欢
+        /// </summary>
+        private VerticalListControl listView = null;
+        /// <summary>
+        /// 浣忓畢鏁版嵁(鏈夌綉鏃朵娇鐢�)
+        /// </summary>
+        private Dictionary<string, Common.ResponseEntity.ResidenceObj> dicResidenceData = null;
+        /// <summary>
+        /// 浣忓畢鏁版嵁(鏃犵綉鏃朵娇鐢�)
+        /// </summary>
+        private List<House> listLocalHouse = null;
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+        /// </summary>
+        public void ShowForm()
+        {
+            //璁剧疆鏍囬淇℃伅
+            base.SetTitleText(Language.StringByID(R.MyInternationalizationString.ResidenceManagement));
+
+            //铏氭嫙浣忓畢鏃犳硶鏂板缓浣忓畢
+            if (Common.Config.Instance.Home.IsVirtually == false)
+            {
+                //鍙充笂娣诲姞鎸夐挳
+                var btnTopIcon = new MostRightIconControl(69, 69);
+                btnTopIcon.UnSelectedImagePath = "Item/Add.png";
+                topFrameLayout.AddChidren(btnTopIcon);
+                btnTopIcon.InitControl();
+                btnTopIcon.ButtonClickEvent += (sender, e) =>
+                {
+                    //鏄剧ず娣诲姞浣忓畢鍚嶇О鐨勭敾闈�
+                    this.ShowAddNameForm();
+                };
+            }
+
+            //鍒濆鍖栦腑閮ㄦ帶浠�
+            this.InitMiddleFrame();
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栦腑閮ㄦ帶浠�
+        /// </summary>
+        private void InitMiddleFrame()
+        {
+            //娓呯┖bodyFrame
+            this.ClearBodyFrame();
+
+            listView = new VerticalListControl(29);
+            listView.Height = bodyFrameLayout.Height + Application.GetRealHeight(6);
+            listView.BackgroundColor = UserCenterColor.Current.White;
+            bodyFrameLayout.AddChidren(listView);
+
+            //璁剧疆浣忓畢淇℃伅
+            this.SetResidenceInfo(1);
+        }
+
+        /// <summary>
+        /// 璁剧疆浣忓畢淇℃伅(1:鍏堣鍙栦簯绔�,鏃犳硶鑱旂綉,鍐嶈鍙栨湰鍦�  2:鍙浜戠  3:鍙鏈湴)
+        /// </summary>
+        /// <param name="div">1:鍏堣鍙栦簯绔�,鏃犳硶鑱旂綉,鍐嶈鍙栨湰鍦�  2:鍙浜戠  3:鍙鏈湴</param>
+        private void SetResidenceInfo(int div)
+        {
+            HdlThreadLogic.Current.RunThread(() =>
+            {
+                //铏氭嫙浣忓畢鐨勮瘽,鍙鏈湴
+                if (div == 3 || Config.Instance.Home.IsVirtually == true)
+                {
+                    //鍙鏈湴
+                    this.SetResidenceInfoByOffline();
+                }
+                else
+                {
+                    //寮�鍚繘搴︽潯
+                    this.ShowProgressBar();
+                    //璁剧疆浣忓畢淇℃伅(鏈夌綉鎯呭喌)
+                    var result = this.SetResidenceInfoByOnline();
+                    if (result == true)
+                    {
+                        //浜戠璇诲彇鎴愬姛
+                        this.CloseProgressBar();
+                        return;
+                    }
+                    if (div == 2)
+                    {
+                        //濡傛灉鍙浜戠 鍏抽棴杩涘害鏉�
+                        this.CloseProgressBar(ShowReLoadMode.YES);
+                        return;
+                    }
+                    //濡傛灉鍦ㄦ病缃戠殑鎯呭喌涓�,浠庢枃浠跺す璺緞涓幏鍙栧叏閮ㄤ綇瀹�,鐒跺悗鏄剧ず
+                    this.SetResidenceInfoByOffline();
+
+                    //鍏抽棴杩涘害鏉�
+                    this.CloseProgressBar();
+                }
+            });
+        }
+
+        #endregion
+
+        #region 鈻� 璁剧疆浣忓畢淇℃伅(鏈夌綉鎯呭喌)_____________
+
+        /// <summary>
+        /// 璁剧疆浣忓畢淇℃伅(鏈夌綉鎯呭喌)
+        /// </summary>
+        private bool SetResidenceInfoByOnline()
+        {
+            //鑾峰彇浣忓畢淇℃伅
+            var Pra = new GetResidenceInfoPra();
+            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 listHouse = HdlResidenceLogic.Current.SortHouse(pageData.PageData);
+
+            HdlThreadLogic.Current.RunMain(() =>
+            {
+                if (this.Parent == null)
+                {
+                    return;
+                }
+                listView.Height = bodyFrameLayout.Height;
+
+                this.dicResidenceData = new Dictionary<string, Common.ResponseEntity.ResidenceObj>();
+                for (int i = 0; i < listHouse.Count; i++)
+                {
+                    var info = listHouse[i];
+
+                    //鏀堕泦璇ヨ处鍙蜂綇瀹呯殑鏁版嵁
+                    this.dicResidenceData[info.Id] = info;
+                    //娣诲姞浣忓畢鐨勮(鏈夌綉鎯呭喌)
+                    this.AddRowLayoutByOnline(info, i != listHouse.Count - 1);
+                }
+                //璋冩暣鍒楄〃鎺т欢鐨勯珮搴�
+                this.listView.AdjustRealHeight(Application.GetRealHeight(23));
+            });
+            return true;
+        }
+
+        /// <summary>
+        /// 娣诲姞浣忓畢鐨勮(鏈夌綉鎯呭喌)
+        /// </summary>
+        /// <param name="info"></param>
+        private void AddRowLayoutByOnline(Common.ResponseEntity.ResidenceObj info, bool addLine)
+        {
+            var rowLayout = new RowLayoutControl(listView.rowSpace / 2);
+            this.listView.AddChidren(rowLayout);
+
+            //鍥炬爣
+            var btnIcon = rowLayout.frameTable.AddLeftIcon(81);
+            btnIcon.UnSelectedImagePath = "Item/ResidenceIcon.png";
+            //褰撳墠浣忓畢
+            NormalViewControl btnHome = null;
+            if (info.Id == Config.Instance.Home.Id)
+            {
+                //浣忓畢鍚嶇О
+                btnHome = rowLayout.frameTable.AddLeftCaption(info.Name, 800, 60, true);
+                btnHome.TextSize = 15;
+                btnHome.Y = Application.GetRealHeight(12) + rowLayout.chidrenYaxis;
+                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.BindEvent);
+            }
+            else
+            {
+                //浣忓畢鍚嶇О
+                btnHome = rowLayout.frameTable.AddLeftCaption(info.Name, 800, true);
+                btnHome.TextSize = 15;
+            }
+            //鍙崇澶�
+            rowLayout.frameTable.AddRightArrow();
+            if (addLine == true)
+            {
+                //搴曠嚎
+                rowLayout.frameTable.AddBottomLine();
+            }
+
+            rowLayout.frameTable.ButtonClickEvent += (sender, e) =>
+            {
+                if (info.Id != Config.Instance.Home.Id)
+                {
+                    //纭鍒囨崲褰撳墠浣忓畢鍒般�屻��?
+                    string msg = Language.StringByID(R.MyInternationalizationString.uSwitchResidenceMsg);
+                    if (msg.Contains("{0}") == true)
+                    {
+                        msg = string.Format(msg, info.Name);
+                    }
+                    this.ShowMassage(ShowMsgType.Confirm, msg, () =>
+                    {
+                        HdlThreadLogic.Current.RunThread(() =>
+                        {
+                            //寮�鍚繘搴︽潯
+                            this.ShowProgressBar();
+
+                            //妫�娴嬫湰鍦版湁娌℃湁杩欎釜浣忓畢
+                            this.CheckIsExsitResidence(info);
+
+                            var result = HdlResidenceLogic.Current.SwitchResidence(info.Id);
+
+                            HdlThreadLogic.Current.RunMain(() =>
+                            {
+                                if (result == true)
+                                {
+                                    //閲嶆柊鍒锋柊鍒楄〃
+                                    this.listView.RemoveAll();
+                                    this.SetResidenceInfo(2);
+                                }
+                                //鍏抽棴杩涘害鏉�
+                                this.CloseProgressBar();
+                            });
+                        });
+                    });
+                }
+                else
+                {
+                    //妫�娴嬭兘鍚﹀垹闄や綇瀹�
+                    bool flage = this.CheckIsCanDeleteResidence(info);
+                    var form = new ResidenceManagementForm();
+                    form.AddForm(flage);
+                }
+            };
+
+            if (info.IsOthreShare == true)
+            {
+                //鍒嗕韩鐨�,涓嶈兘鏇存敼
+                return;
+            }
+            //鍙湁鍒囨崲鍒板綋鍓嶄綇瀹�,骞朵笖鏈湴鎷ユ湁缃戝叧鐨勬椂鍊�,鎵嶈兘杩囨埛
+            if (info.Id == Config.Instance.Home.Id && HdlGatewayLogic.Current.GetAllLocalGateway().Count > 0)
+            {
+                //杩囨埛
+                var btnTransfer = rowLayout.AddDeleteControl();
+                btnTransfer.TextID = R.MyInternationalizationString.uTransfer;
+                btnTransfer.ButtonClickEvent += (sender, e) =>
+                {
+                    rowLayout.HideMenu();
+                    HdlCheckLogic.Current.CheckSecondarySecurity(() =>
+                    {
+                        //鎵ц杩囨埛鎿嶄綔
+                        this.DoTransferResidence();
+                    },
+                    () =>
+                    {
+                        //璇峰墠寰�涓汉涓績{0}璁剧疆浜屾瀹夊叏楠岃瘉鏂瑰紡
+                        string msg = Language.StringByID(R.MyInternationalizationString.uGotoCenterAndSetSecondAuthentication).Replace("{0}", "\r\n");
+                        this.ShowMassage(ShowMsgType.Confirm, msg, () =>
+                        {
+                            var form = new UserMain.SecondAuthenticationForm();
+                            form.AddForm();
+                        });
+                    });
+                };
+            }
+            //鏇存敼
+            var btnChanged = rowLayout.AddEditorControl();
+            btnChanged.TextID = R.MyInternationalizationString.uChanged1;
+            btnChanged.ButtonClickEvent += (sender, e) =>
+            {
+                //鏄剧ず缂栬緫鍚嶇О鐣岄潰
+                this.ShowEditorNameForm(info, null, btnHome);
+            };
+        }
+
+        #endregion
+
+        #region 鈻� 璁剧疆浣忓畢淇℃伅(鏃犵綉鎯呭喌)_____________
+
+        /// <summary>
+        /// 璁剧疆浣忓畢淇℃伅(鏃犵綉鎯呭喌)
+        /// </summary>
+        private void SetResidenceInfoByOffline()
+        {
+            //浠庢枃浠跺す涓幏鍙栧叏閮ㄧ殑浣忓畢瀵硅薄
+            this.listLocalHouse = HdlResidenceLogic.Current.GetAllLocalResidenceListByDirectory();
+            if (listLocalHouse.Count == 0)
+            {
+                return;
+            }
+
+            HdlThreadLogic.Current.RunMain(() =>
+            {
+                listView.Height = bodyFrameLayout.Height;
+
+                for (int i = 0; i < listLocalHouse.Count; i++)
+                {
+                    //娣诲姞浣忓畢鐨勮(鏃犵綉鎯呭喌)
+                    this.AddRowLayoutByOffline(listLocalHouse[i], i != listLocalHouse.Count - 1);
+                }
+                //璋冩暣鍒楄〃鎺т欢鐨勯珮搴�
+                this.listView.AdjustRealHeight(Application.GetRealHeight(23));
+            });
+        }
+
+        /// <summary>
+        /// 娣诲姞浣忓畢鐨勮(鏃犵綉鎯呭喌)
+        /// </summary>
+        /// <param name="i_home"></param>
+        private void AddRowLayoutByOffline(House i_home, bool addLine)
+        {
+            var rowLayout = new RowLayoutControl(listView.rowSpace / 2);
+            this.listView.AddChidren(rowLayout);
+
+            //鍥炬爣
+            var btnIcon = rowLayout.frameTable.AddLeftIcon(81);
+            btnIcon.UnSelectedImagePath = "Item/ResidenceIcon.png";
+            //褰撳墠浣忓畢
+            NormalViewControl btnHome = null;
+            if (i_home.Id == Config.Instance.Home.Id)
+            {
+                //浣忓畢鍚嶇О
+                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.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.BindEvent);
+            }
+            else
+            {
+                //浣忓畢鍚嶇О
+                btnHome = rowLayout.frameTable.AddLeftCaption(i_home.Name, 800, true);
+                btnHome.TextSize = 15;
+            }
+            //鍙崇澶�
+            rowLayout.frameTable.AddRightArrow();
+            if (addLine == true)
+            {
+                //搴曠嚎
+                rowLayout.frameTable.AddBottomLine();
+            }
+
+            rowLayout.frameTable.ButtonClickEvent += (sender, e) =>
+            {
+                if (i_home.Id != Config.Instance.Home.Id)
+                {
+                    //纭鍒囨崲褰撳墠浣忓畢鍒般�屻��?
+                    string msg = Language.StringByID(R.MyInternationalizationString.uSwitchResidenceMsg);
+                    if (msg.Contains("{0}") == true)
+                    {
+                        msg = string.Format(msg, i_home.Name);
+                    }
+                    this.ShowMassage(ShowMsgType.Confirm, msg, () =>
+                    {
+                        HdlThreadLogic.Current.RunThread(() =>
+                        {
+                            var result = HdlResidenceLogic.Current.SwitchResidence(i_home.Id);
+
+                            HdlThreadLogic.Current.RunMain(() =>
+                            {
+                                if (result == true)
+                                {
+                                    //閲嶆柊鍒锋柊鍒楄〃
+                                    this.listView.RemoveAll();
+                                    this.SetResidenceInfo(3);
+                                }
+                                //鍏抽棴杩涘害鏉�
+                                this.CloseProgressBar();
+                            });
+                        });
+                    });
+                }
+                else
+                {
+                    //妫�娴嬭兘鍚﹀垹闄や綇瀹�
+                    bool flage = this.CheckIsCanDeleteResidence(i_home);
+                    var form = new ResidenceManagementForm();
+                    form.AddForm(flage);
+                }
+            };
+            ////鏇存敼
+            //var btnChanged = rowLayout.AddEditorControl();
+            //btnChanged.TextID = R.MyInternationalizationString.uChanged1;
+            //btnChanged.ButtonClickEvent += (sender, e) =>
+            //{
+            //    //鏄剧ず缂栬緫鍚嶇О鐣岄潰
+            //    this.ShowEditorNameForm(null, i_home, btnHome);
+            //};
+        }
+
+        #endregion
+
+        #region 鈻� 缂栬緫浣忓畢鍚嶇О_______________________
+
+        /// <summary>
+        /// 鏄剧ず缂栬緫浣忓畢鍚嶇О鐣岄潰
+        /// </summary>
+        /// <param name="info">鏈夌綉鏃朵娇鐢�</param>
+        /// <param name="i_house">鏃犵綉鏃堕�傜敤</param>
+        private void ShowEditorNameForm(Common.ResponseEntity.ResidenceObj info, House i_house, NormalViewControl btnHome)
+        {
+            string oldName = info != null ? info.Name : i_house.Name;
+            //鐢熸垚涓�涓脊绐楃敾闈�
+            var dialogForm = new DialogInputControl();
+            //缂栬緫浣忓畢
+            dialogForm.SetTitleText(Language.StringByID(R.MyInternationalizationString.uChangedName));
+            //璇疯緭鍏ヤ綇瀹呭悕绉�
+            dialogForm.SetTipText(Language.StringByID(R.MyInternationalizationString.uPleaseInputResidenceName));
+            dialogForm.Text = oldName;
+
+            //鎸変笅纭鎸夐挳
+            dialogForm.ComfirmClickEvent += ((textValue) =>
+            {
+                if (textValue == string.Empty)
+                {
+                    //璇疯緭鍏ヤ綇瀹呭悕绉�
+                    string msg = Language.StringByID(R.MyInternationalizationString.uPleaseInputResidenceName);
+                    this.ShowMassage(ShowMsgType.Error, msg);
+                    return;
+                }
+                //鐢婚潰鍏抽棴
+                dialogForm.CloseDialog();
+                if (oldName != textValue)
+                {
+                    if (info != null)
+                    {
+                        //缂栬緫浜戠鐨勪綇瀹呭悕绉�
+                        HdlThreadLogic.Current.RunThread(() =>
+                        {
+                            this.EditorResidenceName(textValue, info, btnHome);
+                        });
+                    }
+                    else
+                    {
+                        //鐩存帴缂栬緫浣忓畢缂撳瓨
+                        if (this.CheckIsCanSaveResidence(i_house.Id, textValue, true) == false)
+                        {
+                            return;
+                        }
+                        //鍒锋柊鍐呭瓨鐨勪綇瀹呭悕
+                        HdlResidenceLogic.Current.EditorHouseByHouseId(i_house.Id, textValue);
+                        //鏇存敼鏄剧ず鐨勫悕瀛�
+                        btnHome.Text = textValue;
+                    }
+                }
+            });
+        }
+
+        /// <summary>
+        /// 缂栬緫浜戠鐨勪綇瀹呭悕绉�
+        /// </summary>
+        /// <param name="ResidenceName"></param>
+        /// <param name="info"></param>
+        /// <returns></returns>
+        private void EditorResidenceName(string ResidenceName, Common.ResponseEntity.ResidenceObj info, NormalViewControl btnHome)
+        {
+            //妫�娴嬭兘鍚︿繚瀛樹綇瀹�
+            if (this.CheckIsCanSaveResidence(info.Id, ResidenceName, true) == false)
+            {
+                return;
+            }
+            //寮�鍚繘搴︽潯
+            this.ShowProgressBar();
+
+            var result = HdlResidenceLogic.Current.EditorResidenceName(info.Id, ResidenceName);
+
+            //鍏抽棴杩涘害鏉�
+            this.CloseProgressBar();
+
+            if (result == true)
+            {
+                HdlThreadLogic.Current.RunMain(() =>
+                {
+                    //鍒锋柊鍐呭瓨鐨勪綇瀹呭悕
+                    HdlResidenceLogic.Current.EditorHouseByHouseId(info.Id, ResidenceName);
+                    //鏇存敼鏄剧ず鐨勫悕瀛�
+                    btnHome.Text = ResidenceName;
+                    info.Name = ResidenceName;
+                });
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 娣诲姞浣忓畢鍚嶇О_______________________
+
+        /// <summary>
+        /// 鏄剧ず娣诲姞浣忓畢鍚嶇О鐨勭敾闈�
+        /// </summary>
+        private void ShowAddNameForm()
+        {
+            //鐢熸垚涓�涓脊绐楃敾闈�
+            var dialogForm = new DialogInputControl();
+            //鍒涘缓浣忓畢
+            dialogForm.SetTitleText(Language.StringByID(R.MyInternationalizationString.uCreatResidence));
+            //璇疯緭鍏ヤ綇瀹呭悕绉�
+            dialogForm.SetTipText(Language.StringByID(R.MyInternationalizationString.uPleaseInputResidenceName));
+            //鎸変笅纭鎸夐挳
+            dialogForm.ComfirmClickEvent += ((textValue) =>
+            {
+                if (textValue == string.Empty)
+                {
+                    //璇疯緭鍏ヤ綇瀹呭悕绉�
+                    string msg = Language.StringByID(R.MyInternationalizationString.uPleaseInputResidenceName);
+                    this.ShowMassage(ShowMsgType.Error, msg);
+                    return;
+                }
+                //鐢婚潰鍏抽棴
+                dialogForm.CloseDialog();
+
+                //淇濆瓨浣忓畢
+                HdlThreadLogic.Current.RunThread(() =>
+                {
+                    this.AddNewResidence(textValue);
+                });
+            });
+        }
+
+        /// <summary>
+        /// 鍚戜簯绔坊鍔犳柊鐨勪綇瀹�
+        /// </summary>
+        /// <param name="ResidenceName"></param>
+        /// <returns></returns>
+        private void AddNewResidence(string ResidenceName)
+        {
+            //妫�娴嬭兘鍚︿繚瀛樹綇瀹�
+            if (this.CheckIsCanSaveResidence(string.Empty, ResidenceName, false) == false)
+            {
+                return;
+            }
+            //寮�鍚繘搴︽潯
+            this.ShowProgressBar();
+
+            var Pra = new AddResidencePra();
+            Pra.Name = ResidenceName;
+            //娣诲姞浣忓畢
+            string resultData = UserCenterLogic.GetResponseDataByRequestHttps("App/AddHome", false, Pra);
+            if (string.IsNullOrEmpty(resultData) == true)
+            {
+                //鍏抽棴杩涘害鏉�
+                this.CloseProgressBar();
+                return;
+            }
+
+            var newInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<List<NewResidenceInfo>>(resultData);
+
+            HdlResidenceLogic.Current.AddHouseToMemmory(newInfo[0].Id, ResidenceName);
+
+            HdlThreadLogic.Current.RunMain(() =>
+            {
+                //閲嶆柊鍒锋柊鍒楄〃
+                this.listView.RemoveAll();
+                this.SetResidenceInfo(2);
+            });
+
+        }
+
+        #endregion
+
+        #region 鈻� 杩囨埛_______________________________
+
+        /// <summary>
+        /// 鎵ц杩囨埛鎿嶄綔
+        /// </summary>
+        private void DoTransferResidence()
+        {
+            this.ShowProgressBar();
+            HdlThreadLogic.Current.RunThread(() =>
+            {
+                //缁戝畾杩樻病鏈夋垚鍔熺殑缃戝叧
+                var result2 = HdlGatewayLogic.Current.ResetComandToBindBackupGateway();
+                if (result2 == false)
+                {
+                    //涓存椂杩欎箞鍐�,鏂颁簯绔氨浼氬啓鍒癛鏂囦欢浜�
+                    this.ShowMassage(ShowMsgType.Tip, "缁戝畾缃戝叧澶辫触,璇烽噸鏂版搷浣�");
+                    this.CloseProgressBar();
+                    return;
+                }
+                //妫�娴嬪畠鏈夋病鏈夊浠�
+                var listBack = HdlBackupLogic.Current.GetBackupListNameFromDB();
+                this.CloseProgressBar();
+
+                if (listBack == null)
+                {
+                    return;
+                }
+                HdlThreadLogic.Current.RunMain(() =>
+                {
+                    if (listBack.Count > 0)
+                    {
+                        var form = new Transfer.TransferResidenceMainForm();
+                        form.AddForm(1);
+                    }
+                    else
+                    {
+                        //妫�娴嬪埌杩樻病鏈夊浠�,璇峰厛澶囦唤
+                        this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.uIsNotHadBackupByCheckPleaseBackup));
+
+                        //鐢熸垚涓�涓脊绐楃敾闈�
+                        this.ShowDialogInputForm(Language.StringByID(R.MyInternationalizationString.uAddBackup),
+                         Config.Instance.Home.Name,
+                         Language.StringByID(R.MyInternationalizationString.uPleaseInpuBackupName), (dialogForm, textValue) =>
+                         {
+                             //鐢婚潰鍏抽棴
+                             dialogForm.CloseDialog();
+
+                             HdlThreadLogic.Current.RunThread(() =>
+                             {
+                                 //鍒涘缓涓�涓浠藉悕瀛�
+                                 string backupClassId = HdlBackupLogic.Current.CreatNewBackupNameToDB(textValue);
+                                 if (backupClassId == null)
+                                 {
+                                     //鍒涘缓澶囦唤鍚嶅瓧澶辫触
+                                     string msg = Language.StringByID(R.MyInternationalizationString.uCreatBackupNameFail);
+                                     this.ShowMassage(ShowMsgType.Error, msg);
+
+                                     return;
+                                 }
+
+                                 //涓婁紶鏁版嵁鍒颁簯绔�
+                                 bool result = HdlBackupLogic.Current.UpLoadBackupFileToDB(backupClassId);
+                                 if (result == false)
+                                 {
+                                     //鏂囦欢涓婁紶澶辫触
+                                     string msg = Language.StringByID(R.MyInternationalizationString.uFileUpLoadFail);
+                                     this.ShowMassage(ShowMsgType.Error, msg);
+
+                                     //濡傛灉涓婁紶澶辫触鐨勮瘽锛屽氨鎶婂畠鍒犻櫎
+                                     HdlBackupLogic.Current.DeleteDbBackupData(backupClassId);
+
+                                     return;
+                                 }
+
+                                 HdlThreadLogic.Current.RunMain(() =>
+                                 {
+                                     var form = new Transfer.TransferResidenceMainForm();
+                                     form.AddForm(1);
+                                 });
+                             });
+                         });
+                    }
+                });
+            });
+        }
+
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        /// <summary>
+        /// 妫�娴嬫湰鍦版湁娌℃湁杩欎釜浣忓畢
+        /// </summary>
+        /// <param name="info"></param>
+        private void CheckIsExsitResidence(Common.ResponseEntity.ResidenceObj info)
+        {
+            var path = System.IO.Path.Combine(Shared.IO.FileUtils.RootPath, Config.Instance.Guid, info.Id);
+            bool isExsit = System.IO.Directory.Exists(path);
+            if (isExsit == true) { return; }
+            //鍒涘缓鏂囦欢澶�
+            Global.CreateHomeDirectory(info.Id);
+            //鍒涘缓鏂扮殑浣忓畢
+            var house = new House();
+            house.Id = info.Id;
+            house.Name = info.Name;
+            house.IsOthreShare = info.IsOthreShare;
+            house.AccountType = info.AccountType;
+            house.MainUserDistributedMark = info.MainUserDistributedMark;
+            house.Longitude = info.Longitude;
+            house.Latitude = info.Latitude;
+            house.Save(false);
+
+            string fileName = house.FileName;
+            if (Config.Instance.HomeFilePathList.Contains(fileName) == false)
+            {
+                //娣诲姞鍒楄〃
+                Config.Instance.HomeFilePathList.Add(fileName);
+            }
+        }
+
+        /// <summary>
+        /// 妫�娴嬭兘鍚﹀垹闄や綇瀹�(鏈夌綉浣跨敤)
+        /// </summary>
+        /// <param name="info"></param>
+        /// <returns></returns>
+        private bool CheckIsCanDeleteResidence(Common.ResponseEntity.ResidenceObj info)
+        {
+            if (info.IsOthreShare == false)
+            {
+                int myCount = 0;
+                foreach (var data in this.dicResidenceData.Values)
+                {
+                    if (data.IsOthreShare == false)
+                    {
+                        myCount++;
+                    }
+                }
+                //濡傛灉姝よ处鍙蜂笅鍙墿涓嬪敮涓�涓�涓嚜宸辩殑浣忓畢锛屽垯涓嶈兘鍐嶅垹闄�
+                if (myCount == 1)
+                {
+                    return false;
+                }
+            }
+            return true;
+        }
+
+        /// <summary>
+        /// 妫�娴嬭兘鍚﹀垹闄や綇瀹�(鏃犵綉浣跨敤)
+        /// </summary>
+        /// <param name="info"></param>
+        /// <returns></returns>
+        private bool CheckIsCanDeleteResidence(House i_house)
+        {
+            if (i_house.IsVirtually == false)
+            {
+                //闈炶櫄鎷熶綇瀹呴兘涓嶅厑璁稿垹闄�,鍙湁鍦ㄨ兘鑱旂綉鐨勬椂鍊�,鎵嶈兘鍒犻櫎
+                return false;
+            }
+
+            int myCount = 0;
+            foreach (var data in this.listLocalHouse)
+            {
+                if (data.IsVirtually == true)
+                {
+                    myCount++;
+                }
+            }
+            //濡傛灉姝よ处鍙蜂笅鍙墿涓嬪敮涓�涓�涓櫄鎷熺殑浣忓畢锛屽垯涓嶈兘鍐嶅垹闄�
+            if (myCount == 1)
+            {
+                return false;
+            }
+
+            return true;
+        }
+
+        /// <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)
+        {
+            if (this.dicResidenceData != null)
+            {
+                //浣忓畢鍚嶅瓧閲嶅妫�娴�
+                foreach (string strId in this.dicResidenceData.Keys)
+                {
+                    if (this.dicResidenceData[strId].IsOthreShare == true)
+                    {
+                        //鍒嗕韩鐨勪綇瀹呬笉鑰冭檻
+                        continue;
+                    }
+                    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.ShowMassage(ShowMsgType.Error, msg);
+                        return false;
+                    }
+                }
+            }
+            else
+            {
+                foreach (var myHouse in this.listLocalHouse)
+                {
+                    if (myHouse.IsOthreShare == true)
+                    {
+                        //鍒嗕韩鐨勪綇瀹呬笉鑰冭檻
+                        continue;
+                    }
+                    if (residenceId != myHouse.Id && residenceName == myHouse.Name)
+                    {
+                        //浣忓畢鍚嶅瓧宸茬粡瀛樺湪
+                        int msgId = isEditor == true ? R.MyInternationalizationString.EditZigbeeHome_Exist : R.MyInternationalizationString.AddZigbeeHome_Exist;
+                        string msg = Language.StringByID(msgId);
+                        this.ShowMassage(ShowMsgType.Error, msg);
+                        return false;
+                    }
+                }
+            }
+            return true;
+        }
+
+        #endregion
+
+        #region 鈻� 鐣岄潰閲嶆柊婵�娲讳簨浠禵__________________
+
+        /// <summary>
+        /// 鑷韩鐨勪笂灞傜晫闈㈠叧闂悗,瀹冭嚜韬浜庢渶涓婂眰鏃�,瑙﹀彂鐨勪簨浠�
+        /// </summary>
+        public override int FormActionAgainEvent()
+        {
+            if (dicResidenceData != null)
+            {
+                foreach (string keys in dicResidenceData.Keys)
+                {
+                    if (Config.Instance.HomeFilePathList.Contains($"House_{keys}.json") == false)
+                    {
+                        this.listView.RemoveAll();
+                        //鏁版嵁宸茬粡鍙樻洿 閲嶆柊璁剧疆浣忓畢淇℃伅
+                        this.SetResidenceInfo(2);
+                        break;
+                    }
+                }
+            }
+            else
+            {
+                //妫�娴嬭繕鏈夎繖涓綇瀹呮枃浠跺悧
+                var strPath = System.IO.Path.Combine(Shared.IO.FileUtils.RootPath, Common.Config.Instance.Guid);
+                foreach (var myHouse in this.listLocalHouse)
+                {
+                    string fullName = System.IO.Path.Combine(strPath, myHouse.FileName);
+                    //濡傛灉涓嶅瓨鍦ㄤ簡鐨勮瘽
+                    if (System.IO.File.Exists(fullName) == false)
+                    {
+                        //鏁版嵁宸茬粡鍙樻洿 閲嶆柊璁剧疆浣忓畢淇℃伅
+                        this.listView.RemoveAll();
+                        this.SetResidenceInfo(3);
+                        return 1;
+                    }
+                }
+            }
+            return 1;
+        }
+
+        #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 = 5000
+            };
+        }
+
+        /// <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;
+        }
+
+        #endregion
+    }
+}

--
Gitblit v1.8.0