using System; using System.Collections.Generic; using System.Text; namespace Shared.Phone.UserCenter.HdlBackup { /// /// 备份列表界面 /// public class HdlBackupListForm : EditorCommonForm { #region ■ 变量声明___________________________ /// /// 列表控件 /// private VerticalListControl listView = null; #endregion #region ■ 初始化_____________________________ /// /// 画面显示(底层会固定调用此方法,借以完成画面创建) /// public void ShowForm() { //设置标题信息 base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uDataBackup)); //右上添加按钮 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 void SetBackupInfoToForm() { //进度条 this.ShowProgressBar(); //获取app的自动备份 var autoData = HdlBackupLogic.Current.GetBackupListNameFromDB(1); if (autoData == null) { //关闭进度条 this.CloseProgressBar(ShowReLoadMode.YES); return; } //从云端获取数据 var pageData = HdlBackupLogic.Current.GetBackupListNameFromDB(); if (pageData == null) { //关闭进度条 this.CloseProgressBar(ShowReLoadMode.YES); return; } //关闭 this.CloseProgressBar(); HdlThreadLogic.Current.RunMain(() => { if (this.Parent == null) { return; } listView.RemoveAll(); listView.RecoverHeight(); //添加自动备份行 if (autoData.Count == 0) { this.AddNotAutoBackupRow(pageData.Count > 0); } else { this.AddRowlayout(autoData[0], pageData.Count > 0, true); } //排序 var dic = new Dictionary(); var listSort = new List(); for (int i = 0; i < pageData.Count; i++) { listSort.Add(pageData[i].CreatedOnUtc); dic[pageData[i].CreatedOnUtc] = pageData[i]; } listSort.Sort(); for (int i = listSort.Count - 1; i >= 0; i--) { //添加备份行 this.AddRowlayout(dic[listSort[i]], i != 0, false); } listView.AdjustRealHeight(Application.GetRealHeight(23)); }); } #endregion #region ■ 添加备份行_________________________ /// /// 添加备份行 /// /// private void AddRowlayout(BackupListNameInfo fileInfo, bool addLine, bool autoBack) { //行 var rowLayout = new RowLayoutControl(listView.rowSpace / 2); listView.AddChidren(rowLayout); if (autoBack == true) { rowLayout.frameTable.UseClickStatu = false; } //图标 var btnPoint = rowLayout.frameTable.AddLeftIcon(); btnPoint.UnSelectedImagePath = "Item/DownLoad.png"; //备份名字 var txtText = rowLayout.frameTable.AddTopView("", 700); if (autoBack == true) { //自动备份 txtText.Text = Language.StringByID(R.MyInternationalizationString.uAutoBackup); } else { txtText.Text = fileInfo.BackupName; } //时间 var btnTime = rowLayout.frameTable.AddBottomView("", 600); if (fileInfo.CreatedOnUtc.Length >= 19) { btnTime.Text = UserCenterLogic.ConvertUtcTimeToLocalTime(fileInfo.CreatedOnUtc).ToString("yyyy.MM.dd HH:mm:ss"); } if (addLine == true) { //底线 rowLayout.frameTable.AddBottomLine(); } //立即下载 var btnLoad = new NormalViewControl(Application.GetRealWidth(200), rowLayout.frameTable.Height, false); btnLoad.X = rowLayout.frameTable.Width - Application.GetRealWidth(200 + 127); btnLoad.TextID = R.MyInternationalizationString.uDownLoadNow; btnLoad.TextAlignment = TextAlignment.CenterRight; btnLoad.TextSize = 12; btnLoad.TextColor = UserCenterColor.Current.TextOrangeColor; rowLayout.frameTable.AddChidren(btnLoad, ChidrenBindMode.NotBind); btnLoad.ButtonClickEvent += (sender, e) => { //是否要下载并恢复数据? string msg = Language.StringByID(R.MyInternationalizationString.uDownLoadAndRecoverMsg); this.ShowMassage(ShowMsgType.Confirm, msg, () => { //读取备份文档 this.LoadBackupInfo(fileInfo.Id); }); }; if (autoBack == true) { //上传 var btnUpLoad = rowLayout.AddEditorControl(); btnUpLoad.TextID = R.MyInternationalizationString.uUpload; btnUpLoad.ButtonClickEvent += (sender, e) => { //确认是否上传数据到服务器? this.ShowMassage(ShowMsgType.Confirm, Language.StringByID(R.MyInternationalizationString.uSynchronizeDataToServiceMsg), () => { //上传自动备份数据 this.UpLoadAutoBackupInfo(); }); }; } else { //编辑备注名 rowLayout.frameTable.ButtonClickEvent += (sender, e) => { //显示编辑备考名画面 this.ShowEditorBackupForm(fileInfo); }; //删除 var btnDelete = rowLayout.AddDeleteControl(); btnDelete.ButtonClickEvent += (sender, e) => { //确认删除该备份数据? string msg = Language.StringByID(R.MyInternationalizationString.uDoDeleteBackupMsg); this.ShowMassage(ShowMsgType.Confirm, msg, () => { //删除备份文档 this.DeleteBackInfo(fileInfo.Id, ShowErrorMode.YES); }); }; } } /// /// 添加没有自动备份数据的行 /// /// private void AddNotAutoBackupRow(bool addLine) { //行 var rowLayout = new RowLayoutControl(listView.rowSpace / 2); listView.AddChidren(rowLayout); rowLayout.frameTable.UseClickStatu = false; //图标 var btnPoint = rowLayout.frameTable.AddLeftIcon(); btnPoint.UnSelectedImagePath = "Item/DownLoad.png"; //备份名字 var txtText = rowLayout.frameTable.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uAutoBackup), 700); txtText.TextSize = 15; if (addLine == true) { //底线 rowLayout.frameTable.AddBottomLine(); } //上传 var btnUpLoad = rowLayout.AddEditorControl(); btnUpLoad.TextID = R.MyInternationalizationString.uUpload; btnUpLoad.ButtonClickEvent += (sender, e) => { //确认是否上传数据到服务器? this.ShowMassage(ShowMsgType.Confirm, Language.StringByID(R.MyInternationalizationString.uSynchronizeDataToServiceMsg), () => { //上传自动备份数据 this.UpLoadAutoBackupInfo(); }); }; } #endregion #region ■ 读取备份文档_______________________ /// /// 读取备份文档 /// /// private void LoadBackupInfo(string BackupClassId) { HdlThreadLogic.Current.RunThread(() => { //从云端获取备份的文件 bool result = HdlBackupLogic.Current.LoadAppBackupInfo(BackupClassId); if (result == false) { //文件恢复失败 string msg2 = Language.StringByID(R.MyInternationalizationString.uFileRecoverFail); this.ShowMassage(ShowMsgType.Error, msg2); return; } HdlThreadLogic.Current.RunMain(() => { //关闭所有界面 UserCenterLogic.CloseAllOpenForm(); //切换到主页 UserView.UserPage.Instance.ReFreshControl(); }); //文件恢复成功 string msg = Language.StringByID(R.MyInternationalizationString.uFileRecoverSuccess); this.ShowMassage(ShowMsgType.Normal, msg); }); } #endregion #region ■ 上传手动备份数据___________________ /// /// 上传数据 /// /// private void UpLoadBackInfo(string backName) { HdlThreadLogic.Current.RunThread(() => { //创建一个备份名字 string backupClassId = HdlBackupLogic.Current.CreatNewBackupNameToDB(backName); 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); //如果上传失败的话,就把它删除 this.DeleteBackInfo(backupClassId, ShowErrorMode.NO); return; } HdlThreadLogic.Current.RunThread(() => { //从云端获取数据 this.SetBackupInfoToForm(); }); }); } #endregion #region ■ 上传自动备份数据___________________ /// /// 上传自动备份数据 /// private void UpLoadAutoBackupInfo() { HdlThreadLogic.Current.RunThread(() => { int result = HdlAutoBackupLogic.DoUpLoadAutoBackupData(); if (result == -1) { //文件上传失败 string msg = Language.StringByID(R.MyInternationalizationString.uFileUpLoadFail); this.ShowMassage(ShowMsgType.Error, msg); return; } //数据成功同步到服务器 string msg2 = Language.StringByID(R.MyInternationalizationString.uSynchronizeDataToServiceSuccessMsg); this.ShowMassage(ShowMsgType.Normal, msg2); HdlThreadLogic.Current.RunThread(() => { //从云端获取数据 this.SetBackupInfoToForm(); }); }); } #endregion #region ■ 编辑备份名称_______________________ /// /// 编辑备份名称 /// /// /// private 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 = 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 void DeleteBackInfo(string BackupClassId, ShowErrorMode showMode = ShowErrorMode.YES) { bool success = HdlBackupLogic.Current.DeleteDbBackupData(BackupClassId); 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 DialogInputControl(); //编辑备份 dialogForm.SetTitleText(Language.StringByID(R.MyInternationalizationString.uEditorBackup)); //请输入备份名称 dialogForm.SetTipText(Language.StringByID(R.MyInternationalizationString.uPleaseInpuBackupName)); 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 DialogInputControl(); //添加备份 dialogForm.SetTitleText(Language.StringByID(R.MyInternationalizationString.uAddBackup)); //请输入备份名称 dialogForm.SetTipText(Language.StringByID(R.MyInternationalizationString.uPleaseInpuBackupName)); //按下确认按钮 dialogForm.ComfirmClickEvent += ((textValue) => { //检测备考名称 if (this.CheckBackupName(textValue) == false) { return; } //画面关闭 dialogForm.CloseDialog(); //上传备份 this.UpLoadBackInfo(textValue); }); } #endregion #region ■ 一般方法___________________________ /// /// 把本地所有文件移动到自动备份文件夹 /// private void CopyLocationAllFileToAutoBackDirectory() { List listAllFile = Shared.Common.Global.FileListByHomeId(); string strroot = Common.Config.Instance.FullPath; 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.uPleaseInpuBackupName); 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 } }