// -------------------------------------------------------------------------------------------------------------------- // // This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. // // // We have multiple implementations of IScan. This is a wrapper class for the GUI so that the // implementation used is controllable via user settings. // Over time, this class will go away when the LibHB and process isolation code matures. // // -------------------------------------------------------------------------------------------------------------------- namespace HandBrakeWPF.Services { using System; using HandBrake.ApplicationServices.Parsing; using HandBrake.ApplicationServices.Services; using HandBrake.ApplicationServices.Services.Interfaces; using HandBrake.Interop.Interfaces; /// /// We have multiple implementations of IScan. This is a wrapper class for the GUI so that the /// implementation used is controllable via user settings. /// Over time, this class will go away when the LibHB and process isolation code matures. /// public class ScanServiceWrapper : IScanServiceWrapper { #region Constants and Fields /// /// The handbrake instance. /// public static IHandBrakeInstance HandbrakeInstance; /// /// The scan service. /// private readonly IScan scanService; #endregion #region Constructors and Destructors /// /// Initializes a new instance of the class. /// /// /// The user Setting Service. /// public ScanServiceWrapper(IUserSettingService userSettingService) { this.scanService = new LibScan(userSettingService); this.scanService.ScanCompleted += this.ScanServiceScanCompleted; this.scanService.ScanStared += this.ScanServiceScanStared; this.scanService.ScanStatusChanged += this.ScanServiceScanStatusChanged; } /// /// The scan service scan status changed event /// /// /// The sender. /// /// /// The ScanProgressEventArgs. /// private void ScanServiceScanStatusChanged(object sender, HandBrake.ApplicationServices.EventArgs.ScanProgressEventArgs e) { this.ScanStatusChanged(sender, e); } /// /// The scan service scan stared event /// /// /// The sender. /// /// /// The EventArgs /// private void ScanServiceScanStared(object sender, EventArgs e) { this.ScanStared(sender, e); } /// /// The scan service scan completed event /// /// /// The sender. /// /// /// The ScanCompletedEventArgs /// private void ScanServiceScanCompleted(object sender, HandBrake.ApplicationServices.EventArgs.ScanCompletedEventArgs e) { this.ScanCompleted(sender, e); } #endregion #region Events /// /// The scan completed. /// public event ScanCompletedStatus ScanCompleted; /// /// The scan stared. /// public event EventHandler ScanStared; /// /// The scan status changed. /// public event ScanProgessStatus ScanStatusChanged; #endregion #region Properties /// /// Gets ActivityLog. /// public string ActivityLog { get { return this.scanService.ActivityLog; } } /// /// Gets a value indicating whether IsScanning. /// public bool IsScanning { get { return this.scanService.IsScanning; } } /// /// Gets the Souce Data. /// public Source SouceData { get { return this.scanService.SouceData; } } #endregion #region Implemented Interfaces #region IScan /// /// Scan a Source Path. /// Title 0: scan all /// /// /// Path to the file to scan /// /// /// int title number. 0 for scan all /// /// /// The preview Count. /// /// /// The post Action. /// public void Scan(string sourcePath, int title, int previewCount, Action postAction) { this.scanService.Scan(sourcePath, title, previewCount, postAction); } /// /// Kill the scan /// public void Stop() { this.scanService.Stop(); } #endregion #endregion } }