From d29da53d6f71f45749c0ede5b4cd7281ed3a270e Mon Sep 17 00:00:00 2001 From: Avi Levkovich Date: Wed, 25 Mar 2020 17:43:49 +0200 Subject: merge --- .../FileSystem/FileSystemHandler.cs | 119 +++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 Software/Visual_Studio/FSE/Tango.FSE.Common/FileSystem/FileSystemHandler.cs (limited to 'Software/Visual_Studio/FSE/Tango.FSE.Common/FileSystem/FileSystemHandler.cs') diff --git a/Software/Visual_Studio/FSE/Tango.FSE.Common/FileSystem/FileSystemHandler.cs b/Software/Visual_Studio/FSE/Tango.FSE.Common/FileSystem/FileSystemHandler.cs new file mode 100644 index 000000000..48fb35c0f --- /dev/null +++ b/Software/Visual_Studio/FSE/Tango.FSE.Common/FileSystem/FileSystemHandler.cs @@ -0,0 +1,119 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.Core; +using Tango.FileSystem; + +namespace Tango.FSE.Common.FileSystem +{ + public class FileSystemHandler : ExtendedObject + { + private Action _abortAction; + private FileSystemHandlerStatus _statusBeforePause; + + public FileSystemHandlerType Type { get; set; } + + private FileSystemHandlerStatus _status; + public FileSystemHandlerStatus Status + { + get { return _status; } + set + { + _status = value; + RaisePropertyChangedAuto(); + } + } + + private bool _isPaused; + public bool IsPaused + { + get { return _isPaused; } + set + { + if (_isPaused != value) + { + _isPaused = value; + + if (_isPaused) + { + _statusBeforePause = Status; + Status = FileSystemHandlerStatus.Paused; + } + else + { + Status = _statusBeforePause; + } + + RaisePropertyChangedAuto(); + } + } + } + + private double _position; + public double Position + { + get { return _position; } + set { _position = value; RaisePropertyChangedAuto(); } + } + + private double _length; + public double Length + { + get { return _length; } + set { _length = value; RaisePropertyChangedAuto(); } + } + + private Exception _failedException; + public Exception FailedException + { + get { return _failedException; } + set { _failedException = value; RaisePropertyChangedAuto(); } + } + + public FileSystemItem FileSystemItem { get; set; } + public String Destination { get; set; } + public String OperationId { get; set; } + + public FileSystemHandler(FileSystemItem fileSystemItem, String destination, Action abortAction) + { + FileSystemItem = fileSystemItem; + Destination = destination; + _abortAction = abortAction; + } + + internal void InvalidateProgress(double position, double length) + { + Position = position; + Length = length; + + if (!IsPaused) + { + Status = (Type == FileSystemHandlerType.FileDownload || Type == FileSystemHandlerType.FolderDownload) ? FileSystemHandlerStatus.Downloading : FileSystemHandlerStatus.Uploading; + } + } + + internal void RaiseFailed(Exception exception) + { + Status = FileSystemHandlerStatus.Failed; + FailedException = exception; + } + + internal void RaiseAborted() + { + Status = FileSystemHandlerStatus.Aborted; + } + + internal void RaiseCompleted() + { + Status = FileSystemHandlerStatus.Completed; + } + + public void Abort() + { + Status = FileSystemHandlerStatus.Aborted; + _abortAction?.Invoke(); + } + } +} -- cgit v1.3.1