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