Beispiel #1
0
        /// <summary>
        /// Background thread to do the downloading and installing of updates.
        /// </summary>
        /// <param name="sender">The object triggering this event/</param>
        /// <param name="e">Event argument.</param>
        private void downloader_DoWork(object sender, DoWorkEventArgs e)
        {
            List <DownloadInfo>    downloads       = (List <DownloadInfo>)e.Argument;
            SteppedProgressManager overallProgress = new SteppedProgressManager();
            long totalDownloadSize = downloads.Sum(delegate(DownloadInfo download)
            {
                return(download.FileSize);
            });

            foreach (DownloadInfo download in downloads)
            {
                ProgressManagerBase         downloadProgress = null;
                ProgressChangedEventHandler localHandler     =
                    delegate(object sender2, ProgressChangedEventArgs e2)
                {
                    DownloadInfo downloadInfo = (DownloadInfo)sender2;
                    if (downloadProgress == null)
                    {
                        downloadProgress = e2.Progress;
                        overallProgress.Steps.Add(new SteppedProgressManagerStep(
                                                      e2.Progress, download.FileSize / (float)totalDownloadSize));
                    }

                    downloader_ProgressChanged(sender2,
                                               new ProgressChangedEventArgs(overallProgress, e2.UserState));
                };

                download.Download(localHandler);
            }

            e.Result = e.Argument;
        }
Beispiel #2
0
        private void UpdateProgress()
        {
            if (!task.Executing)
            {
                //The task is done! Bail out and let the completion handler reset the UI
                return;
            }

            //Get the name of the current erasure target to display the overall status
            SteppedProgressManager           taskProgress = task.Progress;
            ErasureTargetProgressManagerStep taskStep     =
                (ErasureTargetProgressManagerStep)taskProgress.CurrentStep;

            if (taskStep == null)
            {
                return;
            }
            else if (!string.IsNullOrEmpty(taskStep.Name))
            {
                status.Text = taskStep.Name;
            }
            else
            {
                status.Text = S._("Erasing...");
            }

            //The get the current step of the target to set the current item name
            SteppedProgressManagerStepBase targetStep =
                (SteppedProgressManagerStepBase)taskStep.Target.Progress.CurrentStep;

            if (targetStep == null)
            {
                return;
            }
            else if (!string.IsNullOrEmpty(targetStep.Name))
            {
                item.Text = WrapItemName(targetStep.Name);
            }

            //Determine if the tag information of the step's progress manager is an
            //object array or a string.
            ProgressManagerBase targetStepProgress = targetStep.Progress;

            {
                object tag = targetStepProgress.Tag;
                if (tag == null)
                {
                    if (string.IsNullOrEmpty(targetStep.Name))
                    {
                        item.Text = string.Empty;
                    }
                }
                else if (tag.GetType() == typeof(string))
                {
                    item.Text = (string)tag;
                }
                else if (tag.GetType() == typeof(int[]))
                {
                    pass.Text = S._("{0} out of {1}", ((int[])tag)[0], ((int[])tag)[1]);
                }
            }

            if (targetStepProgress.TimeLeft >= TimeSpan.Zero)
            {
                timeLeft.Text = S._("About {0} left", RoundToSeconds(targetStepProgress.TimeLeft));
            }
            else
            {
                timeLeft.Text = S._("Unknown");
            }

            if (!targetStepProgress.ProgressIndeterminate)
            {
                itemProgress.Style   = ProgressBarStyle.Continuous;
                itemProgress.Value   = (int)(targetStepProgress.Progress * 1000);
                itemProgressLbl.Text = targetStepProgress.Progress.ToString("#0%",
                                                                            CultureInfo.CurrentCulture);
            }
            else
            {
                itemProgress.Style   = ProgressBarStyle.Marquee;
                itemProgressLbl.Text = string.Empty;
            }

            if (!taskProgress.ProgressIndeterminate)
            {
                overallProgress.Style   = ProgressBarStyle.Continuous;
                overallProgress.Value   = (int)(taskProgress.Progress * 1000);
                overallProgressLbl.Text = S._("Total: {0,2:#0.00%}", taskProgress.Progress);
            }
            else
            {
                overallProgress.Style   = ProgressBarStyle.Marquee;
                overallProgressLbl.Text = S._("Total: Unknown");
            }
        }