/* TitleSpecificScan.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.ToolWindows { using System; using System.Linq; using System.Windows.Forms; using HandBrake.ApplicationServices; using HandBrake.ApplicationServices.Parsing; using HandBrake.ApplicationServices.Services.Interfaces; /// /// Title Specific Scan /// public partial class BatchAdd : Form { /// /// The standard display count texts /// private const string DisplayAddCount = "This will add {0} items."; /// /// The Source Data (IF Available) /// private readonly Source sourceData; /// /// The User Setting Service. /// private readonly IUserSettingService UserSettingService = ServiceManager.UserSettingService; /// /// Initializes a new instance of the class. /// /// /// The source Data. /// public BatchAdd(Source sourceData) { this.sourceData = sourceData; InitializeComponent(); // Get the Default values for batch encoding. this.minDuration.Text = this.UserSettingService.GetUserSetting(UserSettingConstants.BatchMinDuration); this.maxDuration.Text = this.UserSettingService.GetUserSetting(UserSettingConstants.BatchMaxDuration); this.UpdateEncodeDisplay(); } /// /// Button Cancel Click Event Handler /// /// The Sender /// The EventArgs private void BtnCancelClick(object sender, EventArgs e) { this.DialogResult = DialogResult.Cancel; } /// /// Button Scan Click Event Handler /// /// The Sender /// The EventArgs private void BtnScanClick(object sender, EventArgs e) { this.UserSettingService.SetUserSetting(UserSettingConstants.BatchMinDuration, this.minDuration.Text); this.UserSettingService.SetUserSetting(UserSettingConstants.BatchMaxDuration, this.maxDuration.Text); this.DialogResult = DialogResult.OK; } /// /// Gets the minimum duration that the user entered. /// public TimeSpan Min { get { TimeSpan title; TimeSpan.TryParse(this.minDuration.Text, out title); return title; } } /// /// Gets the maximum duration that the user entered. /// public TimeSpan Max { get { TimeSpan title; TimeSpan.TryParse(this.maxDuration.Text, out title); return title; } } /// /// Update the Display which shows the number of titles that will be added. /// private void UpdateEncodeDisplay() { int count = this.sourceData.Titles.Count(title => title.Duration.TotalSeconds > this.Min.TotalSeconds && title.Duration.TotalSeconds < this.Max.TotalSeconds); if (count > 0) { lbl_display.Text = string.Format(DisplayAddCount, count); lbl_display.Visible = true; } else { lbl_display.Visible = false; } } /// /// Min Duration has changed. /// /// /// The sender. /// /// /// The e. /// private void minDuration_TextChanged(object sender, EventArgs e) { this.UpdateEncodeDisplay(); } /// /// Max duration was changed /// /// /// The sender. /// /// /// The e. /// private void maxDuration_TextChanged(object sender, EventArgs e) { this.UpdateEncodeDisplay(); } } }