summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsr55 <[email protected]>2019-04-25 15:36:24 +0100
committersr55 <[email protected]>2019-04-25 15:36:24 +0100
commitabea2134024a3aedca3b2b5c9437ed3b5d17de72 (patch)
tree002f8f6abb3a602eff13318da0635313c2343073
parent0937a200e89bda04cbd6b7b231462be8b4701155 (diff)
WinGui: Refactor Filters View Model - (Rotate and Flip)
-rw-r--r--win/CS/HandBrakeWPF/HandBrakeWPF.csproj1
-rw-r--r--win/CS/HandBrakeWPF/ViewModelItems/Filters/RotateFlipFilter.cs110
-rw-r--r--win/CS/HandBrakeWPF/ViewModels/FiltersViewModel.cs65
-rw-r--r--win/CS/HandBrakeWPF/Views/FiltersView.xaml6
4 files changed, 122 insertions, 60 deletions
diff --git a/win/CS/HandBrakeWPF/HandBrakeWPF.csproj b/win/CS/HandBrakeWPF/HandBrakeWPF.csproj
index 9caf1ab38..ffee949ff 100644
--- a/win/CS/HandBrakeWPF/HandBrakeWPF.csproj
+++ b/win/CS/HandBrakeWPF/HandBrakeWPF.csproj
@@ -276,6 +276,7 @@
<Compile Include="ViewModelItems\Filters\DeinterlaceFilterItem.cs" />
<Compile Include="ViewModelItems\Filters\DenoiseItem.cs" />
<Compile Include="ViewModelItems\Filters\DetelecineItem.cs" />
+ <Compile Include="ViewModelItems\Filters\RotateFlipFilter.cs" />
<Compile Include="ViewModelItems\Filters\SharpenItem.cs" />
<Compile Include="ViewModels\Interfaces\IManagePresetViewModel.cs" />
<Compile Include="ViewModels\Interfaces\ISummaryViewModel.cs" />
diff --git a/win/CS/HandBrakeWPF/ViewModelItems/Filters/RotateFlipFilter.cs b/win/CS/HandBrakeWPF/ViewModelItems/Filters/RotateFlipFilter.cs
new file mode 100644
index 000000000..aba4a3d9c
--- /dev/null
+++ b/win/CS/HandBrakeWPF/ViewModelItems/Filters/RotateFlipFilter.cs
@@ -0,0 +1,110 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="RotateFlipFilter.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// Defines the RotateFlipFilter type.
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrakeWPF.ViewModelItems.Filters
+{
+ using System.ComponentModel;
+
+ using Caliburn.Micro;
+
+ using HandBrakeWPF.Services.Encode.Model;
+ using HandBrakeWPF.Services.Presets.Model;
+ using HandBrakeWPF.Services.Scan.Model;
+
+ using Action = System.Action;
+
+ public class RotateFlipFilter : PropertyChangedBase
+ {
+ private readonly Action triggerTabChanged;
+
+ public RotateFlipFilter(EncodeTask currentTask, Action triggerTabChanged)
+ {
+ this.triggerTabChanged = triggerTabChanged;
+ this.CurrentTask = currentTask;
+
+ }
+
+ public EncodeTask CurrentTask { get; private set; }
+
+ public BindingList<int> RotationOptions => new BindingList<int> { 0, 90, 180, 270 };
+
+ public int SelectedRotation
+ {
+ get
+ {
+ return this.CurrentTask.Rotation;
+ }
+
+ set
+ {
+ this.CurrentTask.Rotation = value;
+ this.NotifyOfPropertyChange(() => this.SelectedRotation);
+ this.triggerTabChanged();
+ }
+ }
+
+ public bool FlipVideo
+ {
+ get
+ {
+ return this.CurrentTask.FlipVideo;
+ }
+
+ set
+ {
+ this.CurrentTask.FlipVideo = value;
+ this.NotifyOfPropertyChange(() => this.FlipVideo);
+ this.triggerTabChanged();
+ }
+ }
+
+ public void SetPreset(Preset preset, EncodeTask task)
+ {
+ this.CurrentTask = task;
+
+ if (preset == null)
+ {
+ this.SelectedRotation = 0;
+ this.FlipVideo = false;
+ return;
+ }
+
+ this.SelectedRotation = preset.Task.Rotation;
+ this.FlipVideo = preset.Task.FlipVideo;
+
+ }
+
+ public void UpdateTask(EncodeTask task)
+ {
+ this.CurrentTask = task;
+ this.NotifyOfPropertyChange(() => this.FlipVideo);
+ this.NotifyOfPropertyChange(() => this.SelectedRotation);
+ }
+
+ public bool MatchesPreset(Preset preset)
+ {
+ if (preset.Task.Rotation != this.SelectedRotation)
+ {
+ return false;
+ }
+
+ if (preset.Task.FlipVideo != this.FlipVideo)
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+ public void SetSource(Source source, Title title, Preset preset, EncodeTask task)
+ {
+ this.CurrentTask = task;
+ }
+ }
+}
diff --git a/win/CS/HandBrakeWPF/ViewModels/FiltersViewModel.cs b/win/CS/HandBrakeWPF/ViewModels/FiltersViewModel.cs
index 4ee14632a..4f7565cda 100644
--- a/win/CS/HandBrakeWPF/ViewModels/FiltersViewModel.cs
+++ b/win/CS/HandBrakeWPF/ViewModels/FiltersViewModel.cs
@@ -39,8 +39,6 @@ namespace HandBrakeWPF.ViewModels
/// </summary>
public class FiltersViewModel : ViewModelBase, IFiltersViewModel
{
- #region Constructors and Destructors
-
public FiltersViewModel(IWindowManager windowManager, IUserSettingService userSettingService)
{
this.CurrentTask = new EncodeTask();
@@ -50,14 +48,11 @@ namespace HandBrakeWPF.ViewModels
this.DetelecineFilter = new DetelecineItem(this.CurrentTask, () => this.OnTabStatusChanged(null));
this.DeinterlaceFilter = new DeinterlaceFilterItem(this.CurrentTask, () => this.OnTabStatusChanged(null));
this.DeblockFilter = new DeblockFilter(this.CurrentTask, () => this.OnTabStatusChanged(null));
+ this.RotateFlipFilter = new RotateFlipFilter(this.CurrentTask, () => this.OnTabStatusChanged(null));
}
- #endregion
-
public event EventHandler<TabStatusEventArgs> TabStatusChanged;
- #region Properties
-
public EncodeTask CurrentTask { get; private set; }
public bool Grayscale
@@ -85,42 +80,8 @@ namespace HandBrakeWPF.ViewModels
public DeblockFilter DeblockFilter { get; set; }
-
-
- public BindingList<int> RotationOptions => new BindingList<int> { 0, 90, 180, 270 };
-
- public int SelectedRotation
- {
- get
- {
- return this.CurrentTask.Rotation;
- }
-
- set
- {
- this.CurrentTask.Rotation = value;
- this.NotifyOfPropertyChange(() => this.SelectedRotation);
- this.OnTabStatusChanged(null);
- }
- }
-
- public bool FlipVideo
- {
- get
- {
- return this.CurrentTask.FlipVideo;
- }
-
- set
- {
- this.CurrentTask.FlipVideo = value;
- this.NotifyOfPropertyChange(() => this.FlipVideo);
- this.OnTabStatusChanged(null);
- }
- }
-
- #endregion
-
+ public RotateFlipFilter RotateFlipFilter { get; set; }
+
public void SetPreset(Preset preset, EncodeTask task)
{
this.CurrentTask = task;
@@ -135,17 +96,12 @@ namespace HandBrakeWPF.ViewModels
this.DetelecineFilter.SetPreset(preset, task);
this.DeinterlaceFilter.SetPreset(preset, task);
this.DeblockFilter.SetPreset(preset, task);
-
- this.SelectedRotation = preset.Task.Rotation;
- this.FlipVideo = preset.Task.FlipVideo;
+ this.RotateFlipFilter.SetPreset(preset, task);
}
else
{
// Default everything to off
this.Grayscale = false;
-
- this.SelectedRotation = 0;
- this.FlipVideo = false;
}
}
@@ -154,14 +110,12 @@ namespace HandBrakeWPF.ViewModels
this.CurrentTask = task;
this.NotifyOfPropertyChange(() => this.Grayscale);
- this.NotifyOfPropertyChange(() => this.FlipVideo);
- this.NotifyOfPropertyChange(() => this.SelectedRotation);
-
this.SharpenFilter.UpdateTask(task);
this.DenoiseFilter.UpdateTask(task);
this.DetelecineFilter.UpdateTask(task);
this.DeinterlaceFilter.UpdateTask(task);
this.DeblockFilter.UpdateTask(task);
+ this.RotateFlipFilter.UpdateTask(task);
}
public bool MatchesPreset(Preset preset)
@@ -191,20 +145,16 @@ namespace HandBrakeWPF.ViewModels
return false;
}
- if (preset.Task.Grayscale != this.Grayscale)
+ if (!this.RotateFlipFilter.MatchesPreset(preset))
{
return false;
}
- if (preset.Task.Rotation != this.SelectedRotation)
+ if (preset.Task.Grayscale != this.Grayscale)
{
return false;
}
- if (preset.Task.FlipVideo != this.FlipVideo)
- {
- return false;
- }
return true;
}
@@ -217,6 +167,7 @@ namespace HandBrakeWPF.ViewModels
this.DetelecineFilter.SetSource(source, title, preset, task);
this.DeinterlaceFilter.SetSource(source, title, preset, task);
this.DeblockFilter.SetSource(source, title, preset, task);
+ this.RotateFlipFilter.SetSource(source, title, preset, task);
}
protected virtual void OnTabStatusChanged(TabStatusEventArgs e)
diff --git a/win/CS/HandBrakeWPF/Views/FiltersView.xaml b/win/CS/HandBrakeWPF/Views/FiltersView.xaml
index 2030c5fae..d3aa13793 100644
--- a/win/CS/HandBrakeWPF/Views/FiltersView.xaml
+++ b/win/CS/HandBrakeWPF/Views/FiltersView.xaml
@@ -182,12 +182,12 @@
<!-- Rotation -->
<TextBlock Text="{x:Static Properties:Resources.FiltersView_Rotate}" Grid.Row="7" Grid.Column="0" Margin="0,0,0,0"/>
- <ComboBox Width="120" ItemsSource="{Binding RotationOptions}" Grid.Row="7" Grid.Column="1"
- SelectedItem="{Binding SelectedRotation}" ToolTip="{x:Static Properties:ResourcesTooltips.FilterView_Rotate}"
+ <ComboBox Width="120" ItemsSource="{Binding RotateFlipFilter.RotationOptions}" Grid.Row="7" Grid.Column="1"
+ SelectedItem="{Binding RotateFlipFilter.SelectedRotation}" ToolTip="{x:Static Properties:ResourcesTooltips.FilterView_Rotate}"
AutomationProperties.Name="{x:Static Properties:Resources.FiltersView_Rotate}"
HorizontalAlignment="Left" VerticalAlignment="Center" />
- <CheckBox Content="{x:Static Properties:Resources.FiltersView_FlipVideo}" Margin="5,0,0,0" VerticalAlignment="Center" Grid.Row="7" Grid.Column="2" IsChecked="{Binding FlipVideo, UpdateSourceTrigger=PropertyChanged}"
+ <CheckBox Content="{x:Static Properties:Resources.FiltersView_FlipVideo}" Margin="5,0,0,0" VerticalAlignment="Center" Grid.Row="7" Grid.Column="2" IsChecked="{Binding RotateFlipFilter.FlipVideo, UpdateSourceTrigger=PropertyChanged}"
ToolTip="{x:Static Properties:ResourcesTooltips.FilterView_Flip}"/>
</Grid>