RaffaeL_RsK

iForm.cs -- SancezLister

Oct 15th, 2018
543
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.99 KB | None | 0 0
  1. //Corectie fisier, pentru a incarca corect MD5 Hash
  2. //Best regards. [RaffaeL]
  3. using System;
  4. using System.ComponentModel;
  5. using System.Drawing;
  6. using System.IO;
  7. using System.Security.Cryptography;
  8. using System.Windows.Forms;
  9. using Cyclic.Redundancy.Check;
  10.  
  11. namespace Sanchez.Lister
  12. {
  13.     public partial class lForm : Form
  14.     {
  15.         public lForm()
  16.         {
  17.             this.InitializeComponent();
  18.         }
  19.  
  20.         private void browseButton_Click(object sender, EventArgs e)
  21.         {
  22.             this.StartBrowsing();
  23.         }
  24.  
  25.         private void saveButton_Click(object sender, EventArgs e)
  26.         {
  27.             this.SaveList();
  28.         }
  29.  
  30.         private void removeButton_Click(object sender, EventArgs e)
  31.         {
  32.             this.RemoveFromPath(this.filePath.SelectedText);
  33.         }
  34.  
  35.         private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
  36.         {
  37.             this.Files = this.GetFiles(e.Argument);
  38.             for (int i = 0; i < this.Files.Length; i++)
  39.             {
  40.                 this.backgroundWorker.ReportProgress(i + 1, this.GetFileData(this.Files[i]));
  41.             }
  42.         }
  43.  
  44.         private void backgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
  45.         {
  46.             this.UpdateResult(e.UserState);
  47.             this.UpdateProgressBar(this.ComputeProgress(e.ProgressPercentage));
  48.         }
  49.  
  50.         private void backgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
  51.         {
  52.             this.EnableButtons();
  53.         }
  54.  
  55.         private void DisableButtons()
  56.         {
  57.             this.Progress.Value = 0;
  58.             this.Result.Clear();
  59.             this.saveButton.Enabled = false;
  60.             this.removeButton.Enabled = false;
  61.             this.browseButton.Enabled = false;
  62.         }
  63.  
  64.         private void EnableButtons()
  65.         {
  66.             this.saveButton.Enabled = true;
  67.             this.removeButton.Enabled = true;
  68.             this.browseButton.Enabled = true;
  69.         }
  70.  
  71.         public string[] GetFiles(object Path)
  72.         {
  73.             return Directory.GetFiles(Path.ToString(), "*.*", SearchOption.AllDirectories);
  74.         }
  75.  
  76.         public int GetFilesCount(string[] Files)
  77.         {
  78.             return Files.Length;
  79.         }
  80.  
  81.         public string GetFileData(string File)
  82.         {
  83.             FileInfo fileInfo = new FileInfo(File);
  84.             return string.Concat(new object[]
  85.             {
  86.                 File,
  87.                 " ",
  88.                 lForm.CalculateMD5Hash(File),
  89.                 " ",
  90.                 fileInfo.Length
  91.             });
  92.         }
  93.  
  94.         public static string CalculateMD5Hash(string Name)
  95.         {
  96.             if (Name == string.Empty)
  97.             {
  98.                 return null;
  99.             }
  100.             MD5 md = MD5.Create();
  101.             string text = string.Empty;
  102.             try
  103.             {
  104.                 using (FileStream fileStream = File.Open(Name, FileMode.Open, FileAccess.Read, FileShare.Read))
  105.                 {
  106.                     foreach (byte b in md.ComputeHash(fileStream))
  107.                     {
  108.                         text += b.ToString("x2").ToLower();
  109.                     }
  110.                 }
  111.             }
  112.             catch
  113.             {
  114.                 MessageBox.Show("Can't open: " + Name);
  115.             }
  116.             return text;
  117.         }
  118.  
  119.         private string GetHash(string Name)
  120.         {
  121.             if (Name == string.Empty)
  122.             {
  123.                 return null;
  124.             }
  125.             CRC crc = new CRC();
  126.             string text = string.Empty;
  127.             try
  128.             {
  129.                 using (FileStream fileStream = File.Open(Name, FileMode.Open))
  130.                 {
  131.                     foreach (byte b in crc.ComputeHash(fileStream))
  132.                     {
  133.                         text += b.ToString("x2").ToLower();
  134.                     }
  135.                 }
  136.             }
  137.             catch
  138.             {
  139.                 MessageBox.Show("Can't open: " + Name);
  140.             }
  141.             return text;
  142.         }
  143.  
  144.         private void UpdateResult(object Data)
  145.         {
  146.             if (!this.Result.IsDisposed)
  147.             {
  148.                 this.Result.AppendText(Data.ToString().Replace("\\", "/") + Environment.NewLine);
  149.             }
  150.         }
  151.  
  152.         private int ComputeProgress(int Percent)
  153.         {
  154.             return 100 * Percent / this.Files.Length;
  155.         }
  156.  
  157.         private void UpdateProgressBar(int Percent)
  158.         {
  159.             if (Percent < 0 || Percent > 100)
  160.             {
  161.                 return;
  162.             }
  163.             if (!this.Progress.IsDisposed)
  164.             {
  165.                 this.Progress.Value = Percent;
  166.             }
  167.         }
  168.  
  169.         private void RemoveFromPath(string Remove)
  170.         {
  171.             if (Remove == string.Empty)
  172.             {
  173.                 return;
  174.             }
  175.             this.Result.Text = this.Result.Text.Replace(Remove, string.Empty);
  176.             this.filePath.Text = this.filePath.Text.Replace(Remove, string.Empty);
  177.         }
  178.  
  179.         private void StartBrowsing()
  180.         {
  181.             if (this.folderBrowserDialog.ShowDialog() == DialogResult.OK)
  182.             {
  183.                 this.DisableButtons();
  184.                 this.filePath.Text = this.folderBrowserDialog.SelectedPath.Replace("\\", "/");
  185.                 if (!this.backgroundWorker.IsBusy)
  186.                 {
  187.                     this.backgroundWorker.RunWorkerAsync(this.folderBrowserDialog.SelectedPath);
  188.                 }
  189.             }
  190.         }
  191.  
  192.         private void SaveList()
  193.         {
  194.             this.saveFileDialog.FileName = "patchlist.txt";
  195.             this.saveFileDialog.Filter = "Text files (*.txt)|*.txt|Every file (*.*)|*.*";
  196.             if (this.saveFileDialog.ShowDialog() == DialogResult.OK)
  197.             {
  198.                 using (StreamWriter streamWriter = new StreamWriter(this.saveFileDialog.FileName))
  199.                 {
  200.                     streamWriter.Write(this.Result.Text);
  201.                 }
  202.             }
  203.         }
  204.  
  205.         private string[] Files;
  206.     }
  207. }
Add Comment
Please, Sign In to add comment