private void RefreshEncodeCompleteActions() { if (this.EncodeQueue == null || this.CompletedJobs == null) { return; } EncodeCompleteAction oldCompleteAction = this.EncodeCompleteAction; this.encodeCompleteActions = new List<EncodeCompleteAction> { new EncodeCompleteAction { ActionType = EncodeCompleteActionType.DoNothing }, new EncodeCompleteAction { ActionType = EncodeCompleteActionType.Sleep }, new EncodeCompleteAction { ActionType = EncodeCompleteActionType.LogOff }, new EncodeCompleteAction { ActionType = EncodeCompleteActionType.Shutdown }, }; // Applicable drives to eject are those in the queue or completed items list var applicableDrives = new HashSet<string>(); foreach (EncodeJobViewModel job in this.EncodeQueue) { if (job.Job.SourceType == SourceType.Dvd) { string driveLetter = job.Job.SourcePath.Substring(0, 1).ToUpperInvariant(); if (!applicableDrives.Contains(driveLetter)) { applicableDrives.Add(driveLetter); } } } foreach (EncodeResultViewModel result in this.CompletedJobs) { if (result.Job.Job.SourceType == SourceType.Dvd) { string driveLetter = result.Job.Job.SourcePath.Substring(0, 1).ToUpperInvariant(); if (!applicableDrives.Contains(driveLetter)) { applicableDrives.Add(driveLetter); } } } // Order backwards so repeated insertions put them in correct order var orderedDrives = from d in applicableDrives orderby d descending select d; foreach (string drive in orderedDrives) { this.encodeCompleteActions.Insert(1, new EncodeCompleteAction { ActionType = EncodeCompleteActionType.EjectDisc, DriveLetter = drive }); } this.RaisePropertyChanged(() => this.EncodeCompleteActions); // Transfer over the previously selected item this.encodeCompleteAction = this.encodeCompleteActions[0]; for (int i = 1; i < this.encodeCompleteActions.Count; i++) { if (this.encodeCompleteActions[i].Equals(oldCompleteAction)) { this.encodeCompleteAction = this.encodeCompleteActions[i]; break; } } this.RaisePropertyChanged(() => this.EncodeCompleteAction); }
public bool Equals(EncodeCompleteAction action2) { return(action2 != null && this.ActionType == action2.ActionType && this.DriveLetter == action2.DriveLetter); }
public bool Equals(EncodeCompleteAction action2) { return action2 != null && this.ActionType == action2.ActionType && this.DriveLetter == action2.DriveLetter; }