using System; using System.Collections.Generic; namespace Shared.SimpleControl.Phone { public class Databackup : FrameLayout { //WebServiceBackup service_backup = new WebServiceBackup (); VerticalScrolViewLayout VerticalScrolViewMiddle; /// /// 构造函数 /// public Databackup () { BackgroundColor = SkinStyle.Current.MainColor; } public override void RemoveFromParent () { #if wallon MainPage.LoginUser = null; #endif base.RemoveFromParent (); } public void DatabackupShow () { this.RemoveAll (); #region 标题 var topView = new FrameLayout () { Y = Application.GetRealHeight (36), Height = Application.GetRealHeight (90), BackgroundColor = SkinStyle.Current.MainColor }; AddChidren (topView); var title = new Button () { TextAlignment = TextAlignment.Center, Text = UserConfig.Instance.CurrentRegion.RegionName + " " + Language.StringByID (R.MyInternationalizationString.Backup), TextSize = 19, TextColor = SkinStyle.Current.TextColor1, }; topView.AddChidren (title); title.MouseUpEventHandler += (sdf, asf) => { #if wallon return; #endif Dialog dialog = new Dialog (); FrameLayout bodyView = new FrameLayout (); dialog.AddChidren (bodyView); bodyView.MouseUpEventHandler += (lkj, oiu) => { dialog.Close (); }; VerticalScrolViewLayout dialogBodyView = new VerticalScrolViewLayout () { Y = Application.GetRealHeight (126), Gravity = Gravity.CenterHorizontal, Width = Application.GetRealWidth (500), Height = Application.GetRealHeight (360), BackgroundColor = SkinStyle.Current.MainColor, Radius = 5, BorderColor = SkinStyle.Current.Transparent, BorderWidth = 0 }; bodyView.AddChidren (dialogBodyView); foreach (var homeTemp in UserConfig.Instance.HomeLists) { var rowView = new RowLayout () { Height = Application.GetRealHeight (110), }; dialogBodyView.AddChidren (rowView); Button btnRowLine = new Button () { Y = Application.GetRealHeight (107), Height = Application.GetRealHeight (3), BackgroundColor = SkinStyle.Current.Black50Transparent }; rowView.AddChidren (btnRowLine); var btnPoint = new Button () { Width = Application.GetRealWidth (10), Height = Application.GetRealHeight (10), X = Application.GetRealWidth (50), Gravity = Gravity.CenterVertical, UnSelectedImagePath = "Item/Point.png", SelectedImagePath = "Item/Point.png", Visible = homeTemp.RegionID != UserConfig.Instance.CurrentRegion.RegionID }; rowView.AddChidren (btnPoint); var btnName = new Button () { Width = Application.GetRealWidth (550), Text = homeTemp.RegionName, TextAlignment = TextAlignment.CenterLeft, X = Application.GetRealWidth (90), TextColor = SkinStyle.Current.TextColor1, }; rowView.AddChidren (btnName); if (homeTemp.RegionID == UserConfig.Instance.CurrentRegion.RegionID) { Button btnCheck = new Button () { X = Application.GetRealWidth (20), Y = Application.GetRealHeight (25), Width = Application.GetRealWidth (72), Height = Application.GetRealHeight (61), UnSelectedImagePath = "Skin/Check.png", }; rowView.AddChidren (btnCheck); } btnName.MouseUpEventHandler += (ss, ee) => { if (UserConfig.Instance.CurrentRegion == homeTemp) { dialog.Close (); return; } MainPage.Loading.Start (""); System.Threading.Tasks.Task.Run (() => { try { var backuplist = IO.FileUtils.ReadFiles (); int index = 0; string oldRegionRootPath = IO.FileUtils.CreateRegionBackup (UserConfig.Instance.CurrentRegion.RegionID.ToString()); IO.FileUtils.DeleteRegionFiles (oldRegionRootPath); foreach (var fileName in backuplist) { if (fileName == "linphonerc" || fileName == "AccountListDB") continue; System.IO.FileInfo fileInfo = new System.IO.FileInfo (IO.FileUtils.RootPath + fileName); if (fileInfo.Exists) { fileInfo.MoveTo (oldRegionRootPath + fileName); Console.WriteLine ("move file : " + fileName); } index++; Application.RunOnMainThread (() => { int pro = (int)(index * 1.0 / backuplist.Count * 50); MainPage.Loading.Text = pro.ToString () + "%"; }); } IO.FileUtils.DeleteAllFile (); string newRegionRootPath = IO.FileUtils.CreateRegionBackup (homeTemp.RegionID.ToString ()); IO.FileUtils.RestoreRegionFiles (newRegionRootPath); UserConfig.Instance.RefreshUserConfig (); UserConfig.Instance.CurrentRegion = homeTemp; UserConfig.Instance.SaveUserConfig (); Room.InitAllRoom (); //UserConfig.Instance.RefreshUserConfig (); //MainPage.LoginUser.SaveUserInfo (); Application.RunOnMainThread (() => { new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.SwitchRegionSuccessfully), Language.StringByID (R.MyInternationalizationString.Close)).Show (); this.DatabackupShow (); EquipmentPublicClass.CheckLinkRemote (2); }); } catch (Exception ex) { Application.RunOnMainThread (() => { new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.CheckInternet), Language.StringByID (R.MyInternationalizationString.Close)).Show (); }); Console.WriteLine (ex.Message); } finally { Application.RunOnMainThread (() => { MainPage.Loading.Hide (); dialog.Close (); }); } }); }; } dialog.Show (); }; Button ItemButton = new Button () { Width = Application.GetRealWidth (55), Height = Application.GetRealHeight (55), UnSelectedImagePath = "Item/+.png", SelectedImagePath = "Item/+.png", Y = Application.GetRealHeight (15), X = Application.GetRealWidth (640 - 80), }; #if wallon #else topView.AddChidren (ItemButton); ItemButton.MouseUpEventHandler += (sender, e) => { Dialog dialog = new Dialog (); FrameLayout dialogBodyView = new FrameLayout () { Gravity = Gravity.Center, Width = Application.GetRealWidth (500), Height = Application.GetRealHeight (500), BackgroundColor = SkinStyle.Current.DialogColor, Radius = 5, BorderColor = SkinStyle.Current.Transparent, BorderWidth = 0, }; dialog.AddChidren (dialogBodyView); Button btnTitle = new Button () { Height = Application.GetRealHeight(80), BackgroundColor = SkinStyle.Current.DialogTitle, TextAlignment = TextAlignment.Center, TextID = R.MyInternationalizationString.Backup, TextColor = SkinStyle.Current.DialogTextColor }; dialogBodyView.AddChidren (btnTitle); Button btnGoDownTip = new Button () { Gravity = Gravity.CenterHorizontal, Y = Application.GetRealHeight (90 - 26), Width = Application.GetRealWidth (53), Height = Application.GetRealHeight (26), UnSelectedImagePath = "Room/godown.png", }; dialogBodyView.AddChidren (btnGoDownTip); Button btnackupRemark = new Button () { Gravity = Gravity.CenterHorizontal, Y = Application.GetRealHeight (100), Width = Application.GetRealWidth (400), Height = Application.GetRealHeight (80), TextID = R.MyInternationalizationString.Remark, TextAlignment = TextAlignment.CenterLeft, TextColor = SkinStyle.Current.TextColor, }; dialogBodyView.AddChidren (btnackupRemark); EditText etBackupRemark = new EditText () { Gravity = Gravity.CenterHorizontal, Y = btnackupRemark.Bottom , Width = Application.GetRealWidth (400), Height = Application.GetRealHeight (80), TextAlignment = TextAlignment.Center, Radius = 5, BorderColor = SkinStyle.Current.BorderColor, BorderWidth = 1, TextColor = SkinStyle.Current.TextColor, }; dialogBodyView.AddChidren (etBackupRemark); etBackupRemark.EditorEnterAction += (obj) => { Application.HideSoftInput (); }; FrameLayout bottomView = new FrameLayout () { Y = Application.GetRealHeight(420), Height = Application.GetRealHeight(85), BackgroundColor = SkinStyle.Current.DialogTitle }; dialogBodyView.AddChidren (bottomView); Button btnClose = new Button () { Width = Application.GetRealWidth (249), TextID = R.MyInternationalizationString.Close, TextAlignment = TextAlignment.Center }; bottomView.AddChidren (btnClose); btnClose.MouseUpEventHandler += (send2er, e2) => { dialog.Close (); }; Button btnBottomLine = new Button () { X = btnClose.Right, Width =1, BackgroundColor = SkinStyle.Current.Black50Transparent, }; bottomView.AddChidren (btnBottomLine); Button btnSave = new Button () { X = btnBottomLine.Right, Width = Application.GetRealWidth(249), TextID = R.MyInternationalizationString.SAVE, TextAlignment = TextAlignment.Center }; bottomView.AddChidren (btnSave); btnSave.MouseUpEventHandler += (sender2, e2) => { if (etBackupRemark.Text.Trim () == "") { new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.InputNewBakeUpFilesName), Language.StringByID (R.MyInternationalizationString.Close)).Show (); return; } if (MainPage.LoginUser == null) { new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.PleaseLoginSystem), Language.StringByID (R.MyInternationalizationString.Close)).Show (); return; } userBakeupFile (etBackupRemark.Text.Trim ()); dialog.Close (); }; dialog.Show (); }; #endif var back = new Button () { Height = Application.GetRealHeight (90), Width = Application.GetRealWidth (85), UnSelectedImagePath = "Item/Back.png", Gravity = Gravity.CenterVertical, }; topView.AddChidren (back); back.MouseUpEventHandler += (sender, e) => { (Parent as PageLayout).PageIndex -= 1; }; #endregion var FrameLayoutView = new FrameLayout () { Width = LayoutParams.MatchParent, Height = Application.GetRealHeight (Application.DesignHeight - 126), Y = topView.Bottom, BackgroundColor = SkinStyle.Current.ViewColor, }; AddChidren (FrameLayoutView); VerticalScrolViewMiddle = new VerticalScrolViewLayout (); VerticalScrolViewMiddle.RemoveAll (); FrameLayoutView.AddChidren (VerticalScrolViewMiddle); System.Threading.Tasks.Task.Run (() => { try { Application.RunOnMainThread (() => { MainPage.Loading.Start (Language.StringByID(R.MyInternationalizationString.load)); }); GetUserFolderObj requestObj = new GetUserFolderObj () { LevelID = UserConfig.Instance.CurrentRegion.RegionID }; var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj); var revertObj = new ResponsePack (); #if wallon revertObj = MainPage.RequestHttps ("GetAllBackup", "",true,false); #else revertObj = MainPage.RequestHttps ("GetUserFolder", requestJson); #endif if (revertObj.StateCode == "SUCCESS") { var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject> (revertObj.ResponseData.ToString ()); Application.RunOnMainThread (() => { foreach(var folder in responseDataObj) { addRow (folder.FolderName,folder.FolderID); } }); } //var groupNames = service_backup.GetUserGroup (MainPage.LoginUser.MasterID, 0); //Application.RunOnMainThread (() => { // foreach (UserBackup groupName in groupNames) { // addRow (groupName.UserGroup); // } //}); } catch { Application.RunOnMainThread (() => { new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.CheckInternet),Language.StringByID (R.MyInternationalizationString.Close)).Show (); }); } finally { Application.RunOnMainThread (() => { MainPage.Loading.Hide (); }); } }); } void addRow (string groupName,int folderID) { var rowView = new RowLayout () { Height = Application.GetRealHeight (110), }; VerticalScrolViewMiddle.AddChidren (rowView); Button btnRowLine = new Button () { Y = Application.GetRealHeight (107), Height = Application.GetRealHeight (3), BackgroundColor = SkinStyle.Current.Black50Transparent }; rowView.AddChidren (btnRowLine); 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 += ( sender2, e2) => { if (e2) { MainPage.Loading.Start (Language.StringByID(R.MyInternationalizationString.load)); System.Threading.Tasks.Task.Run (() => { try { DeleteFolderDataObj requestObj = new DeleteFolderDataObj () { Id = folderID }; var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj); var revertObj = MainPage.RequestHttps ("DeleteFolderData", requestJson); if (revertObj.StateCode == "SUCCESS") { Application.RunOnMainThread (() => { DatabackupShow (); }); } } catch { } finally { Application.RunOnMainThread (() => { MainPage.Loading.Hide (); }); } }); } }; alert.Show (); }; if (MainPage.LoginUser.AccountType != 1) { rowView.AddRightView (btnDelFile); } var btnPoint = new Button () { Width = Application.GetRealWidth (10), Height = Application.GetRealHeight (10), X = Application.GetRealWidth (25), Gravity = Gravity.CenterVertical, UnSelectedImagePath = "Item/Point.png", SelectedImagePath = "Item/Point.png", }; rowView.AddChidren (btnPoint); var btnName = new Button () { Width = Application.GetRealWidth (342), Height = LayoutParams.MatchParent, Text = groupName.Trim (), TextAlignment = TextAlignment.CenterLeft, X = Application.GetRealWidth (50), TextColor = SkinStyle.Current.TextColor1, }; rowView.AddChidren (btnName); var backupIcon = new Button () { Width = Application.GetRealWidth (72), Height = Application.GetRealHeight (57), X = Application.GetRealWidth (452), }; rowView.AddChidren (backupIcon); var Backup_restores = new Button () { Width = Application.GetMinRealAverage (56), Height = Application.GetMinRealAverage (57), X = backupIcon.Right + Application.GetRealWidth (20), UnSelectedImagePath = "Register/Backup_ restores.png", SelectedImagePath = "Register/Backup_ restores.png", Gravity = Gravity.CenterVertical, }; rowView.AddChidren (Backup_restores); Backup_restores.MouseDownEventHandler += (sender, e) => { Backup_restores.IsSelected = true; }; Backup_restores.MouseUpEventHandler += (sender, e) => { Backup_restores.IsSelected = false; UserBakeupFileDetailedInformation (folderID); }; } /// /// 用户备份文件 /// void userBakeupFile (string groupName) { MainPage.Loading.Start ("Upload..."); System.Threading.Tasks.Task.Run (() => { try { AddFolderObj requestObj = new AddFolderObj () { LevelID = UserConfig.Instance.CurrentRegion.RegionID, Name = groupName }; var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj); var revertObj = MainPage.RequestHttps ("AddFolder", requestJson); if (revertObj.StateCode == "SUCCESS") { var addFolderID = Convert.ToInt32 (revertObj.ResponseData); var backuplist = IO.FileUtils.ReadFiles (); int index = 0; foreach (var fileName in backuplist) { index++; /// /// 如果是特殊的注册登录文件,则不需要备份到服务器 /// if (fileName == UserInfo.GlobalRegisterFile) { continue; } AddUserBackupObj requestObj2 = new AddUserBackupObj () { LevelID = Convert.ToInt32 (revertObj.ResponseData), Name = fileName, DetailByte = IO.FileUtils.ReadFile (fileName) }; var requestJson2 = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj2); var revertObj2 = MainPage.RequestHttps ("AddUserBackup", requestJson2); if (revertObj2.StateCode == "SUCCESS") { Application.RunOnMainThread (() => { int pro = (int)(index * 1.0 / backuplist.Count * 100); MainPage.Loading.Text = pro.ToString () + "%"; }); } } } } catch (Exception ex) { Shared.Application.RunOnMainThread (() => { new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.CheckInternet), Language.StringByID (R.MyInternationalizationString.Close)).Show (); Console.WriteLine (ex.Message); }); } finally { Shared.Application.RunOnMainThread (() => { MainPage.Loading.Hide (); DatabackupShow (); }); } }); } /// /// 用户恢复文件 /// public void UserBakeupFileDetailedInformation (int folderID) { //是否确定恢复该文件数据信息 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 += ( sender2, 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 requestObj2 = new UserBackupListObj () { LevelID = folderID }; var requestJson2 = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj2); var revertObj2 = MainPage.RequestHttps ("UserBackupList", requestJson2); if (revertObj2.StateCode == "SUCCESS") { var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject> (revertObj2.ResponseData.ToString ()); int index = 0; foreach (var file in responseDataObj) { if (file.FileName == "null" || file.FileName == "UserConfig" || file.FileName == "Register_File" || file.FileName == "AccountListDB") { continue; } var requestObj3 = new BackupDetailObj () { Id = file.Id }; var requestJson3 = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj3); var revertObj3 = MainPage.RequestHttps ("BackupDetail", requestJson3); if (revertObj3.StateCode == "SUCCESS") { var jsonBytes = Newtonsoft.Json.JsonConvert.SerializeObject (revertObj3.ResponseData); var byresss = Newtonsoft.Json.JsonConvert.DeserializeObject (jsonBytes); IO.FileUtils.WriteFileByBytes (file.FileName, byresss); index++; //新增加了住宅区域,旧的备份数据没有区域属性,当获取到这个文件时,把当前到住宅信息更新到当前备份到数据里面 //if("UserConfig" == file.FileName){ // var regionTemp = UserConfig.Instance.CurrentRegion; // UserConfig.Instance.RefreshUserConfig (); // UserConfig.Instance.CurrentRegion = regionTemp; //} Application.RunOnMainThread (() => { int pro = (int)(index * 1.0 / responseDataObj.Count * 100); MainPage.Loading.Text = pro.ToString () + "%"; }); } } //var requestHomeListObj = Newtonsoft.Json.JsonConvert.SerializeObject (new HomeListObj ()); //var revertHomeListObj = MainPage.RequestHttps ("HomeList", requestHomeListObj); //if (revertHomeListObj.StateCode == "SUCCESS") { // var responseHomeListObj = Newtonsoft.Json.JsonConvert.DeserializeObject> (revertHomeListObj.ResponseData.ToString ()); // UserConfig.Instance.HomeLists = responseHomeListObj; // UserConfig.Instance.SaveUserConfig (); //} MainPage.LoginUser.SaveUserInfo (); Room.InitAllRoom (); Application.RunOnMainThread (() => { if (CommonPage.IsRemote) SmartHome.MqttCommon.DisConnectRemoteMqttClient ("UserBakeupFileDetailedInformation"); this.RemoveFromParent (); UserMiddle.Init (); EquipmentPublicClass.CheckLinkRemote (2); new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.RestoreFileIsSuccessfull), Language.StringByID (R.MyInternationalizationString.Close)).Show (); }); } } catch (Exception ex) { Shared.Application.RunOnMainThread (() => { new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.CheckInternet), Language.StringByID (R.MyInternationalizationString.Close)).Show (); }); Console.WriteLine (ex.ToString()); } finally { Shared.Application.RunOnMainThread (() => { MainPage.Loading.Hide (); }); } }); } }; alert.Show (); } } }