Re-did the way the FileManager works. No more loading what's already in the data directly to a TreeView, instead only the diff between two profile folder groups will be loaded into that, more or less.

This commit is contained in:
Admin
2020-12-09 22:57:39 -06:00
parent 5404a8836d
commit 864a3dfdb6
5 changed files with 205 additions and 97 deletions
+62 -11
View File
@@ -2,7 +2,7 @@
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@@ -20,6 +20,7 @@ namespace DataOrganizer
{
InitializeComponent();
ScanSelectedFolderGroupButton.Click += ScanSelectedFolderGroupButton_Click;
SelectProfileComboBoxMainMenu.SelectedIndexChanged += SelectProfileComboBoxMainMenu_SelectedIndexChanged;
SelectFolderGroupComboBoxMainMenu.SelectedIndexChanged += SelectFolderGroupComboBoxMainMenu_SelectedIndexChanged;
CompareAgainstProfileComboBox.SelectedIndexChanged += CompareAgainstProfileComboBox_SelectedIndexChanged;
@@ -29,6 +30,27 @@ namespace DataOrganizer
PopulateProfileComboBox();
}
private void ScanSelectedFolderGroupButton_Click(object sender, EventArgs e)
{
var folderGroup = GetSelectedFolderGroup();
var files = GetAllFilesFromDirectory(new DirectoryInfo(folderGroup.Path));
var snapshot = new Snapshot(files, folderGroup);
foreach (var folder in snapshot.Root.Folders.Values)
DiffViewTreeView.Nodes.Add(BuildTreeNode(folder));
CommitFilesChangesButton.Enabled = true;
MoveNewFilesButton.Enabled = true;
if (ActiveSnapshot.Files.Count == 0) CommitFirstTimeScaneToDatabase(snapshot);
}
private void CommitFirstTimeScaneToDatabase(Snapshot snapshot)
{
var db = new DB();
db.InsertNewFileRecord(snapshot.Files.Values.ToList(), GetSelectedProfile().Id, GetSelectedFolderGroup().Id, GetSelectedFolderGroup().Path);
}
private void CompareButton_Click(object sender, EventArgs e)
{
var db = new DB();
@@ -55,7 +77,7 @@ namespace DataOrganizer
{
ClearDiffResults();
CompareButton.Enabled = ScanSelectedFolderGroupButton.Enabled;
CompareButton.Enabled = ActiveSnapshot.Files.Count > 0;
}
private void SelectFolderGroupComboBoxMainMenu_SelectedIndexChanged(object sender, EventArgs e)
@@ -67,14 +89,21 @@ namespace DataOrganizer
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;
//foreach (var orgFolder in ActiveSnapshot.Root.Folders.Values)
//{
// FolderGroupTreeView.Nodes.Add(BuildTreeNode(orgFolder));
//}
CompareButton.Enabled = files.Count > 0;
if (CompareAgainstFolderGroupComboBox.FindString(folderGroup.Name) != -1)
CompareAgainstFolderGroupComboBox.SelectedIndex = CompareAgainstFolderGroupComboBox.FindString(folderGroup.Name);
if (files.Count == 0)
ScanSelectedFolderGroupButton.Text = "Scan Folder Group";
SelectedProfileDataLabel.Text = $"Loaded snapshot data for {files.Count} file(s).";
}
private TreeNode BuildTreeNode(Folder folder)
@@ -94,6 +123,21 @@ namespace DataOrganizer
return node;
}
private List<FileInfo> GetAllFilesFromDirectory(DirectoryInfo directory)
{
var files = new List<FileInfo>();
files.AddRange(directory.EnumerateFiles());
foreach (var dir in directory.EnumerateDirectories())
{
UpdateStatusLabel($"Scanning Directory {dir.Name}...");
files.AddRange(GetAllFilesFromDirectory(dir));
}
return files;
}
private void SelectProfileComboBoxMainMenu_SelectedIndexChanged(object sender, EventArgs e)
{
ClearForm();
@@ -120,7 +164,6 @@ namespace DataOrganizer
private void ClearForm(bool isFolderGroupChange = false)
{
FolderGroupTreeView.Nodes.Clear();
DiffViewTreeView.Nodes.Clear();
if (!isFolderGroupChange)
{
@@ -128,7 +171,10 @@ namespace DataOrganizer
CompareAgainstFolderGroupComboBox.Items.Clear();
}
CompareButton.Enabled = false;
ScanSelectedFolderGroupButton.Enabled = false;
ScanSelectedFolderGroupButton.Text = "Scan for Changes";
MoveNewFilesButton.Enabled = false;
CommitFilesChangesButton.Enabled = false;
}
private void ClearDiffResults()
@@ -179,7 +225,6 @@ namespace DataOrganizer
private DB.FolderGroup GetFolderGroupToCompare()
{
return GetProfileToCompare().FolderGroups.First(x => x.Name == CompareAgainstFolderGroupComboBox.Text);
}
private void ProfilesManageMainMenu_Click(object sender, EventArgs e)
@@ -195,5 +240,11 @@ namespace DataOrganizer
var form = new NamingConventionManager();
form.ShowDialog();
}
private void UpdateStatusLabel(string message)
{
StatusLabel.Text = message;
statusStrip1.Refresh();
}
}
}