Skip to content

Commit 201f1d3

Browse files
author
RandomEngy
committed
Refactoring: breaking out functionality from MainViewModel. Output path generation, preset handling, encode/queue processing, window management.
1 parent 124cfa9 commit 201f1d3

28 files changed

Lines changed: 3264 additions & 2983 deletions

Installer/VidCoder-x64.iss

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ Source: "..\VidCoder\bin\x64\Release\VidCoder.XmlSerializers.dll"; DestDir: "{ap
3232
Source: "..\Lib\Ookii.Dialogs.Wpf.dll"; DestDir: "{app}"
3333
Source: "..\Lib\Ookii.Dialogs.Wpf.pdb"; DestDir: "{app}"
3434
Source: "..\Lib\Microsoft.Practices.Unity.dll"; DestDir: "{app}"
35-
Source: "..\Lib\Microsoft.Practices.Unity.Configuration.dll"; DestDir: "{app}"
3635
Source: "..\Lib\Hardcodet.Wpf.TaskbarNotification.dll"; DestDir: "{app}"
3736
Source: "..\VidCoder\BuiltInPresets.xml"; DestDir: "{app}"
3837
Source: "..\Lib\x64\hb.dll"; DestDir: "{app}"

Installer/VidCoder-x86.iss

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ Source: "..\VidCoder\bin\x86\Release\VidCoder.XmlSerializers.dll"; DestDir: "{ap
2929
Source: "..\Lib\Ookii.Dialogs.Wpf.dll"; DestDir: "{app}"
3030
Source: "..\Lib\Ookii.Dialogs.Wpf.pdb"; DestDir: "{app}"
3131
Source: "..\Lib\Microsoft.Practices.Unity.dll"; DestDir: "{app}"
32-
Source: "..\Lib\Microsoft.Practices.Unity.Configuration.dll"; DestDir: "{app}"
3332
Source: "..\Lib\Hardcodet.Wpf.TaskbarNotification.dll"; DestDir: "{app}"
3433
Source: "..\VidCoder\BuiltInPresets.xml"; DestDir: "{app}"
3534
Source: "..\Lib\x86\hb.dll"; DestDir: "{app}"
-84.8 KB
Binary file not shown.

VidCoder/App.xaml.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
using HandBrake.Interop;
1414
using VidCoder.View;
1515
using Microsoft.Practices.Unity;
16-
using Microsoft.Practices.Unity.Configuration;
1716

1817
namespace VidCoder
1918
{
@@ -24,14 +23,11 @@ public partial class App : Application
2423
{
2524
protected override void OnStartup(StartupEventArgs e)
2625
{
27-
Unity.Container = new UnityContainer().LoadConfiguration();
2826
#if !DEBUG
2927
this.DispatcherUnhandledException += this.OnDispatcherUnhandledException;
3028
#endif
3129
base.OnStartup(e);
3230

33-
Unity.Container.RegisterInstance(this);
34-
3531
// Upgrade from previous user settings.
3632
if (Settings.Default.ApplicationVersion != Utilities.CurrentVersion)
3733
{

VidCoder/Services/PresetImportExport.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,24 @@
44
using System.Linq;
55
using System.Text;
66
using System.Xml.Linq;
7+
using Microsoft.Practices.Unity;
78
using VidCoder.Model;
89
using VidCoder.Properties;
910
using VidCoder.ViewModel;
11+
using VidCoder.ViewModel.Components;
1012

1113
namespace VidCoder.Services
1214
{
1315
public class PresetImportExport : IPresetImportExport
1416
{
1517
private IFileService fileService;
1618
private IMessageBoxService messageBoxService;
17-
private MainViewModel mainViewModel;
19+
private PresetsViewModel presetsViewModel = Unity.Container.Resolve<PresetsViewModel>();
1820

19-
public PresetImportExport(IFileService fileService, IMessageBoxService messageBoxService, MainViewModel mainViewModel)
21+
public PresetImportExport(IFileService fileService, IMessageBoxService messageBoxService)
2022
{
2123
this.fileService = fileService;
2224
this.messageBoxService = messageBoxService;
23-
this.mainViewModel = mainViewModel;
2425
}
2526

2627
public void ImportPreset(string presetFile)
@@ -53,7 +54,7 @@ public void ImportPreset(string presetFile)
5354

5455
this.messageBoxService.Show("Successfully imported preset " + preset.Name + ".", "Success", System.Windows.MessageBoxButton.OK);
5556

56-
this.mainViewModel.AddPreset(preset);
57+
this.presetsViewModel.AddPreset(preset);
5758
}
5859

5960
public void ExportPreset(Preset preset)

VidCoder/Utilities/FileCleanup.cs

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Diagnostics;
4+
using System.IO;
5+
using System.Linq;
6+
using System.Text;
7+
8+
namespace VidCoder
9+
{
10+
public static class FileCleanup
11+
{
12+
public static void CleanPreviewFileCache()
13+
{
14+
try
15+
{
16+
var cacheFolder = new DirectoryInfo(Utilities.ImageCacheFolder);
17+
DirectoryInfo[] processDirectories = cacheFolder.GetDirectories();
18+
19+
int ourPid = Process.GetCurrentProcess().Id;
20+
21+
Process[] processes = Process.GetProcesses();
22+
var pidSet = new HashSet<int>(processes.Select(p => p.Id));
23+
24+
foreach (DirectoryInfo processDirectory in processDirectories)
25+
{
26+
int directoryPid;
27+
if (int.TryParse(processDirectory.Name, out directoryPid))
28+
{
29+
if (directoryPid == ourPid || !pidSet.Contains(directoryPid))
30+
{
31+
try
32+
{
33+
Utilities.DeleteDirectory(processDirectory.FullName);
34+
}
35+
catch (IOException)
36+
{
37+
// Ignore failed cleanup. Move on to the next folder.
38+
}
39+
}
40+
}
41+
42+
}
43+
}
44+
catch (IOException)
45+
{
46+
// Ignore failed cleanup. Will get done some other time.
47+
}
48+
}
49+
50+
public static void CleanOldLogs()
51+
{
52+
string logsFolder = Path.Combine(Utilities.AppFolder, "Logs");
53+
string[] logFiles = Directory.GetFiles(logsFolder);
54+
55+
// Files are named by date so are in chronological order. Keep the most recent 10 files.
56+
for (int i = 0; i < logFiles.Length - 10; i++)
57+
{
58+
try
59+
{
60+
File.Delete(logFiles[i]);
61+
}
62+
catch (IOException)
63+
{
64+
// Just ignore failed deletes. They'll get cleaned up some other time.
65+
}
66+
}
67+
}
68+
}
69+
}

VidCoder/Utilities/Unity.cs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,38 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.ComponentModel;
34
using System.Linq;
45
using System.Text;
56
using Microsoft.Practices.Unity;
7+
using VidCoder.Services;
8+
using VidCoder.ViewModel;
9+
using VidCoder.ViewModel.Components;
610

711
namespace VidCoder
812
{
913
public static class Unity
1014
{
15+
static Unity()
16+
{
17+
Container = new UnityContainer();
18+
Container.RegisterType<IDriveService, DriveService>(new ContainerControlledLifetimeManager());
19+
Container.RegisterType<IUpdater, Updater>();
20+
Container.RegisterType<IMessageBoxService, MessageBoxService>(new ContainerControlledLifetimeManager());
21+
Container.RegisterType<ILogger, Logger>(new ContainerControlledLifetimeManager());
22+
Container.RegisterType<IFileService, FileService>(new ContainerControlledLifetimeManager());
23+
Container.RegisterType<IPresetImportExport, PresetImportExport>();
24+
Container.RegisterType<IProcesses, Processes>(new ContainerControlledLifetimeManager());
25+
Container.RegisterType<IProcessAutoPause, ProcessAutoPause>();
26+
Container.RegisterType<ISystemOperations, SystemOperations>();
27+
Container.RegisterType<TrayService>();
28+
29+
//Container.RegisterType<MainViewModel>(new ContainerControlledLifetimeManager());
30+
Container.RegisterType<OutputPathViewModel>(new ContainerControlledLifetimeManager());
31+
Container.RegisterType<PresetsViewModel>(new ContainerControlledLifetimeManager());
32+
Container.RegisterType<ProcessingViewModel>(new ContainerControlledLifetimeManager());
33+
Container.RegisterType<WindowManagerViewModel>(new ContainerControlledLifetimeManager());
34+
}
35+
1136
public static IUnityContainer Container { get; set; }
1237
}
1338
}

VidCoder/Utilities/Utilities.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -385,6 +385,8 @@ public static string GetSourceNameFolder(string videoFolder)
385385
}
386386
}
387387

388+
389+
388390
public static void SetDragIcon(DragEventArgs e)
389391
{
390392
var data = e.Data as DataObject;

VidCoder/VidCoder.csproj

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,6 @@
120120
<Reference Include="Microsoft.Practices.Unity, Version=2.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
121121
<HintPath>..\Lib\Microsoft.Practices.Unity.dll</HintPath>
122122
</Reference>
123-
<Reference Include="Microsoft.Practices.Unity.Configuration, Version=2.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
124-
<HintPath>..\Lib\Microsoft.Practices.Unity.Configuration.dll</HintPath>
125-
</Reference>
126123
<Reference Include="Ookii.Dialogs.Wpf">
127124
<HintPath>..\Lib\Ookii.Dialogs.Wpf.dll</HintPath>
128125
</Reference>
@@ -322,12 +319,17 @@
322319
<Compile Include="Services\Processes.cs" />
323320
<Compile Include="Services\SystemOperations.cs" />
324321
<Compile Include="Services\TrayService.cs" />
322+
<Compile Include="Utilities\FileCleanup.cs" />
325323
<Compile Include="Utilities\ListSynchronizer\IListItemConverter.cs" />
326324
<Compile Include="Services\Logger.cs" />
327325
<Compile Include="Utilities\ListSynchronizer\MultiSelectorBehaviors.cs" />
328326
<Compile Include="Settings.cs" />
329327
<Compile Include="Utilities\ListSynchronizer\TwoListSynchronizer.cs" />
330328
<Compile Include="Utilities\RefireControl.cs" />
329+
<Compile Include="ViewModel\Components\OutputPathViewModel.cs" />
330+
<Compile Include="ViewModel\Components\PresetsViewModel.cs" />
331+
<Compile Include="ViewModel\Components\ProcessingViewModel.cs" />
332+
<Compile Include="ViewModel\Components\WindowManagerViewModel.cs" />
331333
<Compile Include="ViewModel\FileConflictDialogViewModel.cs" />
332334
<Compile Include="View\FileConflictDialog.xaml.cs">
333335
<DependentUpon>FileConflictDialog.xaml</DependentUpon>

VidCoder/View/EncodingWindow.xaml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@
1616
<local:EnumDisplayer Type="{x:Type Encoding:OutputFormat}" x:Key="OutputFormatChoices" />
1717
</Window.Resources>
1818
<Window.InputBindings>
19-
<KeyBinding Key="Q" Modifiers="Control" Command="{Binding MainViewModel.AddToQueueCommand}" />
20-
<KeyBinding Key="L" Modifiers="Control" Command="{Binding MainViewModel.OpenLogWindowCommand}" />
21-
<KeyBinding Key="P" Modifiers="Control" Command="{Binding MainViewModel.OpenPreviewWindowCommand}" />
22-
<KeyBinding Key="O" Modifiers="Control+Shift" Command="{Binding MainViewModel.QueueFilesCommand}" />
23-
<KeyBinding Key="T" Modifiers="Control" Command="{Binding MainViewModel.QueueTitlesCommand}" />
24-
<KeyBinding Key="D" Modifiers="Control" Command="{Binding MainViewModel.PickOutputPathCommand}" />
19+
<KeyBinding Key="Q" Modifiers="Control" Command="{Binding ProcessingVM.AddToQueueCommand}" />
20+
<KeyBinding Key="L" Modifiers="Control" Command="{Binding WindowManagerVM.OpenLogWindowCommand}" />
21+
<KeyBinding Key="P" Modifiers="Control" Command="{Binding WindowManagerVM.OpenPreviewWindowCommand}" />
22+
<KeyBinding Key="O" Modifiers="Control+Shift" Command="{Binding ProcessingVM.QueueFilesCommand}" />
23+
<KeyBinding Key="T" Modifiers="Control" Command="{Binding ProcessingVM.QueueTitlesCommand}" />
24+
<KeyBinding Key="D" Modifiers="Control" Command="{Binding OutputPathVM.PickOutputPathCommand}" />
2525

2626
<KeyBinding Key="Esc" Command="{Binding CancelCommand}" />
2727
<KeyBinding Key="S" Modifiers="Control" Command="{Binding SaveCommand}" />
@@ -82,8 +82,8 @@
8282
</ToolBarPanel>
8383
<Button
8484
Height="26" Margin="0,4,12,0" VerticalAlignment="Top" IsEnabled="{Binding HasSourceData}"
85-
Command="{Binding PreviewCommand}" HorizontalAlignment="Right" Width="77"
86-
Visibility="{Binding MainViewModel.PreviewWindowOpen, Converter={StaticResource VisibilityConverter}, ConverterParameter=True}">
85+
Command="{Binding WindowManagerVM.PreviewWindowOpen}" HorizontalAlignment="Right" Width="77"
86+
Visibility="{Binding WindowManagerVM.PreviewWindowOpen, Converter={StaticResource VisibilityConverter}, ConverterParameter=True}">
8787
<StackPanel Orientation="Horizontal">
8888
<Image Source="/Icons/preview.png" />
8989
<TextBlock Text="Preview" Margin="5,0,0,0" VerticalAlignment="Center" />

0 commit comments

Comments
 (0)