194 lines
6.2 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|