using System; using service.hdlcontrol.com_WebServiceBackup; namespace Shared.SimpleControl.Pad { public class Databackup : Dialog { WebServiceBackup service_backup = new WebServiceBackup ();//获取服务器对象 VerticalScrolViewLayout VerticalScrolViewMiddle; EditText etBackup;//文件目录名称输入框 /// /// 构造函数 /// public Databackup () { DatabackupShow (); } void DatabackupShow () { if (MainPage.LoginUser == null) { //提示还没有登陆 new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.PleaseLoginSystem), Language.StringByID (R.MyInternationalizationString.Close)).Show (); this.Close (); return; } FrameLayout MianDialogView = new FrameLayout (); AddChidren (MianDialogView); MianDialogView.MouseUpEventHandler += (sender, e) => { this.Close (); }; FrameLayout MianView = new FrameLayout () { Gravity = Gravity.Center, Width = Application.GetRealWidth (700), Height = Application.GetRealHeight (800), BackgroundColor = 0xFF333333, Radius = 5, BorderWidth = 1, BorderColor = SkinStyle.Current.Transparent }; MianDialogView.AddChidren (MianView); Button topButton = new Button () { Height = Application.GetRealHeight (120), TextAlignment = TextAlignment.Center, BackgroundColor = SkinStyle.Current.MainColor, Text = Language.StringByID (R.MyInternationalizationString.DataBackup), TextSize = 20, }; MianView.AddChidren (topButton); FrameLayout FrameLayoutView = new FrameLayout () { Y = topButton.Bottom, Height = Application.GetRealHeight (680), }; MianView.AddChidren (FrameLayoutView); FrameLayout BackUpView = new FrameLayout () { Height = Application.GetRealHeight (110), }; FrameLayoutView.AddChidren (BackUpView); etBackup = new EditText () { Width = Application.GetRealWidth (400), Height = Application.GetRealHeight (70), X = Application.GetRealWidth (60), Gravity = Gravity.CenterVertical, PlaceholderText = Language.StringByID (R.MyInternationalizationString.InputNewBakeUpFilesName), PlaceholderTextColor = 0xFF333333, TextAlignment = TextAlignment.Center, Radius = (uint)Application.GetRealHeight (5), BorderColor = SkinStyle.Current.Transparent, BorderWidth = 1, BackgroundColor = 0xFFDBDDDF }; BackUpView.AddChidren (etBackup); Button btnBackupAdd = new Button () { Width = Application.GetRealWidth (153), X = etBackup.Right + Application.GetRealWidth (40), TextID = R.MyInternationalizationString.Backup, TextAlignment = TextAlignment.CenterLeft, TextSize = 14, }; BackUpView.AddChidren (btnBackupAdd); Button btnLineTop = new Button () { Height = 1, BackgroundColor = 0xFF333333, Y = Application.GetRealHeight (110) - 1, }; FrameLayoutView.AddChidren (btnLineTop); Button btnLineBottom = new Button () { Height = 1, BackgroundColor = 0xFB757575, Y = Application.GetRealHeight (110) - 2, }; FrameLayoutView.AddChidren (btnLineBottom); EventHandler AddEvent = (sender, e) => { if (etBackup.Text.Trim () == "") { new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.InputNewBakeUpFilesName), Language.StringByID (R.MyInternationalizationString.Close)).Show (); return; } MainPage.LoginUser = Newtonsoft.Json.JsonConvert.DeserializeObject (System.Text.Encoding.UTF8.GetString (Shared.IO.FileUtils.ReadFile (UserInfo.GlobalRegisterFile))); if (MainPage.LoginUser == null) { new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.PleaseLoginSystem), Language.StringByID (R.MyInternationalizationString.Close)).Show (); return; } userBakeupFile (etBackup.Text.Trim ()); etBackup.Text = ""; }; btnBackupAdd.MouseUpEventHandler += AddEvent; VerticalScrolViewMiddle = new VerticalScrolViewLayout () { Height = Application.GetRealHeight (680 - 110), Y = BackUpView.Bottom }; FrameLayoutView.AddChidren (VerticalScrolViewMiddle); try { UserBackup [] groupNames = service_backup.GetUserGroup (MainPage.LoginUser.ID, 0); foreach (UserBackup groupName in groupNames) { addRow (groupName.UserGroup); } } catch { new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.CheckInternet), Language.StringByID (R.MyInternationalizationString.Close)).Show (); } } void addRow (string groupName) { RowLayout frameLayout = new RowLayout () { Height = Application.GetRealHeight (100), }; VerticalScrolViewMiddle.AddChidren (frameLayout); var btnDelFile = new Button () { TextID = R.MyInternationalizationString.Del, BackgroundColor = SkinStyle.Current.DelColor }; btnDelFile.MouseUpEventHandler += (sender, e) => { Alert alert = new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.AreYouSureToDeleteFile), Language.StringByID (R.MyInternationalizationString.Cancel), Language.StringByID (R.MyInternationalizationString.Confrim)); alert.ResultEventHandler += (object sender2, bool e2) => { if (e2) { var result1 = service_backup.UserBackupDelUserGroup (MainPage.LoginUser.ID, groupName, 0); /// /// 0:成功 /// 1:失败 /// if (result1 == 1) { new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.FailedToDeleteFile), Language.StringByID (R.MyInternationalizationString.Close)).Show (); } else { //提示一下 frameLayout.RemoveFromParent (); DatabackupShow (); } } }; alert.Show (); }; frameLayout.AddRightView (btnDelFile); var btnPoint = new Button () { Width = Application.GetRealWidth (10), Height = Application.GetRealHeight (10), X = Application.GetRealWidth (60), Gravity = Gravity.CenterVertical, BackgroundColor = 0xFFDBDDDF, Radius = (uint)Application.GetMinRealAverage (5), BorderWidth = 0, }; frameLayout.AddChidren (btnPoint); var btnName = new Button () { Width = Application.GetRealWidth (400), Height = LayoutParams.MatchParent, Text = groupName.Trim (), TextAlignment = TextAlignment.CenterLeft, X = btnPoint.Right + Application.GetRealWidth (30), }; frameLayout.AddChidren (btnName); var Backup_restores = new Button () { Width = Application.GetRealWidth (56), Height = Application.GetRealHeight (57), X = Application.GetRealWidth (600), UnSelectedImagePath = "Register/Backup_ restores.png", SelectedImagePath = "Register/Backup_ restores_on.png", Gravity = Gravity.CenterVertical, }; frameLayout.AddChidren (Backup_restores); Backup_restores.MouseDownEventHandler += (sender, e) => { Backup_restores.IsSelected = true; }; Backup_restores.MouseUpEventHandler += (sender, e) => { Backup_restores.IsSelected = false; UserBakeupFileDetailedInformation (groupName); }; } /// /// 用户备份文件 /// void userBakeupFile (string groupName) { //确定要备份该文件的数据 Alert alert = new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.SureToBackupYourthisFile), Language.StringByID (R.MyInternationalizationString.Cancel), Language.StringByID (R.MyInternationalizationString.Confrim)); alert.ResultEventHandler += (object sender2, bool e2) => { if (e2) { MainPage.Loading.Start ("Upload..."); System.Threading.Tasks.Task.Run (() => { try { var result = service_backup.AddUserGroup (MainPage.LoginUser.ID, 0, groupName); if (result == 0) { var backuplist = IO.FileUtils.ReadFiles (); int index = 0; foreach (var fileName in backuplist) { index++; /// /// 如果是特殊的注册登陆文件,则不需要备份到服务器 /// if (fileName == UserInfo.GlobalRegisterFile) { continue; } service_backup.UserBackupAdd (MainPage.LoginUser.ID, 0, fileName, groupName, IO.FileUtils.ReadFile (fileName)); Application.RunOnMainThread (() => { int pro = (int)(index * 1.0 / backuplist.Count * 100); MainPage.Loading.Text = pro.ToString () + "%"; }); } } Shared.Application.RunOnMainThread (() => { /// /// 0:成功 /// 1:失败 /// 2:文件名已经存在 /// if (result == 1) { new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.FailedToBackupFile), Language.StringByID (R.MyInternationalizationString.Close)).Show (); } else if (result == 2) { new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.FileNamehasExisted), Language.StringByID (R.MyInternationalizationString.Close)).Show (); } else { //提示备份成功 new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.BackupFileIsSuccessful), Language.StringByID (R.MyInternationalizationString.Close)).Show (); addRow (groupName); } }); } catch { Shared.Application.RunOnMainThread (() => { new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.CheckInternet), Language.StringByID (R.MyInternationalizationString.Close)).Show (); }); } finally { Shared.Application.RunOnMainThread (() => { MainPage.Loading.Hide (); }); } }); } }; alert.Show (); } /// /// 用户恢复文件 /// public void UserBakeupFileDetailedInformation (string groupName) { //是否确定恢复该文件数据信息 Alert alert = new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.SureToRestoreFileInformation), Language.StringByID (R.MyInternationalizationString.Cancel), Language.StringByID (R.MyInternationalizationString.Confrim)); alert.ResultEventHandler += (object sender2, bool e2) => { if (e2) { MainPage.Loading.Start ("Download.."); System.Threading.Tasks.Task.Run (() => { try { var fileNames = IO.FileUtils.ReadFiles (); foreach (var fileName in fileNames) { if (fileName == UserInfo.GlobalRegisterFile) { continue; } IO.FileUtils.DeleteFile (fileName); } //获取所有文件组名 var files = service_backup.UserBackupList (MainPage.LoginUser.ID, 0, groupName); int index = 0; foreach (var file in files) { if (file.Name == "null") { continue; } file.DetailByte = service_backup.UserBackupDetail (file.Id); IO.FileUtils.WriteFileByBytes (file.Name, file.DetailByte); index++; Application.RunOnMainThread (() => { int pro = (int)(index * 1.0 / files.Length * 100); //MainPage.Loading.Hide (); MainPage.Loading.Text = pro.ToString () + "%"; //MainPage.Loading.Text = index +"/"+ files.Length.ToString (); }); } Shared.Application.RunOnMainThread (() => { // tip success new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.RestoreFileIsSuccessfull), Language.StringByID (R.MyInternationalizationString.Close)).Show (); Close (); UserConfig.Instance.RefreshUserConfig (); UserMiddle.DeviceMode (); CommonPage.IsRemote = false; EquipmentPublicClass.CheckLinkRemote (2); }); MainPage.LoginUser = Newtonsoft.Json.JsonConvert.DeserializeObject (System.Text.Encoding.UTF8.GetString (Shared.IO.FileUtils.ReadFile (UserInfo.GlobalRegisterFile))); if (MainPage.LoginUser != null) { MainPage.LoginUser.LastTime = System.DateTime.Now; Shared.IO.FileUtils.WriteFileByBytes (UserInfo.GlobalRegisterFile, System.Text.Encoding.UTF8.GetBytes (Newtonsoft.Json.JsonConvert.SerializeObject (MainPage.LoginUser))); } } catch { Shared.Application.RunOnMainThread (() => { new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.CheckInternet), Language.StringByID (R.MyInternationalizationString.Close)).Show (); }); } finally { Shared.Application.RunOnMainThread (() => { MainPage.Loading.Hide (); }); } }); } }; alert.Show (); } } }