89 lines
3.5 KiB
C#
89 lines
3.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
using System.IO;
|
|
using System.Diagnostics;
|
|
using CopyFiles;
|
|
|
|
|
|
namespace Saviour_Backup_System
|
|
{
|
|
public partial class transferWindow : Form, CopyFiles.ICopyFilesDiag, IDisposable {
|
|
public System.ComponentModel.ISynchronizeInvoke SynchronizationObject { get; set; }
|
|
private int arrayIndex;
|
|
public Int64 startTime = tools.getUnixTimeStamp(); //snapshots it.
|
|
private DriveInfo copyingDrive;
|
|
private Stopwatch SW = new Stopwatch();
|
|
string driveHash;
|
|
bool finalised = false;
|
|
string Gdirectory;
|
|
public transferWindow(int backups, DriveInfo drive, string hash, string directory) {
|
|
driveHash = hash;
|
|
copyingDrive = drive;
|
|
InitializeComponent();
|
|
arrayIndex = backups;
|
|
currentFileProgress.Maximum = 1000;
|
|
Gdirectory = directory;
|
|
SW.Start(); //starts the stopwatch to count how long the copy takes
|
|
}
|
|
|
|
private void finaliseCopy(){
|
|
finalised = true;
|
|
SW.Stop();
|
|
databaseTools.createBackupRecord(copyingDrive, startTime, SW.Elapsed.Seconds, driveHash);
|
|
setup.CT.progressBars[arrayIndex].ColorTable = DevComponents.DotNetBar.eProgressBarItemColor.Normal;
|
|
setup.CT.progressBars[arrayIndex].Value = 100;
|
|
setup.CT.progressBars[arrayIndex].Maximum = 100;
|
|
setup.CT.progressBars[arrayIndex].Text = "Complete!";
|
|
if (databaseTools.isCompression(USBTools.calculateDriveID(copyingDrive))) {
|
|
compression.Compress(Gdirectory, DateTime.Now.ToString(), copyingDrive);
|
|
}
|
|
else {
|
|
MessageBox.Show("Backup for drive '" + copyingDrive.Name + "' is now complete.", "Backup Complete", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
}
|
|
|
|
}
|
|
|
|
public void update(Int32 totalFiles, Int32 copiedFiles, Int64 totalBytes, Int64 copiedBytes, string currentFilename)
|
|
{
|
|
totalFilesProgress.Maximum = totalFiles;
|
|
totalFilesProgress.Value = copiedFiles;
|
|
|
|
if (totalBytes != 0) {
|
|
currentFileProgress.Value = Convert.ToInt32((1000f / (totalBytes / 1024f)) * (copiedBytes / 1024f));
|
|
}
|
|
totalFilesProgress.Text = "Copying Bytes " + copiedFiles + " of " + totalFiles + ".";
|
|
currentFile.Text = currentFilename;
|
|
setup.CT.progressBars[arrayIndex].Value = totalFilesProgress.Value;
|
|
setup.CT.progressBars[arrayIndex].Maximum = totalFiles;
|
|
setup.CT.progressBars[arrayIndex].Text = "Copying " + (copiedBytes / 1024f).ToString() + " of " + (totalBytes / 1024f).ToString();
|
|
int percentage = ((totalFiles + 1) / (copiedFiles + 1)) * 10000;
|
|
if (percentage >= 9999 && !finalised)
|
|
{
|
|
finaliseCopy();
|
|
}
|
|
}
|
|
|
|
public void cancelCopy() {
|
|
if (EN_cancelCopy != null) { EN_cancelCopy(); }
|
|
}
|
|
|
|
public event CopyFiles.CopyFiles.DEL_cancelCopy EN_cancelCopy;
|
|
|
|
private void button1_Click(object sender, EventArgs e)
|
|
{
|
|
cancelCopy();
|
|
}
|
|
|
|
private void minimizeButton_Click(object sender, EventArgs e)
|
|
{
|
|
this.WindowState = FormWindowState.Minimized;
|
|
}
|
|
}
|
|
}
|