Ejemplo n.º 1
0
        /// <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);
                }
            }
        }
Ejemplo n.º 2
0
        /// <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);
                }
            }
        }