using System.IO; using System.Windows.Forms; namespace WinFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void OpenDirectoryBtn_Click(object sender, EventArgs e) { var folderBrowserDialog = new FolderBrowserDialog(); var res = folderBrowserDialog.ShowDialog(); if (res != DialogResult.OK || string.IsNullOrEmpty(folderBrowserDialog.SelectedPath)) return; DirectoryTextBox.Text = folderBrowserDialog.SelectedPath; UpdateDirectoryTreeView(); } private void GenerateTestingDirectoryBtn_Click(object sender, EventArgs e) { if (!Directory.Exists(DirectoryTextBox.Text)) { MessageBox.Show("Directory not found."); return; } try { TestingDirectoryGenerator.Generate(DirectoryTextBox.Text); UpdateDirectoryTreeView(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void DeleteDuplicateFilesBtn_Click(object sender, EventArgs e) { if (!Directory.Exists(DirectoryTextBox.Text)) { MessageBox.Show("Directory not found."); return; } try { DirectoryCleaner.DeleteDuplicateFiles(DirectoryTextBox.Text); UpdateDirectoryTreeView(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void SortFilesBtn_Click(object sender, EventArgs e) { if (!Directory.Exists(DirectoryTextBox.Text)) { MessageBox.Show("Directory not found."); return; } if (UseSortingByDayCheckBox.Checked == false && UseSortingByWeekCheckBox.Checked == false && UseSortingByYearCheckBox.Checked == false) { MessageBox.Show("Select at least one sorting option."); return; } var fileSorter = new FileSorter( UseSortingByDayCheckBox.Checked, UseSortingByWeekCheckBox.Checked, UseSortingByYearCheckBox.Checked ); try { fileSorter.Sort(DirectoryTextBox.Text); UpdateDirectoryTreeView(); if (!fileSorter.CheckSorting(DirectoryTextBox.Text)) MessageBox.Show("Sorting not correct."); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void UpdateDirectoryTreeView() { var workingDir = new DirectoryInfo(DirectoryTextBox.Text); var rootNode = new TreeNode(workingDir.Name); foreach (var d1 in workingDir.GetDirectories()) { var n1 = new TreeNode($"folder: {d1.Name}"); foreach (var d2 in d1.GetDirectories()) { var n2 = new TreeNode($"folder: {d2.Name}"); foreach (var d3 in d2.GetDirectories()) { var n3 = new TreeNode($"folder: {d3.Name}"); foreach (var f3 in d3.GetFiles()) n3.Nodes.Add($"file: {f3.Name}"); n2.Nodes.Add(n3); } foreach (var f2 in d2.GetFiles()) n2.Nodes.Add($"file: {f2.Name}"); n1.Nodes.Add(n2); } foreach (var f1 in d1.GetFiles()) n1.Nodes.Add($"file: {f1.Name}"); rootNode.Nodes.Add(n1); } foreach (var f in workingDir.GetFiles()) rootNode.Nodes.Add($"file: {f.Name}"); DirectoryTreeView.Nodes.Clear(); DirectoryTreeView.Nodes.Add(rootNode); } } }