From b540cc8ac45e54e807e50d73a684c42caf6695d1 Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Sun, 8 Sep 2019 22:16:47 +1000 Subject: [PATCH] Refactor Plugins.Program --- Plugins/Wox.Plugin.Program/Main.cs | 26 ++------------- .../Views/Commands/ProgramSettingDisplay.cs | 32 +++++++++++++++++++ .../{ => Views}/ProgramSetting.xaml | 2 +- .../{ => Views}/ProgramSetting.xaml.cs | 18 ++++++++--- .../Wox.Plugin.Program.csproj | 6 ++-- 5 files changed, 53 insertions(+), 31 deletions(-) create mode 100644 Plugins/Wox.Plugin.Program/Views/Commands/ProgramSettingDisplay.cs rename Plugins/Wox.Plugin.Program/{ => Views}/ProgramSetting.xaml (98%) rename Plugins/Wox.Plugin.Program/{ => Views}/ProgramSetting.xaml.cs (88%) diff --git a/Plugins/Wox.Plugin.Program/Main.cs b/Plugins/Wox.Plugin.Program/Main.cs index 9a50f45808..f3321e9dc8 100644 --- a/Plugins/Wox.Plugin.Program/Main.cs +++ b/Plugins/Wox.Plugin.Program/Main.cs @@ -9,6 +9,7 @@ using Wox.Infrastructure; using Wox.Infrastructure.Logger; using Wox.Infrastructure.Storage; using Wox.Plugin.Program.Programs; +using Wox.Plugin.Program.Views; using Stopwatch = Wox.Infrastructure.Stopwatch; namespace Wox.Plugin.Program @@ -135,32 +136,11 @@ namespace Wox.Plugin.Program var t2 = Task.Run(() => { IndexUWPPrograms(); }); Task.WaitAll(t1, t2); - } - - public static void AddLoadedApplicationsToSettings() - { - _win32s - .Where(t1 => !_settings.ProgramSources.Any(x => x.Name == t1.Name)) - .ToList() - .ForEach(t1 => _settings.ProgramSources.Add(new Settings.ProgramSource (){Name = t1.Name, Location = t1.ParentDirectory })); - - _uwps - .Where(t1 => !_settings.ProgramSources.Any(x => x.Name == t1.DisplayName)) - .ToList() - .ForEach(t1 => _settings.ProgramSources.Add(new Settings.ProgramSource() { Name = t1.DisplayName, Location = t1.Package.Location })); - } - - public static void DisableProgramSources(List programSourcesToDisable) - { - _settings.ProgramSources - .Where(t1 => programSourcesToDisable.Any(x => x.Name == t1.Name && x.Location == t1.Location && t1.Enabled)) - .ToList() - .ForEach(t1 => t1.Enabled = false); - } + } public Control CreateSettingPanel() { - return new ProgramSetting(_context, _settings); + return new ProgramSetting(_context, _settings, _win32s, _uwps); } public string GetTranslatedPluginTitle() diff --git a/Plugins/Wox.Plugin.Program/Views/Commands/ProgramSettingDisplay.cs b/Plugins/Wox.Plugin.Program/Views/Commands/ProgramSettingDisplay.cs new file mode 100644 index 0000000000..9b27474fc2 --- /dev/null +++ b/Plugins/Wox.Plugin.Program/Views/Commands/ProgramSettingDisplay.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Wox.Plugin.Program.Views.Models; + +namespace Wox.Plugin.Program.Views.Commands +{ + internal static class ProgramSettingDisplay + { + internal static List LoadProgramSources(this List programSources) + { + var list = new List(); + + programSources.ForEach(x => list.Add(new ProgramSource { Enabled = x.Enabled, Location = x.Location, Name = x.Name })); + + return list; + } + + internal static void LoadAllApplications(this List listToUpdate) + { + Main._win32s + .ToList() + .ForEach(t1 => ProgramSetting.ProgramSettingDisplayList.Add(new ProgramSource { Name = t1.Name, Location = t1.ParentDirectory, Enabled = t1.Enabled })); + + Main._uwps + .ToList() + .ForEach(t1 => ProgramSetting.ProgramSettingDisplayList.Add(new ProgramSource { Name = t1.DisplayName, Location = t1.Package.Location, Enabled = t1.Enabled })); + } + } +} diff --git a/Plugins/Wox.Plugin.Program/ProgramSetting.xaml b/Plugins/Wox.Plugin.Program/Views/ProgramSetting.xaml similarity index 98% rename from Plugins/Wox.Plugin.Program/ProgramSetting.xaml rename to Plugins/Wox.Plugin.Program/Views/ProgramSetting.xaml index 5e5c3d3b72..c5699f9196 100644 --- a/Plugins/Wox.Plugin.Program/ProgramSetting.xaml +++ b/Plugins/Wox.Plugin.Program/Views/ProgramSetting.xaml @@ -1,4 +1,4 @@ - /// Interaction logic for ProgramSetting.xaml @@ -17,8 +19,9 @@ namespace Wox.Plugin.Program { private PluginInitContext context; private Settings _settings; + internal static List ProgramSettingDisplayList { get; set; } - public ProgramSetting(PluginInitContext context, Settings settings) + public ProgramSetting(PluginInitContext context, Settings settings, Win32[] win32s, UWP.Application[] uwps) { this.context = context; InitializeComponent(); @@ -28,7 +31,9 @@ namespace Wox.Plugin.Program private void Setting_Loaded(object sender, RoutedEventArgs e) { - programSourceView.ItemsSource = _settings.ProgramSources; + ProgramSettingDisplayList = _settings.ProgramSources.LoadProgramSources(); + programSourceView.ItemsSource = ProgramSettingDisplayList; + StartMenuEnabled.IsChecked = _settings.EnableStartMenuSource; RegistryEnabled.IsChecked = _settings.EnableRegistrySource; } @@ -151,14 +156,17 @@ namespace Wox.Plugin.Program private void btnLoadAllProgramSource_OnClick(object sender, RoutedEventArgs e) { - Main.AddLoadedApplicationsToSettings(); + ProgramSettingDisplayList.LoadAllApplications(); programSourceView.Items.Refresh(); } private void btnDisableProgramSource_OnClick(object sender, RoutedEventArgs e) { - Main.DisableProgramSources(programSourceView.SelectedItems.Cast().ToList()); + ProgramSettingDisplayList + .DisableProgramSources(programSourceView + .SelectedItems.Cast() + .ToList()); programSourceView.SelectedItems.Clear(); diff --git a/Plugins/Wox.Plugin.Program/Wox.Plugin.Program.csproj b/Plugins/Wox.Plugin.Program/Wox.Plugin.Program.csproj index ae0a83c54f..869a485f8a 100644 --- a/Plugins/Wox.Plugin.Program/Wox.Plugin.Program.csproj +++ b/Plugins/Wox.Plugin.Program/Wox.Plugin.Program.csproj @@ -71,13 +71,15 @@ AddProgramSource.xaml + + - + ProgramSetting.xaml @@ -130,7 +132,7 @@ Designer PreserveNewest - + MSBuild:Compile Designer