/* IQueueManager.cs $ This file is part of the HandBrake source code. Homepage: . It may be used under the terms of the GNU General Public License. */ namespace HandBrake.ApplicationServices.Services.Interfaces { using System; using System.Collections.ObjectModel; using HandBrake.ApplicationServices.Model; /// /// The Queue Manager Interface /// public interface IQueueManager { /// /// Fires when a job is Added, Removed or Re-Ordered. /// Should be used for triggering an update of the Queue Window. /// event EventHandler QueueChanged; /// /// Gets or sets Last Processed Job. /// This is set when the job is poped of the queue by GetNextJobForProcessing(); /// QueueTask LastProcessedJob { get; set; } /// /// Gets The current queue. /// ObservableCollection Queue { get; } /// /// Gets the number of jobs in the queue /// int Count { get; } /// /// Add a job to the Queue. /// This method is Thread Safe. /// /// /// The encode Job object. /// void Add(QueueTask job); /// /// Remove a job from the Queue. /// This method is Thread Safe /// /// /// The job. /// void Remove(QueueTask job); /// /// Reset a Queued Item from Error or Completed to Waiting /// /// /// The job. /// void ResetJobStatusToWaiting(QueueTask job); /// /// Clear down the Queue´s completed items /// void ClearCompleted(); /// /// Clear down all Queue Items /// void Clear(); /// /// Get the first job on the queue for processing. /// This also removes the job from the Queue and sets the LastProcessedJob /// /// /// An encode Job object. /// QueueTask GetNextJobForProcessing(); /// /// Moves an item up one position in the queue. /// /// The zero-based location of the job in the queue. void MoveUp(int index); /// /// Moves an item down one position in the queue. /// /// The zero-based location of the job in the queue. void MoveDown(int index); /// /// Backup any changes to the queue file /// /// /// If this is not null or empty, this will be used instead of the standard backup location. /// void BackupQueue(string exportPath); /// /// Restore a Queue from file or from the queue backup file. /// /// /// The import path. String.Empty or null will result in the default file being loaded. /// void RestoreQueue(string importPath); /// /// Checks the current queue for an existing instance of the specified destination. /// /// The destination of the encode. /// Whether or not the supplied destination is already in the queue. bool CheckForDestinationPathDuplicates(string destination); /// /// Create a batch script from the queue /// /// /// The path to the location for the script to be saved. /// /// /// True if sucessful /// bool WriteBatchScriptToFile(string path); } }