Files
MicronSync/MicronSync/Components/Forms/WorkerUI.cs

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
}
}