public static int TimeRefresh = 500;//refresh in 500 ms public static void CalSpeedAndTimeLeft(this Transfer transfer, long Group_TotalTransfer = -1) { long time_milisec_group = CurrentMillis.Millis - transfer.TimeStamp; if (time_milisec_group != 0 & time_milisec_group >= TimeRefresh) { TransferItem item = transfer as TransferItem; TransferGroup group = transfer as TransferGroup; if (group != null && Group_TotalTransfer < 0) { throw new Exception("Group_TotalTransfer < 0"); } long SizeWasTransfer = (item != null ? item.SizeWasTransfer : Group_TotalTransfer); transfer.TimeStamp = CurrentMillis.Millis; decimal speed = ((decimal)(SizeWasTransfer - transfer.OldTransfer)) * 1000 / time_milisec_group; transfer.OldTransfer = SizeWasTransfer; transfer.DataSource.Speed = UnitConventer.ConvertSize(speed, 2, UnitConventer.unit_speed); if (speed != 0) { long TotalSize = (item != null ? item.From.node.Info.Size : group.TotalFileLength); long length_left = TotalSize - SizeWasTransfer; long TimeLeft_sec = length_left / decimal.ToInt64(speed); transfer.DataSource.Estimated = CurrentMillis.GetTimeBySecond(TimeLeft_sec); } } }
public void ShowDataToLV(ExplorerNode parent) { lv_data.Clear(); foreach (ExplorerNode item in parent.Child) { LV_data dt = new LV_data(); dt.Node = item; if (item.Info.DateMod != time_default) { dt.d_mod = item.Info.DateMod.ToString(timeformat); } if (item.Info.Size >= 0) { dt.SizeString = UnitConventer.ConvertSize(item.Info.Size, 2, UnitConventer.unit_size); string extension = item.GetExtension(); dt.ImgSource = Setting_UI.GetImage( item.GetRoot.NodeType.Type == CloudType.LocalDisk ? IconReader.GetFileIcon(item.GetFullPathString(), IconReader.IconSize.Small, false) : //some large file make slow. IconReader.GetFileIcon("." + extension, IconReader.IconSize.Small, false) ).Source; } else { dt.SizeString = "-1"; dt.ImgSource = Setting_UI.GetImage(IconReader.GetFolderIcon(IconReader.IconSize.Small, IconReader.FolderType.Closed)).Source; } lv_data.Add(dt); } }
void AddFile(IItemNode item, IItemNode fromfolder, IItemNode savefolder, bool AreCut) { TransferItem ud_item = new TransferItem(); ud_item.From.node = item; ud_item.SizeString = UnitConventer.ConvertSize(item.Info.Size, 2, UnitConventer.unit_size); ud_item.status = StatusTransfer.Waiting; //To ud_item.To.node = item.MakeNodeTo(fromfolder, savefolder); ud_item.DataSource.From = item.GetFullPathString(); ud_item.DataSource.To = ud_item.To.node.GetFullPathString(); ud_item.DataSource.Status = ud_item.status.ToString(); ItemsTransfer.ItemsBlinding.Add(ud_item); }
void LoadFile(ExplorerNode node) { TransferItem ud_item = new TransferItem(); //From ud_item.From.node = node; //group & UI GroupData.TotalFileLength += node.Info.Size; ud_item.SizeString = UnitConventer.ConvertSize(node.Info.Size, 2, UnitConventer.unit_size); ud_item.status = StatusTransfer.Waiting; //To ud_item.To.node = node.MakeNodeTo(this.fromfolder, this.savefolder); ud_item.DataSource.From = node.GetFullPathString(); ud_item.DataSource.To = ud_item.To.node.GetFullPathString(); ud_item.DataSource.Status = ud_item.status.ToString(); ud_item.Group = GroupData; GroupData.items.Add(ud_item); GroupData.DataSource.Progress = "0/" + GroupData.items.Count.ToString(); RefreshGroupDataToShow(0, 0); }
/// <summary> /// Load data from save file. /// </summary> /// <param name="group_json"></param> internal ItemsTransferManager(JsonDataSaveGroup group_json) { LoadField(); this.GroupData = group_json.Group; this.fromfolder = group_json.fromfolder; this.AreCut = group_json.AreCut; this.savefolder = group_json.savefolder; this.GroupData.status = (group_json.Group.status == StatusTransfer.Done | group_json.Group.status == StatusTransfer.Error) ? group_json.Group.status : StatusTransfer.Stop; foreach (TransferItem item in this.GroupData.items) { item.Group = GroupData; if (item.status == StatusTransfer.Running) { item.status = StatusTransfer.Stop; } item.DataSource.Status = item.status.ToString(); item.SizeString = UnitConventer.ConvertSize(item.From.node.Info.Size, 2, UnitConventer.unit_size); } this.GroupData.change = ChangeTLV.Done; RefreshGroupDataToShow(-1); }
public static int TimeRefresh = 500;//refresh in 500 ms public static void CalSpeedAndTimeLeft(this TransferItem transfer) { long mili = CurrentMillis.Millis; if (mili - transfer.TimeStamp < 500) { return; } decimal speed = ((decimal)(transfer.SizeWasTransfer - transfer.OldTransfer)) * 1000 / (mili - transfer.TimeStamp); transfer.OldTransfer = transfer.SizeWasTransfer; transfer.DataSource.Speed = UnitConventer.ConvertSize(speed, 2, UnitConventer.unit_speed); if (speed != 0) { long length_left = transfer.From.node.Info.Size - transfer.SizeWasTransfer; long TimeLeft_sec = length_left / decimal.ToInt64(speed); transfer.DataSource.Estimated = CurrentMillis.GetTimeBySecond(TimeLeft_sec); } else { transfer.DataSource.Estimated = ""; } }
void RefreshGroupDataToShow(int count_item_done, int count_item_remove = 0) { if ((count_item_done != -1 && GroupData.DataSource != null && GroupData.DataSource.Progress.IndexOf("100% (") < 0 && GroupData.items.Count != 0) | count_item_remove != 0) { GroupData.DataSource.Progress = Math.Round((double)count_item_done * 100 / GroupData.items.Count, 2).ToString() + "% (" + count_item_done.ToString() + "/" + GroupData.items.Count.ToString() + ")"; } GroupData.DataSource.Status = GroupData.status.ToString(); for (int i = 0; i < GroupData.items.Count; i++) { GroupData.items[i].DataSource.Status = GroupData.items[i].status.ToString(); if (GroupData.items[i].DataSource.Progress.IndexOf("100% (") < 0 & GroupData.items[i].From.node.Info.Size != 0) { GroupData.items[i].DataSource.Progress = Math.Round((double)GroupData.items[i].SizeWasTransfer * 100 / GroupData.items[i].From.node.Info.Size, 2).ToString() + "% (" + UnitConventer.ConvertSize(GroupData.items[i].SizeWasTransfer, 2, UnitConventer.unit_size) + "/" + GroupData.items[i].SizeString + ")"; } if (GroupData.items[i].ErrorMsg != GroupData.items[i].DataSource.Error) { GroupData.items[i].DataSource.Error = GroupData.items[i].ErrorMsg; } } }