Ejemplo n.º 1
0
        public void SyncElementStatusChanged(SyncElementInfo sei)
        {
            bool isFile = typeof(SyncFileInfo) == sei.GetType();

            switch (sei.SyncStatus)
            {
            case SyncElementStatus.ElementFound:
                if (isFile)
                {
                    _filesFoundCount++;
                    DirTree.AddFile((MyFileInfo)sei.ElementInfo);
                }
                else
                {
                    _dirsFoundCount++;
                    DirTree.AddDir((MyDirInfo)sei.ElementInfo);
                }
                break;

            case SyncElementStatus.ChangeDetectingStarted:

                break;

            case SyncElementStatus.NoChangeFound:

                break;

            case SyncElementStatus.ChangeFound:
                if (isFile)
                {
                    SyncFileExecutionInfos.Add((SyncFileExecutionInfo)sei.SyncExecutionInfo);

                    if (sei.SyncExecutionInfo.Remove)
                    {
                        _filesToRemoveCount++;
                        _filesTotalSizeToRemove += ((MyFileInfo)sei.ElementInfo).Size;
                    }
                    else
                    {
                        _filesToCopyCount++;
                        _filesTotalSizeToCopy += ((MyFileInfo)sei.ElementInfo).Size;
                    }
                }
                else
                {
                    SyncDirExecutionInfos.Add((SyncDirExecutionInfo)sei.SyncExecutionInfo);

                    if (sei.SyncExecutionInfo.Remove)
                    {
                        _dirsToRemoveCount++;
                    }
                    else
                    {
                        _dirsToCreateCount++;
                    }
                }
                break;

            case SyncElementStatus.ChangeApplied:
                if (isFile)
                {
                    if (sei.SyncExecutionInfo.Remove)
                    {
                        _fileSizeRemoved += ((SyncFileInfo)sei).FileInfo.Size;
                        _filesRemovedCount++;
                    }
                    else
                    {
                        _fileSizeCopied += ((SyncFileInfo)sei).FileInfo.Size;
                        _filesCopiedCount++;
                    }
                }
                else
                {
                    if (sei.SyncExecutionInfo.Remove)
                    {
                        _dirsRemovedCount++;
                    }
                    else
                    {
                        _dirsCreatedCount++;
                    }
                }
                break;

            case SyncElementStatus.Conflicted:
                ConflictInfos.Add(sei.ConflictInfo);
                break;
            }

            _listener?.OnSyncElementStatusChanged(sei);
        }