/// <summary> /// Update the <see cref="Folder"/> rows /// </summary> private void UpdateFolderRows() { var currentFolders = this.folderCache.Keys; var addedFolders = this.Thing.Folder.Except(currentFolders).ToList(); var removedFolders = currentFolders.Except(this.Thing.Folder); var updatedFolders = this.Thing.Folder.Intersect(currentFolders); foreach (var removedFolder in removedFolders) { FolderRowViewModel row; if (this.folderCache.TryGetValue(removedFolder, out row)) { row.Dispose(); this.folderCache.Remove(removedFolder); ((IRowViewModelBase <Thing>)row.ContainerViewModel).ContainedRows.Remove(row); } } foreach (var addedFolder in addedFolders) { var row = new FolderRowViewModel(addedFolder, this.Session, this); this.folderCache.Add(addedFolder, row); } foreach (var addedFolder in addedFolders) { if (addedFolder.ContainingFolder == null) { this.ContainedRows.Add(this.folderCache[addedFolder]); } else { var row = this.folderCache[addedFolder]; var containerViewModel = this.folderCache[addedFolder.ContainingFolder]; containerViewModel.ContainedRows.Add(row); row.UpdateContainerViewModel(containerViewModel); } } }
/// <summary> /// Update the <see cref="Folder"/> rows /// </summary> public void UpdateFolderRows() { var currentFolders = this.folderCache.Keys; var addedFolders = this.Folders.Except(currentFolders).ToList(); var removedFolders = currentFolders.Except(this.Folders).ToList(); foreach (var removedFolder in removedFolders) { if (this.folderCache.TryGetValue(removedFolder, out var row)) { this.folderCache.Remove(removedFolder); ((IHaveContainedRows)row.ContainerViewModel).ContainedRows.RemoveAndDispose(row); } } foreach (var addedFolder in addedFolders) { var row = new FolderRowViewModel(addedFolder, this.fileStoreRow.Session, this.fileStoreRow, this); this.folderCache.Add(addedFolder, row); } foreach (var addedFolder in addedFolders) { if (addedFolder.ContainingFolder == null) { this.fileStoreRow.ContainedRows.Add(this.folderCache[addedFolder]); } else { var row = this.folderCache[addedFolder]; var containerViewModel = this.folderCache[addedFolder.ContainingFolder]; containerViewModel.ContainedRows.Add(row); row.UpdateContainerViewModel(containerViewModel); } } }