コード例 #1
0
        /// <summary>
        /// Update the <see cref="File"/> rows
        /// </summary>
        private void UpdateFileRows()
        {
            var currentFiles = this.fileCache.Keys;

            var addedFiles   = this.Thing.File.Except(currentFiles).ToList();
            var removedFiles = currentFiles.Except(this.Thing.File);

            foreach (var removedFile in removedFiles)
            {
                FileRowViewModel row;
                if (this.fileCache.TryGetValue(removedFile, out row))
                {
                    row.Dispose();
                    this.fileCache.Remove(removedFile);
                    ((IRowViewModelBase <Thing>)row.ContainerViewModel).ContainedRows.Remove(row);
                }
            }

            foreach (var addedFile in addedFiles)
            {
                var row = new FileRowViewModel(addedFile, this.Session, this);
                this.fileCache.Add(addedFile, row);

                var lastCreatedDate = addedFile.FileRevision.Select(x => x.CreatedOn).Max();
                var lastRevision    = addedFile.FileRevision.First(x => x.CreatedOn == lastCreatedDate);

                if (lastRevision.ContainingFolder == null)
                {
                    this.ContainedRows.Add(row);
                }
                else
                {
                    var containerViewModel = this.folderCache[lastRevision.ContainingFolder];
                    containerViewModel.ContainedRows.Add(row);
                    row.UpdateContainerViewModel(containerViewModel);
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// Executes the upload file command
        /// </summary>
        private void ExecuteUploadFile()
        {
            var result = this.fileDialogService.GetSaveFileDialog(string.Empty, string.Empty, string.Empty, string.Empty, 1);

            if (string.IsNullOrEmpty(result))
            {
                return;
            }

            // TODO on Task T1250: Replace the following 3 lines with an actual call to the server to upload the file
            var uploadedFile = new File();
            var participant  = new Participant {
                Person = new Person()
            };
            var fileRevision = new FileRevision {
                Creator = participant
            };

            uploadedFile.FileRevision.Add(fileRevision);
            var uploadedRow = new FileRowViewModel(uploadedFile, this.Session, this.commonFileStoreRow);

            this.ContainedRows.Add(uploadedRow);
        }
コード例 #3
0
        /// <summary>
        /// Update the <see cref="File"/> rows
        /// </summary>
        public void UpdateFileRows()
        {
            this.UpdateFolderRows();

            var currentFiles = this.fileCache.Keys;

            var addedFiles   = this.Files.Except(currentFiles).ToList();
            var removedFiles = currentFiles.Except(this.Files).ToList();

            foreach (var removedFile in removedFiles)
            {
                if (this.fileCache.TryGetValue(removedFile, out var row))
                {
                    this.fileCache.Remove(removedFile);
                    ((IHaveContainedRows)row.ContainerViewModel).ContainedRows.RemoveAndDispose(row);
                }
            }

            foreach (var addedFile in addedFiles)
            {
                var row = new FileRowViewModel(addedFile, this.fileStoreRow.Session, this.fileStoreRow, this);
                this.fileCache.Add(addedFile, row);

                var lastRevision = addedFile.FileRevision.OrderByDescending(x => x.CreatedOn).FirstOrDefault();

                if (lastRevision?.ContainingFolder == null)
                {
                    this.fileStoreRow.ContainedRows.Add(row);
                }
                else
                {
                    var containerViewModel = this.folderCache[lastRevision.ContainingFolder];
                    containerViewModel.ContainedRows.Add(row);
                    row.UpdateContainerViewModel(containerViewModel);
                }
            }
        }