// --------------------------------------------------------------------------------------------------------------------
//
// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
//
//
// An object representing a scanned DVD
//
// --------------------------------------------------------------------------------------------------------------------
namespace HandBrake.ApplicationServices.Parsing
{
using System.Collections.Generic;
using System.IO;
using System.Runtime.Serialization;
using HandBrake.ApplicationServices.Services.Interfaces;
///
/// An object representing a scanned DVD
///
[DataContract]
public class Source
{
///
/// Initializes a new instance of the class.
/// Default constructor for this object
///
public Source()
{
Titles = new List
();
}
///
/// Gets or sets ScanPath.
/// The Path used by the Scan Service.
///
[DataMember]
public string ScanPath { get; set; }
///
/// Gets or sets Titles. A list of titles from the source
///
[DataMember]
public List Titles { get; set; }
///
/// Parse the StreamReader output into a List of Titles
///
///
/// The output.
///
///
///
/// A DVD object which contains a list of title inforamtion
///
public static Source Parse(StreamReader output, IUserSettingService userSettingService)
{
var thisDVD = new Source();
while (!output.EndOfStream)
{
if ((char) output.Peek() == '+')
thisDVD.Titles.AddRange(Title.ParseList(output.ReadToEnd(), userSettingService));
else
output.ReadLine();
}
return thisDVD;
}
///
/// Copy this Source to another Source Model
///
///
/// The source.
///
public void CopyTo(Source source)
{
source.Titles = this.Titles;
source.ScanPath = this.ScanPath;
}
}
}