Files
data_organizer/DataOrganizer/FileManager.cs
T

194 lines
6.2 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;
namespace DataOrganizer
{
public partial class FileManager : Form
{
private List<DB.Profile> Profiles { get; set; } = new List<DB.Profile>();
private List<DB.FolderGroup> FolderGroups { get; set; } = new List<DB.FolderGroup>();
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();
}
}
}