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 ();
}
}
}