private static void downloadEnded(SmartItem item, string localFolder) { transferHistoryLog(item, localFolder); SmartItem eitem = GetServerItem(item.ItemName, item.ItemFolder); if (eitem == null) { return; } eitem.Status = item.Status; eitem.HasError = item.HasError; eitem.ProgressBarEnabled = false; if (eitem.Status != ItemStatus.Ignored) { eitem.Status = (eitem.HasError) ? ItemStatus.DownloadError : ItemStatus.Downloaded; } TransferEvents.ItemStatusChanged(eitem); }
private static void uploadEnded(SmartItem item, string localFolder) { transferHistoryLog(item, localFolder); SmartItem eitem = GetServerItem(item.ItemName, item.ItemFolder); if (eitem == null) { return; } eitem.Status = item.Status; eitem.Length = eitem.Transferred; eitem.FileSize = null; eitem.HasError = item.HasError; eitem.ProgressBarEnabled = false; switch (eitem.Status) { case ItemStatus.Ignored: break; case ItemStatus.Uploading: eitem.Status = (eitem.HasError) ? ItemStatus.UploadError : ItemStatus.Uploaded; break; case ItemStatus.Replacing: eitem.Status = (eitem.HasError) ? ItemStatus.ReplaceError : ItemStatus.Replaced; break; case ItemStatus.Resuming: eitem.Status = (eitem.HasError) ? ItemStatus.ResumeError : ItemStatus.Resumed; break; } TransferEvents.ItemStatusChanged(eitem); }
internal async Task TransferItemsAsync(object items, string destination, bool IsUpload) { TransferEvent.IsUpload = IsUpload; TransferEvent.Starting(); TransferEvent.Items = IsUpload ? await _prepareForUpload(items as string[], destination.TrimEnd('/') + '/') : await _prepareForDownload(items as SmartItem[], destination.TrimEnd('\\') + '\\'); items = null; if (TransferEvent.Items.Length > 0) { SmartItem[] IIDP = new SmartItem[] { }; // Items In Destination Path TransferEvent.Action = TransferAction.Unknown; TransferEvent.SessionAction = TransferAction.Unknown; string dstination = string.Empty; // Last Destination Path int j = -1; bool hasParent = false; bool mayExist = false; bool samePath = false; if (DefaultAction != TransferAction.Unknown) { TransferEvents.TillCloseAction = DefaultAction; } TransferEvent.Started(); for (int i = 0; i < TransferEvent.Items.Length; i++) { if (IsCanceled) { break; } TransferEvent.Item = TransferEvent.Items[i]; TransferEvent.Item.HasError = false; //TransferEvent.Item.Status = ItemStatus.Unknown; if (dstination != TransferEvent.Item.Destination) { dstination = TransferEvent.Item.Destination; TransferEvent.PathChanged(TransferEvent.Item.ItemFolder, dstination); hasParent = (TransferEvent.Item.ParentId != -1); mayExist = (!hasParent || TransferEvent.Items[TransferEvent.Item.ParentId].Exist); if (mayExist) { if (IsUpload) { IIDP = await getServerItemsAsync(TransferEvent.Item.Destination); if (IIDP == null) { IIDP = new SmartItem[] { } } ; } else { IIDP = await _getLocalItemsAsync(TransferEvent.Item.Destination); } mayExist = (IIDP.Length != 0); } } samePath = ((IsUpload ? TransferEvent.Item.Destination : TransferEvent.Item.ItemFolder) == BrowsedPath); if (hasParent && TransferEvent.Items[TransferEvent.Item.ParentId].HasError) { TransferEvent.Item.HasError = true; if (TransferEvent.Item.IsFile) { TransferEvent.TotalTransferredFiles++; } else { TransferEvent.TotalTransferredFolders++; } TransferEvent.Item.Status = ItemStatus.Ignored; transferHistoryLog(TransferEvent.Item, TransferEvent.Item.ItemFolder); if (samePath) { TransferEvents.ItemStatusChanged(TransferEvent.Item); } continue; } j = -1; if (mayExist) { j = ListExtensions.GetItemID(IIDP, TransferEvent.Item.Destination + TransferEvent.Item.ItemName); TransferEvent.Item.Exist = (j > -1); } if (TransferEvent.Item.IsFile) { await setTransferAction(IsUpload, IIDP, j); if (samePath) { TransferEvents.ItemStatusChanged(TransferEvent.Item); } if (IsUpload) { string localFolder = TransferEvent.Item.ItemFolder; await _uploadFileAsync(); uploadEnded(TransferEvent.Item, localFolder); } else { await _downloadFileAsync(); downloadEnded(TransferEvent.Item, TransferEvent.Item.ItemFolder); } TransferEvent.TotalTransferredFiles++; } else { if (IsUpload) { TransferEvent.Item.HasError = !(TransferEvent.Item.Exist || await CreateFolderAsync(TransferEvent.Item.ItemName, TransferEvent.Item.Destination, false)); } else { TransferEvent.Item.HasError = !(TransferEvent.Item.Exist || (_createLocalFolder(TransferEvent.Item.Destination + TransferEvent.Item.ItemName))); //TransferEvent.Item.Status = (!TransferEvent.Item.HasError) ? ItemStatus.Downloaded : ItemStatus.DownloadError; //TransferEvents.ItemStatusChanged(TransferEvent.Item.FullName); } TransferEvent.TotalTransferredFolders++; } } } TransferEvent.Ended(); }