private void BeforeTransferStartCallback(TransferInitializationResult result)
 {
     if (result.TargetFreeSpace.HasValue && result.TargetFreeSpace <= TotalBytes)
     {
         WindowManager.ShowMessage(Resx.IOError, Resx.NotEnoughFreeSpaceOnTargetDevice);
         return;
     }
     if (result.TelnetException != null)
     {
         var dialog = new RemoteCopyErrorDialog(result.TelnetException);
         if (dialog.ShowDialog() == false)
         {
             return;
         }
         if (dialog.TurnOffRemoteCopy)
         {
             _userSettingsProvider.UseRemoteCopy = false;
         }
     }
     _remoteCopy   = result.RemoteCopyMode;
     ProgressState = TaskbarItemProgressState.Normal;
     EventAggregator.GetEvent <TransferStartedEvent>().Publish(new TransferStartedEventArgs(this));
     _elapsedTimeMeter.Restart();
     ProcessQueueItem();
 }
        private TransferInitializationResult BeforeTransferStart()
        {
            if (UserAction == FileOperation.Delete)
            {
                return(new TransferInitializationResult(RemoteCopyMode.Disabled));
            }
            var result = new TransferInitializationResult
            {
                TargetFreeSpace = TargetPane.FreeSpace
            };

            if (result.TargetFreeSpace == null || result.TargetFreeSpace > TotalBytes)
            {
                var ftpPane   = Pane <FtpContentViewModel>();
                var localPane = Pane <LocalFileSystemContentViewModel>();
                if (ftpPane != null && localPane != null && localPane.IsNetworkDrive && _userSettingsProvider.UseRemoteCopy)
                {
                    try
                    {
                        OpenTelnetSession(localPane, ftpPane);
                        result.RemoteCopyMode = SourcePane == ftpPane ? RemoteCopyMode.Download : RemoteCopyMode.Upload;
                    }
                    catch (TelnetException exception)
                    {
                        result.RemoteCopyMode  = RemoteCopyMode.Disabled;
                        result.TelnetException = exception;
                    }
                }
            }
            return(result);
        }