黄学彪
2020-12-17 9f326f4000847e6167d8166fa2f6a66f53cb3734
ZigbeeApp/Shared/Phone/UserCenter/Gateway/Manage/GatewayBackUpListForm.cs
@@ -85,14 +85,26 @@
        /// <summary>
        /// 从云端获取数据
        /// </summary>
        private async void SetBackupInfoToForm()
        private void SetBackupInfoToForm()
        {
            this.nowSelectBackId = string.Empty;
            this.nowbtnSelect = null;
            //进度条
            this.ShowProgressBar();
            //从云端获取数据
            var pageData = await HdlBackupLogic.Current.GetBackupListNameFromDB(2, HdlGatewayLogic.Current.GetGatewayId(realGateway));
            if (pageData == null)
            //获取自动备份的数据
            var listAutoData = HdlGatewayBackupLogic.Current.GetGatewayBackupListFromDb(realGateway.GwId, BackUpMode.A自动备份);
            if (listAutoData == null)
            {
                //关闭进度条
                this.CloseProgressBar(ShowReLoadMode.YES);
                return;
            }
            //从云端获取手动备份数据
            var listHandData = HdlGatewayBackupLogic.Current.GetGatewayBackupListFromDb(realGateway.GwId, BackUpMode.A手动备份);
            if (listHandData == null)
            {
                //关闭进度条
                this.CloseProgressBar(ShowReLoadMode.YES);
@@ -105,14 +117,20 @@
            {
                listView.RemoveAll();
                listView.RecoverHeight();
                for (int i = 0; i < pageData.Count; i++)
                if (listAutoData.Count > 0)
                {
                    //添加自动备份行
                    this.AddRowlayout(listAutoData[0], listAutoData.Count > 0, true);
                }
                for (int i = 0; i < listHandData.Count; i++)
                {
                    //添加备份行
                    this.AddRowlayout(pageData[i], i != pageData.Count - 1);
                    this.AddRowlayout(listHandData[i], i != listHandData.Count - 1, false);
                }
                this.btnDownload?.RemoveFromParent();
                if (pageData.Count > 0)
                if (listAutoData.Count > 0 || listHandData.Count > 0)
                {
                    //下载
                    this.btnDownload = new BottomClickButton();
@@ -128,13 +146,24 @@
                        string msg = Language.StringByID(R.MyInternationalizationString.uDownLoadAndRecoverMsg);
                        this.ShowMassage(ShowMsgType.Confirm, msg, () =>
                         {
                             this.LoadBackupInfo(this.nowSelectBackId);
                             HdlThreadLogic.Current.RunThread(() =>
                             {
                                 //读取备份文档
                                 bool result = HdlGatewayBackupLogic.Current.RecoverGateway(this.realGateway.GwId, this.nowSelectBackId);
                                 if (result == true)
                                 {
                                     HdlThreadLogic.Current.RunMain(() =>
                                     {
                                         //关闭这个界面
                                         this.CloseForm();
                                     });
                                 }
                             });
                         });
                    };
                    //调整真实高度
                    listView.AdjustRealHeightByBottomButton(Application.GetRealHeight(23));
                }
            });
        }
@@ -147,25 +176,24 @@
        /// </summary>
        /// <param name="fileInfo"></param>
        /// <param name="addLine"></param>
        private void AddRowlayout(BackupListNameInfo fileInfo, bool addLine)
        /// <param name="isAuto"></param>
        private void AddRowlayout(BackupListNameInfo fileInfo, bool addLine, bool isAuto)
        {
            var rowLayout = new RowLayoutControl(listView.rowSpace / 2);
            listView.AddChidren(rowLayout);
            //备份名字
            var txtText = rowLayout.frameTable.AddLeftCaption(fileInfo.BackupName, 700, 60);
            txtText.TextSize = 15;
            txtText.Y = Application.GetRealHeight(12) + rowLayout.chidrenYaxis;
            rowLayout.frameTable.AddChidren(txtText, ChidrenBindMode.BindEventOnly);
            //时间 2019-11-11T11:31:01
            var btnTime = rowLayout.frameTable.AddLeftCaption("", 600, 50, true);
            btnTime.Y = Application.GetRealHeight(72) + rowLayout.chidrenYaxis;
            btnTime.TextSize = 12;
            btnTime.TextColor = UserCenterColor.Current.TextGrayColor1;
            rowLayout.frameTable.AddChidren(btnTime, ChidrenBindMode.BindEventOnly);
            if (fileInfo.CreatedOnUtc.Length >= 19)
            var txtText = rowLayout.frameTable.AddTopView(fileInfo.FolderName, 700);
            if (isAuto == true)
            {
                btnTime.Text = fileInfo.CreatedOnUtc.Replace("-", ".").Replace("T", " ");
                txtText.TextID = R.MyInternationalizationString.uAutoBackup;
            }
            //时间
            var btnTime = rowLayout.frameTable.AddBottomView("", 600);
            if (fileInfo.ModifyTime.Length == 13)
            {
                btnTime.Text = HdlCommonLogic.Current.ConvertUtcTimeToLocalTime2(fileInfo.ModifyTime).ToString("yyyy.MM.dd HH:mm:ss");
            }
            //底线
            if (addLine == true)
@@ -196,66 +224,30 @@
                }
            };
            //编辑
            var btnEditor = rowLayout.AddEditorControl();
            btnEditor.ButtonClickEvent += (sender, e) =>
            //自动备份不允许编辑
            if (isAuto == false)
            {
                //显示编辑备考名画面
                this.ShowEditorBackupForm(fileInfo);
            };
            //删除
            var btnDelete = rowLayout.AddDeleteControl();
            btnDelete.ButtonClickEvent += (sender, e) =>
            {
                //确认删除该备份数据?
                string msg = Language.StringByID(R.MyInternationalizationString.uDoDeleteBackupMsg);
                this.ShowMassage(ShowMsgType.Confirm, msg, () =>
                //编辑
                var btnEditor = rowLayout.AddEditorControl();
                btnEditor.ButtonClickEvent += (sender, e) =>
                {
                    //删除备份文档
                    this.DeleteBackInfo(fileInfo.Id);
                });
            };
        }
                    //显示编辑备考名画面
                    this.ShowEditorBackupForm(fileInfo);
                };
        #endregion
        #region ■ 读取备份文档_______________________
        /// <summary>
        /// 读取备份文档
        /// </summary>
        /// <param name="BackupClassId"></param>
        private void LoadBackupInfo(string BackupClassId)
        {
            HdlThreadLogic.Current.RunThread(async () =>
            {
                //获取网关上面存在的全部文件
                var listFile = await this.GetGatewayFileFromGateway();
                if (listFile == null)
                //删除
                var btnDelete = rowLayout.AddDeleteControl();
                btnDelete.ButtonClickEvent += (sender, e) =>
                {
                    return;
                }
                //从云端获取备份的文件
                bool result = await HdlBackupLogic.Current.LoadGatewayBackupInfo(BackupClassId, realGateway, listFile);
                if (result == false)
                {
                    //网关恢复失败
                    string msg2 = Language.StringByID(R.MyInternationalizationString.uGatewayFileRecoverFail);
                    this.ShowMassage(ShowMsgType.Error, msg2);
                    return;
                }
                HdlThreadLogic.Current.RunMain(() =>
                {
                    //关闭自身
                    this.CloseForm();
                });
                //网关恢复成功
                string msg = Language.StringByID(R.MyInternationalizationString.uGatewayFileRecoverSuccess);
                this.ShowMassage(ShowMsgType.Normal, msg);
            });
                    //确认删除该备份数据?
                    string msg = Language.StringByID(R.MyInternationalizationString.uDoDeleteBackupMsg);
                    this.ShowMassage(ShowMsgType.Confirm, msg, () =>
                    {
                        //删除备份文档
                        this.DeleteBackInfo(fileInfo.Id);
                    });
                };
            }
        }
        #endregion
@@ -265,23 +257,21 @@
        /// <summary>
        /// 编辑备份名称
        /// </summary>
        /// <param name="BackupClassId"></param>
        /// <param name="backupClassId"></param>
        /// <param name="backName"></param>
        private async void EditorBackInfo(string BackupClassId, string backName)
        private void EditorBackInfo(string backupClassId, string backName)
        {
            var Pra = new EditorBackUpNamePra();
            Pra.BackupClassId = BackupClassId;
            Pra.BackupName = backName;
            //获取控制主人账号的Token
            Pra.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
            bool result = await UserCenterLogic.GetResultStatuByRequestHttps("App/UpdateHomeAppGatewayName", true, Pra);
            var result = HdlGatewayBackupLogic.Current.EditorGatewayBackupName(backupClassId, backName);
            if (result == false)
            {
                return;
            }
            this.SetBackupInfoToForm();
            HdlThreadLogic.Current.RunThread(() =>
            {
                //从云端获取数据
                this.SetBackupInfoToForm();
            });
        }
        #endregion
@@ -291,20 +281,24 @@
        /// <summary>
        /// 删除备份文档
        /// </summary>
        /// <param name="BackupClassId"></param>
        private async void DeleteBackInfo(string BackupClassId)
        /// <param name="backupClassId"></param>
        private void DeleteBackInfo(string backupClassId)
        {
            bool success = await HdlBackupLogic.Current.DeleteDbBackupData(BackupClassId);
            bool success = HdlGatewayBackupLogic.Current.DeleteGatewayBackup(this.realGateway.GwId, backupClassId);
            if (success == false)
            {
                return;
            }
            if (this.nowSelectBackId == BackupClassId)
            if (this.nowSelectBackId == backupClassId)
            {
                this.nowSelectBackId = string.Empty;
                this.nowbtnSelect = null;
            }
            this.SetBackupInfoToForm();
            HdlThreadLogic.Current.RunThread(() =>
            {
                //从云端获取数据
                this.SetBackupInfoToForm();
            });
        }
        #endregion
@@ -319,66 +313,19 @@
        private void ShowEditorBackupForm(BackupListNameInfo fileInfo)
        {
            //生成一个弹窗画面
            var dialogForm = new DialogInputForm();
            dialogForm.AddForm(DialogFrameMode.OnlyInput);
            //编辑备份
            dialogForm.SetTitleText(Language.StringByID(R.MyInternationalizationString.uEditorBackup));
            //请输入备注名称
            dialogForm.SetTipText(Language.StringByID(R.MyInternationalizationString.uPleaseInpuBackup));
            dialogForm.Text = fileInfo.BackupName;
            //按下确认按钮
            dialogForm.ComfirmClickEvent += ((txtvalue) =>
            this.ShowDialogInputForm(Language.StringByID(R.MyInternationalizationString.uEditorBackup), fileInfo.FolderName,
                Language.StringByID(R.MyInternationalizationString.uPleaseInpuBackupName), (contr, txtvalue) =>
            {
                //画面关闭
                dialogForm.CloseForm();
                contr.CloseDialog();
                //名字一样时,不处理
                if (txtvalue != fileInfo.BackupName)
                if (txtvalue != fileInfo.FolderName)
                {
                    //编辑备份名称
                    this.EditorBackInfo(fileInfo.Id, txtvalue);
                }
            });
        }
        #endregion
        #region ■ 获取网关文件_______________________
        /// <summary>
        /// 从网关获取它的文件
        /// </summary>
        /// <returns></returns>
        private async System.Threading.Tasks.Task<List<string>> GetGatewayFileFromGateway()
        {
            var fileData = await realGateway.FileTransferLsDirAsync();
            //检测网关返回的共通错误状态码
            string error = HdlCheckLogic.Current.CheckCommonErrorCode(fileData);
            if (error != null)
            {
                this.ShowMassage(ShowMsgType.Error, error);
                return null;
            }
            if (fileData == null || fileData.fileTransferLsDiResponseData == null || fileData.fileTransferLsDiResponseData.Result != 0)
            {
                //获取网关文件失败
                string msg = Language.StringByID(R.MyInternationalizationString.uGetGatewayFileFail);
                this.ShowMassage(ShowMsgType.Error, msg);
                return null;
            }
            var listFile = new List<string>();
            foreach (var filedata in fileData.fileTransferLsDiResponseData.Dir)
            {
                listFile.Add(filedata.File);
            }
            return listFile;
        }
        #endregion
        #region ■ 一般方法___________________________
        #endregion
    }