Пример #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
        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);
            }
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
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);
        }
Пример #6
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 = "";
            }
        }
Пример #7
0
        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;
                }
            }
        }