Updated the code in the FileViewer to populate the main TreeVeiw with the Snapshot class object.

This commit is contained in:
Admin
2020-11-13 15:26:48 -06:00
parent cc3c87cb5d
commit 19264b388f
2 changed files with 39 additions and 50 deletions
Binary file not shown.
+29 -40
View File
@@ -16,7 +16,8 @@ namespace DataOrganizer
{ {
private Dictionary<string, DB.Profile> Profiles { get; } = new Dictionary<string, DB.Profile>(); private Dictionary<string, DB.Profile> Profiles { get; } = new Dictionary<string, DB.Profile>();
private Dictionary<string, DB.FolderGroup> FolderGroups { get; } = new Dictionary<string, DB.FolderGroup>(); private Dictionary<string, DB.FolderGroup> FolderGroups { get; } = new Dictionary<string, DB.FolderGroup>();
//private Dictionary<string, Folder> Folders { get; } = new Dictionary<string, Folder>(); private string CurrentNamingPattern { get; set; } = string.Empty;
private ContextMenu PrimaryTreeContextMenu { get; set; } = new ContextMenu(); //Copy to default new content location, set new naming rules etc..
public FileViewer() public FileViewer()
{ {
@@ -39,62 +40,50 @@ namespace DataOrganizer
private void SelectedFolderComboBox_SelectedIndexChanged(object sender, EventArgs e) private void SelectedFolderComboBox_SelectedIndexChanged(object sender, EventArgs e)
{ {
var folder = FolderGroups[RootFolderComboBox.Text];
var rootDepth = folder.Path.Split(new char[] { Path.DirectorySeparatorChar }).Length;
var profile = Profiles[ProfileComboBox.Text];
var includedFolders = new Dictionary<string, TreeNode>();
var db = new DB(); var db = new DB();
var folderGroup = FolderGroups[RootFolderComboBox.Text];
CurrentNamingPattern = db.GetNamingPatternById(folderGroup.PatternId);
var profile = Profiles[ProfileComboBox.Text];
PrimaryFilesTreeView.Nodes.Clear(); PrimaryFilesTreeView.Nodes.Clear();
var files = db.GetFilesForProfileByFolderGroup(profile.Id, folder.Id); var files = db.GetFilesForProfileByFolderGroup(profile.Id, folderGroup.Id);
var d = new Snapshot(files, profile, folder); var snapshot = new Snapshot(files, profile, folderGroup);
var currentShowNode = new TreeNode(); foreach(var folder in snapshot.Root.Folders)
foreach (var file in files)
{ {
var folders = file.FullPath.Split(new char[] { Path.DirectorySeparatorChar }); PrimaryFilesTreeView.Nodes.Add(GetNodeFromSnapshot(folder));
var currentPath = folder.Path;
if(folders.Length == rootDepth + 1)
{
PrimaryFilesTreeView.Nodes.Add(new TreeNode(folders[rootDepth]) { Name = Path.Combine(currentPath, folders[rootDepth]), ToolTipText = Path.Combine(currentPath, folders[rootDepth]) });
continue;
}
var previousPath = string.Empty;
if (folders.Length >= rootDepth + 1)
{
if (currentShowNode.Text != folders[rootDepth])
{
currentShowNode = new TreeNode(folders[rootDepth]) { Name = Path.Combine(currentPath, folders[rootDepth]), ToolTipText = Path.Combine(currentPath, folders[rootDepth]) };
includedFolders.Add(Path.Combine(currentPath, folders[rootDepth]), currentShowNode);
PrimaryFilesTreeView.Nodes.Add(currentShowNode);
} }
} }
for(var i = rootDepth; i < folders.Length - 1; i++) private TreeNode GetNodeFromSnapshot(KeyValuePair<string, Folder> folder)
{ {
previousPath = currentPath; var node = new TreeNode(folder.Value.Name) { Name = folder.Key, ToolTipText = folder.Key };
currentPath = Path.Combine(currentPath, folders[i]); var regex = new Regex(CurrentNamingPattern);
if(!includedFolders.ContainsKey(currentPath)) foreach(var f in folder.Value.Folders)
{ {
var newNode = new TreeNode(folders[i]) { Name = currentPath, ToolTipText = currentPath }; var folderNode = GetNodeFromSnapshot(f);
node.Nodes.Add(folderNode);
if (includedFolders.ContainsKey(previousPath)) if (folderNode.ForeColor == Color.Orange)
{ {
includedFolders[previousPath].Nodes.Add(newNode); node.ForeColor = folderNode.ForeColor;
includedFolders.Add(currentPath, newNode); node.ToolTipText = "Naming violations found!";
}
} }
} }
var node = includedFolders[currentPath]; foreach(var file in folder.Value.Files)
node.Nodes.Add(new TreeNode(folders[folders.Length - 1]) { Name = Path.Combine(currentPath, folders[folders.Length - 1]), ToolTipText = Path.Combine(currentPath, folders[folders.Length - 1]) }); {
var fileNode = new TreeNode(file.Value.Name) { Name = file.Key, ToolTipText = file.Key };
if (!regex.IsMatch(file.Value.Name)) fileNode.ForeColor = Color.Orange;
node.Nodes.Add(fileNode);
node.ForeColor = fileNode.ForeColor;
} }
return node;
} }
private void ProfileComboBox_SelectedIndexChanged(object sender, EventArgs e) private void ProfileComboBox_SelectedIndexChanged(object sender, EventArgs e)