using Shared.Common; using System; using System.Collections.Generic; namespace Shared.Phone.UserCenter.HdlBackup { /// /// 备份画面 /// public class HdlManualBackUpForm : EditorCommonForm { #region ■ 变量声明___________________________ /// /// 列表控件 /// private VerticalListControl listView = null; #endregion #region ■ 初始化_____________________________ /// /// 画面显示(底层会固定调用此方法,借以完成画面创建) /// public void ShowForm() { //设置标题信息 base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uBackupAndRecover)); //右上添加按钮 var btnTopIcon = new MostRightIconControl(69, 69); btnTopIcon.UnSelectedImagePath = "Item/Add.png"; topFrameLayout.AddChidren(btnTopIcon); btnTopIcon.InitControl(); btnTopIcon.ButtonClickEvent += (sender, e) => { //显示添加备考名画面 this.ShowAddBackupForm(); }; //初始化中部控件 this.InitMiddleFrame(); } /// /// 初始化中部控件 /// private void InitMiddleFrame() { //清空bodyFrame this.ClearBodyFrame(); listView = new VerticalListControl(29); listView.BackgroundColor = UserCenterColor.Current.White; listView.Height = bodyFrameLayout.Height; bodyFrameLayout.AddChidren(listView); HdlThreadLogic.Current.RunThread(() => { //从云端获取数据 this.SetBackupInfoToForm(); }); } #endregion #region ■ 从云端获取数据_____________________ /// /// 从云端获取数据 /// private async void SetBackupInfoToForm() { //进度条 this.ShowProgressBar(); //从云端获取数据 var pageData = await HdlBackupLogic.Current.GetBackupListNameFromDB(); //关闭 this.CloseProgressBar(); if (pageData == null) { return; } Application.RunOnMainThread(() => { if (this.Parent == null || listView == null) { return; } listView.RemoveAll(); int count = pageData.Count - 1; for (int i = 0; i < pageData.Count; i++) { //添加备份行 this.AddRowlayout(pageData[i], i != count); } }); } #endregion #region ■ 添加备份行_________________________ /// /// 添加备份行 /// /// private void AddRowlayout(BackupListNameInfo fileInfo, bool addLine) { //行 var rowLayout = new RowLayoutControl(listView.rowSpace / 2); listView.AddChidren(rowLayout); //图标 var btnPoint = rowLayout.frameTable.AddLeftIcon(); btnPoint.UnSelectedImagePath = "Center/Backup.png"; //备份名字 var txtText = rowLayout.frameTable.AddLeftCaption(fileInfo.BackupName, 700); if (addLine == true) { //底线 rowLayout.frameTable.AddBottomLine(); } //编辑备注名 rowLayout.frameTable.ButtonClickEvent += (sender, e) => { //显示编辑备考名画面 this.ShowEditorBackupForm(fileInfo); }; //下载图标 var btnLoad = rowLayout.frameTable.AddMostRightEmptyIcon(81, 81); rowLayout.frameTable.ChangedChidrenBindMode(btnLoad, ChidrenBindMode.NotBind); //启用点亮功能 btnLoad.UseClickStatu = true; btnLoad.UnSelectedImagePath = "Item/DownLoad.png"; btnLoad.SelectedImagePath = "Item/DownLoadSelected.png"; btnLoad.ButtonClickEvent += (sender, e) => { //是否要下载并恢复数据? string msg = Language.StringByID(R.MyInternationalizationString.uDownLoadAndRecoverMsg); this.ShowMassage(ShowMsgType.Confirm, msg, () => { //读取备份文档 this.LoadBackupInfo(fileInfo.Id); }); }; //删除 var btnDelete = new NormalViewControl(Application.GetRealWidth(177), rowLayout.Height, false); btnDelete.BackgroundColor = UserCenterColor.Current.RowDeleteButtonColor; btnDelete.TextAlignment = TextAlignment.Center; btnDelete.TextColor = UserCenterColor.Current.White; btnDelete.TextID = R.MyInternationalizationString.uDelete; rowLayout.AddRightView(btnDelete); btnDelete.ButtonClickEvent += (sender, e) => { //确定要删除文件吗? string msg = Language.StringByID(R.MyInternationalizationString.uDoDeleteFileMsg); this.ShowMassage(ShowMsgType.Confirm, msg, () => { //删除备份文档 this.DeleteBackInfo(fileInfo.Id, ShowErrorMode.YES); }); }; } #endregion #region ■ 读取备份文档_______________________ /// /// 读取备份文档 /// /// private void LoadBackupInfo(string BackupClassId) { HdlThreadLogic.Current.RunThread(async () => { //从云端获取备份的文件 bool result = await HdlBackupLogic.Current.LoadAppBackupInfo(BackupClassId); if (result == false) { //文件恢复失败 string msg2 = Language.StringByID(R.MyInternationalizationString.uFileRecoverFail); this.ShowMassage(ShowMsgType.Error, msg2); return; } Application.RunOnMainThread(() => { //关闭所有界面 UserCenterLogic.CloseAllOpenForm(); //切换到主页 UserView.UserPage.Instance.Fresh(); }); //文件恢复成功 string msg = Language.StringByID(R.MyInternationalizationString.uFileRecoverSuccess); this.ShowMassage(ShowMsgType.Normal, msg); }); } #endregion #region ■ 上传数据___________________________ /// /// 上传数据 /// /// private void UpLoadBackInfo(string backName) { HdlThreadLogic.Current.RunThread(async () => { //创建一个备份名字 string backupClassId = await HdlBackupLogic.Current.CreatNewBackupNameToDB(backName); if (backupClassId == null) { //创建备份名字失败 string msg = Language.StringByID(R.MyInternationalizationString.uCreatBackupNameFail); this.ShowMassage(ShowMsgType.Error, msg); return; } //上传数据到云端 bool result = await HdlBackupLogic.Current.UpLoadBackupFileToDB(backupClassId); if (result == false) { //文件上传失败 string msg = Language.StringByID(R.MyInternationalizationString.uFileUpLoadFail); this.ShowMassage(ShowMsgType.Error, msg); //如果上传失败的话,就把它删除 this.DeleteBackInfo(backupClassId, ShowErrorMode.NO); return; } HdlThreadLogic.Current.RunThread(() => { //从云端获取数据 this.SetBackupInfoToForm(); }); }); } #endregion #region ■ 编辑备份名称_______________________ /// /// 编辑备份名称 /// /// /// private async void EditorBackInfo(string BackupClassId, string backName) { //开启进度条 this.ShowProgressBar(); var Pra = new EditorBackUpNamePra(); Pra.BackupClassId = BackupClassId; Pra.BackupName = backName; //获取控制主人账号的Token Pra.LoginAccessToken = UserCenterLogic.GetConnectMainToken(); bool result = await UserCenterLogic.GetResultStatuByRequestHttps("App/UpdateHomeAppGatewayName", true, Pra); if (result == false) { //编辑备份名称失败 string msg = Language.StringByID(R.MyInternationalizationString.uEditorBackupNameFail); this.ShowMassage(ShowMsgType.Error, msg); //关闭 this.CloseProgressBar(); return; } HdlThreadLogic.Current.RunThread(() => { //从云端获取数据 this.SetBackupInfoToForm(); }); } #endregion #region ■ 删除备份文档_______________________ /// /// 删除备份文档 /// /// /// public async void DeleteBackInfo(string BackupClassId, ShowErrorMode showMode = ShowErrorMode.YES) { //进度条 this.ShowProgressBar(); bool success = await HdlBackupLogic.Current.DeleteDbBackupData(BackupClassId); //关闭进度条 this.CloseProgressBar(); if (success == false) { if (showMode == ShowErrorMode.YES) { //删除备份失败 string msg = Language.StringByID(R.MyInternationalizationString.uDeleteBackupFail); this.ShowMassage(ShowMsgType.Error, msg); } return; } HdlThreadLogic.Current.RunThread(() => { //从云端获取数据 this.SetBackupInfoToForm(); }); } #endregion #region ■ 显示编辑备考名画面_________________ /// /// 显示编辑备考名画面 /// /// /// private void ShowEditorBackupForm(BackupListNameInfo fileInfo) { //生成一个弹窗画面 var dialogForm = new DialogInputFrameControl(this, DialogFrameMode.OnlyInput); //编辑备份 dialogForm.SetTitleText(Language.StringByID(R.MyInternationalizationString.uEditorBackup)); //请输入备注名称 dialogForm.SetTipText(Language.StringByID(R.MyInternationalizationString.uPleaseInpuBackup)); dialogForm.Text = fileInfo.BackupName; //按下确认按钮 dialogForm.ComfirmClickEvent += ((textValue) => { //检测备考名称 if (this.CheckBackupName(textValue) == false) { return; } //画面关闭 dialogForm.CloseDialog(); //名字一样时,不处理 if (textValue != fileInfo.BackupName) { //编辑备份名称 this.EditorBackInfo(fileInfo.Id, textValue); } }); } /// /// 显示添加备考名画面 /// /// private void ShowAddBackupForm() { //生成一个弹窗画面 var dialogForm = new DialogInputFrameControl(this, DialogFrameMode.OnlyInput); //添加备份 dialogForm.SetTitleText(Language.StringByID(R.MyInternationalizationString.uAddBackup)); //请输入备注名称 dialogForm.SetTipText(Language.StringByID(R.MyInternationalizationString.uPleaseInpuBackup)); //按下确认按钮 dialogForm.ComfirmClickEvent += ((textValue) => { //检测备考名称 if (this.CheckBackupName(textValue) == false) { return; } //画面关闭 dialogForm.CloseDialog(); //上传备份 this.UpLoadBackInfo(textValue); }); } #endregion #region ■ 一般方法___________________________ /// /// 把本地所有文件移动到自动备份文件夹 /// private void CopyLocationAllFileToAutoBackDirectory() { List listAllFile = Global.FileListByHomeId(); string strroot = UserCenterResourse.LocalRootPath; string autoPath = System.IO.Path.Combine(strroot, DirNameResourse.LocalMemoryDirectory, DirNameResourse.AutoBackupDirectory); foreach (string file in listAllFile) { //判断是否是应该上传的文件 if (HdlBackupLogic.Current.IsNotUpLoadFile(file) == true) { continue; } string sourseName = System.IO.Path.Combine(strroot, file); string newName = System.IO.Path.Combine(autoPath, file); System.IO.File.Copy(sourseName, newName, true); } } /// /// 检测备考名称 /// /// /// private bool CheckBackupName(string backName) { if (backName == string.Empty) { //请输入备注名称 string msg = Language.StringByID(R.MyInternationalizationString.uPleaseInpuBackup); this.ShowMassage(ShowMsgType.Error, msg); return false; } if (backName.Contains("##") == true) { //存在非法字符「##」 string msg = Language.StringByID(R.MyInternationalizationString.uErrorFieldIsEsixt); if (msg.Contains("{0}") == true) { msg = string.Format(msg, "##"); } this.ShowMassage(ShowMsgType.Error, msg); return false; } return true; } #endregion } }