Skip to content

Commit

Permalink
Merge remote-tracking branch 'refs/remotes/origin/development'
Browse files Browse the repository at this point in the history
  • Loading branch information
Tichau committed Nov 7, 2015
2 parents d7f25f6 + 34a2990 commit e804355
Show file tree
Hide file tree
Showing 66 changed files with 3,278 additions and 767 deletions.
43 changes: 17 additions & 26 deletions Application/FileConverter/Application.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,14 @@ namespace FileConverter
using System.Threading;
using System.Windows;

using FileConverter.ConversionJobs;

public partial class Application : System.Windows.Application
{
private static readonly Version Version = new Version()
{
Major = 0,
Minor = 2,
Minor = 3,
};

private readonly List<ConversionJob> conversionJobs = new List<ConversionJob>();
Expand Down Expand Up @@ -84,7 +86,7 @@ public void CancelAutoExit()
{
this.cancelAutoExit = true;
}

private void Initialize()
{
// Load settigns.
Expand All @@ -100,17 +102,11 @@ private void Initialize()
if (args.Length <= 1)
{
this.debugMode = true;
System.Array.Resize(ref args, 9);
System.Array.Resize(ref args, 5);
args[1] = "--conversion-preset";
args[2] = "To Mp3";
args[3] = @"D:\Projects\FileConverter\TestFiles\Herbie Hancock - Speak Like A Child [RVG Edition].flac";
args[3] = @"D:\Projects\FileConverter\TestFiles\01 - Le Bruit Du Bang.wma";
args[4] = @"D:\Projects\FileConverter\TestFiles\test\Toccata.wav";
args[5] = @"D:\Projects\FileConverter\TestFiles\test\Toccata - Copie (4).wav";
args[5] = "--verbose";
args[6] = @"D:\Projects\FileConverter\TestFiles\test\Toccata - Copie (3).wav";
args[7] = @"D:\Projects\FileConverter\TestFiles\test\Toccata - Copie (2).wav";
args[8] = @"D:\Projects\FileConverter\TestFiles\test\Toccata - Copie (5).wav";
args[3] = "--verbose";
args[4] = @"D:\Test\10 - Get around town (lp version).ogg";

System.Array.Resize(ref args, 2);
args[1] = "--settings";
Expand Down Expand Up @@ -151,15 +147,15 @@ private void Initialize()
case "conversion-preset":
if (index >= args.Length - 1)
{
MessageBox.Show(string.Format("ERROR ! Invalid format."), "Error", MessageBoxButton.OK, MessageBoxImage.Error);
MessageBox.Show(string.Format("Invalid format. (code 0x01)"), "Error", MessageBoxButton.OK, MessageBoxImage.Error);
Dispatcher.BeginInvoke((Action)(() => Application.Current.Shutdown()));
return;
}

conversionPreset = Settings.GetPresetFromName(args[index + 1]);
if (conversionPreset == null)
{
MessageBox.Show(string.Format("Invalid conversion preset '{0}'.", args[index + 1]), "Error", MessageBoxButton.OK, MessageBoxImage.Error);
MessageBox.Show(string.Format("Invalid conversion preset '{0}'. (code 0x02)", args[index + 1]), "Error", MessageBoxButton.OK, MessageBoxImage.Error);
Dispatcher.BeginInvoke((Action)(() => Application.Current.Shutdown()));
return;
}
Expand Down Expand Up @@ -195,7 +191,9 @@ private void Initialize()
for (int index = 0; index < filePaths.Count; index++)
{
string inputFilePath = filePaths[index];
ConversionJob conversionJob = new ConversionJob(conversionPreset, inputFilePath);
ConversionJob conversionJob = ConversionJobFactory.Create(conversionPreset);
conversionJob.PrepareConversion(inputFilePath);

this.conversionJobs.Add(conversionJob);
}

Expand All @@ -207,23 +205,16 @@ private void ConvertFiles()
for (int index = 0; index < this.conversionJobs.Count; index++)
{
ConversionJob conversionJob = this.conversionJobs[index];
if (conversionJob.State != ConversionJob.ConversionState.Ready)
{
continue;
}

conversionJob.StartConvertion();

if (System.IO.File.Exists(conversionJob.OutputFilePath))
{
Diagnostics.Log("Success!");

if (this.debugMode)
{
Diagnostics.Log("Delete file {0}.", conversionJob.OutputFilePath);
try
{
System.IO.File.Delete(conversionJob.OutputFilePath);
}
catch
{
}
}
}
else
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:valueConverters="clr-namespace:FileConverter.ValueConverters" x:Name="userControl"
x:Class="FileConverter.Controls.EncodingQualitySliderControl"
mc:Ignorable="d" d:DesignWidth="300" Height="50">
<UserControl.Resources>
<valueConverters:BitrateToString x:Key="BitrateToString"/>
</UserControl.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="65"/>
</Grid.ColumnDefinitions>

<Slider Grid.Column="0" x:Name="slider" Margin="0,2,0,0" VerticalAlignment="Top" Maximum="245" AutoToolTipPlacement="TopLeft" SmallChange="8" IsSnapToTickEnabled="True" IsSelectionRangeEnabled="True" SelectionStart="115" SelectionEnd="245" Minimum="65" TickPlacement="BottomRight" LargeChange="32" TickFrequency="8" Ticks="65 85 100 115 130 165 175 190 225 245" Foreground="#004B82" />
<Label Grid.Column="1" Content="{Binding Value, Converter={StaticResource BitrateToString}, ElementName=slider, Mode=OneWay}" Width="65" />
<Label Grid.Column="0" Grid.Row="1" Content="Recommended bitrate range in blue" Foreground="#E5004B82" FontSize="11" />
</Grid>
</UserControl>
Original file line number Diff line number Diff line change
@@ -0,0 +1,181 @@
// <copyright file="EncodingQualitySliderControl.xaml.cs" company="AAllard">License: http://www.gnu.org/licenses/gpl.html GPL version 3.</copyright>

namespace FileConverter.Controls
{
using System.Diagnostics;
using System.Windows;
using System.Windows.Controls;

/// <summary>
/// Interaction logic for EncodingQualitySliderControl.
/// </summary>
public partial class EncodingQualitySliderControl : UserControl
{
public static readonly DependencyProperty BitrateProperty = DependencyProperty.Register(
"Bitrate",
typeof(double),
typeof(EncodingQualitySliderControl),
new FrameworkPropertyMetadata(new PropertyChangedCallback(EncodingQualitySliderControl.OnBitrateValueChanged), new CoerceValueCallback(EncodingQualitySliderControl.CoerceBitrateValue)));

public static readonly DependencyProperty EncodingModeProperty = DependencyProperty.Register(
"EncodingMode",
typeof(EncodingMode),
typeof(EncodingQualitySliderControl),
new PropertyMetadata(new PropertyChangedCallback(EncodingQualitySliderControl.OnEncodingModeValueChanged)));

public EncodingQualitySliderControl()
{
this.InitializeComponent();

this.CoerceValue(EncodingQualitySliderControl.BitrateProperty);

this.slider.ValueChanged += this.Slider_ValueChanged;
}

public EncodingMode EncodingMode
{
get
{
return (EncodingMode)this.GetValue(EncodingQualitySliderControl.EncodingModeProperty);
}

set
{
this.SetCurrentValue(EncodingQualitySliderControl.EncodingModeProperty, value);
}
}

public double Bitrate
{
get
{
return (double)this.GetValue(EncodingQualitySliderControl.BitrateProperty);
}

set
{
this.SetCurrentValue(EncodingQualitySliderControl.BitrateProperty, this.GetNearestTickValue(value));
}
}

private static void OnBitrateValueChanged(DependencyObject sender, DependencyPropertyChangedEventArgs eventArgs)
{
EncodingQualitySliderControl encodingQualitySliderControl = sender as EncodingQualitySliderControl;
encodingQualitySliderControl.slider.Value = (double)eventArgs.NewValue;
}

private static object CoerceBitrateValue(DependencyObject sender, object basevalue)
{
EncodingQualitySliderControl encodingQualitySliderControl = sender as EncodingQualitySliderControl;
return encodingQualitySliderControl.GetNearestTickValue((double)basevalue);
}

private static void OnEncodingModeValueChanged(DependencyObject sender, DependencyPropertyChangedEventArgs eventArgs)
{
EncodingQualitySliderControl encodingQualitySliderControl = sender as EncodingQualitySliderControl;
Slider sliderControl = encodingQualitySliderControl.slider;

switch (encodingQualitySliderControl.EncodingMode)
{
case EncodingMode.Mp3VBR:
{
sliderControl.Minimum = 65;
sliderControl.Maximum = 245;
sliderControl.SelectionStart = 115;
sliderControl.SelectionEnd = 245;
sliderControl.Ticks.Clear();
sliderControl.Ticks.Add(65);
sliderControl.Ticks.Add(85);
sliderControl.Ticks.Add(100);
sliderControl.Ticks.Add(115);
sliderControl.Ticks.Add(130);
sliderControl.Ticks.Add(165);
sliderControl.Ticks.Add(175);
sliderControl.Ticks.Add(190);
sliderControl.Ticks.Add(225);
sliderControl.Ticks.Add(245);
break;
}

case EncodingMode.Mp3CBR:
{
sliderControl.Minimum = 8;
sliderControl.Maximum = 320;
sliderControl.SelectionStart = 128;
sliderControl.SelectionEnd = 256;
sliderControl.Ticks.Clear();
sliderControl.Ticks.Add(8);
sliderControl.Ticks.Add(16);
sliderControl.Ticks.Add(24);
sliderControl.Ticks.Add(32);
sliderControl.Ticks.Add(40);
sliderControl.Ticks.Add(48);
sliderControl.Ticks.Add(64);
sliderControl.Ticks.Add(80);
sliderControl.Ticks.Add(96);
sliderControl.Ticks.Add(112);
sliderControl.Ticks.Add(128);
sliderControl.Ticks.Add(160);
sliderControl.Ticks.Add(192);
sliderControl.Ticks.Add(224);
sliderControl.Ticks.Add(256);
sliderControl.Ticks.Add(320);
break;
}

case EncodingMode.OggVBR:
{
sliderControl.Minimum = 32;
sliderControl.Maximum = 500;
sliderControl.SelectionStart = 80;
sliderControl.SelectionEnd = 192;
sliderControl.Ticks.Clear();
sliderControl.Ticks.Add(32);
sliderControl.Ticks.Add(48);
sliderControl.Ticks.Add(64);
sliderControl.Ticks.Add(80);
sliderControl.Ticks.Add(96);
sliderControl.Ticks.Add(112);
sliderControl.Ticks.Add(128);
sliderControl.Ticks.Add(160);
sliderControl.Ticks.Add(192);
sliderControl.Ticks.Add(224);
sliderControl.Ticks.Add(256);
sliderControl.Ticks.Add(320);
sliderControl.Ticks.Add(500);
break;
}
}

encodingQualitySliderControl.CoerceValue(EncodingQualitySliderControl.BitrateProperty);
}

private void Slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
if (this.Bitrate == e.NewValue)
{
return;
}

this.SetCurrentValue(EncodingQualitySliderControl.BitrateProperty, e.NewValue);
}

private double GetNearestTickValue(double value)
{
double minimumDifference = float.PositiveInfinity;
double nearestTick = value;
for (int index = 0; index < this.slider.Ticks.Count; index++)
{
double tick = this.slider.Ticks[index];
double difference = System.Math.Abs(value - tick);
if (difference < minimumDifference)
{
minimumDifference = difference;
nearestTick = tick;
}
}

return nearestTick;
}
}
}
Loading

0 comments on commit e804355

Please sign in to comment.