From 0ca9b1be4882ccd5e1a40add90ec20d20c759a10 Mon Sep 17 00:00:00 2001 From: Niels Laute Date: Mon, 11 Oct 2021 18:03:40 +0200 Subject: [PATCH] [Color Picker] Open settings (#13747) * Add settings * Added try catch and icon update Co-authored-by: Laute --- .../ColorPickerUI/Helpers/AppStateHandler.cs | 18 ++++++++++++++++++ .../IColorEditorViewModel.cs | 4 ++++ .../ViewModels/ColorEditorViewModel.cs | 5 +++++ .../ColorPickerUI/Views/ColorEditorView.xaml | 8 ++++---- 4 files changed, 31 insertions(+), 4 deletions(-) diff --git a/src/modules/colorPicker/ColorPickerUI/Helpers/AppStateHandler.cs b/src/modules/colorPicker/ColorPickerUI/Helpers/AppStateHandler.cs index a075972f76..f878300f28 100644 --- a/src/modules/colorPicker/ColorPickerUI/Helpers/AppStateHandler.cs +++ b/src/modules/colorPicker/ColorPickerUI/Helpers/AppStateHandler.cs @@ -4,6 +4,8 @@ using System; using System.ComponentModel.Composition; +using System.Diagnostics; +using System.IO; using System.Windows; using ColorPicker.Settings; using ColorPicker.ViewModelContracts; @@ -134,6 +136,7 @@ namespace ColorPicker.Helpers _colorEditorWindow = new ColorEditorWindow(this); _colorEditorWindow.Content = _colorEditorViewModel; _colorEditorViewModel.OpenColorPickerRequested += ColorEditorViewModel_OpenColorPickerRequested; + _colorEditorViewModel.OpenSettingsRequested += ColorEditorViewModel_OpenSettingsRequested; _colorEditorViewModel.OpenColorPickerRequested += (object sender, EventArgs e) => { SessionEventHelper.Event.EditorColorPickerOpened = true; @@ -183,5 +186,20 @@ namespace ColorPicker.Helpers _colorEditorWindow.Hide(); } + + private void ColorEditorViewModel_OpenSettingsRequested(object sender, EventArgs e) + { + try + { + var assemblyPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); + var fullPath = Directory.GetParent(assemblyPath).FullName; + Process.Start(new ProcessStartInfo(fullPath + "\\..\\PowerToys.exe") { Arguments = "--open-settings=ColorPicker" }); + } +#pragma warning disable CA1031 // Do not catch general exception types + catch +#pragma warning restore CA1031 // Do not catch general exception types + { + } + } } } diff --git a/src/modules/colorPicker/ColorPickerUI/ViewModelContracts/IColorEditorViewModel.cs b/src/modules/colorPicker/ColorPickerUI/ViewModelContracts/IColorEditorViewModel.cs index 6f80070482..f7640fce36 100644 --- a/src/modules/colorPicker/ColorPickerUI/ViewModelContracts/IColorEditorViewModel.cs +++ b/src/modules/colorPicker/ColorPickerUI/ViewModelContracts/IColorEditorViewModel.cs @@ -14,8 +14,12 @@ namespace ColorPicker.ViewModelContracts { event EventHandler OpenColorPickerRequested; + event EventHandler OpenSettingsRequested; + ICommand OpenColorPickerCommand { get; } + ICommand OpenSettingsCommand { get; } + ICommand RemoveColorCommand { get; } ObservableCollection ColorRepresentations { get; } diff --git a/src/modules/colorPicker/ColorPickerUI/ViewModels/ColorEditorViewModel.cs b/src/modules/colorPicker/ColorPickerUI/ViewModels/ColorEditorViewModel.cs index 95745b8fed..03966566b3 100644 --- a/src/modules/colorPicker/ColorPickerUI/ViewModels/ColorEditorViewModel.cs +++ b/src/modules/colorPicker/ColorPickerUI/ViewModels/ColorEditorViewModel.cs @@ -32,6 +32,7 @@ namespace ColorPicker.ViewModels public ColorEditorViewModel(IUserSettings userSettings) { OpenColorPickerCommand = new RelayCommand(() => OpenColorPickerRequested?.Invoke(this, EventArgs.Empty)); + OpenSettingsCommand = new RelayCommand(() => OpenSettingsRequested?.Invoke(this, EventArgs.Empty)); RemoveColorCommand = new RelayCommand(DeleteSelectedColor); SelectedColorChangedCommand = new RelayCommand((newColor) => @@ -47,8 +48,12 @@ namespace ColorPicker.ViewModels public event EventHandler OpenColorPickerRequested; + public event EventHandler OpenSettingsRequested; + public ICommand OpenColorPickerCommand { get; } + public ICommand OpenSettingsCommand { get; } + public ICommand RemoveColorCommand { get; } public ICommand SelectedColorChangedCommand { get; } diff --git a/src/modules/colorPicker/ColorPickerUI/Views/ColorEditorView.xaml b/src/modules/colorPicker/ColorPickerUI/Views/ColorEditorView.xaml index c9b0cd83a4..d0ec1504b4 100644 --- a/src/modules/colorPicker/ColorPickerUI/Views/ColorEditorView.xaml +++ b/src/modules/colorPicker/ColorPickerUI/Views/ColorEditorView.xaml @@ -82,17 +82,17 @@ VerticalAlignment="Center" Margin="0,1,0,0" /> - - + AutomationProperties.Name="{x:Static p:Resources.Open_settings}" />