From d4de37fd1523f4ec81f6540e30005bd282f89d55 Mon Sep 17 00:00:00 2001 From: Aleksandar Pesic Date: Tue, 17 Sep 2019 12:53:19 +0200 Subject: [PATCH] Replacing TerminalOptionsChanged event with MVVMLight Messenger implementation. (#521) --- .../SettingsServiceTests.cs | 3 ++- FluentTerminal.App.Services/ISettingsService.cs | 2 -- .../Implementation/SettingsService.cs | 4 +--- FluentTerminal.App.ViewModels/MainViewModel.cs | 8 +++----- .../Settings/ThemesPageViewModel.cs | 7 ++++--- FluentTerminal.App.ViewModels/TerminalViewModel.cs | 9 +++------ FluentTerminal.App/Views/TerminalView.xaml.cs | 7 +++---- .../Messages/TerminalOptionsChangedMessage.cs | 14 ++++++++++++++ 8 files changed, 30 insertions(+), 24 deletions(-) create mode 100644 FluentTerminal.Models/Messages/TerminalOptionsChangedMessage.cs diff --git a/FluentTerminal.App.Services.Test/SettingsServiceTests.cs b/FluentTerminal.App.Services.Test/SettingsServiceTests.cs index 3df5b5b..25d5b03 100644 --- a/FluentTerminal.App.Services.Test/SettingsServiceTests.cs +++ b/FluentTerminal.App.Services.Test/SettingsServiceTests.cs @@ -367,7 +367,8 @@ namespace FluentTerminal.App.Services.Test ShellProfiles = Mock.Of() }; var settingsService = new SettingsService(defaultValueProvider, applicationDataContainers); - settingsService.TerminalOptionsChanged += (s, e) => terminalOptionsChangedEventInvoked = true; + Messenger.Default.Register(this, + message => terminalOptionsChangedEventInvoked = true); settingsService.SaveTerminalOptions(terminalOptions); diff --git a/FluentTerminal.App.Services/ISettingsService.cs b/FluentTerminal.App.Services/ISettingsService.cs index 5dbed70..68e32d3 100644 --- a/FluentTerminal.App.Services/ISettingsService.cs +++ b/FluentTerminal.App.Services/ISettingsService.cs @@ -6,8 +6,6 @@ namespace FluentTerminal.App.Services { public interface ISettingsService { - event EventHandler TerminalOptionsChanged; - void DeleteShellProfile(Guid id); void DeleteSshProfile(Guid id); void DeleteTheme(Guid id); diff --git a/FluentTerminal.App.Services/Implementation/SettingsService.cs b/FluentTerminal.App.Services/Implementation/SettingsService.cs index 6287346..5dad9eb 100644 --- a/FluentTerminal.App.Services/Implementation/SettingsService.cs +++ b/FluentTerminal.App.Services/Implementation/SettingsService.cs @@ -148,8 +148,6 @@ namespace FluentTerminal.App.Services.Implementation SaveTerminalOptions(config.TerminalOptions); } - public event EventHandler TerminalOptionsChanged; - public void DeleteShellProfile(Guid id) { _shellProfiles.Delete(id.ToString()); @@ -378,7 +376,7 @@ namespace FluentTerminal.App.Services.Implementation public void SaveTerminalOptions(TerminalOptions terminalOptions) { _roamingSettings.WriteValueAsJson(nameof(TerminalOptions), terminalOptions); - TerminalOptionsChanged?.Invoke(this, terminalOptions); + Messenger.Default.Send(new TerminalOptionsChangedMessage(terminalOptions)); } public void SaveTheme(TerminalTheme theme, bool newTheme = false) diff --git a/FluentTerminal.App.ViewModels/MainViewModel.cs b/FluentTerminal.App.ViewModels/MainViewModel.cs index 6fbeda9..0d1f8f7 100644 --- a/FluentTerminal.App.ViewModels/MainViewModel.cs +++ b/FluentTerminal.App.ViewModels/MainViewModel.cs @@ -39,9 +39,9 @@ namespace FluentTerminal.App.ViewModels MessengerInstance.Register(this, OnShellProfileDeleted); MessengerInstance.Register(this, OnSshProfileAdded); MessengerInstance.Register(this, OnSshProfileDeleted); + MessengerInstance.Register(this, OnTerminalOptionsChanged); _settingsService = settingsService; - _settingsService.TerminalOptionsChanged += OnTerminalOptionsChanged; _trayProcessCommunicationService = trayProcessCommunicationService; _dialogService = dialogService; @@ -112,8 +112,6 @@ namespace FluentTerminal.App.ViewModels { MessengerInstance.Unregister(this); - _settingsService.TerminalOptionsChanged -= OnTerminalOptionsChanged; - ApplicationView.CloseRequested -= OnCloseRequest; ApplicationView.Closed -= OnClosed; Terminals.CollectionChanged -= OnTerminalsCollectionChanged; @@ -580,11 +578,11 @@ namespace FluentTerminal.App.ViewModels } } - private async void OnTerminalOptionsChanged(object sender, TerminalOptions e) + private async void OnTerminalOptionsChanged(TerminalOptionsChangedMessage message) { await ApplicationView.RunOnDispatcherThread(() => { - BackgroundOpacity = e.BackgroundOpacity; + BackgroundOpacity = message.TerminalOptions.BackgroundOpacity; }); } diff --git a/FluentTerminal.App.ViewModels/Settings/ThemesPageViewModel.cs b/FluentTerminal.App.ViewModels/Settings/ThemesPageViewModel.cs index b9f1836..cf13d91 100644 --- a/FluentTerminal.App.ViewModels/Settings/ThemesPageViewModel.cs +++ b/FluentTerminal.App.ViewModels/Settings/ThemesPageViewModel.cs @@ -8,6 +8,7 @@ using System; using System.Collections.ObjectModel; using System.Linq; using System.Threading.Tasks; +using FluentTerminal.Models.Messages; namespace FluentTerminal.App.ViewModels.Settings { @@ -36,7 +37,7 @@ namespace FluentTerminal.App.ViewModels.Settings ImportThemeCommand = new AsyncCommand(ImportTheme); CloneCommand = new RelayCommand(CloneTheme); - _settingsService.TerminalOptionsChanged += OnTerminalOptionsChanged; + MessengerInstance.Register(this, OnTerminalOptionsChanged); BackgroundOpacity = _settingsService.GetTerminalOptions().BackgroundOpacity; @@ -182,9 +183,9 @@ namespace FluentTerminal.App.ViewModels.Settings } } - private void OnTerminalOptionsChanged(object sender, TerminalOptions e) + private void OnTerminalOptionsChanged(TerminalOptionsChangedMessage message) { - BackgroundOpacity = e.BackgroundOpacity; + BackgroundOpacity = message.TerminalOptions.BackgroundOpacity; } private void OnSelectedThemeBackgroundChanged(object sender, string e) diff --git a/FluentTerminal.App.ViewModels/TerminalViewModel.cs b/FluentTerminal.App.ViewModels/TerminalViewModel.cs index c41690c..d687c51 100644 --- a/FluentTerminal.App.ViewModels/TerminalViewModel.cs +++ b/FluentTerminal.App.ViewModels/TerminalViewModel.cs @@ -99,9 +99,9 @@ namespace FluentTerminal.App.ViewModels { MessengerInstance.Register(this, OnApplicationSettingsChanged); MessengerInstance.Register(this, OnCurrentThemeChanged); + MessengerInstance.Register(this, OnTerminalOptionsChanged); SettingsService = settingsService; - SettingsService.TerminalOptionsChanged += OnTerminalOptionsChanged; _terminalOptions = SettingsService.GetTerminalOptions(); @@ -163,7 +163,6 @@ namespace FluentTerminal.App.ViewModels public event EventHandler Closed; public event EventHandler FindNextRequested; public event EventHandler FindPreviousRequested; - public event EventHandler OptionsChanged; public event EventHandler SearchStarted; public event EventHandler ThemeChanged; public event EventHandler ShellTitleChanged; @@ -360,7 +359,6 @@ namespace FluentTerminal.App.ViewModels { MessengerInstance.Unregister(this); - SettingsService.TerminalOptionsChanged -= OnTerminalOptionsChanged; return Terminal.Close(); } @@ -479,10 +477,9 @@ namespace FluentTerminal.App.ViewModels }); } - private async void OnTerminalOptionsChanged(object sender, TerminalOptions e) + private void OnTerminalOptionsChanged(TerminalOptionsChangedMessage message) { - _terminalOptions = e; - await ApplicationView.RunOnDispatcherThread(() => OptionsChanged?.Invoke(this, e)); + _terminalOptions = message.TerminalOptions; } private void SelectTabTheme(string id) diff --git a/FluentTerminal.App/Views/TerminalView.xaml.cs b/FluentTerminal.App/Views/TerminalView.xaml.cs index b0373f5..3cf221e 100644 --- a/FluentTerminal.App/Views/TerminalView.xaml.cs +++ b/FluentTerminal.App/Views/TerminalView.xaml.cs @@ -15,12 +15,12 @@ namespace FluentTerminal.App.Views public TerminalView(TerminalViewModel viewModel) { Messenger.Default.Register(this, OnKeyBindingsChanged); + Messenger.Default.Register(this, OnTerminalOptionsChanged); ViewModel = viewModel; ViewModel.SearchStarted += OnSearchStarted; ViewModel.Activated += OnActivated; ViewModel.ThemeChanged += OnThemeChanged; - ViewModel.OptionsChanged += OnOptionsChanged; ViewModel.FindNextRequested += OnFindNextRequested; ViewModel.FindPreviousRequested += OnFindPreviousRequested; InitializeComponent(); @@ -42,7 +42,6 @@ namespace FluentTerminal.App.Views ViewModel.SearchStarted -= OnSearchStarted; ViewModel.Activated -= OnActivated; ViewModel.ThemeChanged -= OnThemeChanged; - ViewModel.OptionsChanged -= OnOptionsChanged; ViewModel.FindNextRequested -= OnFindNextRequested; ViewModel.FindPreviousRequested -= OnFindPreviousRequested; @@ -74,9 +73,9 @@ namespace FluentTerminal.App.Views await _terminalView.ChangeKeyBindings().ConfigureAwait(true); } - private async void OnOptionsChanged(object sender, Models.TerminalOptions e) + private async void OnTerminalOptionsChanged(TerminalOptionsChangedMessage message) { - await _terminalView.ChangeOptions(e).ConfigureAwait(true); + await _terminalView.ChangeOptions(message.TerminalOptions).ConfigureAwait(true); } private void OnSearchStarted(object sender, EventArgs e) diff --git a/FluentTerminal.Models/Messages/TerminalOptionsChangedMessage.cs b/FluentTerminal.Models/Messages/TerminalOptionsChangedMessage.cs new file mode 100644 index 0000000..043dd0d --- /dev/null +++ b/FluentTerminal.Models/Messages/TerminalOptionsChangedMessage.cs @@ -0,0 +1,14 @@ +using System; + +namespace FluentTerminal.Models.Messages +{ + public class TerminalOptionsChangedMessage + { + public TerminalOptions TerminalOptions { get; } + + public TerminalOptionsChangedMessage(TerminalOptions terminalOptions) + { + TerminalOptions = terminalOptions ?? throw new ArgumentNullException(); + } + } +} \ No newline at end of file