Ignore:
Timestamp:
1/13/2010 4:29:25 AM (2 years ago)
Author:
lowjoel
Message:

Merged the SpeedMeter? branch to trunk. Fixes #90: Generic speed meter

Location:
trunk/eraser6
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/eraser6

  • trunk/eraser6/Eraser/ProgressForm.cs

    r1360 r1515  
    3131using Eraser.Util; 
    3232using System.Globalization; 
     33using ProgressChangedEventArgs = Eraser.Manager.ProgressChangedEventArgs; 
    3334 
    3435namespace Eraser 
     
    5152            task.ProgressChanged += task_ProgressChanged; 
    5253            task.TaskFinished += task_TaskFinished; 
     54 
     55            //Set the current progress 
     56            if (task.Progress.CurrentStep != null) 
     57                UpdateProgress((SteppedProgressManager)task.Progress.CurrentStep.Progress, 
     58                    new ProgressChangedEventArgs(task.Progress.CurrentStep.Progress, null)); 
    5359        } 
    5460 
     
    5965        } 
    6066 
    61         private void task_ProgressChanged(object sender, TaskProgressEventArgs e) 
     67        private void task_ProgressChanged(object sender, ProgressChangedEventArgs e) 
    6268        { 
    6369            if (InvokeRequired) 
     
    6874 
    6975                lastUpdate = DateTime.Now; 
    70                 Invoke(new EventHandler<TaskProgressEventArgs>(task_ProgressChanged), sender, e); 
    71                 return; 
    72             } 
    73  
    74             status.Text = e.CurrentTargetStatus; 
    75             item.Text = WrapItemName(e.CurrentItemName); 
    76             pass.Text = e.CurrentTargetTotalPasses != 0 ? 
    77                 S._("{0} out of {1}", e.CurrentItemPass, e.CurrentTargetTotalPasses) : 
    78                 e.CurrentItemPass.ToString(CultureInfo.CurrentCulture); 
    79  
    80             if (e.TimeLeft >= TimeSpan.Zero) 
    81                 timeLeft.Text = S._("About {0:T} left", e.TimeLeft); 
    82             else 
    83                 timeLeft.Text = S._("Unknown"); 
    84  
    85             if (e.CurrentItemProgress >= 0.0f) 
    86             { 
    87                 itemProgress.Style = ProgressBarStyle.Continuous; 
    88                 itemProgress.Value = (int)(e.CurrentItemProgress * 1000); 
    89                 itemProgressLbl.Text = e.CurrentItemProgress.ToString("#0%", 
    90                     CultureInfo.CurrentCulture); 
    91             } 
    92             else 
    93             { 
    94                 itemProgress.Style = ProgressBarStyle.Marquee; 
    95                 itemProgressLbl.Text = string.Empty; 
    96             } 
    97  
    98             overallProgress.Value = (int)(e.OverallProgress * 1000); 
    99             overallProgressLbl.Text = S._("Total: {0,2:#0.00%}", e.OverallProgress); 
     76                Invoke((EventHandler<ProgressChangedEventArgs>)task_ProgressChanged, sender, e); 
     77                return; 
     78            } 
     79 
     80            ErasureTarget target = sender as ErasureTarget; 
     81            if (target == null) 
     82                return; 
     83 
     84            SteppedProgressManager progress = target.Progress as SteppedProgressManager; 
     85            if (progress == null) 
     86                return; 
     87 
     88            UpdateProgress(progress, e); 
    10089        } 
    10190 
     
    155144                task.Cancel(); 
    156145            Close(); 
     146        } 
     147 
     148        private void UpdateProgress(SteppedProgressManager targetProgress, ProgressChangedEventArgs e) 
     149        { 
     150            TaskProgressChangedEventArgs e2 = (TaskProgressChangedEventArgs)e.UserState; 
     151 
     152            status.Text = targetProgress.CurrentStep.Name; 
     153            if (e2 != null) 
     154            { 
     155                item.Text = WrapItemName(e2.ItemName); 
     156                pass.Text = e2.ItemTotalPasses != 0 ? 
     157                    S._("{0} out of {1}", e2.ItemPass, e2.ItemTotalPasses) : 
     158                    e2.ItemPass.ToString(CultureInfo.CurrentCulture); 
     159            } 
     160 
     161            if (targetProgress.TimeLeft >= TimeSpan.Zero) 
     162                timeLeft.Text = S._("About {0} left", RoundToSeconds(targetProgress.TimeLeft)); 
     163            else 
     164                timeLeft.Text = S._("Unknown"); 
     165 
     166            if (targetProgress.Progress >= 0.0f) 
     167            { 
     168                itemProgress.Style = ProgressBarStyle.Continuous; 
     169                itemProgress.Value = (int)(targetProgress.Progress * 1000); 
     170                itemProgressLbl.Text = targetProgress.Progress.ToString("#0%", 
     171                    CultureInfo.CurrentCulture); 
     172            } 
     173            else 
     174            { 
     175                itemProgress.Style = ProgressBarStyle.Marquee; 
     176                itemProgressLbl.Text = string.Empty; 
     177            } 
     178 
     179            overallProgress.Value = (int)(task.Progress.Progress * 1000); 
     180            overallProgressLbl.Text = S._("Total: {0,2:#0.00%}", task.Progress.Progress); 
    157181        } 
    158182 
     
    185209            return result.ToString(); 
    186210        } 
     211 
     212        private TimeSpan RoundToSeconds(TimeSpan span) 
     213        { 
     214            return new TimeSpan(span.Ticks - span.Ticks % TimeSpan.TicksPerSecond); 
     215        } 
    187216    } 
    188217} 
Note: See TracChangeset for help on using the changeset viewer.