1
Fork 0
This repository has been archived on 2023-03-26. You can view files and clone it, but cannot push or open issues or pull requests.
saviour-backup-system/Saviour Backup System/transferWindow.cs

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