128 lines
4.2 KiB
C#
128 lines
4.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
|
|
namespace MicronSync.Components
|
|
{
|
|
public partial class WorkerUI : Form
|
|
{
|
|
public WorkerMode SetWorkerMode { get; internal set; }
|
|
public enum WorkerMode
|
|
{
|
|
Backup,
|
|
Restore
|
|
}
|
|
public LMZAParser.endResult _endResultLMZA = LMZAParser.endResult.Default;
|
|
public CommonIO.endResult _endResultCIO = CommonIO.endResult.Default;
|
|
private readonly MSConfig _ManageConfig_RO = MainWindow._MSConfig;
|
|
|
|
public WorkerUI()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
#region Workers
|
|
|
|
BackgroundWorker lmzaBackup = new BackgroundWorker();
|
|
BackgroundWorker lmzaRestore = new BackgroundWorker();
|
|
LMZAParser lmzaParser = new LMZAParser();
|
|
|
|
private void LmzaBackup_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
|
|
{
|
|
canClose = true;
|
|
Close();
|
|
}
|
|
|
|
private void LmzaBackup_DoWork(object sender, DoWorkEventArgs e)
|
|
{
|
|
_endResultLMZA = lmzaParser.MakePackage(
|
|
Path.GetFileName(_ManageConfig_RO.BackupDestination),
|
|
_ManageConfig_RO.BackupSource,
|
|
Path.GetDirectoryName(_ManageConfig_RO.BackupDestination),
|
|
_ManageConfig_RO.CompressionLevel,
|
|
"",
|
|
false);
|
|
}
|
|
|
|
private void LmzaRestore_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
|
|
{
|
|
canClose = true;
|
|
Close();
|
|
}
|
|
|
|
private void LmzaRestore_DoWork(object sender, DoWorkEventArgs e)
|
|
{
|
|
// Process params.
|
|
using (CommonIO cio = new CommonIO())
|
|
{
|
|
// Move source directory if also purging, otherwise perform standard copy.
|
|
if (_ManageConfig_RO.EnableBackup && !_ManageConfig_RO.EnablePurge)
|
|
_endResultCIO = cio.CopyEntireDirectory(_ManageConfig_RO.RestoreDestination,
|
|
_ManageConfig_RO.RestoreDestination + ".Backup");
|
|
else if (_ManageConfig_RO.EnableBackup && _ManageConfig_RO.EnablePurge)
|
|
{
|
|
_endResultCIO = cio.RenameEntireDirectory(_ManageConfig_RO.RestoreDestination,
|
|
_ManageConfig_RO.RestoreDestination + ".Backup");
|
|
Directory.CreateDirectory(_ManageConfig_RO.RestoreDestination);
|
|
}
|
|
|
|
if (_ManageConfig_RO.EnablePurge)
|
|
_endResultCIO = cio.ClearEntireDirectory(_ManageConfig_RO.RestoreDestination);
|
|
}
|
|
|
|
if (_endResultCIO == CommonIO.endResult.Default)
|
|
_endResultLMZA = lmzaParser.ExtractPackage(
|
|
Path.GetFileName(_ManageConfig_RO.RestoreSource),
|
|
Path.GetDirectoryName(_ManageConfig_RO.RestoreSource),
|
|
_ManageConfig_RO.RestoreDestination,
|
|
"");
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Form Functionality
|
|
|
|
private bool canClose;
|
|
|
|
private void WorkerUI_Load(object sender, EventArgs e)
|
|
{
|
|
switch (SetWorkerMode)
|
|
{
|
|
case WorkerMode.Backup:
|
|
lmzaBackup.DoWork += LmzaBackup_DoWork;
|
|
lmzaBackup.RunWorkerCompleted += LmzaBackup_RunWorkerCompleted;
|
|
lmzaBackup.RunWorkerAsync();
|
|
break;
|
|
case WorkerMode.Restore:
|
|
lmzaRestore.DoWork += LmzaRestore_DoWork;
|
|
lmzaRestore.RunWorkerCompleted += LmzaRestore_RunWorkerCompleted;
|
|
lmzaRestore.RunWorkerAsync();
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void buttonCancel_Click(object sender, EventArgs e)
|
|
{
|
|
lmzaParser.Abort();
|
|
}
|
|
|
|
private void WorkerUI_FormClosing(object sender, FormClosingEventArgs e)
|
|
{
|
|
if (!canClose)
|
|
e.Cancel = true;
|
|
else
|
|
e.Cancel = false;
|
|
}
|
|
|
|
#endregion
|
|
|
|
}
|
|
}
|