Changeset 1503
- Timestamp:
- 1/12/2010 3:02:04 AM (3 years ago)
- Location:
- branches/eraser6/SpeedMeter
- Files:
-
- 8 edited
-
Eraser.Manager/DirectExecutor.cs (modified) (16 diffs)
-
Eraser.Manager/ProgressManager.cs (modified) (15 diffs)
-
Eraser.Manager/Strings.en.resx (modified) (1 diff)
-
Eraser.Manager/Strings.it.resx (modified) (1 diff)
-
Eraser.Manager/Strings.nl.resx (modified) (1 diff)
-
Eraser.Manager/Strings.resx (modified) (1 diff)
-
Eraser.Manager/Task.cs (modified) (8 diffs)
-
Eraser/ProgressForm.cs (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/eraser6/SpeedMeter/Eraser.Manager/DirectExecutor.cs
r1502 r1503 364 364 FileSystem fsManager = FileSystemManager.Get(volInfo); 365 365 366 //Prepare our progress reporting machinery 367 TaskEventArgs eventArgs = new TaskEventArgs(task); 368 task.Progress.Start(); 366 //Start sampling the speed of the task. 367 SteppedProgressManager progress = new SteppedProgressManager(); 368 target.Progress = progress; 369 task.Progress.Steps.Add(new SteppedProgressManager.Step( 370 progress, 1.0f / task.Targets.Count)); 369 371 370 372 //Erase the cluster tips of every file on the drive. 371 373 if (target.EraseClusterTips) 372 374 { 373 eventArgs.CurrentTargetStatus = S._("Searching for files' cluster tips...");374 eventArgs.CurrentTargetTotalPasses = method.Passes;375 376 //Start counting statistics377 SteppedProgressManagerStep tipProgress = new SteppedProgressManagerStep(0.1f,378 S._("Erasing cluster tips..."));379 task.Progress.Steps.Add(tipProgress);380 tipProgress.Start();381 382 375 //Define the callback handlers 376 ProgressManager tipSearch = new ProgressManager(); 377 progress.Steps.Add(new SteppedProgressManager.Step(tipSearch, 378 0.0f, S._("Searching for files' cluster tips..."))); 379 tipSearch.Total = 1; 383 380 ClusterTipsSearchProgress searchProgress = delegate(string path) 384 381 { 385 eventArgs.CurrentItemName = path; 386 task.OnProgressChanged(eventArgs); 382 if (currentTask.Canceled) 383 throw new OperationCanceledException(S._("The task was cancelled.")); 384 385 task.OnProgressChanged(target, new TaskProgressEventArgs(task, 386 path, 0, 0)); 387 }; 388 389 ProgressManager tipProgress = new ProgressManager(); 390 progress.Steps.Add(new SteppedProgressManager.Step(tipProgress, 0.1f, 391 S._("Erasing cluster tips..."))); 392 ClusterTipsEraseProgress eraseProgress = 393 delegate(int currentFile, int totalFiles, string currentFilePath) 394 { 395 tipSearch.Completed = tipSearch.Total; 396 tipProgress.Total = totalFiles; 397 tipProgress.Completed = currentFile; 398 task.OnProgressChanged(target, new TaskProgressEventArgs(task, 399 currentFilePath, 0, 0)); 387 400 388 401 if (currentTask.Canceled) … … 390 403 }; 391 404 392 ClusterTipsEraseProgress eraseProgress = 393 delegate(int currentFile, int totalFiles, string currentFilePath) 394 { 395 tipProgress.Total = totalFiles; 396 tipProgress.Completed = currentFile; 397 398 eventArgs.CurrentItemName = currentFilePath; 399 task.OnProgressChanged(eventArgs); 400 401 if (currentTask.Canceled) 402 throw new OperationCanceledException(S._("The task was cancelled.")); 403 }; 404 405 //Start counting statistics 406 tipProgress.Start(); 405 407 fsManager.EraseClusterTips(VolumeInfo.FromMountpoint(target.Drive), 406 408 method, task.Log, searchProgress, eraseProgress); … … 416 418 Eraser.Util.File.SetCompression(info.FullName, false); 417 419 418 SteppedProgressManagerStep progress = new SteppedProgressManagerStep( 419 target.EraseClusterTips ? 0.9f : 0.8f, S._("Erasing unused space...")); 420 task.Progress.Steps.Add(progress); 420 ProgressManager mainProgress = new ProgressManager(); 421 progress.Steps.Add(new SteppedProgressManager.Step(mainProgress, 422 target.EraseClusterTips ? 0.9f : 0.8f, S._("Erasing unused space..."))); 423 mainProgress.Start(); 421 424 422 425 //Continue creating files while there is free space. 423 eventArgs.CurrentItemName = target.Drive;424 task.OnProgressChanged(eventArgs);425 progress.Start();426 427 426 while (volInfo.AvailableFreeSpace > 0) 428 427 { … … 460 459 delegate(long lastWritten, long totalData, int currentPass) 461 460 { 462 progress.Completed += lastWritten;463 progress.Total = totalData;464 eventArgs.CurrentItemPass = currentPass;465 task.OnProgressChanged(eventArgs);461 mainProgress.Completed += lastWritten; 462 mainProgress.Total = totalData; 463 task.OnProgressChanged(target, new TaskProgressEventArgs(task, 464 target.Drive, currentPass, method.Passes)); 466 465 467 466 if (currentTask.Canceled) … … 473 472 474 473 //Erase old resident file system table files 475 eventArgs.CurrentItemName = S._("Old resident file system table files"); 476 task.OnProgressChanged(eventArgs); 477 478 SteppedProgressManagerStep residentProgress = new SteppedProgressManagerStep(0.05f); 479 task.Progress.Steps.Add(residentProgress); 474 ProgressManager residentProgress = new ProgressManager(); 475 progress.Steps.Add(new SteppedProgressManager.Step(residentProgress, 476 0.05f, S._("Old resident file system table files"))); 480 477 residentProgress.Start(); 481 478 fsManager.EraseOldFileSystemResidentFiles(volInfo, info, method, … … 484 481 residentProgress.Completed = currentFile; 485 482 residentProgress.Total = totalFiles; 486 task.OnProgressChanged(eventArgs); 483 task.OnProgressChanged(target, new TaskProgressEventArgs(task, 484 string.Empty, 0, 0)); 487 485 488 486 if (currentTask.Canceled) … … 494 492 { 495 493 //Remove the folder holding all our temporary files. 496 eventArgs.CurrentTargetStatus = S._("Removing temporary files..."); 497 task.OnProgressChanged(eventArgs); 494 ProgressManager tempFiles = new ProgressManager(); 495 progress.Steps.Add(new SteppedProgressManager.Step(tempFiles, 496 0.0f, S._("Removing temporary files..."))); 497 task.OnProgressChanged(target, new TaskProgressEventArgs(task, string.Empty, 0, 0)); 498 498 fsManager.DeleteFolder(info); 499 499 } 500 500 501 501 //Then clean the old file system entries 502 SteppedProgressManagerStep structureProgress =503 new SteppedProgressManagerStep(0.05f, S._("Erasing unused directory structures..."));504 task.Progress.Steps.Add(structureProgress);502 ProgressManager structureProgress = new ProgressManager(); 503 progress.Steps.Add(new SteppedProgressManager.Step(structureProgress, 504 0.05f, S._("Erasing unused directory structures..."))); 505 505 structureProgress.Start(); 506 506 fsManager.EraseDirectoryStructures(volInfo, … … 515 515 516 516 //Set the event parameters, then broadcast the progress event. 517 task.OnProgressChanged(eventArgs); 517 task.OnProgressChanged(target, new TaskProgressEventArgs(task, 518 string.Empty, 0, 0)); 518 519 } 519 520 ); 521 522 target.Progress = null; 520 523 } 521 524 … … 541 544 TaskEventArgs eventArgs = new TaskEventArgs(task); 542 545 SteppedProgressManager progress = new SteppedProgressManager(); 546 target.Progress = progress; 547 task.Progress.Steps.Add(new SteppedProgressManager.Step(progress, 1.0f / task.Targets.Count)); 543 548 544 549 //Iterate over every path, and erase the path. … … 546 551 { 547 552 //Update the task progress 548 SteppedProgressManagerStep step = new SteppedProgressManagerStep( 549 i / (float)paths.Count, S._("Erasing files...")); 550 eventArgs.CurrentTarget = target; 551 eventArgs.CurrentItemName = paths[i]; 552 eventArgs.CurrentItemProgress = 0; 553 eventArgs.CurrentTargetTotalPasses = method.Passes; 554 task.OnProgressChanged(eventArgs); 553 ProgressManager step = new ProgressManager(); 554 progress.Steps.Add(new SteppedProgressManager.Step(step, 555 i / (float)paths.Count, S._("Erasing files..."))); 556 task.OnProgressChanged(target, new TaskProgressEventArgs( 557 task, paths[i], 0, method.Passes)); 555 558 556 559 //Get the filesystem provider to handle the secure file erasures … … 587 590 } 588 591 589 long itemWritten = 0;590 592 fsManager.EraseFileSystemObject(info, method, 591 593 delegate(long lastWritten, long totalData, int currentPass) 592 594 { 595 if (currentTask.Canceled) 596 throw new OperationCanceledException(S._("The task was cancelled.")); 597 593 598 step.Completed += lastWritten; 594 599 step.Total = totalData; 595 eventArgs.CurrentItemPass = currentPass; 596 task.OnProgressChanged(eventArgs); 597 598 if (currentTask.Canceled) 599 throw new OperationCanceledException(S._("The task was cancelled.")); 600 task.OnProgressChanged(target, new TaskProgressEventArgs(task, 601 info.FullName, currentPass, method.Passes)); 600 602 }); 601 603 … … 641 643 if (target is FolderTarget) 642 644 { 643 eventArgs.CurrentTargetStatus = S._("Removing folders..."); 645 ProgressManager step = new ProgressManager(); 646 progress.Steps.Add(new SteppedProgressManager.Step(step, 647 0.0f, S._("Removing folders..."))); 644 648 645 649 //Remove all subfolders which are empty. … … 651 655 foreach (DirectoryInfo subDir in info.GetDirectories()) 652 656 eraseEmptySubFolders(subDir); 653 654 eventArgs.CurrentItemName = info.FullName; 655 task.OnProgressChanged(eventArgs); 657 task.OnProgressChanged(target, new TaskProgressEventArgs( 658 task, info.FullName, 0, 0)); 656 659 657 660 FileSystemInfo[] files = info.GetFileSystemInfos(); … … 664 667 { 665 668 DirectoryInfo info = new DirectoryInfo(fldr.Path); 666 eventArgs.CurrentItemName = info.FullName;667 task.OnProgressChanged(eventArgs);669 task.OnProgressChanged(target, new TaskProgressEventArgs( 670 task, info.FullName, 0, 0)); 668 671 669 672 //See if this is the root of a volume. … … 679 682 fsManager.DeleteFolder(info); 680 683 } 684 685 target.Progress = null; 681 686 } 682 687 … … 684 689 if (target is RecycleBinTarget) 685 690 { 686 eventArgs.CurrentTargetStatus = S._("Emptying recycle bin..."); 687 task.OnProgressChanged(eventArgs); 691 ProgressManager step = new ProgressManager(); 692 progress.Steps.Add(new SteppedProgressManager.Step(step, 693 0.0f, S._("Emptying recycle bin..."))); 694 task.OnProgressChanged(target, new TaskProgressEventArgs(task, string.Empty, 0, 0)); 688 695 689 696 ShellApi.EmptyRecycleBin(EmptyRecycleBinOptions.NoConfirmation | -
branches/eraser6/SpeedMeter/Eraser.Manager/ProgressManager.cs
r1502 r1503 180 180 181 181 /// <summary> 182 /// Represents one step of the steps associated with the <see cref="SteppedProgressManager"/>183 /// </summary>184 public class SteppedProgressManagerStep : ProgressManager185 {186 /// <summary>187 /// Constructor.188 /// </summary>189 /// <param name="weight">The weight of this step. The weight is a decimal190 /// number in the range [0.0, 1.0] which represents the percentage of the191 /// entire process this particular step is.</param>192 /// <param name="name">A user-specified value of the name of this step.193 /// This value is not used by the class at all.</param>194 public SteppedProgressManagerStep(float weight, string name)195 {196 Weight = weight;197 Name = name;198 }199 200 /// <summary>201 /// The weight associated with this step.202 /// </summary>203 public float Weight204 {205 get;206 private set;207 }208 209 /// <summary>210 /// The name of this step.211 /// </summary>212 public string Name213 {214 get;215 set;216 }217 218 /// <summary>219 /// The <see cref="SteppedProgressManager"/> which manages this step.220 /// </summary>221 internal SteppedProgressManager Manager222 {223 get;224 set;225 }226 }227 228 /// <summary>229 182 /// Manages progress based on sub-tasks, taking each sub-task to be a step 230 183 /// in which the next step will not be executed until the current step is … … 236 189 { 237 190 /// <summary> 191 /// Represents one step in the list of steps to complete. 192 /// </summary> 193 public class Step 194 { 195 /// <summary> 196 /// Constructor. 197 /// </summary> 198 /// <param name="progress">The <see cref="ProgressManagerBase"/> instance 199 /// which measures the progress of this step.</param> 200 /// <param name="weight">The weight of this step. The weight is a decimal 201 /// number in the range [0.0, 1.0] which represents the percentage of the 202 /// entire process this particular step is.</param> 203 public Step(ProgressManagerBase progress, float weight) 204 : this(progress, weight, null) 205 { 206 } 207 208 /// <summary> 209 /// Constructor. 210 /// </summary> 211 /// <param name="progress">The <see cref="ProgressManagerBase"/> instance 212 /// which measures the progress of this step.</param> 213 /// <param name="weight">The weight of this step. The weight is a decimal 214 /// number in the range [0.0, 1.0] which represents the percentage of the 215 /// entire process this particular step is.</param> 216 /// <param name="name">A user-specified value of the name of this step. 217 /// This value is not used by the class at all.</param> 218 public Step(ProgressManagerBase progress, float weight, string name) 219 { 220 Progress = progress; 221 Weight = weight; 222 Name = name; 223 } 224 225 /// <summary> 226 /// The <see cref="ProgressManagerBase"/> instance which measures the 227 /// progress of the step. 228 /// </summary> 229 public ProgressManagerBase Progress 230 { 231 get; 232 set; 233 } 234 235 /// <summary> 236 /// The weight associated with this step. 237 /// </summary> 238 public float Weight 239 { 240 get; 241 private set; 242 } 243 244 /// <summary> 245 /// The name of this step. 246 /// </summary> 247 public string Name 248 { 249 get; 250 set; 251 } 252 } 253 254 /// <summary> 238 255 /// The class which manages the steps which comprise the overall progress. 239 256 /// </summary> 240 public class StepsList : IList<Step pedProgressManagerStep>257 public class StepsList : IList<Step> 241 258 { 242 259 public StepsList(SteppedProgressManager manager) 243 260 { 244 List = new List<Step pedProgressManagerStep>();261 List = new List<Step>(); 245 262 Manager = manager; 246 263 } 247 264 248 #region IList<Step pedProgressManagerStep> Members249 250 public int IndexOf(Step pedProgressManagerStepitem)265 #region IList<Step> Members 266 267 public int IndexOf(Step item) 251 268 { 252 269 return List.IndexOf(item); 253 270 } 254 271 255 public void Insert(int index, SteppedProgressManagerStep item) 256 { 257 if (item.Manager != null) 258 throw new ArgumentException("The step cannot be added to " + 259 "multiple SteppedProgressManager instances simultaneously."); 260 272 public void Insert(int index, Step item) 273 { 261 274 List.Insert(index, item); 262 item.Manager = Manager;263 275 TotalWeights += item.Weight; 264 276 } … … 267 279 { 268 280 TotalWeights -= List[index].Weight; 269 List[index].Manager = null;270 281 List.RemoveAt(index); 271 282 } 272 283 273 public Step pedProgressManagerStepthis[int index]284 public Step this[int index] 274 285 { 275 286 get … … 280 291 { 281 292 TotalWeights -= List[index].Weight; 282 List[index].Manager = null;283 284 293 List[index] = value; 285 294 TotalWeights += value.Weight; 286 value.Manager = Manager;287 295 } 288 296 } … … 290 298 #endregion 291 299 292 #region ICollection<Step pedProgressManagerStep> Members293 294 public void Add(Step pedProgressManagerStepitem)300 #region ICollection<Step> Members 301 302 public void Add(Step item) 295 303 { 296 304 List.Add(item); 297 305 TotalWeights += item.Weight; 298 item.Manager = Manager;299 306 } 300 307 301 308 public void Clear() 302 309 { 303 foreach (SteppedProgressManagerStep step in List)304 step.Manager = null;305 306 310 List.Clear(); 307 311 TotalWeights = 0; 308 312 } 309 313 310 public bool Contains(Step pedProgressManagerStepitem)314 public bool Contains(Step item) 311 315 { 312 316 return List.Contains(item); 313 317 } 314 318 315 public void CopyTo(Step pedProgressManagerStep[] array, int arrayIndex)319 public void CopyTo(Step[] array, int arrayIndex) 316 320 { 317 321 List.CopyTo(array, arrayIndex); … … 328 332 } 329 333 330 public bool Remove(Step pedProgressManagerStepitem)334 public bool Remove(Step item) 331 335 { 332 336 int index = List.IndexOf(item); 333 337 if (index != -1) 334 {335 338 TotalWeights -= List[index].Weight; 336 List[index].Manager = null;337 }338 339 339 340 return List.Remove(item); … … 342 343 #endregion 343 344 344 #region IEnumerable<Step pedProgressManagerStep> Members345 346 public IEnumerator<Step pedProgressManagerStep> GetEnumerator()345 #region IEnumerable<Step> Members 346 347 public IEnumerator<Step> GetEnumerator() 347 348 { 348 349 return List.GetEnumerator(); … … 382 383 /// The list storing the steps for this instance. 383 384 /// </summary> 384 private List<Step pedProgressManagerStep> List;385 private List<Step> List; 385 386 386 387 /// <summary> … … 410 411 float result = 0.0f; 411 412 412 foreach (Step pedProgressManagerStepstep in Steps)413 result += step.Progress * step.Weight;413 foreach (Step step in Steps) 414 result += step.Progress.Progress * step.Weight; 414 415 415 416 return result; … … 421 422 get 422 423 { 423 throw new NotSupportedException();424 return CurrentStep.Progress.Speed; 424 425 } 425 426 } … … 449 450 /// no steps are executing (also when the task is complete) 450 451 /// </summary> 451 public Step pedProgressManagerStepCurrentStep452 public Step CurrentStep 452 453 { 453 454 get … … 456 457 return null; 457 458 458 foreach (Step pedProgressManagerStepstep in Steps)459 if (step.Progress < 1.0f)459 foreach (Step step in Steps) 460 if (step.Progress.Progress < 1.0f) 460 461 return step; 461 462 … … 597 598 { 598 599 float result = 0.0f; 599 foreach ( SteppedProgressManagerStep stepin Tasks)600 result += s tep.Progress * (1.0f / Tasks.Count);600 foreach (ProgressManagerBase subTask in Tasks) 601 result += subTask.Progress * (1.0f / Tasks.Count); 601 602 602 603 return result; … … 609 610 { 610 611 int maxSpeed = 0; 611 foreach ( SteppedProgressManagerStep stepin Tasks)612 maxSpeed = Math.Max(s tep.Speed, maxSpeed);612 foreach (ProgressManagerBase subTask in Tasks) 613 maxSpeed = Math.Max(subTask.Speed, maxSpeed); 613 614 614 615 return maxSpeed; … … 621 622 { 622 623 TimeSpan maxTime = TimeSpan.MinValue; 623 foreach ( SteppedProgressManagerStep stepin Tasks)624 if (maxTime < s tep.TimeLeft)625 maxTime = s tep.TimeLeft;624 foreach (ProgressManagerBase subTask in Tasks) 625 if (maxTime < subTask.TimeLeft) 626 maxTime = subTask.TimeLeft; 626 627 627 628 return maxTime; -
branches/eraser6/SpeedMeter/Eraser.Manager/Strings.en.resx
r1502 r1503 136 136 <value>Searching for files' cluster tips...</value> 137 137 </data> 138 <data name="The task was cancelled." xml:space="preserve"> 139 <value>The task was cancelled.</value> 140 </data> 138 141 <data name="Erasing cluster tips..." xml:space="preserve"> 139 142 <value>Erasing cluster tips...</value> 140 143 </data> 141 <data name="The task was cancelled." xml:space="preserve">142 <value>The task was cancelled.</value>143 </data>144 144 <data name="Erasing unused space..." xml:space="preserve"> 145 145 <value>Erasing unused space..</value> -
branches/eraser6/SpeedMeter/Eraser.Manager/Strings.it.resx
r1502 r1503 136 136 <value>Ricerca dei cluster tips dei files...</value> 137 137 </data> 138 <data name="The task was cancelled." xml:space="preserve"> 139 <value>L'operazione è stata cancellata.</value> 140 </data> 138 141 <data name="Erasing cluster tips..." xml:space="preserve"> 139 142 <value>Pulizia dei cluster tips...</value> 140 143 </data> 141 <data name="The task was cancelled." xml:space="preserve">142 <value>L'operazione è stata cancellata.</value>143 </data>144 144 <data name="Erasing unused space..." xml:space="preserve"> 145 145 <value>Pulizia dello spazioni non usato...</value> -
branches/eraser6/SpeedMeter/Eraser.Manager/Strings.nl.resx
r1502 r1503 136 136 <value>(Untranslated)</value> 137 137 </data> 138 <data name="The task was cancelled." xml:space="preserve"> 139 <value>(Untranslated)</value> 140 </data> 138 141 <data name="Erasing cluster tips..." xml:space="preserve"> 139 142 <value>(Untranslated)</value> 140 143 </data> 141 <data name="The task was cancelled." xml:space="preserve">142 <value>(Untranslated)</value>143 </data>144 144 <data name="Erasing unused space..." xml:space="preserve"> 145 145 <value>(Untranslated)</value> -
branches/eraser6/SpeedMeter/Eraser.Manager/Strings.resx
r1502 r1503 136 136 <value>Searching for files' cluster tips...</value> 137 137 </data> 138 <data name="The task was cancelled." xml:space="preserve"> 139 <value>The task was cancelled.</value> 140 </data> 138 141 <data name="Erasing cluster tips..." xml:space="preserve"> 139 142 <value>Erasing cluster tips...</value> 140 143 </data> 141 <data name="The task was cancelled." xml:space="preserve">142 <value>The task was cancelled.</value>143 </data>144 144 <data name="Erasing unused space..." xml:space="preserve"> 145 145 <value>Erasing unused space...</value> -
branches/eraser6/SpeedMeter/Eraser.Manager/Task.cs
r1502 r1503 235 235 /// The event object holding all event handlers. 236 236 /// </summary> 237 public EventHandler<Task EventArgs> ProgressChanged { get; set; }237 public EventHandler<TaskProgressEventArgs> ProgressChanged { get; set; } 238 238 239 239 /// <summary> … … 266 266 /// Broadcasts a ProgressChanged event. 267 267 /// </summary> 268 /// <param name="sender">The <see cref="ErasureTarget"/> which is reporting 269 /// progress.</param> 268 270 /// <param name="e">The new progress value.</param> 269 internal void OnProgressChanged( TaskEventArgs e)271 internal void OnProgressChanged(ErasureTarget sender, TaskProgressEventArgs e) 270 272 { 271 273 if (ProgressChanged != null) 272 ProgressChanged( this, e);274 ProgressChanged(sender, e); 273 275 } 274 276 … … 367 369 368 370 /// <summary> 369 /// Gets the progress for this target. If this target is not currently 370 /// executing or if the target has completed, this property will return 371 /// null. 372 /// </summary> 373 public abstract ProgressManagerBase Progress 371 /// Erasure method to use for the target. 372 /// </summary> 373 private ErasureMethod method; 374 375 /// <summary> 376 /// The progress of this target. 377 /// </summary> 378 public ProgressManagerBase Progress 374 379 { 375 380 get; 376 protected set; 377 } 378 379 /// <summary> 380 /// Erasure method to use for the target. 381 /// </summary> 382 private ErasureMethod method; 381 internal set; 382 } 383 383 } 384 384 … … 571 571 /// </summary> 572 572 public bool EraseClusterTips { get; set; } 573 574 public override ProgressManagerBase Progress575 {576 get577 {578 return new ProgressManager();579 }580 protected set581 {582 throw new NotImplementedException();583 }584 }585 573 } 586 574 … … 619 607 result.Add(Path); 620 608 return result; 621 }622 623 public override ProgressManagerBase Progress624 {625 get626 {627 return new ProgressManager();628 }629 protected set630 {631 throw new NotImplementedException();632 }633 609 } 634 610 } … … 766 742 /// </summary> 767 743 public bool DeleteIfEmpty { get; set; } 768 769 public override ProgressManagerBase Progress770 {771 get772 {773 return new SteppedProgressManager();774 }775 protected set776 {777 throw new NotImplementedException();778 }779 }780 744 } 781 745 … … 862 826 } 863 827 } 864 865 public override ProgressManagerBase Progress866 {867 get868 {869 return new SteppedProgressManager();870 }871 protected set872 {873 throw new NotImplementedException();874 }875 }876 828 } 877 829 … … 1058 1010 public Task Task { get; private set; } 1059 1011 } 1012 1013 public class TaskProgressEventArgs : TaskEventArgs 1014 { 1015 /// <summary> 1016 /// Constructor. 1017 /// </summary> 1018 /// <param name="task">The task being referred to by this event.</param> 1019 /// <param name="itemName">The item whose erasure progress is being erased.</param> 1020 /// <param name="itemPass">The current pass number for this item.</param> 1021 /// <param name="itemTotalPasses">The total number of passes to complete erasure 1022 /// of this item.</param> 1023 public TaskProgressEventArgs(Task task, string itemName, int itemPass, 1024 int itemTotalPasses) 1025 : base(task) 1026 { 1027 ItemName = itemName; 1028 ItemPass = itemPass; 1029 ItemTotalPasses = itemTotalPasses; 1030 } 1031 1032 /// <summary> 1033 /// The file name of the item being erased. 1034 /// </summary> 1035 public string ItemName { get; private set; } 1036 1037 /// <summary> 1038 /// The pass number of a multi-pass erasure method. 1039 /// </summary> 1040 public int ItemPass { get; private set; } 1041 1042 /// <summary> 1043 /// The total number of passes to complete before this erasure method is 1044 /// completed. 1045 /// </summary> 1046 public int ItemTotalPasses { get; private set; } 1047 } 1060 1048 } -
branches/eraser6/SpeedMeter/Eraser/ProgressForm.cs
r1502 r1503 59 59 } 60 60 61 private void task_ProgressChanged(object sender, Task EventArgs e)61 private void task_ProgressChanged(object sender, TaskProgressEventArgs e) 62 62 { 63 63 if (InvokeRequired) … … 68 68 69 69 lastUpdate = DateTime.Now; 70 Invoke(new EventHandler<Task EventArgs>(task_ProgressChanged), sender, e);70 Invoke(new EventHandler<TaskProgressEventArgs>(task_ProgressChanged), sender, e); 71 71 return; 72 72 } 73 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); 74 ErasureTarget target = sender as ErasureTarget; 75 SteppedProgressManager progress = target.Progress as SteppedProgressManager; 76 status.Text = progress.CurrentStep.Name; 77 item.Text = WrapItemName(e.ItemName); 78 pass.Text = e.ItemTotalPasses != 0 ? 79 S._("{0} out of {1}", e.ItemPass, e.ItemTotalPasses) : 80 e.ItemPass.ToString(CultureInfo.CurrentCulture); 79 81 80 if ( e.TimeLeft >= TimeSpan.Zero)81 timeLeft.Text = S._("About {0:T} left", e.TimeLeft);82 if (target.Progress.TimeLeft >= TimeSpan.Zero) 83 timeLeft.Text = S._("About {0:T} left", target.Progress.TimeLeft); 82 84 else 83 85 timeLeft.Text = S._("Unknown"); 84 86 85 if ( e.CurrentItemProgress >= 0.0f)87 if (target.Progress.Progress >= 0.0f) 86 88 { 87 89 itemProgress.Style = ProgressBarStyle.Continuous; 88 itemProgress.Value = (int)( e.CurrentItemProgress * 1000);89 itemProgressLbl.Text = e.CurrentItemProgress.ToString("#0%",90 itemProgress.Value = (int)(target.Progress.Progress * 1000); 91 itemProgressLbl.Text = target.Progress.Progress.ToString("#0%", 90 92 CultureInfo.CurrentCulture); 91 93 }
Note: See TracChangeset
for help on using the changeset viewer.
