예제 #1
0
        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);
                }
            }
        }
예제 #2
0
 TransferGroup GetParentItem(CloudManagerGeneralLib.Class.TransferItem item)
 {
     foreach (TreeNode node in treeList.Nodes)
     {
         foreach (CloudManagerGeneralLib.Class.TransferItem it in (node.Tag as TransferGroup).items)
         {
             if (it == item)
             {
                 return(node.Tag as TransferGroup);
             }
         }
     }
     return(null);
 }
예제 #3
0
        private void treeList_ContextMenuOpening(object sender, ContextMenuEventArgs e)
        {
            start.IsEnabled   = false;
            waiting.IsEnabled = false;
            stop.IsEnabled    = false;
            error.IsEnabled   = false;
            remove.IsEnabled  = false;
            numberOfParallelDownloads.IsEnabled = false;

            var seleecteditems = treeList.SelectedItems;

            if (seleecteditems != null)
            {
                if (seleecteditems.Count > 0)
                {
                    remove.IsEnabled = true;
                }
                groups = new List <TransferGroup>();
                items  = new List <CloudManagerGeneralLib.Class.TransferItem>();
                foreach (var item in seleecteditems)
                {
                    TreeNode      node = item as TreeNode;
                    TransferGroup tg   = node.Tag as TransferGroup;
                    CloudManagerGeneralLib.Class.TransferItem ti = node.Tag as CloudManagerGeneralLib.Class.TransferItem;
                    if (tg != null)//group
                    {
                        groups.Add(tg);
                        SetIsEnableMenuTLV(tg as Transfer);
                        foreach (CloudManagerGeneralLib.Class.TransferItem child in tg.items)
                        {
                            SetIsEnableMenuTLV(child as Transfer);
                        }
                    }//item
                    else
                    {
                        items.Add(ti);
                        SetIsEnableMenuTLV(ti as Transfer);
                    }
                }
                if (groups.Count == 1 & items.Count == 0)
                {
                    numberOfParallelDownloads.IsEnabled = true;
                }
            }
        }
예제 #4
0
        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 = "";
            }
        }
예제 #5
0
 public void AddTransferItem(TransferItem item)
 {
     item.Group = this;
     items.Add(item);
 }