diff --git a/.vs/DataOrganizer/v16/.suo b/.vs/DataOrganizer/v16/.suo index c7570bd..0880bae 100644 Binary files a/.vs/DataOrganizer/v16/.suo and b/.vs/DataOrganizer/v16/.suo differ diff --git a/DataOrganizer/FileViewer.cs b/DataOrganizer/FileViewer.cs index cc0591a..5639f24 100644 --- a/DataOrganizer/FileViewer.cs +++ b/DataOrganizer/FileViewer.cs @@ -164,37 +164,19 @@ namespace DataOrganizer var folderGroup = GetActiveFolderGroup(); var files = new List(); var rootFolder = new DirectoryInfo(folderGroup.Path); - var pendingChanges = 0; foreach (var dir in rootFolder.EnumerateDirectories()) files.AddRange(ScanDirectory(dir)); var snapShot = new Snapshot(files, folderGroup); + ActiveSnapshotForPrimaryTree.MergeSnapshot(snapShot); var newFiles = snapShot.Files.Values.Except(ActiveSnapshotForPrimaryTree.Files.Values); var existingFiles = ActiveSnapshotForPrimaryTree.Files.Values.Except(snapShot.Files.Values); - var deletedFiles = new List(); - var modifiedFiles = new List(); var newFilesCount = 0; var modifiedFilesCount = 0; var deletedFilesCount = 0; - foreach(var existingFile in existingFiles) - { - if (!snapShot.Files.ContainsKey(existingFile.FullPath)) - { - existingFile.Status = FileSnapshot.FileStatus.PendingDelete; - deletedFiles.Add(existingFile); - pendingChanges++; - } - else if (existingFile.ModifiedDate != snapShot.Files[existingFile.FullPath].ModifiedDate) - { - existingFile.ModifiedDate = snapShot.Files[existingFile.FullPath].ModifiedDate; - modifiedFiles.Add(snapShot.Files[existingFile.FullPath]); - pendingChanges++; - } - } - foreach(var f in newFiles) { var newNode = new TreeNode(f.Name) { Name = f.FullPath, BackColor = Color.LightBlue, ToolTipText = "New File Found!" }; @@ -224,17 +206,17 @@ namespace DataOrganizer } } - foreach(var f in deletedFiles) + foreach(var f in ActiveSnapshotForPrimaryTree.Files.Where(x => x.Value.Status == FileSnapshot.FileStatus.PendingDelete)) { - PrimaryTreeNodes[f.FullPath].BackColor = Color.Red; - PrimaryTreeNodes[f.FullPath].ToolTipText = "This file has been deleted."; + PrimaryTreeNodes[f.Key].BackColor = Color.Red; + PrimaryTreeNodes[f.Key].ToolTipText = "This file has been deleted."; deletedFilesCount++; } - foreach(var f in modifiedFiles) + foreach(var f in ActiveSnapshotForPrimaryTree.Files.Where(x => x.Value.Status == FileSnapshot.FileStatus.PendingUpdate)) { - PrimaryTreeNodes[f.FullPath].BackColor = Color.DarkBlue; - PrimaryTreeNodes[f.FullPath].ToolTipText = "This file has been modified."; + PrimaryTreeNodes[f.Key].BackColor = Color.DarkBlue; + PrimaryTreeNodes[f.Key].ToolTipText = "This file has been modified."; modifiedFilesCount++; } diff --git a/DataOrganizer/Snapshot.cs b/DataOrganizer/Snapshot.cs index f1699b3..0d501ae 100644 --- a/DataOrganizer/Snapshot.cs +++ b/DataOrganizer/Snapshot.cs @@ -168,6 +168,44 @@ namespace DataOrganizer public void MergeSnapshot(Snapshot snapshot) { //TODO: build this out + var newFiles = Files.Values.Except(snapshot.Files.Values); + var newFolders = Directories.Values.Except(snapshot.Directories.Values); + var newOrgFolders = OrganizationFolders.Values.Except(snapshot.OrganizationFolders.Values); + var existingFiles = Files.Values.Except(snapshot.Files.Values); + + foreach (var existingFile in existingFiles) + { + if (!snapshot.Files.ContainsKey(existingFile.FullPath)) + { + existingFile.Status = FileSnapshot.FileStatus.PendingDelete; + //deletedFiles.Add(existingFile); + //pendingChanges++; + } + else if (existingFile.ModifiedDate != snapshot.Files[existingFile.FullPath].ModifiedDate) + { + existingFile.ModifiedDate = snapshot.Files[existingFile.FullPath].ModifiedDate; + //modifiedFiles.Add(snapShot.Files[existingFile.FullPath]); + //pendingChanges++; + } + } + + foreach(var newFile in newFiles) + { + if(!Files.ContainsKey(newFile.FullPath)) Files.Add(newFile.FullPath, newFile); + Folder folder = newFile.ParentFolder; + + while(folder != null) + { + if (!Directories.ContainsKey(folder.FullPath)) + { + Directories.Add(folder.FullPath, folder); + } + + if (folder.Parent == null && !OrganizationFolders.ContainsKey(folder.FullPath)) OrganizationFolders.Add(folder.FullPath, folder.Files.Values.ToList()); + + folder = folder.Parent; + } + } } public struct Duplicate @@ -344,6 +382,7 @@ namespace DataOrganizer PendingInsert, PendingUpdate, PendingDelete, + Deleted, None } }