From 669dce1b1215a8ef0770a4a4a0cbd696e35132e9 Mon Sep 17 00:00:00 2001 From: Robin Krom Date: Tue, 30 Apr 2019 23:20:38 +0200 Subject: [PATCH] Fixed language selection. --- src/Greenshot/Forms/AboutForm.cs | 1 + src/Greenshot/Forms/MainForm.cs | 9 +++++++-- src/Greenshot/Helpers/EnvironmentInfo.cs | 7 ------- .../Configuration/ViewModels/ConfigViewModel.cs | 10 +++++++--- .../ViewModels/UiConfigViewModel.cs | 17 +++++++++++------ 5 files changed, 26 insertions(+), 18 deletions(-) diff --git a/src/Greenshot/Forms/AboutForm.cs b/src/Greenshot/Forms/AboutForm.cs index 2eda362f5..60df5a028 100644 --- a/src/Greenshot/Forms/AboutForm.cs +++ b/src/Greenshot/Forms/AboutForm.cs @@ -359,6 +359,7 @@ namespace Greenshot.Forms case Keys.E: var info = new StringBuilder(EnvironmentInfo.EnvironmentToString(true)); var screenboundsSize = DisplayInfo.ScreenBounds.Size; + info.AppendLine(); info.AppendFormat("Screen: {0} at {1}%", $"{screenboundsSize.Width} x {screenboundsSize.Height}", FormDpiHandler.ScaleWithCurrentDpi(100)); MessageBox.Show(info.ToString(), "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); break; diff --git a/src/Greenshot/Forms/MainForm.cs b/src/Greenshot/Forms/MainForm.cs index 93ee93ac7..a782fa855 100644 --- a/src/Greenshot/Forms/MainForm.cs +++ b/src/Greenshot/Forms/MainForm.cs @@ -819,11 +819,16 @@ namespace Greenshot.Forms /// public void ShowSetting() { - using(var ownedConfigViewModel = _configViewModelFactory()) + var lang = _coreConfiguration.Language; + using (var ownedConfigViewModel = _configViewModelFactory()) { _windowManager.ShowDialog(ownedConfigViewModel.Value); } - InitializeQuickSettingsMenu(); + if (!Equals(lang, _coreConfiguration.Language)) + { + ApplyLanguage(); + InitializeQuickSettingsMenu(); + } } /// diff --git a/src/Greenshot/Helpers/EnvironmentInfo.cs b/src/Greenshot/Helpers/EnvironmentInfo.cs index e9608832a..627c78530 100644 --- a/src/Greenshot/Helpers/EnvironmentInfo.cs +++ b/src/Greenshot/Helpers/EnvironmentInfo.cs @@ -156,13 +156,6 @@ namespace Greenshot.Helpers { environment.AppendLine(); } - else - { - environment.Append(", "); - } - // TODO: Is this needed? - // environment.AppendFormat("Surface count: {0}", Surface.Count); - return environment.ToString(); } diff --git a/src/Greenshot/Ui/Configuration/ViewModels/ConfigViewModel.cs b/src/Greenshot/Ui/Configuration/ViewModels/ConfigViewModel.cs index e2ce345f9..36cec8d27 100644 --- a/src/Greenshot/Ui/Configuration/ViewModels/ConfigViewModel.cs +++ b/src/Greenshot/Ui/Configuration/ViewModels/ConfigViewModel.cs @@ -20,13 +20,16 @@ using System; using System.Collections.Generic; using System.Reactive.Disposables; +using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using Autofac.Features.OwnedInstances; using Dapplo.CaliburnMicro; using Dapplo.CaliburnMicro.Configuration; using Dapplo.CaliburnMicro.Extensions; +using Dapplo.Config.Language; using Greenshot.Addons; +using Greenshot.Addons.Core; using Greenshot.Configuration; using Greenshot.Ui.Notifications.ViewModels; using MahApps.Metro.IconPacks; @@ -60,9 +63,11 @@ namespace Greenshot.Ui.Configuration.ViewModels public IConfigTranslations ConfigTranslations { get; } public ConfigViewModel( + ICoreConfiguration coreConfiguration, IEnumerable> configScreens, IGreenshotLanguage greenshotLanguage, IConfigTranslations configTranslations, + LanguageContainer languageContainer, Func> updateNotificationViewModelFactory ) { @@ -73,9 +78,8 @@ namespace Greenshot.Ui.Configuration.ViewModels // automatically update the DisplayName GreenshotLanguage.CreateDisplayNameBinding(this, nameof(IGreenshotLanguage.SettingsTitle)); - // TODO: Check if we need to set the current language (this should update all registered OnPropertyChanged anyway, so it can run in the background - //var lang = demoConfiguration.Language; - //Task.Run(async () => await LanguageLoader.Current.ChangeLanguageAsync(lang).ConfigureAwait(false)); + var lang = coreConfiguration.Language; + Task.Run(async () => await languageContainer.ChangeLanguageAsync(lang).ConfigureAwait(false)); } /// diff --git a/src/Greenshot/Ui/Configuration/ViewModels/UiConfigViewModel.cs b/src/Greenshot/Ui/Configuration/ViewModels/UiConfigViewModel.cs index 5bbe0b35f..0a18bd0e7 100644 --- a/src/Greenshot/Ui/Configuration/ViewModels/UiConfigViewModel.cs +++ b/src/Greenshot/Ui/Configuration/ViewModels/UiConfigViewModel.cs @@ -21,10 +21,12 @@ using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Reactive.Disposables; +using Caliburn.Micro; using Dapplo.CaliburnMicro.Configuration; using Dapplo.CaliburnMicro.Extensions; using Dapplo.CaliburnMicro.Metro; using Dapplo.Config.Intercepting; +using Dapplo.Config.Language; using Dapplo.Utils.Extensions; using Greenshot.Addons; using Greenshot.Addons.Core; @@ -36,6 +38,7 @@ namespace Greenshot.Ui.Configuration.ViewModels public sealed class UiConfigViewModel : SimpleConfigScreen { private readonly MetroThemeManager _metroThemeManager; + private readonly LanguageContainer _languageContainer; /// /// Here all disposables are registered, so we can clean the up @@ -57,17 +60,16 @@ namespace Greenshot.Ui.Configuration.ViewModels /// // ReSharper disable once UnusedMember.Global // TODO: Fix - public IDictionary AvailableLanguages => new Dictionary();//LanguageLoader.Current.AvailableLanguages; + public IDictionary AvailableLanguages { get; } /// /// Can the login button be pressed? /// // TODO: Fix public bool CanChangeLanguage - => !string.IsNullOrWhiteSpace(CoreConfiguration.Language); // && CoreConfiguration.Language != LanguageLoader.Current.CurrentLanguage; + => !string.IsNullOrWhiteSpace(CoreConfiguration.Language) && CoreConfiguration.Language != _languageContainer.CurrentLanguage; public IMetroConfiguration MetroConfiguration { get; } - public IConfigTranslations ConfigTranslations { get; } public ICoreConfiguration CoreConfiguration { get; } @@ -87,10 +89,13 @@ namespace Greenshot.Ui.Configuration.ViewModels IGreenshotLanguage greenshotLanguage, IConfigTranslations configTranslations, IMetroConfiguration metroConfiguration, - MetroThemeManager metroThemeManager + MetroThemeManager metroThemeManager, + LanguageContainer languageContainer ) { + AvailableLanguages = languageContainer.AvailableLanguages; _metroThemeManager = metroThemeManager; + _languageContainer = languageContainer; CoreConfiguration = coreConfiguration; GreenshotLanguage = greenshotLanguage; ConfigTranslations = configTranslations; @@ -105,8 +110,8 @@ namespace Greenshot.Ui.Configuration.ViewModels MetroConfiguration.CommitTransaction(); CoreConfiguration.CommitTransaction(); - // TODO: Fix - //Execute.OnUIThread(async () => { await LanguageLoader.Current.ChangeLanguageAsync(CoreConfiguration.Language).ConfigureAwait(false); }); + Execute.OnUIThread(async () => { + await _languageContainer.ChangeLanguageAsync(CoreConfiguration.Language).ConfigureAwait(false); }); }