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; namespace DataOrganizer { public partial class FileManager : Form { private List Profiles { get; set; } = new List(); private List FolderGroups { get; set; } = new List(); private Snapshot ActiveSnapshot { get; set; } public FileManager() { InitializeComponent(); SelectProfileComboBoxMainMenu.SelectedIndexChanged += SelectProfileComboBoxMainMenu_SelectedIndexChanged; SelectFolderGroupComboBoxMainMenu.SelectedIndexChanged += SelectFolderGroupComboBoxMainMenu_SelectedIndexChanged; CompareAgainstProfileComboBox.SelectedIndexChanged += CompareAgainstProfileComboBox_SelectedIndexChanged; CompareAgainstFolderGroupComboBox.SelectedIndexChanged += CompareAgainstFolderGroupComboBox_SelectedIndexChanged; CompareButton.Click += CompareButton_Click; PopulateProfileComboBox(); } private void CompareButton_Click(object sender, EventArgs e) { var db = new DB(); var p = GetProfileToCompare(); var f = GetFolderGroupToCompare(); } private void CompareAgainstProfileComboBox_SelectedIndexChanged(object sender, EventArgs e) { ClearDiffResults(); CompareAgainstFolderGroupComboBox.Items.Clear(); var profile = GetProfileToCompare(); foreach(var folder in profile.FolderGroups) CompareAgainstFolderGroupComboBox.Items.Add(folder.Name); if(profile.FolderGroups.Count > 0) CompareAgainstFolderGroupComboBox.SelectedIndex = 0; } private void CompareAgainstFolderGroupComboBox_SelectedIndexChanged(object sender, EventArgs e) { ClearDiffResults(); CompareButton.Enabled = ScanSelectedFolderGroupButton.Enabled; } private void SelectFolderGroupComboBoxMainMenu_SelectedIndexChanged(object sender, EventArgs e) { ClearForm(true); var db = new DB(); var folderGroup = GetSelectedFolderGroup(); var files = db.GetFilesForProfileByFolderGroup(GetSelectedProfile().Id, folderGroup.Id); ActiveSnapshot = new Snapshot(files, folderGroup); foreach(var orgFolder in ActiveSnapshot.Root.Folders.Values) { FolderGroupTreeView.Nodes.Add(BuildTreeNode(orgFolder)); } ScanSelectedFolderGroupButton.Enabled = files.Count > 0; CompareButton.Enabled = files.Count > 0; } private TreeNode BuildTreeNode(Folder folder) { var node = new TreeNode(folder.Name) { Name = folder.FullPath }; foreach(var dir in folder.Folders.Values) { node.Nodes.Add(BuildTreeNode(dir)); } foreach(var file in folder.Files.Values) { node.Nodes.Add(new TreeNode(file.Name) { Name = file.FullPath }); } return node; } private void SelectProfileComboBoxMainMenu_SelectedIndexChanged(object sender, EventArgs e) { ClearForm(); FolderGroups = GetSelectedProfile().FolderGroups; SelectFolderGroupComboBoxMainMenu.Items.Clear(); CompareAgainstProfileComboBox.Items.Clear(); foreach (var folder in FolderGroups) SelectFolderGroupComboBoxMainMenu.Items.Add(folder.Name); if (FolderGroups.Count > 0) SelectFolderGroupComboBoxMainMenu.SelectedIndex = 0; if(Profiles.Count > 1) { foreach(var profile in Profiles) if(profile.Name != SelectProfileComboBoxMainMenu.Text) CompareAgainstProfileComboBox.Items.Add(profile.Name); CompareAgainstProfileComboBox.SelectedIndex = 0; } } private void ClearForm(bool isFolderGroupChange = false) { FolderGroupTreeView.Nodes.Clear(); DiffViewTreeView.Nodes.Clear(); if (!isFolderGroupChange) { CompareAgainstProfileComboBox.Items.Clear(); CompareAgainstFolderGroupComboBox.Items.Clear(); } CompareButton.Enabled = false; ScanSelectedFolderGroupButton.Enabled = false; } private void ClearDiffResults() { DiffViewTreeView.Nodes.Clear(); } private void PopulateProfileComboBox() { var db = new DB(); Profiles = db.GetProfiles(); SelectProfileComboBoxMainMenu.Items.Clear(); foreach(var profile in Profiles) SelectProfileComboBoxMainMenu.Items.Add(profile.Name); if(Profiles.Count > 0) SelectProfileComboBoxMainMenu.SelectedIndex = 0; } private void RefreshForm() { ClearForm(); PopulateProfileComboBox(); } private DB.Profile GetSelectedProfile() { return Profiles[SelectProfileComboBoxMainMenu.SelectedIndex]; } private DB.FolderGroup GetSelectedFolderGroup() { return FolderGroups[SelectFolderGroupComboBoxMainMenu.SelectedIndex]; } private DB.Profile GetProfileToCompare() { return Profiles.First(x => x.Name == CompareAgainstProfileComboBox.Text); } private DB.FolderGroup GetFolderGroupToCompare() { return GetProfileToCompare().FolderGroups.First(x => x.Name == CompareAgainstFolderGroupComboBox.Text); } private void ProfilesManageMainMenu_Click(object sender, EventArgs e) { var form = new ProfileManager(); form.ShowDialog(); RefreshForm(); } private void NamingPatternsManageMainMenu_Click(object sender, EventArgs e) { var form = new NamingConventionManager(); form.ShowDialog(); } } }