diff --git a/Source/NETworkManager/App.xaml.cs b/Source/NETworkManager/App.xaml.cs index 2cb3dcd66a..266c622cb6 100644 --- a/Source/NETworkManager/App.xaml.cs +++ b/Source/NETworkManager/App.xaml.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Threading; using System.Windows; +using NETworkManager.Properties; namespace NETworkManager { @@ -90,10 +91,13 @@ protected override void OnSessionEnding(SessionEndingCancelEventArgs e) } private void Application_Exit(object sender, ExitEventArgs e) - { + { // Save settings, when the application is normally closed if (!_singleInstanceClose && !ImportExportManager.ForceRestart && !CommandLineManager.Current.Help) { + // Save local settings (custom settings path in AppData/Local) + Settings.Default.Save(); + if (SettingsManager.Current.SettingsChanged) // This will also create the "Settings" folder, if it does not exist SettingsManager.Save(); diff --git a/Source/NETworkManager/ApplicationViewManager.cs b/Source/NETworkManager/ApplicationViewManager.cs index f823e9a589..e03f508c6d 100644 --- a/Source/NETworkManager/ApplicationViewManager.cs +++ b/Source/NETworkManager/ApplicationViewManager.cs @@ -1,6 +1,6 @@ using MahApps.Metro.IconPacks; +using NETworkManager.Models.Settings; using System.Collections.Generic; -using System.Windows; namespace NETworkManager { @@ -33,7 +33,7 @@ public static List List public static string TranslateName(Name name) { - return Application.Current.Resources["String_ApplicationName_" + name] as string; + return LocalizationManager.GetStringByKey("String_ApplicationName_" + name); } public enum Name diff --git a/Source/NETworkManager/Controls/PuTTYControl.xaml.cs b/Source/NETworkManager/Controls/PuTTYControl.xaml.cs index dff870785c..458c198cb8 100644 --- a/Source/NETworkManager/Controls/PuTTYControl.xaml.cs +++ b/Source/NETworkManager/Controls/PuTTYControl.xaml.cs @@ -138,11 +138,11 @@ private async void Connect() catch (Exception ex) { MetroDialogSettings settings = AppearanceManager.MetroDialog; - settings.AffirmativeButtonText = Application.Current.Resources["String_Button_OK"] as string; + settings.AffirmativeButtonText = LocalizationManager.GetStringByKey("String_Button_OK"); ConfigurationManager.Current.FixAirspace = true; - await dialogCoordinator.ShowMessageAsync(this, Application.Current.Resources["String_Header_Error"] as string, ex.Message, MessageDialogStyle.Affirmative, settings); + await dialogCoordinator.ShowMessageAsync(this, LocalizationManager.GetStringByKey("String_Header_Error"), ex.Message, MessageDialogStyle.Affirmative, settings); ConfigurationManager.Current.FixAirspace = false; } diff --git a/Source/NETworkManager/Controls/RemoteDesktopControl.xaml.cs b/Source/NETworkManager/Controls/RemoteDesktopControl.xaml.cs index 5ddc4ec2c7..590091d918 100644 --- a/Source/NETworkManager/Controls/RemoteDesktopControl.xaml.cs +++ b/Source/NETworkManager/Controls/RemoteDesktopControl.xaml.cs @@ -7,6 +7,7 @@ using System; using System.Windows.Threading; using NETworkManager.Utilities; +using NETworkManager.Models.Settings; namespace NETworkManager.Controls { @@ -26,7 +27,7 @@ protected virtual void OnPropertyChanged([CallerMemberName] string propertyName private const string RemoteDesktopDisconnectReasonIdentifier = "String_RemoteDesktopDisconnectReason_"; - private RemoteDesktopSessionInfo _rdpSessionInfo; + private Models.RemoteDesktop.RemoteDesktopSessionInfo _rdpSessionInfo; DispatcherTimer reconnectAdjustScreenTimer = new DispatcherTimer(); @@ -90,7 +91,7 @@ public string DisconnectReason #endregion #region Constructor, load - public RemoteDesktopControl(RemoteDesktopSessionInfo info) + public RemoteDesktopControl(Models.RemoteDesktop.RemoteDesktopSessionInfo info) { InitializeComponent(); DataContext = this; @@ -219,7 +220,7 @@ private string GetDisconnectReasonFromResource(string reason) { try { - return Application.Current.Resources[RemoteDesktopDisconnectReasonIdentifier + reason] as string; + return LocalizationManager.GetStringByKey(RemoteDesktopDisconnectReasonIdentifier + reason); } catch (NullReferenceException ex) // This happens when the application gets closed and the resources have already been released { diff --git a/Source/NETworkManager/Converters/AccentToStringConverter.cs b/Source/NETworkManager/Converters/AccentToStringConverter.cs index 0f229320bd..95f874f13b 100644 --- a/Source/NETworkManager/Converters/AccentToStringConverter.cs +++ b/Source/NETworkManager/Converters/AccentToStringConverter.cs @@ -1,7 +1,7 @@ using MahApps.Metro; +using NETworkManager.Models.Settings; using System; using System.Globalization; -using System.Windows; using System.Windows.Data; namespace NETworkManager.Converters @@ -13,7 +13,7 @@ public object Convert(object value, Type targetType, object parameter, CultureIn { Accent accent = value as Accent; - string name = Application.Current.Resources["String_Accent_" + accent.Name] as string; + string name = LocalizationManager.GetStringByKey("String_Accent_" + accent.Name); if (string.IsNullOrEmpty(name)) name = accent.Name; diff --git a/Source/NETworkManager/Converters/AppThemeToStringConverter.cs b/Source/NETworkManager/Converters/AppThemeToStringConverter.cs index 73511696c2..3c2acf219c 100644 --- a/Source/NETworkManager/Converters/AppThemeToStringConverter.cs +++ b/Source/NETworkManager/Converters/AppThemeToStringConverter.cs @@ -1,7 +1,7 @@ using MahApps.Metro; +using NETworkManager.Models.Settings; using System; using System.Globalization; -using System.Windows; using System.Windows.Data; namespace NETworkManager.Converters @@ -13,7 +13,7 @@ public object Convert(object value, Type targetType, object parameter, CultureIn { AppTheme theme = value as AppTheme; - string name = Application.Current.Resources["String_AppTheme_" + theme.Name] as string; + string name = LocalizationManager.GetStringByKey("String_AppTheme_" + theme.Name); if (string.IsNullOrEmpty(name)) name = theme.Name; diff --git a/Source/NETworkManager/Converters/BooleanToStringConverter.cs b/Source/NETworkManager/Converters/BooleanToStringConverter.cs index 7fb5e5893d..46eb777905 100644 --- a/Source/NETworkManager/Converters/BooleanToStringConverter.cs +++ b/Source/NETworkManager/Converters/BooleanToStringConverter.cs @@ -1,6 +1,6 @@ -using System; +using NETworkManager.Models.Settings; +using System; using System.Globalization; -using System.Windows; using System.Windows.Data; namespace NETworkManager.Converters @@ -10,9 +10,9 @@ public sealed class BooleanToStringConverter : IValueConverter public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if ((bool)value) - return Application.Current.Resources["String_Yes"] as string; + return LocalizationManager.GetStringByKey("String_Yes"); - return Application.Current.Resources["String_No"] as string; + return LocalizationManager.GetStringByKey("String_No"); } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) diff --git a/Source/NETworkManager/Converters/IPStatusToStringConverter.cs b/Source/NETworkManager/Converters/IPStatusToStringConverter.cs index e579850b28..d1b3898ce6 100644 --- a/Source/NETworkManager/Converters/IPStatusToStringConverter.cs +++ b/Source/NETworkManager/Converters/IPStatusToStringConverter.cs @@ -1,7 +1,7 @@ -using System; +using NETworkManager.Models.Settings; +using System; using System.Globalization; using System.Net.NetworkInformation; -using System.Windows; using System.Windows.Data; namespace NETworkManager.Converters @@ -12,7 +12,7 @@ public object Convert(object value, Type targetType, object parameter, CultureIn { IPStatus ipStatus = (IPStatus)value; - string status = Application.Current.Resources["String_IPStatus_" + ipStatus.ToString()] as string; + string status = LocalizationManager.GetStringByKey("String_IPStatus_" + ipStatus.ToString()); if (string.IsNullOrEmpty(status)) return ipStatus.ToString(); diff --git a/Source/NETworkManager/Converters/PortStatusToStringConverter.cs b/Source/NETworkManager/Converters/PortStatusToStringConverter.cs index fad5a92df0..7f4faf17a6 100644 --- a/Source/NETworkManager/Converters/PortStatusToStringConverter.cs +++ b/Source/NETworkManager/Converters/PortStatusToStringConverter.cs @@ -1,6 +1,6 @@ -using System; +using NETworkManager.Models.Settings; +using System; using System.Globalization; -using System.Windows; using System.Windows.Data; using static NETworkManager.Models.Network.PortInfo; @@ -12,7 +12,7 @@ public object Convert(object value, Type targetType, object parameter, CultureIn { PortStatus portStatus = (PortStatus)value; - string status = Application.Current.Resources["String_PortStatus_" + portStatus.ToString()] as string; + string status = LocalizationManager.GetStringByKey("String_PortStatus_" + portStatus.ToString()); if (string.IsNullOrEmpty(status)) return portStatus.ToString(); diff --git a/Source/NETworkManager/MainWindow.xaml b/Source/NETworkManager/MainWindow.xaml index c1b1e2e48a..549241181f 100644 --- a/Source/NETworkManager/MainWindow.xaml +++ b/Source/NETworkManager/MainWindow.xaml @@ -626,7 +626,7 @@ - + diff --git a/Source/NETworkManager/MainWindow.xaml.cs b/Source/NETworkManager/MainWindow.xaml.cs index e507d529cd..685773b075 100644 --- a/Source/NETworkManager/MainWindow.xaml.cs +++ b/Source/NETworkManager/MainWindow.xaml.cs @@ -280,7 +280,7 @@ public MainWindow() // Set windows title if admin if (ConfigurationManager.Current.IsAdmin) - Title = string.Format("[{0}] {1}", System.Windows.Application.Current.Resources["String_Administrator"] as string, Title); + Title = string.Format("[{0}] {1}", LocalizationManager.GetStringByKey("String_Administrator"), Title); // Set the version text Version = string.Format("Version {0}", AssemblyManager.Current.Version); @@ -367,14 +367,14 @@ private async void MetroWindowMain_Closing(object sender, CancelEventArgs e) MetroDialogSettings settings = AppearanceManager.MetroDialog; - settings.AffirmativeButtonText = System.Windows.Application.Current.Resources["String_Button_Close"] as string; - settings.NegativeButtonText = System.Windows.Application.Current.Resources["String_Button_Cancel"] as string; + settings.AffirmativeButtonText = LocalizationManager.GetStringByKey("String_Button_Close"); + settings.NegativeButtonText = LocalizationManager.GetStringByKey("String_Button_Cancel"); settings.DefaultButtonFocus = MessageDialogResult.Affirmative; // Fix airspace issues ConfigurationManager.Current.FixAirspace = true; - MessageDialogResult result = await this.ShowMessageAsync(System.Windows.Application.Current.Resources["String_Header_Confirm"] as string, System.Windows.Application.Current.Resources["String_ConfirmCloseQuesiton"] as string, MessageDialogStyle.AffirmativeAndNegative, settings); + MessageDialogResult result = await this.ShowMessageAsync(LocalizationManager.GetStringByKey("String_Header_Confirm"), LocalizationManager.GetStringByKey("String_ConfirmCloseQuesiton"), MessageDialogStyle.AffirmativeAndNegative, settings); ConfigurationManager.Current.FixAirspace = false; @@ -585,7 +585,7 @@ private void Updater_Error(object sender, EventArgs e) private void Updater_UpdateAvailable(object sender, UpdateAvailableArgs e) { - UpdateText = string.Format(System.Windows.Application.Current.Resources["String_VersionxxAvailable"] as string, e.Version); + UpdateText = string.Format(LocalizationManager.GetStringByKey("String_VersionxxAvailable"), e.Version); UpdateAvailable = true; } #endregion @@ -836,13 +836,13 @@ private async void CloseSettingsAction() MetroDialogSettings settings = AppearanceManager.MetroDialog; - settings.AffirmativeButtonText = System.Windows.Application.Current.Resources["String_Button_RestartNow"] as string; - settings.NegativeButtonText = System.Windows.Application.Current.Resources["String_Button_OK"] as string; + settings.AffirmativeButtonText = LocalizationManager.GetStringByKey("String_Button_RestartNow"); + settings.NegativeButtonText = LocalizationManager.GetStringByKey("String_Button_OK"); settings.DefaultButtonFocus = MessageDialogResult.Affirmative; ConfigurationManager.Current.FixAirspace = true; - if (await this.ShowMessageAsync(System.Windows.Application.Current.Resources["String_RestartRequired"] as string, System.Windows.Application.Current.Resources["String_RestartRequiredAfterSettingsChanged"] as string, MessageDialogStyle.AffirmativeAndNegative, settings) == MessageDialogResult.Affirmative) + if (await this.ShowMessageAsync(LocalizationManager.GetStringByKey("String_RestartRequired"), LocalizationManager.GetStringByKey("String_RestartRequiredAfterSettingsChanged"), MessageDialogStyle.AffirmativeAndNegative, settings) == MessageDialogResult.Affirmative) { RestartApplication(); return; diff --git a/Source/NETworkManager/Models/Settings/PortScannerProfileManager.cs b/Source/NETworkManager/Models/Settings/PortScannerProfileManager.cs index 6aedd99fd0..b5eda255c8 100644 --- a/Source/NETworkManager/Models/Settings/PortScannerProfileManager.cs +++ b/Source/NETworkManager/Models/Settings/PortScannerProfileManager.cs @@ -51,12 +51,12 @@ private static List GetDefaultProfiles() { return new List { - new PortScannerProfileInfo("1-1023 (well known)",string.Empty, "1-1023", Application.Current.Resources["String_Default"] as string), - new PortScannerProfileInfo("FTP",string.Empty,"20; 21", Application.Current.Resources["String_Default"] as string), - new PortScannerProfileInfo("LDAP/LDAPS", string.Empty,"389; 636", Application.Current.Resources["String_Default"] as string), - new PortScannerProfileInfo("RDP", string.Empty,"3389", Application.Current.Resources["String_Default"] as string), - new PortScannerProfileInfo("SSH",string.Empty, "22", Application.Current.Resources["String_Default"] as string), - new PortScannerProfileInfo("Webserver", string.Empty, "80; 443", Application.Current.Resources["String_Default"] as string), + new PortScannerProfileInfo("1-1023 (well known)",string.Empty, "1-1023", LocalizationManager.GetStringByKey("String_Default")), + new PortScannerProfileInfo("FTP",string.Empty,"20; 21", LocalizationManager.GetStringByKey("String_Default")), + new PortScannerProfileInfo("LDAP/LDAPS", string.Empty,"389; 636", LocalizationManager.GetStringByKey("String_Default")), + new PortScannerProfileInfo("RDP", string.Empty,"3389", LocalizationManager.GetStringByKey("String_Default")), + new PortScannerProfileInfo("SSH",string.Empty, "22", LocalizationManager.GetStringByKey("String_Default")), + new PortScannerProfileInfo("Webserver", string.Empty, "80; 443", LocalizationManager.GetStringByKey("String_Default")), }; } diff --git a/Source/NETworkManager/Models/Settings/SettingsManager.cs b/Source/NETworkManager/Models/Settings/SettingsManager.cs index 31fb394d04..bdc9094bf5 100644 --- a/Source/NETworkManager/Models/Settings/SettingsManager.cs +++ b/Source/NETworkManager/Models/Settings/SettingsManager.cs @@ -74,12 +74,7 @@ public static string GetSettingsLocation() if (GetIsPortable()) return GetPortableSettingsLocation(); - string settingsLocation = GetCustomSettingsLocation(); - - if (!string.IsNullOrEmpty(settingsLocation) && Directory.Exists(settingsLocation)) - return settingsLocation; - - return GetDefaultSettingsLocation(); + return GetSettingsLocationNotPortable(); } public static string GetSettingsLocationNotPortable() @@ -133,12 +128,12 @@ public static void Save() Current.SettingsChanged = false; } - public static Task MoveSettingsAsync(string sourceLocation, string targedLocation) + public static Task MoveSettingsAsync(string sourceLocation, string targedLocation, bool overwrite) { - return Task.Run(() => MoveSettings(sourceLocation, targedLocation)); + return Task.Run(() => MoveSettings(sourceLocation, targedLocation, overwrite)); } - private static void MoveSettings(string sourceLocation, string targedLocation) + private static void MoveSettings(string sourceLocation, string targedLocation, bool overwrite) { string[] sourceFiles = Directory.GetFiles(sourceLocation); @@ -146,7 +141,13 @@ private static void MoveSettings(string sourceLocation, string targedLocation) Directory.CreateDirectory(targedLocation); foreach (string file in sourceFiles) - File.Copy(file, Path.Combine(targedLocation, Path.GetFileName(file)), true); + { + // Skip if file exists and user don't want to overwrite it + if (!overwrite && File.Exists(file)) + continue; + + File.Copy(file, Path.Combine(targedLocation, Path.GetFileName(file)), overwrite); + } // Delete the old files foreach (string file in sourceFiles) @@ -157,23 +158,23 @@ private static void MoveSettings(string sourceLocation, string targedLocation) Directory.Delete(sourceLocation); } - public static Task MakePortableAsync(bool isPortable) + public static Task MakePortableAsync(bool isPortable, bool overwrite) { - return Task.Run(() => MakePortable(isPortable)); + return Task.Run(() => MakePortable(isPortable, overwrite)); } - public static void MakePortable(bool isPortable) + public static void MakePortable(bool isPortable, bool overwrite) { if (isPortable) { - MoveSettings(GetSettingsLocationNotPortable(), GetPortableSettingsLocation()); + MoveSettings(GetSettingsLocationNotPortable(), GetPortableSettingsLocation(), overwrite); // After moving the files, set the indicator that the settings are now portable File.Create(GetIsPortableFilePath()); } else { - MoveSettings(GetPortableSettingsLocation(), GetSettingsLocationNotPortable()); + MoveSettings(GetPortableSettingsLocation(), GetSettingsLocationNotPortable(), overwrite); // Remove the indicator after moving the files... File.Delete(GetIsPortableFilePath()); diff --git a/Source/NETworkManager/Resources/Localization/Resources.de-DE.xaml b/Source/NETworkManager/Resources/Localization/Resources.de-DE.xaml index ae4f0ed175..d80b8d4a22 100644 --- a/Source/NETworkManager/Resources/Localization/Resources.de-DE.xaml +++ b/Source/NETworkManager/Resources/Localization/Resources.de-DE.xaml @@ -104,6 +104,7 @@ IP-Scanner PuTTY Gruppe bearbeiten + Überschreiben? NETworkManager @@ -391,6 +392,7 @@ Neue Sitzung Gitter GitHub + Einstellungen im Zielordner überschreiben?\n\nWenn Sie auf "Verschieben & neu starten" klicken, werden die restlichen Dateien kopiert und die Anwendung danach mit den neuen Einstellungen neu gestartet! Wie installiere ich RDP 8.1 unter Windows 7 / Server 2008 R2? @@ -452,6 +454,10 @@ Auf Updates prüfen PuTTY konfigurieren DNS-Cache leeren + Ja + Nein + Überschreiben + Verschieben & neu starten Ausschneiden diff --git a/Source/NETworkManager/Resources/Localization/Resources.en-US.xaml b/Source/NETworkManager/Resources/Localization/Resources.en-US.xaml index e72b070370..7139cbc936 100644 --- a/Source/NETworkManager/Resources/Localization/Resources.en-US.xaml +++ b/Source/NETworkManager/Resources/Localization/Resources.en-US.xaml @@ -104,7 +104,8 @@ IP Scanner PuTTY Edit group - + Overwrite? + NETworkManager A powerful tool for managing networks and troubleshoot network problems! @@ -391,6 +392,7 @@ New session Gitter GitHub + Overwrite settings in the destination folder?\n\nIf you click "Move & Restart", the remaining files will be copied and the application will be restarted with the new settings! How to install RDP 8.1 on Windows 7/Server 2008 R2 @@ -452,6 +454,10 @@ Check for updates Configure PuTTY Flush DNS cache + Yes + No + Overwrite + Move & Restart Cut diff --git a/Source/NETworkManager/SettingsViewManager.cs b/Source/NETworkManager/SettingsViewManager.cs index a502552296..b409feb30f 100644 --- a/Source/NETworkManager/SettingsViewManager.cs +++ b/Source/NETworkManager/SettingsViewManager.cs @@ -1,6 +1,6 @@ using MahApps.Metro.IconPacks; +using NETworkManager.Models.Settings; using System.Collections.Generic; -using System.Windows; namespace NETworkManager { @@ -20,7 +20,7 @@ public static List List new SettingsViewInfo(Name.Language, new PackIconMaterial() { Kind = PackIconMaterialKind.Flag}, Group.General), new SettingsViewInfo(Name.HotKeys, new PackIconOcticons() { Kind = PackIconOcticonsKind.Keyboard }, Group.General), new SettingsViewInfo(Name.Autostart, new PackIconMaterial() { Kind = PackIconMaterialKind.Power }, Group.General), - new SettingsViewInfo(Name.Settings, new PackIconOcticons() { Kind = PackIconOcticonsKind.Settings }, Group.General), + new SettingsViewInfo(Name.Settings, new PackIconModern() { Kind = PackIconModernKind.Settings }, Group.General), new SettingsViewInfo(Name.Update, new PackIconMaterial() {Kind = PackIconMaterialKind.Download }, Group.General), new SettingsViewInfo(Name.ImportExport, new PackIconMaterial() { Kind = PackIconMaterialKind.Import}, Group.General), @@ -67,9 +67,9 @@ public static string TranslateName(Name name, Group group) switch (group) { case Group.General: - return Application.Current.Resources["String_SettingsName_" + name] as string; + return LocalizationManager.GetStringByKey("String_SettingsName_" + name); case Group.Applications: - return Application.Current.Resources["String_ApplicationName_" + name] as string; + return LocalizationManager.GetStringByKey("String_ApplicationName_" + name); default: return "Not found!"; } @@ -83,7 +83,7 @@ public enum Group public static string TranslateGroup(Group group) { - return Application.Current.Resources["String_SettingsGroup_" + group] as string; + return LocalizationManager.GetStringByKey("String_SettingsGroup_" + group); } } } diff --git a/Source/NETworkManager/Validators/BaudValidator.cs b/Source/NETworkManager/Validators/BaudValidator.cs index 9b4912ec59..4875bdef20 100644 --- a/Source/NETworkManager/Validators/BaudValidator.cs +++ b/Source/NETworkManager/Validators/BaudValidator.cs @@ -1,6 +1,6 @@ -using System.Globalization; +using NETworkManager.Models.Settings; +using System.Globalization; using System.Linq; -using System.Windows; using System.Windows.Controls; namespace NETworkManager.Validators @@ -11,15 +11,13 @@ public class BaudValidator : ValidationRule public override ValidationResult Validate(object value, CultureInfo cultureInfo) { - int baud = 0; - - if (int.TryParse(value as string, out baud)) + if (int.TryParse(value as string, out int baud)) { if (Bauds.Contains(baud)) return ValidationResult.ValidResult; } - return new ValidationResult(false, Application.Current.Resources["String_ValidationError_EnterValidBaud"] as string); + return new ValidationResult(false, LocalizationManager.GetStringByKey("String_ValidationError_EnterValidBaud")); } } } \ No newline at end of file diff --git a/Source/NETworkManager/Validators/EmptyOrIPv4AddressValidator.cs b/Source/NETworkManager/Validators/EmptyOrIPv4AddressValidator.cs index 14faf19f3b..e6514ad477 100644 --- a/Source/NETworkManager/Validators/EmptyOrIPv4AddressValidator.cs +++ b/Source/NETworkManager/Validators/EmptyOrIPv4AddressValidator.cs @@ -1,7 +1,7 @@ -using NETworkManager.Utilities; +using NETworkManager.Models.Settings; +using NETworkManager.Utilities; using System.Globalization; using System.Text.RegularExpressions; -using System.Windows; using System.Windows.Controls; namespace NETworkManager.Validators @@ -16,7 +16,7 @@ public override ValidationResult Validate(object value, CultureInfo cultureInfo) if (Regex.IsMatch(value as string, RegexHelper.IPv4AddressRegex)) return ValidationResult.ValidResult; - return new ValidationResult(false, Application.Current.Resources["String_ValidationError_EnterValidIPv4Address"] as string); + return new ValidationResult(false, LocalizationManager.GetStringByKey("String_ValidationError_EnterValidIPv4Address")); } } } diff --git a/Source/NETworkManager/Validators/EmptyValidator.cs b/Source/NETworkManager/Validators/EmptyValidator.cs index 636e9f7585..ffc09cb122 100644 --- a/Source/NETworkManager/Validators/EmptyValidator.cs +++ b/Source/NETworkManager/Validators/EmptyValidator.cs @@ -1,5 +1,5 @@ -using System.Globalization; -using System.Windows; +using NETworkManager.Models.Settings; +using System.Globalization; using System.Windows.Controls; namespace NETworkManager.Validators @@ -9,7 +9,7 @@ public class EmptyValidator : ValidationRule public override ValidationResult Validate(object value, CultureInfo cultureInfo) { if (string.IsNullOrEmpty(value as string)) - return new ValidationResult(false, Application.Current.Resources["String_ValidationError_FieldEmpty"] as string); + return new ValidationResult(false, LocalizationManager.GetStringByKey("String_ValidationError_FieldEmpty")); return ValidationResult.ValidResult; } diff --git a/Source/NETworkManager/Validators/FileExistsValidator.cs b/Source/NETworkManager/Validators/FileExistsValidator.cs index 800d23459b..a532d48fc2 100644 --- a/Source/NETworkManager/Validators/FileExistsValidator.cs +++ b/Source/NETworkManager/Validators/FileExistsValidator.cs @@ -13,7 +13,7 @@ public override ValidationResult Validate(object value, CultureInfo cultureInfo) if (File.Exists(value as string)) return ValidationResult.ValidResult; - return new ValidationResult(false, Application.Current.Resources["String_ValidationError_FileDoesNotExist"] as string); + return new ValidationResult(false, LocalizationManager.GetStringByKey("String_ValidationError_FileDoesNotExist")); } } } diff --git a/Source/NETworkManager/Validators/HttpAndHttpsUriValidator.cs b/Source/NETworkManager/Validators/HttpAndHttpsUriValidator.cs index c9878506c7..bd34517b71 100644 --- a/Source/NETworkManager/Validators/HttpAndHttpsUriValidator.cs +++ b/Source/NETworkManager/Validators/HttpAndHttpsUriValidator.cs @@ -1,6 +1,6 @@ -using System; +using NETworkManager.Models.Settings; +using System; using System.Globalization; -using System.Windows; using System.Windows.Controls; namespace NETworkManager.Validators @@ -12,7 +12,7 @@ public override ValidationResult Validate(object value, CultureInfo cultureInfo) if (Uri.TryCreate(value as string, UriKind.Absolute, out Uri uriResult) && (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps)) return ValidationResult.ValidResult; - return new ValidationResult(false, Application.Current.Resources["String_ValidationError_EnterValidWebsiteUri"] as string); + return new ValidationResult(false, LocalizationManager.GetStringByKey("String_ValidationError_EnterValidWebsiteUri")); } } } diff --git a/Source/NETworkManager/Validators/IPAddressValidator.cs b/Source/NETworkManager/Validators/IPAddressValidator.cs index 34c2c28b64..90237d1520 100644 --- a/Source/NETworkManager/Validators/IPAddressValidator.cs +++ b/Source/NETworkManager/Validators/IPAddressValidator.cs @@ -1,7 +1,7 @@ -using NETworkManager.Utilities; +using NETworkManager.Models.Settings; +using NETworkManager.Utilities; using System.Globalization; using System.Text.RegularExpressions; -using System.Windows; using System.Windows.Controls; namespace NETworkManager.Validators @@ -13,7 +13,7 @@ public override ValidationResult Validate(object value, CultureInfo cultureInfo) if (Regex.IsMatch(value as string, RegexHelper.IPv4AddressRegex) || Regex.IsMatch(value as string, RegexHelper.IPv6AddressRegex)) return ValidationResult.ValidResult; - return new ValidationResult(false, Application.Current.Resources["String_ValidationError_EnterValidIPAddress"] as string); + return new ValidationResult(false, LocalizationManager.GetStringByKey("String_ValidationError_EnterValidIPAddress")); } } } diff --git a/Source/NETworkManager/Validators/IPScanRangeValidator.cs b/Source/NETworkManager/Validators/IPScanRangeValidator.cs index 5a30436597..a36874e28f 100644 --- a/Source/NETworkManager/Validators/IPScanRangeValidator.cs +++ b/Source/NETworkManager/Validators/IPScanRangeValidator.cs @@ -1,9 +1,9 @@ using System.Globalization; using System.Text.RegularExpressions; -using System.Windows; using System.Windows.Controls; using NETworkManager.Utilities; using System.Net; +using NETworkManager.Models.Settings; namespace NETworkManager.Validators { @@ -71,7 +71,7 @@ public override ValidationResult Validate(object value, CultureInfo cultureInfo) if (isValid) return ValidationResult.ValidResult; else - return new ValidationResult(false, Application.Current.Resources["String_ValidationError_EnterValidIPScanRange"] as string); + return new ValidationResult(false, LocalizationManager.GetStringByKey("String_ValidationError_EnterValidIPScanRange")); } } } diff --git a/Source/NETworkManager/Validators/IPv4AddressValidator.cs b/Source/NETworkManager/Validators/IPv4AddressValidator.cs index 71757b06a6..34db264f9d 100644 --- a/Source/NETworkManager/Validators/IPv4AddressValidator.cs +++ b/Source/NETworkManager/Validators/IPv4AddressValidator.cs @@ -1,7 +1,7 @@ -using NETworkManager.Utilities; +using NETworkManager.Models.Settings; +using NETworkManager.Utilities; using System.Globalization; using System.Text.RegularExpressions; -using System.Windows; using System.Windows.Controls; namespace NETworkManager.Validators @@ -13,7 +13,7 @@ public override ValidationResult Validate(object value, CultureInfo cultureInfo) if (Regex.IsMatch(value as string, RegexHelper.IPv4AddressRegex)) return ValidationResult.ValidResult; - return new ValidationResult(false, Application.Current.Resources["String_ValidationError_EnterValidIPv4Address"] as string); + return new ValidationResult(false, LocalizationManager.GetStringByKey("String_ValidationError_EnterValidIPv4Address")); } } } diff --git a/Source/NETworkManager/Validators/Int32Validator.cs b/Source/NETworkManager/Validators/Int32Validator.cs index 888a928609..61ac02fca3 100644 --- a/Source/NETworkManager/Validators/Int32Validator.cs +++ b/Source/NETworkManager/Validators/Int32Validator.cs @@ -1,5 +1,5 @@ -using System.Globalization; -using System.Windows; +using NETworkManager.Models.Settings; +using System.Globalization; using System.Windows.Controls; namespace NETworkManager.Validators @@ -11,7 +11,7 @@ public override ValidationResult Validate(object value, CultureInfo cultureInfo) if (int.TryParse(value as string, out int x) && x > 0) return ValidationResult.ValidResult; else - return new ValidationResult(false, Application.Current.Resources["String_ValidationError_EnterValidNumber"] as string); + return new ValidationResult(false, LocalizationManager.GetStringByKey("String_ValidationError_EnterValidNumber")); } } } diff --git a/Source/NETworkManager/Validators/MACAddressValidator.cs b/Source/NETworkManager/Validators/MACAddressValidator.cs index df7287d813..d864b2d035 100644 --- a/Source/NETworkManager/Validators/MACAddressValidator.cs +++ b/Source/NETworkManager/Validators/MACAddressValidator.cs @@ -1,7 +1,7 @@ -using NETworkManager.Utilities; +using NETworkManager.Models.Settings; +using NETworkManager.Utilities; using System.Globalization; using System.Text.RegularExpressions; -using System.Windows; using System.Windows.Controls; namespace NETworkManager.Validators @@ -13,7 +13,7 @@ public override ValidationResult Validate(object value, CultureInfo cultureInfo) if (Regex.IsMatch(value as string, RegexHelper.MACAddressRegex)) return ValidationResult.ValidResult; - return new ValidationResult(false, Application.Current.Resources["String_ValidationError_EnterValidMACAddress"] as string); + return new ValidationResult(false, LocalizationManager.GetStringByKey("String_ValidationError_EnterValidMACAddress")); } } } \ No newline at end of file diff --git a/Source/NETworkManager/Validators/MultipleHostsValidator.cs b/Source/NETworkManager/Validators/MultipleHostsValidator.cs index 39b8ee5af3..cecbb0633f 100644 --- a/Source/NETworkManager/Validators/MultipleHostsValidator.cs +++ b/Source/NETworkManager/Validators/MultipleHostsValidator.cs @@ -1,5 +1,5 @@ -using System.Globalization; -using System.Windows; +using NETworkManager.Models.Settings; +using System.Globalization; using System.Windows.Controls; namespace NETworkManager.Validators @@ -11,7 +11,7 @@ public override ValidationResult Validate(object value, CultureInfo cultureInfo) foreach(string host in (value as string).Split(';')) { if (string.IsNullOrEmpty(host)) - return new ValidationResult(false, Application.Current.Resources["String_ValidationError_EnterValidHosts"] as string); + return new ValidationResult(false, LocalizationManager.GetStringByKey("String_ValidationError_EnterValidHosts")); } return ValidationResult.ValidResult; diff --git a/Source/NETworkManager/Validators/MultipleIPAddressesValidator.cs b/Source/NETworkManager/Validators/MultipleIPAddressesValidator.cs index 450cbeb592..3fecb623aa 100644 --- a/Source/NETworkManager/Validators/MultipleIPAddressesValidator.cs +++ b/Source/NETworkManager/Validators/MultipleIPAddressesValidator.cs @@ -1,7 +1,7 @@ -using NETworkManager.Utilities; +using NETworkManager.Models.Settings; +using NETworkManager.Utilities; using System.Globalization; using System.Text.RegularExpressions; -using System.Windows; using System.Windows.Controls; namespace NETworkManager.Validators @@ -13,7 +13,7 @@ public override ValidationResult Validate(object value, CultureInfo cultureInfo) foreach (string ipAddress in (value as string).Split(';')) { if (!Regex.IsMatch(ipAddress.Trim(), RegexHelper.IPv4AddressRegex) && !Regex.IsMatch(ipAddress.Trim(), RegexHelper.IPv6AddressRegex)) - return new ValidationResult(false, Application.Current.Resources["String_ValidationError_EnterOneOrMoreValidIPAddresses"] as string); + return new ValidationResult(false, LocalizationManager.GetStringByKey("String_ValidationError_EnterOneOrMoreValidIPAddresses")); } return ValidationResult.ValidResult; } diff --git a/Source/NETworkManager/Validators/NoSpacesValidator.cs b/Source/NETworkManager/Validators/NoSpacesValidator.cs index de60e6efb2..0c49ca3e9c 100644 --- a/Source/NETworkManager/Validators/NoSpacesValidator.cs +++ b/Source/NETworkManager/Validators/NoSpacesValidator.cs @@ -1,7 +1,7 @@ -using System; +using NETworkManager.Models.Settings; +using System; using System.Globalization; using System.Linq; -using System.Windows; using System.Windows.Controls; namespace NETworkManager.Validators @@ -13,7 +13,7 @@ public override ValidationResult Validate(object value, CultureInfo cultureInfo) if (string.IsNullOrEmpty(value as string) || !(value as string).Any(Char.IsWhiteSpace)) return ValidationResult.ValidResult; - return new ValidationResult(false, Application.Current.Resources["String_ValidationError_SpacesAreNotAllowed"] as string); + return new ValidationResult(false, LocalizationManager.GetStringByKey("String_ValidationError_SpacesAreNotAllowed")); } } } \ No newline at end of file diff --git a/Source/NETworkManager/Validators/OIDValidator.cs b/Source/NETworkManager/Validators/OIDValidator.cs index 77874f23ae..d0da8eedb7 100644 --- a/Source/NETworkManager/Validators/OIDValidator.cs +++ b/Source/NETworkManager/Validators/OIDValidator.cs @@ -1,7 +1,7 @@ -using NETworkManager.Utilities; +using NETworkManager.Models.Settings; +using NETworkManager.Utilities; using System.Globalization; using System.Text.RegularExpressions; -using System.Windows; using System.Windows.Controls; namespace NETworkManager.Validators @@ -13,7 +13,7 @@ public override ValidationResult Validate(object value, CultureInfo cultureInfo) if (Regex.IsMatch(value as string, RegexHelper.OIDRegex)) return ValidationResult.ValidResult; - return new ValidationResult(false, Application.Current.Resources["String_ValidationError_EnterValidOID"] as string); + return new ValidationResult(false, LocalizationManager.GetStringByKey("String_ValidationError_EnterValidOID")); } } } diff --git a/Source/NETworkManager/Validators/OpacityTextboxValidator.cs b/Source/NETworkManager/Validators/OpacityTextboxValidator.cs index 5e0ea4abc6..74bb7e17c9 100644 --- a/Source/NETworkManager/Validators/OpacityTextboxValidator.cs +++ b/Source/NETworkManager/Validators/OpacityTextboxValidator.cs @@ -1,5 +1,5 @@ -using System.Globalization; -using System.Windows; +using NETworkManager.Models.Settings; +using System.Globalization; using System.Windows.Controls; namespace NETworkManager.Validators @@ -11,13 +11,13 @@ public override ValidationResult Validate(object value, CultureInfo cultureInfo) if (int.TryParse(value as string, out int result)) { if (result < 10 || result > 100) - return new ValidationResult(false, Application.Current.Resources["String_ValidationError_EnterValidValueBetween10and100"] as string); + return new ValidationResult(false, LocalizationManager.GetStringByKey("String_ValidationError_EnterValidValueBetween10and100")); else return ValidationResult.ValidResult; } else { - return new ValidationResult(false, Application.Current.Resources["String_ValidationError_OnlyNumbersCanBeEntered"] as string); + return new ValidationResult(false, LocalizationManager.GetStringByKey("String_ValidationError_OnlyNumbersCanBeEntered")); } } } diff --git a/Source/NETworkManager/Validators/PortRangeValidator.cs b/Source/NETworkManager/Validators/PortRangeValidator.cs index 8f64bb0fd3..c1a198300b 100644 --- a/Source/NETworkManager/Validators/PortRangeValidator.cs +++ b/Source/NETworkManager/Validators/PortRangeValidator.cs @@ -1,5 +1,5 @@ -using System.Globalization; -using System.Windows; +using NETworkManager.Models.Settings; +using System.Globalization; using System.Windows.Controls; namespace NETworkManager.Validators @@ -43,7 +43,7 @@ public override ValidationResult Validate(object value, CultureInfo cultureInfo) if (isValid) return ValidationResult.ValidResult; else - return new ValidationResult(false, Application.Current.Resources["String_ValidationError_EnterValidPortOrPortRange"] as string); + return new ValidationResult(false, LocalizationManager.GetStringByKey("String_ValidationError_EnterValidPortOrPortRange")); } } } \ No newline at end of file diff --git a/Source/NETworkManager/Validators/PortValidator.cs b/Source/NETworkManager/Validators/PortValidator.cs index ec002c7818..688b8ef600 100644 --- a/Source/NETworkManager/Validators/PortValidator.cs +++ b/Source/NETworkManager/Validators/PortValidator.cs @@ -1,5 +1,5 @@ -using System.Globalization; -using System.Windows; +using NETworkManager.Models.Settings; +using System.Globalization; using System.Windows.Controls; namespace NETworkManager.Validators @@ -7,16 +7,14 @@ namespace NETworkManager.Validators public class PortValidator : ValidationRule { public override ValidationResult Validate(object value, CultureInfo cultureInfo) - { - int portNumber = 0; - - if (int.TryParse(value as string, out portNumber)) + { + if (int.TryParse(value as string, out int portNumber)) { if ((portNumber > 0) && (portNumber < 65536)) return ValidationResult.ValidResult; } - return new ValidationResult(false, Application.Current.Resources["String_ValidationError_EnterValidPort"] as string); + return new ValidationResult(false, LocalizationManager.GetStringByKey("String_ValidationError_EnterValidPort")); } } } \ No newline at end of file diff --git a/Source/NETworkManager/Validators/PrivacyAESValidator.cs b/Source/NETworkManager/Validators/PrivacyAESValidator.cs index b1ef92eec5..cd6fcfca29 100644 --- a/Source/NETworkManager/Validators/PrivacyAESValidator.cs +++ b/Source/NETworkManager/Validators/PrivacyAESValidator.cs @@ -1,5 +1,5 @@ -using System.Globalization; -using System.Windows; +using NETworkManager.Models.Settings; +using System.Globalization; using System.Windows.Controls; namespace NETworkManager.Validators @@ -9,7 +9,7 @@ public class PrivacyAESValidator : ValidationRule public override ValidationResult Validate(object value, CultureInfo cultureInfo) { if ((value as string).Length < 8) - return new ValidationResult(false, Application.Current.Resources["String_ValidationError_KeyMustHave8CharactersOrMore"] as string); + return new ValidationResult(false, LocalizationManager.GetStringByKey("String_ValidationError_KeyMustHave8CharactersOrMore")); return ValidationResult.ValidResult; } diff --git a/Source/NETworkManager/Validators/SettingsFolderExistsValidator.cs b/Source/NETworkManager/Validators/SettingsFolderExistsValidator.cs index b9fa2fd434..f205a72c09 100644 --- a/Source/NETworkManager/Validators/SettingsFolderExistsValidator.cs +++ b/Source/NETworkManager/Validators/SettingsFolderExistsValidator.cs @@ -15,7 +15,7 @@ public override ValidationResult Validate(object value, CultureInfo cultureInfo) if (Directory.Exists(path) || SettingsManager.GetDefaultSettingsLocation() == path) return ValidationResult.ValidResult; - return new ValidationResult(false, Application.Current.Resources["String_ValidationError_FolderDoesNotExist"] as string); + return new ValidationResult(false, LocalizationManager.GetStringByKey("String_ValidationError_FolderDoesNotExist")); } } } diff --git a/Source/NETworkManager/Validators/SubnetCalculatorSubnetValidator.cs b/Source/NETworkManager/Validators/SubnetCalculatorSubnetValidator.cs index dfcabdceb2..110b979101 100644 --- a/Source/NETworkManager/Validators/SubnetCalculatorSubnetValidator.cs +++ b/Source/NETworkManager/Validators/SubnetCalculatorSubnetValidator.cs @@ -1,7 +1,7 @@ using System.Globalization; using System.Text.RegularExpressions; -using System.Windows; using System.Windows.Controls; +using NETworkManager.Models.Settings; using NETworkManager.Utilities; namespace NETworkManager.Validators @@ -18,7 +18,7 @@ public override ValidationResult Validate(object value, CultureInfo cultureInfo) if (Regex.IsMatch(subnet, RegexHelper.SubnetCalculatorIPv4AddressSubnetmaskRegex)) return ValidationResult.ValidResult; - return new ValidationResult(false, Application.Current.Resources["String_ValidationError_EnterValidSubnet"] as string); + return new ValidationResult(false, LocalizationManager.GetStringByKey("String_ValidationError_EnterValidSubnet")); } } } diff --git a/Source/NETworkManager/Validators/SubnetValidator.cs b/Source/NETworkManager/Validators/SubnetValidator.cs index cd536dcebd..e5b161ed1a 100644 --- a/Source/NETworkManager/Validators/SubnetValidator.cs +++ b/Source/NETworkManager/Validators/SubnetValidator.cs @@ -1,7 +1,7 @@ using System.Globalization; using System.Text.RegularExpressions; -using System.Windows; using System.Windows.Controls; +using NETworkManager.Models.Settings; using NETworkManager.Utilities; namespace NETworkManager.Validators @@ -18,7 +18,7 @@ public override ValidationResult Validate(object value, CultureInfo cultureInfo) if (Regex.IsMatch(subnet, RegexHelper.IPv4AddressSubnetmaskRegex)) return ValidationResult.ValidResult; - return new ValidationResult(false, Application.Current.Resources["String_ValidationError_EnterValidSubnet"] as string); + return new ValidationResult(false, LocalizationManager.GetStringByKey("String_ValidationError_EnterValidSubnet")); } } } diff --git a/Source/NETworkManager/Validators/SubnetmaskOrCIDRValidator.cs b/Source/NETworkManager/Validators/SubnetmaskOrCIDRValidator.cs index 0f11f64f2a..6dfb77bdc8 100644 --- a/Source/NETworkManager/Validators/SubnetmaskOrCIDRValidator.cs +++ b/Source/NETworkManager/Validators/SubnetmaskOrCIDRValidator.cs @@ -2,6 +2,7 @@ using System.Text.RegularExpressions; using System.Windows; using System.Windows.Controls; +using NETworkManager.Models.Settings; using NETworkManager.Utilities; namespace NETworkManager.Validators @@ -24,7 +25,7 @@ public override ValidationResult Validate(object value, CultureInfo cultureInfo) } } - return new ValidationResult(false, Application.Current.Resources["String_ValidationError_EnterValidSubnetmaskOrCIDR"] as string); + return new ValidationResult(false, LocalizationManager.GetStringByKey("String_ValidationError_EnterValidSubnetmaskOrCIDR")); } } } diff --git a/Source/NETworkManager/Validators/SubnetmaskValidator.cs b/Source/NETworkManager/Validators/SubnetmaskValidator.cs index 0f6eb98b02..d114cb8db9 100644 --- a/Source/NETworkManager/Validators/SubnetmaskValidator.cs +++ b/Source/NETworkManager/Validators/SubnetmaskValidator.cs @@ -1,7 +1,7 @@ -using NETworkManager.Utilities; +using NETworkManager.Models.Settings; +using NETworkManager.Utilities; using System.Globalization; using System.Text.RegularExpressions; -using System.Windows; using System.Windows.Controls; namespace NETworkManager.Validators @@ -13,7 +13,7 @@ public override ValidationResult Validate(object value, CultureInfo cultureInfo) if (Regex.IsMatch(value as string, RegexHelper.SubnetmaskRegex)) return ValidationResult.ValidResult; - return new ValidationResult(false, Application.Current.Resources["String_ValidationError_EnterValidSubnetmask"] as string); + return new ValidationResult(false, LocalizationManager.GetStringByKey("String_ValidationError_EnterValidSubnetmask")); } } } diff --git a/Source/NETworkManager/ViewModels/ARPTableViewModel.cs b/Source/NETworkManager/ViewModels/ARPTableViewModel.cs index 30902c987f..94ef8630fb 100644 --- a/Source/NETworkManager/ViewModels/ARPTableViewModel.cs +++ b/Source/NETworkManager/ViewModels/ARPTableViewModel.cs @@ -8,6 +8,7 @@ using MahApps.Metro.Controls.Dialogs; using NETworkManager.Views; using NETworkManager.Utilities; +using NETworkManager.Models.Settings; namespace NETworkManager.ViewModels { @@ -210,7 +211,7 @@ private async void AddEntryAction() CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_AddEntry"] as string + Title = LocalizationManager.GetStringByKey("String_Header_AddEntry") }; ARPTableAddEntryViewModel arpTableAddEntryViewModel = new ARPTableAddEntryViewModel(async instance => @@ -272,7 +273,7 @@ public ICommand CopySelectedMulticastCommand private void CopySelectedMulticastAction() { - Clipboard.SetText(SelectedARPTableInfo.IsMulticast ? Application.Current.Resources["String_Yes"] as string : Application.Current.Resources["String_No"] as string); + Clipboard.SetText(SelectedARPTableInfo.IsMulticast ? LocalizationManager.GetStringByKey("String_Yes") : LocalizationManager.GetStringByKey("String_No")); } #endregion @@ -292,7 +293,7 @@ private async void Refresh() #region Events private void ArpTable_UserHasCanceled(object sender, EventArgs e) { - StatusMessage = Application.Current.Resources["String_CanceledByUser"] as string; + StatusMessage = LocalizationManager.GetStringByKey("String_CanceledByUser"); DisplayStatusMessage = true; } #endregion diff --git a/Source/NETworkManager/ViewModels/AboutViewModel.cs b/Source/NETworkManager/ViewModels/AboutViewModel.cs index df2bc39fef..0220e875f3 100644 --- a/Source/NETworkManager/ViewModels/AboutViewModel.cs +++ b/Source/NETworkManager/ViewModels/AboutViewModel.cs @@ -137,7 +137,7 @@ public LibraryInfo SelectedLibraryInfo #region Constructor public AboutViewModel() { - Version = string.Format("{0} {1}", Application.Current.Resources["String_Version"] as string, AssemblyManager.Current.Version); + Version = string.Format("{0} {1}", LocalizationManager.GetStringByKey("String_Version"), AssemblyManager.Current.Version); _librariesView = CollectionViewSource.GetDefaultView(LibraryManager.List); _librariesView.SortDescriptions.Add(new SortDescription(nameof(LibraryInfo.Library), ListSortDirection.Ascending)); @@ -207,7 +207,7 @@ private void CheckForUpdates() #region Events private void Updater_UpdateAvailable(object sender, UpdateAvailableArgs e) { - UpdateText = string.Format(Application.Current.Resources["String_VersionxxAvailable"] as string, e.Version); + UpdateText = string.Format(LocalizationManager.GetStringByKey("String_VersionxxAvailable"), e.Version); IsUpdateCheckRunning = false; UpdateAvailable = true; @@ -215,7 +215,7 @@ private void Updater_UpdateAvailable(object sender, UpdateAvailableArgs e) private void Updater_NoUpdateAvailable(object sender, System.EventArgs e) { - UpdaterMessage = Application.Current.Resources["String_NoUpdateAvailable"] as string; + UpdaterMessage = LocalizationManager.GetStringByKey("String_NoUpdateAvailable"); IsUpdateCheckRunning = false; ShowUpdaterMessage = true; @@ -223,7 +223,7 @@ private void Updater_NoUpdateAvailable(object sender, System.EventArgs e) private void Updater_Error(object sender, EventArgs e) { - UpdaterMessage = Application.Current.Resources["String_ErrorCheckingApiGithubComVerifyYourNetworkConnection"] as string; ; + UpdaterMessage = LocalizationManager.GetStringByKey("String_ErrorCheckingApiGithubComVerifyYourNetworkConnection"); ; IsUpdateCheckRunning = false; ShowUpdaterMessage = true; diff --git a/Source/NETworkManager/ViewModels/CredentialsViewModel.cs b/Source/NETworkManager/ViewModels/CredentialsViewModel.cs index d1995acb79..1ec19181e1 100644 --- a/Source/NETworkManager/ViewModels/CredentialsViewModel.cs +++ b/Source/NETworkManager/ViewModels/CredentialsViewModel.cs @@ -173,7 +173,7 @@ private async void SetMasterPasswordAction() { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_SetMasterPassword"] as string + Title = LocalizationManager.GetStringByKey("String_Header_SetMasterPassword") }; CredentialsSetMasterPasswordViewModel credentialsSetMasterPasswordViewModel = new CredentialsSetMasterPasswordViewModel(instance => @@ -209,7 +209,7 @@ private async void DecryptAndLoadAction() { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_MasterPassword"] as string + Title = LocalizationManager.GetStringByKey("String_Header_MasterPassword") }; CredentialsMasterPasswordViewModel credentialsMasterPasswordViewModel = new CredentialsMasterPasswordViewModel(async instance => @@ -217,7 +217,7 @@ private async void DecryptAndLoadAction() await dialogCoordinator.HideMetroDialogAsync(this, customDialog); if (!CredentialManager.Load(instance.Password)) - await dialogCoordinator.ShowMessageAsync(this, Application.Current.Resources["String_Header_WrongPassword"] as string, Application.Current.Resources["String_WrongPasswordDecryptionFailed"] as string, MessageDialogStyle.Affirmative, AppearanceManager.MetroDialog); + await dialogCoordinator.ShowMessageAsync(this, LocalizationManager.GetStringByKey("String_Header_WrongPassword"), LocalizationManager.GetStringByKey("String_WrongPasswordDecryptionFailed"), MessageDialogStyle.Affirmative, AppearanceManager.MetroDialog); CheckCredentialsLoaded(); @@ -244,7 +244,7 @@ private async void ChangeMasterPasswordAction() { CustomDialog customDialogSetMasterPassword = new CustomDialog() { - Title = Application.Current.Resources["String_Header_SetMasterPassword"] as string + Title = LocalizationManager.GetStringByKey("String_Header_SetMasterPassword") }; CredentialsSetMasterPasswordViewModel credentialsSetMasterPasswordViewModel = new CredentialsSetMasterPasswordViewModel(instance => @@ -275,7 +275,7 @@ private async void AddAction() { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_AddCredential"] as string + Title = LocalizationManager.GetStringByKey("String_Header_AddCredential") }; CredentialViewModel credentialViewModel = new CredentialViewModel(instance => @@ -315,7 +315,7 @@ private async void EditAction() { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_EditCredential"] as string + Title = LocalizationManager.GetStringByKey("String_Header_EditCredential") }; CredentialViewModel credentialViewModel = new CredentialViewModel(instance => @@ -357,7 +357,7 @@ private async void DeleteAction() { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_DeleteCredential"] as string + Title = LocalizationManager.GetStringByKey("String_Header_DeleteCredential") }; ConfirmRemoveViewModel confirmRemoveViewModel = new ConfirmRemoveViewModel(instance => @@ -370,7 +370,7 @@ private async void DeleteAction() }, instance => { dialogCoordinator.HideMetroDialogAsync(this, customDialog); - }, Application.Current.Resources["String_DeleteCredentialMessage"] as string); + }, LocalizationManager.GetStringByKey("String_DeleteCredentialMessage")); customDialog.Content = new ConfirmRemoveDialog { @@ -391,7 +391,7 @@ private async void LockUnlockAction() { CustomDialog customDialogMasterPassword = new CustomDialog() { - Title = Application.Current.Resources["String_Header_MasterPassword"] as string + Title = LocalizationManager.GetStringByKey("String_Header_MasterPassword") }; CredentialsMasterPasswordViewModel credentialsMasterPasswordViewModel = new CredentialsMasterPasswordViewModel(async instance => @@ -401,7 +401,7 @@ private async void LockUnlockAction() if (CredentialManager.VerifyMasterPasword(instance.Password)) TimerLockUIStart(); else - await dialogCoordinator.ShowMessageAsync(this, Application.Current.Resources["String_Header_WrongPassword"] as string, Application.Current.Resources["String_WrongPassword"] as string, MessageDialogStyle.Affirmative, AppearanceManager.MetroDialog); + await dialogCoordinator.ShowMessageAsync(this, LocalizationManager.GetStringByKey("String_Header_WrongPassword"), LocalizationManager.GetStringByKey("String_WrongPassword"), MessageDialogStyle.Affirmative, AppearanceManager.MetroDialog); }, instance => { dialogCoordinator.HideMetroDialogAsync(this, customDialogMasterPassword); diff --git a/Source/NETworkManager/ViewModels/DNSLookupViewModel.cs b/Source/NETworkManager/ViewModels/DNSLookupViewModel.cs index 9c632ab008..15989b79cf 100644 --- a/Source/NETworkManager/ViewModels/DNSLookupViewModel.cs +++ b/Source/NETworkManager/ViewModels/DNSLookupViewModel.cs @@ -383,9 +383,9 @@ private void DNSLookup_LookupError(object sender, DNSLookupErrorArgs e) StatusMessage += Environment.NewLine; if (e.ErrorCode == "Timeout Error") - StatusMessage += string.Format(Application.Current.Resources["String_TimeoutWhenQueryingDNSServer"] as string, e.DNSServer); + StatusMessage += string.Format(LocalizationManager.GetStringByKey("String_TimeoutWhenQueryingDNSServer"), e.DNSServer); else - StatusMessage += Application.Current.Resources["String_UnkownError"] as string; + StatusMessage += LocalizationManager.GetStringByKey("String_UnkownError"); DisplayStatusMessage = true; diff --git a/Source/NETworkManager/ViewModels/IPScannerProfileViewModel.cs b/Source/NETworkManager/ViewModels/IPScannerProfileViewModel.cs index ba76e5735c..8ef4e583a2 100644 --- a/Source/NETworkManager/ViewModels/IPScannerProfileViewModel.cs +++ b/Source/NETworkManager/ViewModels/IPScannerProfileViewModel.cs @@ -113,7 +113,7 @@ public IPScannerProfileViewModel(Action saveCommand, IPRange = _profileInfo.IPRange; // Get the group, if not --> get the first group (ascending), fallback --> default group - Group = string.IsNullOrEmpty(_profileInfo.Group) ? (groups.Count > 0 ? groups.OrderBy(x => x).First() : Application.Current.Resources["String_Default"] as string) : _profileInfo.Group; + Group = string.IsNullOrEmpty(_profileInfo.Group) ? (groups.Count > 0 ? groups.OrderBy(x => x).First() : LocalizationManager.GetStringByKey("String_Default")) : _profileInfo.Group; _groups = CollectionViewSource.GetDefaultView(groups); _groups.SortDescriptions.Add(new SortDescription()); diff --git a/Source/NETworkManager/ViewModels/IPScannerViewModel.cs b/Source/NETworkManager/ViewModels/IPScannerViewModel.cs index 699a508ea3..bc3e6f86b4 100644 --- a/Source/NETworkManager/ViewModels/IPScannerViewModel.cs +++ b/Source/NETworkManager/ViewModels/IPScannerViewModel.cs @@ -490,7 +490,7 @@ public ICommand CopySelectedStatusCommand private void CopySelectedStatusAction() { - Clipboard.SetText(Application.Current.Resources["String_IPStatus_" + SelectedIPScanResult.PingInfo.Status.ToString()] as string); + Clipboard.SetText(LocalizationManager.GetStringByKey("String_IPStatus_" + SelectedIPScanResult.PingInfo.Status.ToString())); } public ICommand AddProfileCommand @@ -502,7 +502,7 @@ private async void AddProfileAction() { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_AddProfile"] as string + Title = LocalizationManager.GetStringByKey("String_Header_AddProfile") }; IPScannerProfileViewModel ipScannerProfileViewModel = new IPScannerProfileViewModel(instance => @@ -539,7 +539,7 @@ private async void EditProfileAction() { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_EditProfile"] as string + Title = LocalizationManager.GetStringByKey("String_Header_EditProfile") }; IPScannerProfileViewModel ipScannerProfileViewModel = new IPScannerProfileViewModel(instance => @@ -578,7 +578,7 @@ private async void CopyAsProfileAction() { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_CopyProfile"] as string + Title = LocalizationManager.GetStringByKey("String_Header_CopyProfile") }; IPScannerProfileViewModel ipScannerProfileViewModel = new IPScannerProfileViewModel(instance => @@ -615,7 +615,7 @@ private async void DeleteProfileAction() { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_DeleteProfile"] as string + Title = LocalizationManager.GetStringByKey("String_Header_DeleteProfile") }; ConfirmRemoveViewModel confirmRemoveViewModel = new ConfirmRemoveViewModel(instance => @@ -626,7 +626,7 @@ private async void DeleteProfileAction() }, instance => { dialogCoordinator.HideMetroDialogAsync(this, customDialog); - }, Application.Current.Resources["String_DeleteProfileMessage"] as string); + }, LocalizationManager.GetStringByKey("String_DeleteProfileMessage")); customDialog.Content = new ConfirmRemoveDialog { @@ -645,7 +645,7 @@ private async void EditGroupAction(object group) { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_EditGroup"] as string + Title = LocalizationManager.GetStringByKey("String_Header_EditGroup") }; GroupViewModel editGroupViewModel = new GroupViewModel(instance => @@ -791,7 +791,7 @@ private void IpScanner_ProgressChanged(object sender, ProgressChangedArgs e) private void IpScanner_UserHasCanceled(object sender, EventArgs e) { - StatusMessage = Application.Current.Resources["String_CanceledByUser"] as string; + StatusMessage = LocalizationManager.GetStringByKey("String_CanceledByUser"); DisplayStatusMessage = true; ScanFinished(); diff --git a/Source/NETworkManager/ViewModels/NetworkInterfaceProfileViewModel.cs b/Source/NETworkManager/ViewModels/NetworkInterfaceProfileViewModel.cs index be7cf9e7ad..997d1b2029 100644 --- a/Source/NETworkManager/ViewModels/NetworkInterfaceProfileViewModel.cs +++ b/Source/NETworkManager/ViewModels/NetworkInterfaceProfileViewModel.cs @@ -265,7 +265,7 @@ public NetworkInterfaceProfileViewModel(Action SecondaryDNSServer = _profileInfo.SecondaryDNSServer; // Get the group, if not --> get the first group (ascending), fallback --> default group - Group = string.IsNullOrEmpty(_profileInfo.Group) ? (groups.Count > 0 ? groups.OrderBy(x => x).First() : Application.Current.Resources["String_Default"] as string) : _profileInfo.Group; + Group = string.IsNullOrEmpty(_profileInfo.Group) ? (groups.Count > 0 ? groups.OrderBy(x => x).First() : LocalizationManager.GetStringByKey("String_Default")) : _profileInfo.Group; _groups = CollectionViewSource.GetDefaultView(groups); _groups.SortDescriptions.Add(new SortDescription()); diff --git a/Source/NETworkManager/ViewModels/NetworkInterfaceViewModel.cs b/Source/NETworkManager/ViewModels/NetworkInterfaceViewModel.cs index ab89fc5cc0..59b4660750 100644 --- a/Source/NETworkManager/ViewModels/NetworkInterfaceViewModel.cs +++ b/Source/NETworkManager/ViewModels/NetworkInterfaceViewModel.cs @@ -21,7 +21,6 @@ public class NetworkInterfaceViewModel : ViewModelBase { #region Variables private IDialogCoordinator dialogCoordinator; - ProgressDialogController progressDialogController; private bool _isLoading = true; @@ -757,7 +756,7 @@ public async void OpenNetworkConnectionsAction() } catch (Exception ex) { - await dialogCoordinator.ShowMessageAsync(this, Application.Current.Resources["String_Header_Error"] as string, ex.Message, MessageDialogStyle.Affirmative, AppearanceManager.MetroDialog); + await dialogCoordinator.ShowMessageAsync(this, LocalizationManager.GetStringByKey("String_Header_Error"), ex.Message, MessageDialogStyle.Affirmative, AppearanceManager.MetroDialog); } } @@ -776,7 +775,7 @@ public ICommand ApplyProfileCommand get { return new RelayCommand(p => ApplyProfileAction()); } } - private async void ApplyProfileAction() + private void ApplyProfileAction() { ApplyProfile(); } @@ -790,7 +789,7 @@ private async void AddProfileAction() { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_AddProfile"] as string + Title = LocalizationManager.GetStringByKey("String_Header_AddProfile") }; NetworkInterfaceProfileViewModel networkInterfaceProfileViewModel = new NetworkInterfaceProfileViewModel(instance => @@ -833,7 +832,7 @@ private async void EditProfileAction() { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_EditProfile"] as string + Title = LocalizationManager.GetStringByKey("String_Header_EditProfile") }; NetworkInterfaceProfileViewModel networkInterfaceProfileViewModel = new NetworkInterfaceProfileViewModel(instance => @@ -878,7 +877,7 @@ private async void CopyAsProfileAction() { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_CopyProfile"] as string + Title = LocalizationManager.GetStringByKey("String_Header_CopyProfile") }; NetworkInterfaceProfileViewModel networkInterfaceProfileViewModel = new NetworkInterfaceProfileViewModel(instance => @@ -921,7 +920,7 @@ private async void DeleteProfileAction() { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_DeleteProfile"] as string + Title = LocalizationManager.GetStringByKey("String_Header_DeleteProfile") }; ConfirmRemoveViewModel confirmRemoveViewModel = new ConfirmRemoveViewModel(instance => @@ -932,7 +931,7 @@ private async void DeleteProfileAction() }, instance => { dialogCoordinator.HideMetroDialogAsync(this, customDialog); - }, Application.Current.Resources["String_DeleteProfileMessage"] as string); + }, LocalizationManager.GetStringByKey("String_DeleteProfileMessage")); customDialog.Content = new ConfirmRemoveDialog { @@ -951,7 +950,7 @@ private async void EditGroupAction(object group) { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_EditGroup"] as string + Title = LocalizationManager.GetStringByKey("String_Header_EditGroup") }; GroupViewModel editGroupViewModel = new GroupViewModel(instance => @@ -1115,7 +1114,7 @@ public void FlushDNSCache() #region Events private void NetworkInterface_UserHasCanceled(object sender, EventArgs e) { - StatusMessage = Application.Current.Resources["String_CanceledByUser"] as string; + StatusMessage = LocalizationManager.GetStringByKey("String_CanceledByUser"); DisplayStatusMessage = true; } #endregion diff --git a/Source/NETworkManager/ViewModels/PingHostViewModel.cs b/Source/NETworkManager/ViewModels/PingHostViewModel.cs index 7f2e8b7678..1b1c0d8689 100644 --- a/Source/NETworkManager/ViewModels/PingHostViewModel.cs +++ b/Source/NETworkManager/ViewModels/PingHostViewModel.cs @@ -3,8 +3,8 @@ using Dragablz; using System.Windows.Input; using NETworkManager.Views; -using System.Windows; using NETworkManager.Utilities; +using NETworkManager.Models.Settings; namespace NETworkManager.ViewModels { @@ -38,7 +38,7 @@ public PingHostViewModel() TabItems = new ObservableCollection() { - new DragablzPingTabItem(Application.Current.Resources["String_Header_Ping"] as string, new PingView(_tabId), _tabId) + new DragablzPingTabItem(LocalizationManager.GetStringByKey("String_Header_Ping"), new PingView(_tabId), _tabId) }; } #endregion @@ -70,7 +70,7 @@ private void AddPingTab() { _tabId++; - TabItems.Add(new DragablzPingTabItem(Application.Current.Resources["String_Header_Ping"] as string, new PingView(_tabId), _tabId)); + TabItems.Add(new DragablzPingTabItem(LocalizationManager.GetStringByKey("String_Header_Ping"), new PingView(_tabId), _tabId)); SelectedTabIndex = TabItems.Count - 1; } #endregion diff --git a/Source/NETworkManager/ViewModels/PingViewModel.cs b/Source/NETworkManager/ViewModels/PingViewModel.cs index 91841f622a..3cdfb1b683 100644 --- a/Source/NETworkManager/ViewModels/PingViewModel.cs +++ b/Source/NETworkManager/ViewModels/PingViewModel.cs @@ -373,7 +373,7 @@ private async void StartPing() else PingFinished(); - StatusMessage = string.Format(Application.Current.Resources["String_CouldNotResolveHostnameFor"] as string, Host); + StatusMessage = string.Format(LocalizationManager.GetStringByKey("String_CouldNotResolveHostnameFor"), Host); DisplayStatusMessage = true; return; @@ -508,7 +508,7 @@ private void Ping_PingException(object sender, PingExceptionArgs e) switch (w32ex.NativeErrorCode) { case 1231: - errorMessage = Application.Current.Resources["String_NetworkLocationCannotBeReached"] as string; + errorMessage = LocalizationManager.GetStringByKey("String_NetworkLocationCannotBeReached"); break; default: errorMessage = e.InnerException.Message; diff --git a/Source/NETworkManager/ViewModels/PortScannerProfileViewModel.cs b/Source/NETworkManager/ViewModels/PortScannerProfileViewModel.cs index 7c0dfbf79e..f65a609eec 100644 --- a/Source/NETworkManager/ViewModels/PortScannerProfileViewModel.cs +++ b/Source/NETworkManager/ViewModels/PortScannerProfileViewModel.cs @@ -132,7 +132,7 @@ public PortScannerProfileViewModel(Action saveComma Ports = _profileInfo.Ports; // Get the group, if not --> get the first group (ascending), fallback --> default group - Group = string.IsNullOrEmpty(_profileInfo.Group) ? (groups.Count > 0 ? groups.OrderBy(x => x).First() : Application.Current.Resources["String_Default"] as string) : _profileInfo.Group; + Group = string.IsNullOrEmpty(_profileInfo.Group) ? (groups.Count > 0 ? groups.OrderBy(x => x).First() : LocalizationManager.GetStringByKey("String_Default")) : _profileInfo.Group; _groups = CollectionViewSource.GetDefaultView(groups); _groups.SortDescriptions.Add(new SortDescription()); diff --git a/Source/NETworkManager/ViewModels/PortScannerViewModel.cs b/Source/NETworkManager/ViewModels/PortScannerViewModel.cs index cddd0ae3a5..44241cb024 100644 --- a/Source/NETworkManager/ViewModels/PortScannerViewModel.cs +++ b/Source/NETworkManager/ViewModels/PortScannerViewModel.cs @@ -473,7 +473,7 @@ public ICommand CopySelectedStatusCommand private void CopySelectedStatusAction() { - Clipboard.SetText(Application.Current.Resources["String_PortStatus_" + SelectedScanResult.Status.ToString()] as string); + Clipboard.SetText(LocalizationManager.GetStringByKey("String_PortStatus_" + SelectedScanResult.Status.ToString())); } public ICommand CopySelectedProtocolCommand @@ -515,7 +515,7 @@ private async void AddProfileAction() { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_AddProfile"] as string + Title = LocalizationManager.GetStringByKey("String_Header_AddProfile") }; PortScannerProfileViewModel portScannerProfileViewModel = new PortScannerProfileViewModel(instance => @@ -553,7 +553,7 @@ private async void EditProfileAction() { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_EditProfile"] as string + Title = LocalizationManager.GetStringByKey("String_Header_EditProfile") }; PortScannerProfileViewModel portScannerProfileViewModel = new PortScannerProfileViewModel(instance => @@ -593,7 +593,7 @@ private async void CopyAsProfileAction() { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_CopyProfile"] as string + Title = LocalizationManager.GetStringByKey("String_Header_CopyProfile") }; PortScannerProfileViewModel portScannerProfileViewModel = new PortScannerProfileViewModel(instance => @@ -631,7 +631,7 @@ private async void DeleteProfileAction() { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_DeleteProfile"] as string + Title = LocalizationManager.GetStringByKey("String_Header_DeleteProfile") }; ConfirmRemoveViewModel confirmRemoveViewModel = new ConfirmRemoveViewModel(instance => @@ -642,7 +642,7 @@ private async void DeleteProfileAction() }, instance => { dialogCoordinator.HideMetroDialogAsync(this, customDialog); - }, Application.Current.Resources["String_DeleteProfileMessage"] as string); + }, LocalizationManager.GetStringByKey("String_DeleteProfileMessage")); customDialog.Content = new ConfirmRemoveDialog { @@ -661,7 +661,7 @@ private async void EditGroupAction(object group) { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_EditGroup"] as string + Title = LocalizationManager.GetStringByKey("String_Header_EditGroup") }; GroupViewModel editGroupViewModel = new GroupViewModel(instance => @@ -767,7 +767,7 @@ private async void StartScan() if (!string.IsNullOrEmpty(StatusMessage)) StatusMessage += Environment.NewLine; - StatusMessage += string.Format(Application.Current.Resources["String_CouldNotResolveHostnameFor"] as string, host); + StatusMessage += string.Format(LocalizationManager.GetStringByKey("String_CouldNotResolveHostnameFor"), host); DisplayStatusMessage = true; continue; @@ -778,7 +778,7 @@ private async void StartScan() if (hostData.Count == 0) { - StatusMessage += Environment.NewLine + Application.Current.Resources["String_NothingToDoCheckYourInput"] as string; + StatusMessage += Environment.NewLine + LocalizationManager.GetStringByKey("String_NothingToDoCheckYourInput"); DisplayStatusMessage = true; ScanFinished(); @@ -879,7 +879,7 @@ private void AddPortToHistory(string port) #region Events private void PortScanner_UserHasCanceled(object sender, EventArgs e) { - StatusMessage = Application.Current.Resources["String_CanceledByUser"] as string; + StatusMessage = LocalizationManager.GetStringByKey("String_CanceledByUser"); DisplayStatusMessage = true; ScanFinished(); diff --git a/Source/NETworkManager/ViewModels/PuTTYSessionViewModel.cs b/Source/NETworkManager/ViewModels/PuTTYSessionViewModel.cs index 1313ba69e6..d77bf73b5a 100644 --- a/Source/NETworkManager/ViewModels/PuTTYSessionViewModel.cs +++ b/Source/NETworkManager/ViewModels/PuTTYSessionViewModel.cs @@ -390,7 +390,7 @@ public PuTTYSessionViewModel(Action saveCommand, Action

get the first group (ascending), fallback --> default group - Group = string.IsNullOrEmpty(_sessionInfo.Group) ? (groups.Count > 0 ? groups.OrderBy(x => x).First() : Application.Current.Resources["String_Default"] as string) : _sessionInfo.Group; + Group = string.IsNullOrEmpty(_sessionInfo.Group) ? (groups.Count > 0 ? groups.OrderBy(x => x).First() : LocalizationManager.GetStringByKey("String_Default")) : _sessionInfo.Group; Tags = _sessionInfo.Tags; _groups = CollectionViewSource.GetDefaultView(groups); diff --git a/Source/NETworkManager/ViewModels/PuTTYSettingsViewModel.cs b/Source/NETworkManager/ViewModels/PuTTYSettingsViewModel.cs index 5bd5460f0f..ddfbf2a056 100644 --- a/Source/NETworkManager/ViewModels/PuTTYSettingsViewModel.cs +++ b/Source/NETworkManager/ViewModels/PuTTYSettingsViewModel.cs @@ -215,9 +215,9 @@ private async void ConfigurePuTTY() catch (Exception ex) { MetroDialogSettings settings = AppearanceManager.MetroDialog; - settings.AffirmativeButtonText = Application.Current.Resources["String_Button_OK"] as string; + settings.AffirmativeButtonText = LocalizationManager.GetStringByKey("String_Button_OK"); - await dialogCoordinator.ShowMessageAsync(this, Application.Current.Resources["String_Header_Error"] as string, ex.Message, MessageDialogStyle.Affirmative, settings); + await dialogCoordinator.ShowMessageAsync(this, LocalizationManager.GetStringByKey("String_Header_Error"), ex.Message, MessageDialogStyle.Affirmative, settings); } } #endregion diff --git a/Source/NETworkManager/ViewModels/PuTTYViewModel.cs b/Source/NETworkManager/ViewModels/PuTTYViewModel.cs index 7425fce139..ab71684ca8 100644 --- a/Source/NETworkManager/ViewModels/PuTTYViewModel.cs +++ b/Source/NETworkManager/ViewModels/PuTTYViewModel.cs @@ -194,7 +194,7 @@ private async void ConnectNewSessionAction() { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_Connect"] as string + Title = LocalizationManager.GetStringByKey("String_Header_Connect") }; PuTTYSessionConnectViewModel puTTYSessionConnectViewModel = new PuTTYSessionConnectViewModel(instance => @@ -247,7 +247,7 @@ private async void AddSessionAction() { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_AddSession"] as string + Title = LocalizationManager.GetStringByKey("String_Header_AddSession") }; PuTTYSessionViewModel puTTYSessionViewModel = new PuTTYSessionViewModel(instance => @@ -307,7 +307,7 @@ private async void EditSessionAction() { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_EditSession"] as string + Title = LocalizationManager.GetStringByKey("String_Header_EditSession") }; PuTTYSessionViewModel puTTYSessionViewModel = new PuTTYSessionViewModel(instance => @@ -342,7 +342,7 @@ private async void CopyAsSessionAction() { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_CopySession"] as string + Title = LocalizationManager.GetStringByKey("String_Header_CopySession") }; PuTTYSessionViewModel puTTYSessionViewModel = new PuTTYSessionViewModel(instance => @@ -375,7 +375,7 @@ private async void DeleteSessionAction() { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_DeleteSession"] as string + Title = LocalizationManager.GetStringByKey("String_Header_DeleteSession") }; ConfirmRemoveViewModel confirmRemoveViewModel = new ConfirmRemoveViewModel(instance => @@ -388,7 +388,7 @@ private async void DeleteSessionAction() { dialogCoordinator.HideMetroDialogAsync(this, customDialog); ConfigurationManager.Current.FixAirspace = false; - }, Application.Current.Resources["String_DeleteSessionMessage"] as string); + }, LocalizationManager.GetStringByKey("String_DeleteSessionMessage")); customDialog.Content = new ConfirmRemoveDialog { @@ -408,7 +408,7 @@ private async void EditGroupAction(object group) { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_EditGroup"] as string + Title = LocalizationManager.GetStringByKey("String_Header_EditGroup") }; GroupViewModel editGroupViewModel = new GroupViewModel(instance => diff --git a/Source/NETworkManager/ViewModels/RemoteDesktopSessionViewModel.cs b/Source/NETworkManager/ViewModels/RemoteDesktopSessionViewModel.cs index c500dfdbaa..1d0ebc7e47 100644 --- a/Source/NETworkManager/ViewModels/RemoteDesktopSessionViewModel.cs +++ b/Source/NETworkManager/ViewModels/RemoteDesktopSessionViewModel.cs @@ -170,7 +170,7 @@ public RemoteDesktopSessionViewModel(Action saveC CredentialID = _sessionInfo.CredentialID; // Get the group, if not --> get the first group (ascending), fallback --> default group - Group = string.IsNullOrEmpty(_sessionInfo.Group) ? (groups.Count > 0 ? groups.OrderBy(x => x).First() : Application.Current.Resources["String_Default"] as string) : _sessionInfo.Group; + Group = string.IsNullOrEmpty(_sessionInfo.Group) ? (groups.Count > 0 ? groups.OrderBy(x => x).First() : LocalizationManager.GetStringByKey("String_Default")) : _sessionInfo.Group; Tags = _sessionInfo.Tags; if (CredentialManager.Loaded) diff --git a/Source/NETworkManager/ViewModels/RemoteDesktopViewModel.cs b/Source/NETworkManager/ViewModels/RemoteDesktopViewModel.cs index ce9d24ddbd..3cac515f21 100644 --- a/Source/NETworkManager/ViewModels/RemoteDesktopViewModel.cs +++ b/Source/NETworkManager/ViewModels/RemoteDesktopViewModel.cs @@ -194,7 +194,7 @@ private async void ConnectNewSessionAction() { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_Connect"] as string + Title = LocalizationManager.GetStringByKey("String_Header_Connect") }; RemoteDesktopSessionConnectViewModel connectRemoteDesktopSessionViewModel = new RemoteDesktopSessionConnectViewModel(instance => @@ -254,7 +254,7 @@ private async void AddSessionAction() { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_AddSession"] as string + Title = LocalizationManager.GetStringByKey("String_Header_AddSession") }; RemoteDesktopSessionViewModel remoteDesktopSessionViewModel = new RemoteDesktopSessionViewModel(instance => @@ -305,7 +305,7 @@ private async void ConnectSessionAction() { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_MasterPassword"] as string + Title = LocalizationManager.GetStringByKey("String_Header_MasterPassword") }; CredentialsMasterPasswordViewModel credentialsMasterPasswordViewModel = new CredentialsMasterPasswordViewModel(async instance => @@ -318,7 +318,7 @@ private async void ConnectSessionAction() if (credentialInfo == null) { - await dialogCoordinator.ShowMessageAsync(this, Application.Current.Resources["String_Header_CredentialNotFound"] as string, Application.Current.Resources["String_CredentialNotFoundMessage"] as string, MessageDialogStyle.Affirmative, AppearanceManager.MetroDialog); + await dialogCoordinator.ShowMessageAsync(this, LocalizationManager.GetStringByKey("String_Header_CredentialNotFound"), LocalizationManager.GetStringByKey("String_CredentialNotFoundMessage"), MessageDialogStyle.Affirmative, AppearanceManager.MetroDialog); return; } @@ -331,7 +331,7 @@ private async void ConnectSessionAction() } else { - await dialogCoordinator.ShowMessageAsync(this, Application.Current.Resources["String_Header_WrongPassword"] as string, Application.Current.Resources["String_WrongPasswordDecryptionFailed"] as string, MessageDialogStyle.Affirmative, AppearanceManager.MetroDialog); + await dialogCoordinator.ShowMessageAsync(this, LocalizationManager.GetStringByKey("String_Header_WrongPassword"), LocalizationManager.GetStringByKey("String_WrongPasswordDecryptionFailed"), MessageDialogStyle.Affirmative, AppearanceManager.MetroDialog); } }, instance => { @@ -351,7 +351,7 @@ private async void ConnectSessionAction() if (credentialInfo == null) { - await dialogCoordinator.ShowMessageAsync(this, Application.Current.Resources["String_Header_CredentialNotFound"] as string, Application.Current.Resources["String_CredentialNotFoundMessage"] as string, MessageDialogStyle.Affirmative, AppearanceManager.MetroDialog); + await dialogCoordinator.ShowMessageAsync(this, LocalizationManager.GetStringByKey("String_Header_CredentialNotFound"), LocalizationManager.GetStringByKey("String_CredentialNotFoundMessage"), MessageDialogStyle.Affirmative, AppearanceManager.MetroDialog); return; } @@ -378,7 +378,7 @@ private async void ConnectSessionAsAction() { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_ConnectAs"] as string + Title = LocalizationManager.GetStringByKey("String_Header_ConnectAs") }; RemoteDesktopSessionConnectViewModel connectRemoteDesktopSessionViewModel = new RemoteDesktopSessionConnectViewModel(instance => @@ -452,7 +452,7 @@ private async void EditSessionAction() { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_EditSession"] as string + Title = LocalizationManager.GetStringByKey("String_Header_EditSession") }; RemoteDesktopSessionViewModel remoteDesktopSessionViewModel = new RemoteDesktopSessionViewModel(instance => @@ -496,7 +496,7 @@ private async void CopyAsSessionAction() { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_CopySession"] as string + Title = LocalizationManager.GetStringByKey("String_Header_CopySession") }; RemoteDesktopSessionViewModel remoteDesktopSessionViewModel = new RemoteDesktopSessionViewModel(instance => @@ -537,7 +537,7 @@ private async void DeleteSessionAction() { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_DeleteSession"] as string + Title = LocalizationManager.GetStringByKey("String_Header_DeleteSession") }; ConfirmRemoveViewModel confirmRemoveViewModel = new ConfirmRemoveViewModel(instance => @@ -550,7 +550,7 @@ private async void DeleteSessionAction() { dialogCoordinator.HideMetroDialogAsync(this, customDialog); ConfigurationManager.Current.FixAirspace = false; - }, Application.Current.Resources["String_DeleteSessionMessage"] as string); + }, LocalizationManager.GetStringByKey("String_DeleteSessionMessage")); customDialog.Content = new ConfirmRemoveDialog { @@ -570,7 +570,7 @@ private async void EditGroupAction(object group) { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_EditGroup"] as string + Title = LocalizationManager.GetStringByKey("String_Header_EditGroup") }; GroupViewModel editGroupViewModel = new GroupViewModel(instance => diff --git a/Source/NETworkManager/ViewModels/SNMPViewModel.cs b/Source/NETworkManager/ViewModels/SNMPViewModel.cs index eb857696bd..48268dfeb2 100644 --- a/Source/NETworkManager/ViewModels/SNMPViewModel.cs +++ b/Source/NETworkManager/ViewModels/SNMPViewModel.cs @@ -508,7 +508,7 @@ private async void Work() { Finished(); - StatusMessage = string.Format(Application.Current.Resources["String_CouldNotResolveHostnameFor"] as string, Host); + StatusMessage = string.Format(LocalizationManager.GetStringByKey("String_CouldNotResolveHostnameFor"), Host); DisplayStatusMessage = true; return; @@ -614,7 +614,7 @@ private void Snmp_Received(object sender, SNMPReceivedArgs e) private void Snmp_Timeout(object sender, EventArgs e) { - StatusMessage = Application.Current.Resources["String_TimeoutOnSNMPQuery"] as string; + StatusMessage = LocalizationManager.GetStringByKey("String_TimeoutOnSNMPQuery"); DisplayStatusMessage = true; Finished(); @@ -623,9 +623,9 @@ private void Snmp_Timeout(object sender, EventArgs e) private void Snmp_Error(object sender, EventArgs e) { if (Mode == SNMPMode.Set) - StatusMessage = Application.Current.Resources["String_ErrorInResponseCheckIfYouHaveWritePermissions"] as string; + StatusMessage = LocalizationManager.GetStringByKey("String_ErrorInResponseCheckIfYouHaveWritePermissions"); else - StatusMessage = Application.Current.Resources["String_ErrorInResponse"] as string; + StatusMessage = LocalizationManager.GetStringByKey("String_ErrorInResponse"); DisplayStatusMessage = true; @@ -634,7 +634,7 @@ private void Snmp_Error(object sender, EventArgs e) private void Snmp_UserHasCanceled(object sender, EventArgs e) { - StatusMessage = Application.Current.Resources["String_CanceledByUser"] as string; + StatusMessage = LocalizationManager.GetStringByKey("String_CanceledByUser"); DisplayStatusMessage = true; Finished(); @@ -644,7 +644,7 @@ private void Snmp_Complete(object sender, EventArgs e) { if (Mode == SNMPMode.Set) { - StatusMessage = Application.Current.Resources["String_DataHasBeenUpdated"] as string; + StatusMessage = LocalizationManager.GetStringByKey("String_DataHasBeenUpdated"); DisplayStatusMessage = true; } diff --git a/Source/NETworkManager/ViewModels/SettingsAutostartViewModel.cs b/Source/NETworkManager/ViewModels/SettingsAutostartViewModel.cs index a2d468ccbe..5fb70e70c3 100644 --- a/Source/NETworkManager/ViewModels/SettingsAutostartViewModel.cs +++ b/Source/NETworkManager/ViewModels/SettingsAutostartViewModel.cs @@ -99,7 +99,7 @@ private async void EnableDisableAutostart(bool enable) } catch (Exception ex) { - await dialogCoordinator.ShowMessageAsync(this, Application.Current.Resources["String_Header_Error"] as string, ex.Message, MessageDialogStyle.Affirmative, AppearanceManager.MetroDialog); + await dialogCoordinator.ShowMessageAsync(this, LocalizationManager.GetStringByKey("String_Header_Error"), ex.Message, MessageDialogStyle.Affirmative, AppearanceManager.MetroDialog); } ConfiguringAutostart = false; diff --git a/Source/NETworkManager/ViewModels/SettingsImportExportViewModel.cs b/Source/NETworkManager/ViewModels/SettingsImportExportViewModel.cs index 2d1e277728..d46eb93af3 100644 --- a/Source/NETworkManager/ViewModels/SettingsImportExportViewModel.cs +++ b/Source/NETworkManager/ViewModels/SettingsImportExportViewModel.cs @@ -603,7 +603,7 @@ private async void ValidateImportSettingsAction() } catch (ImportFileNotValidException) { - await dialogCoordinator.ShowMessageAsync(this, Application.Current.Resources["String_Header_ValidationFailed"] as string, Application.Current.Resources["String_NoValidFileFoundToImport"] as string, MessageDialogStyle.Affirmative, AppearanceManager.MetroDialog); + await dialogCoordinator.ShowMessageAsync(this, LocalizationManager.GetStringByKey("String_Header_ValidationFailed"), LocalizationManager.GetStringByKey("String_NoValidFileFoundToImport"), MessageDialogStyle.Affirmative, AppearanceManager.MetroDialog); } } @@ -616,17 +616,17 @@ private async void ImportSettingsAction() { MetroDialogSettings settings = AppearanceManager.MetroDialog; - settings.AffirmativeButtonText = Application.Current.Resources["String_Button_Continue"] as string; - settings.NegativeButtonText = Application.Current.Resources["String_Button_Cancel"] as string; + settings.AffirmativeButtonText = LocalizationManager.GetStringByKey("String_Button_Continue"); + settings.NegativeButtonText = LocalizationManager.GetStringByKey("String_Button_Cancel"); settings.DefaultButtonFocus = MessageDialogResult.Affirmative; - string message = Application.Current.Resources["String_SelectedSettingsAreOverwritten"] as string; + string message = LocalizationManager.GetStringByKey("String_SelectedSettingsAreOverwritten"); if (ImportApplicationSettingsExists && (ImportEverything || ImportApplicationSettings)) - message += Environment.NewLine + Environment.NewLine + string.Format("* {0}", Application.Current.Resources["String_ApplicationIsRestartedAfterwards"] as string); + message += Environment.NewLine + Environment.NewLine + string.Format("* {0}", LocalizationManager.GetStringByKey("String_ApplicationIsRestartedAfterwards")); - if (await dialogCoordinator.ShowMessageAsync(this, Application.Current.Resources["String_Header_AreYouSure"] as string, message, MessageDialogStyle.AffirmativeAndNegative, settings) == MessageDialogResult.Affirmative) + if (await dialogCoordinator.ShowMessageAsync(this, LocalizationManager.GetStringByKey("String_Header_AreYouSure"), message, MessageDialogStyle.AffirmativeAndNegative, settings) == MessageDialogResult.Affirmative) { List importOptions = new List(); @@ -712,29 +712,29 @@ private async void ImportSettingsAction() // Show the user a message what happened if (!ImportExportManager.ForceRestart) { - settings.AffirmativeButtonText = Application.Current.Resources["String_Button_OK"] as string; + settings.AffirmativeButtonText = LocalizationManager.GetStringByKey("String_Button_OK"); - message = Application.Current.Resources["String_SettingsSuccessfullyImported"] as string + Environment.NewLine; + message = LocalizationManager.GetStringByKey("String_SettingsSuccessfullyImported") + Environment.NewLine; if (importOptions.Contains(ImportExportManager.ImportExportOptions.NetworkInterfaceProfiles)) - message += Environment.NewLine + string.Format("* {0}", Application.Current.Resources["String_NetworkInterfaceProfilesReloaded"] as string); + message += Environment.NewLine + string.Format("* {0}", LocalizationManager.GetStringByKey("String_NetworkInterfaceProfilesReloaded")); if (importOptions.Contains(ImportExportManager.ImportExportOptions.IPScannerProfiles)) - message += Environment.NewLine + string.Format("* {0}", Application.Current.Resources["String_IPScannerProfilesReloaded"] as string); + message += Environment.NewLine + string.Format("* {0}", LocalizationManager.GetStringByKey("String_IPScannerProfilesReloaded")); if (importOptions.Contains(ImportExportManager.ImportExportOptions.WakeOnLANClients)) - message += Environment.NewLine + string.Format("* {0}", Application.Current.Resources["String_WakeOnLANClientsReloaded"] as string); + message += Environment.NewLine + string.Format("* {0}", LocalizationManager.GetStringByKey("String_WakeOnLANClientsReloaded")); if (importOptions.Contains(ImportExportManager.ImportExportOptions.PortScannerProfiles)) - message += Environment.NewLine + string.Format("* {0}", Application.Current.Resources["String_PortScannerProfilesReloaded"] as string); + message += Environment.NewLine + string.Format("* {0}", LocalizationManager.GetStringByKey("String_PortScannerProfilesReloaded")); if(importOptions.Contains(ImportExportManager.ImportExportOptions.RemoteDesktopSessions)) - message += Environment.NewLine + string.Format("* {0}", Application.Current.Resources["String_RemoteDesktopSessionsReloaded"] as string); + message += Environment.NewLine + string.Format("* {0}", LocalizationManager.GetStringByKey("String_RemoteDesktopSessionsReloaded")); if(importOptions.Contains(ImportExportManager.ImportExportOptions.PuTTYSessions)) - message += Environment.NewLine + string.Format("* {0}", Application.Current.Resources["String_PuTTYSessionsReloaded"] as string); + message += Environment.NewLine + string.Format("* {0}", LocalizationManager.GetStringByKey("String_PuTTYSessionsReloaded")); - await dialogCoordinator.ShowMessageAsync(this, Application.Current.Resources["String_Header_Success"] as string, message, MessageDialogStyle.Affirmative, settings); + await dialogCoordinator.ShowMessageAsync(this, LocalizationManager.GetStringByKey("String_Header_Success"), message, MessageDialogStyle.Affirmative, settings); return; } @@ -777,7 +777,7 @@ private async void ExportSettingsAction() System.Windows.Forms.SaveFileDialog saveFileDialog = new System.Windows.Forms.SaveFileDialog() { Filter = ImportExportFileExtensionFilter, - FileName = string.Format("{0}_{1}_{2}{3}", Application.Current.Resources["String_ProductName"] as string, Application.Current.Resources["String_Backup"] as string, TimestampHelper.GetTimestamp(), ImportExportManager.ImportExportFileExtension) + FileName = string.Format("{0}_{1}_{2}{3}", LocalizationManager.GetStringByKey("String_ProductName"), LocalizationManager.GetStringByKey("String_Backup"), TimestampHelper.GetTimestamp(), ImportExportManager.ImportExportFileExtension) }; if (saveFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) @@ -786,9 +786,9 @@ private async void ExportSettingsAction() MetroDialogSettings settings = AppearanceManager.MetroDialog; - settings.AffirmativeButtonText = Application.Current.Resources["String_Button_OK"] as string; + settings.AffirmativeButtonText = LocalizationManager.GetStringByKey("String_Button_OK"); - await dialogCoordinator.ShowMessageAsync(this, Application.Current.Resources["String_Header_Success"] as string, string.Format("{0}\n\n{1}: {2}", Application.Current.Resources["String_SettingsSuccessfullyExported"] as string, Application.Current.Resources["String_Path"] as string, saveFileDialog.FileName), MessageDialogStyle.Affirmative, settings); + await dialogCoordinator.ShowMessageAsync(this, LocalizationManager.GetStringByKey("String_Header_Success"), string.Format("{0}\n\n{1}: {2}", LocalizationManager.GetStringByKey("String_SettingsSuccessfullyExported"), LocalizationManager.GetStringByKey("String_Path"), saveFileDialog.FileName), MessageDialogStyle.Affirmative, settings); } } #endregion diff --git a/Source/NETworkManager/ViewModels/SettingsSettingsViewModel.cs b/Source/NETworkManager/ViewModels/SettingsSettingsViewModel.cs index b4c3c3c53e..16e5de1def 100644 --- a/Source/NETworkManager/ViewModels/SettingsSettingsViewModel.cs +++ b/Source/NETworkManager/ViewModels/SettingsSettingsViewModel.cs @@ -329,14 +329,75 @@ public ICommand ChangeSettingsCommand get { return new RelayCommand(p => ChangeSettingsAction()); } } + // Check if a file(name) is a settings file + private bool FilesContainsSettingsFiles(string[] files) + { + foreach (string file in files) + { + string fileName = Path.GetFileName(file); + + if (SettingsManager.GetSettingsFileName() == fileName) + return true; + + if (NetworkInterfaceProfileManager.ProfilesFileName == fileName) + return true; + + if (IPScannerProfileManager.ProfilesFileName == fileName) + return true; + + if (PortScannerProfileManager.ProfilesFileName == fileName) + return true; + + if (RemoteDesktopSessionManager.SessionsFileName == fileName) + return true; + + if (PuTTYSessionManager.SessionsFileName == fileName) + return true; + + if (WakeOnLANClientManager.ClientsFileName == fileName) + return true; + } + + return false; + } + private async void ChangeSettingsAction() { MovingFiles = true; + bool overwrite = false; + bool forceRestart = false; + + // Check if there are any settings files in the folder... + if (FilesContainsSettingsFiles(Directory.GetFiles(LocationSelectedPath))) + { + MetroDialogSettings settings = AppearanceManager.MetroDialog; + + settings.AffirmativeButtonText = LocalizationManager.GetStringByKey("String_Button_Overwrite"); + settings.NegativeButtonText = LocalizationManager.GetStringByKey("String_Button_Cancel"); + settings.FirstAuxiliaryButtonText = LocalizationManager.GetStringByKey("String_Button_MoveAndRestart"); + settings.DefaultButtonFocus = MessageDialogResult.FirstAuxiliary; + + MessageDialogResult result = await dialogCoordinator.ShowMessageAsync(this, LocalizationManager.GetStringByKey("String_Header_Overwrite"),LocalizationManager.GetStringByKey("String_OverwriteSettingsInTheDestinationFolder"), MessageDialogStyle.AffirmativeAndNegativeAndSingleAuxiliary, AppearanceManager.MetroDialog); + + if (result == MessageDialogResult.Negative) + { + MovingFiles = false; + return; + } + else if (result == MessageDialogResult.Affirmative) + { + overwrite = true; + } + else if (result == MessageDialogResult.FirstAuxiliary) + { + forceRestart = true; + } + } // Try moving files (permissions, file is in use...) try { - await SettingsManager.MoveSettingsAsync(SettingsManager.GetSettingsLocation(), LocationSelectedPath); + await SettingsManager.MoveSettingsAsync(SettingsManager.GetSettingsLocation(), LocationSelectedPath, overwrite); Properties.Settings.Default.Settings_CustomSettingsLocation = LocationSelectedPath; @@ -345,12 +406,18 @@ private async void ChangeSettingsAction() } catch (Exception ex) { - await dialogCoordinator.ShowMessageAsync(this, Application.Current.Resources["String_Header_Error"] as string, ex.Message, MessageDialogStyle.Affirmative, AppearanceManager.MetroDialog); + await dialogCoordinator.ShowMessageAsync(this, LocalizationManager.GetStringByKey("String_Header_Error") as string, ex.Message, MessageDialogStyle.Affirmative, AppearanceManager.MetroDialog); } LocationSelectedPath = string.Empty; LocationSelectedPath = Properties.Settings.Default.Settings_CustomSettingsLocation; + if (forceRestart) + { + SettingsManager.ForceRestart = true; + CloseAction(); + } + MovingFiles = false; } @@ -373,20 +440,20 @@ public async void ResetSettingsAction() { MetroDialogSettings settings = AppearanceManager.MetroDialog; - settings.AffirmativeButtonText = Application.Current.Resources["String_Button_Continue"] as string; - settings.NegativeButtonText = Application.Current.Resources["String_Button_Cancel"] as string; + settings.AffirmativeButtonText = LocalizationManager.GetStringByKey("String_Button_Continue"); + settings.NegativeButtonText = LocalizationManager.GetStringByKey("String_Button_Cancel"); settings.DefaultButtonFocus = MessageDialogResult.Affirmative; - string message = Application.Current.Resources["String_SelectedSettingsAreReset"] as string; + string message = LocalizationManager.GetStringByKey("String_SelectedSettingsAreReset"); if (ResetEverything || ResetApplicationSettings) { - message += Environment.NewLine + Environment.NewLine + string.Format("* {0}", Application.Current.Resources["String_TheSettingsLocationIsNotAffected"] as string); - message += Environment.NewLine + string.Format("* {0}", Application.Current.Resources["String_ApplicationIsRestartedAfterwards"] as string); + message += Environment.NewLine + Environment.NewLine + string.Format("* {0}", LocalizationManager.GetStringByKey("String_TheSettingsLocationIsNotAffected")); + message += Environment.NewLine + string.Format("* {0}", LocalizationManager.GetStringByKey("String_ApplicationIsRestartedAfterwards")); } - if (await dialogCoordinator.ShowMessageAsync(this, Application.Current.Resources["String_Header_AreYouSure"] as string, message, MessageDialogStyle.AffirmativeAndNegative, settings) != MessageDialogResult.Affirmative) + if (await dialogCoordinator.ShowMessageAsync(this, LocalizationManager.GetStringByKey("String_Header_AreYouSure"), message, MessageDialogStyle.AffirmativeAndNegative, settings) != MessageDialogResult.Affirmative) return; bool forceRestart = false; @@ -422,9 +489,9 @@ public async void ResetSettingsAction() } else { - settings.AffirmativeButtonText = Application.Current.Resources["String_Button_OK"] as string; + settings.AffirmativeButtonText = LocalizationManager.GetStringByKey("String_Button_OK"); - await dialogCoordinator.ShowMessageAsync(this, Application.Current.Resources["String_Header_Success"] as string, Application.Current.Resources["String_SettingsSuccessfullyReset"] as string, MessageDialogStyle.Affirmative, settings); + await dialogCoordinator.ShowMessageAsync(this, LocalizationManager.GetStringByKey("String_Header_Success"), LocalizationManager.GetStringByKey("String_SettingsSuccessfullyReset"), MessageDialogStyle.Affirmative, settings); } } #endregion @@ -441,7 +508,7 @@ private async void MakePortable(bool isPortable) // Try moving files (permissions, file is in use...) try { - await SettingsManager.MakePortableAsync(isPortable); + await SettingsManager.MakePortableAsync(isPortable, true); Properties.Settings.Default.Settings_CustomSettingsLocation = string.Empty; LocationSelectedPath = SettingsManager.GetSettingsLocationNotPortable(); @@ -451,7 +518,7 @@ private async void MakePortable(bool isPortable) } catch (Exception ex) { - await dialogCoordinator.ShowMessageAsync(this, Application.Current.Resources["String_Header_Error"] as string, ex.Message, MessageDialogStyle.Affirmative, AppearanceManager.MetroDialog); + await dialogCoordinator.ShowMessageAsync(this, LocalizationManager.GetStringByKey("String_Header_Error"), ex.Message, MessageDialogStyle.Affirmative, AppearanceManager.MetroDialog); } MakingPortable = false; diff --git a/Source/NETworkManager/ViewModels/SubnetCalculatorIPv4SplitterViewModel.cs b/Source/NETworkManager/ViewModels/SubnetCalculatorIPv4SplitterViewModel.cs index 2a31223cec..508934f7c1 100644 --- a/Source/NETworkManager/ViewModels/SubnetCalculatorIPv4SplitterViewModel.cs +++ b/Source/NETworkManager/ViewModels/SubnetCalculatorIPv4SplitterViewModel.cs @@ -281,12 +281,12 @@ private async void StartSplit() { MetroDialogSettings settings = AppearanceManager.MetroDialog; - settings.AffirmativeButtonText = Application.Current.Resources["String_Button_Continue"] as string; - settings.NegativeButtonText = Application.Current.Resources["String_Button_Cancel"] as string; + settings.AffirmativeButtonText = LocalizationManager.GetStringByKey("String_Button_Continue"); + settings.NegativeButtonText = LocalizationManager.GetStringByKey("String_Button_Cancel"); settings.DefaultButtonFocus = MessageDialogResult.Affirmative; - if (await dialogCoordinator.ShowMessageAsync(this, Application.Current.Resources["String_Header_AreYouSure"] as string, Application.Current.Resources["String_TheProcessCanTakeUpSomeTimeAndResources"] as string, MessageDialogStyle.AffirmativeAndNegative, settings) != MessageDialogResult.Affirmative) + if (await dialogCoordinator.ShowMessageAsync(this, LocalizationManager.GetStringByKey("String_Header_AreYouSure"), LocalizationManager.GetStringByKey("String_TheProcessCanTakeUpSomeTimeAndResources"), MessageDialogStyle.AffirmativeAndNegative, settings) != MessageDialogResult.Affirmative) { CancelSplit = false; IsSplitRunning = false; @@ -312,7 +312,7 @@ private async void StartSplit() } catch (OperationCanceledException) { - StatusMessage = Application.Current.Resources["String_CanceledByUser"] as string; + StatusMessage = LocalizationManager.GetStringByKey("String_CanceledByUser"); DisplayStatusMessage = true; } diff --git a/Source/NETworkManager/ViewModels/TracerouteViewModel.cs b/Source/NETworkManager/ViewModels/TracerouteViewModel.cs index 95ffd417fa..b4a68b2d0b 100644 --- a/Source/NETworkManager/ViewModels/TracerouteViewModel.cs +++ b/Source/NETworkManager/ViewModels/TracerouteViewModel.cs @@ -404,7 +404,7 @@ private async void StartTrace() { TracerouteFinished(); - StatusMessage = string.Format(Application.Current.Resources["String_CouldNotResolveHostnameFor"] as string, Host); + StatusMessage = string.Format(LocalizationManager.GetStringByKey("String_CouldNotResolveHostnameFor"), Host); DisplayStatusMessage = true; } catch (Exception ex) // This will catch any exception @@ -468,7 +468,7 @@ private void Traceroute_MaximumHopsReached(object sender, MaximumHopsReachedArgs { TracerouteFinished(); - StatusMessage = string.Format(Application.Current.Resources["String_MaximumNumberOfHopsReached"] as string, e.Hops); + StatusMessage = string.Format(LocalizationManager.GetStringByKey("String_MaximumNumberOfHopsReached"), e.Hops); DisplayStatusMessage = true; } @@ -476,7 +476,7 @@ private void Traceroute_UserHasCanceled(object sender, System.EventArgs e) { TracerouteFinished(); - StatusMessage = Application.Current.Resources["String_CanceledByUser"] as string; + StatusMessage = LocalizationManager.GetStringByKey("String_CanceledByUser"); DisplayStatusMessage = true; } diff --git a/Source/NETworkManager/ViewModels/WakeOnLANClientViewModel.cs b/Source/NETworkManager/ViewModels/WakeOnLANClientViewModel.cs index 4967ac43c2..358406a287 100644 --- a/Source/NETworkManager/ViewModels/WakeOnLANClientViewModel.cs +++ b/Source/NETworkManager/ViewModels/WakeOnLANClientViewModel.cs @@ -151,7 +151,7 @@ public WakeOnLANClientViewModel(Action saveCommand, Ac Port = _clientInfo.Port; // Get the group, if not --> get the first group (ascending), fallback --> default group - Group = string.IsNullOrEmpty(_clientInfo.Group) ? (groups.Count > 0 ? groups.OrderBy(x => x).First() : Application.Current.Resources["String_Default"] as string) : _clientInfo.Group; + Group = string.IsNullOrEmpty(_clientInfo.Group) ? (groups.Count > 0 ? groups.OrderBy(x => x).First() : LocalizationManager.GetStringByKey("String_Default")) : _clientInfo.Group; _groups = CollectionViewSource.GetDefaultView(groups); _groups.SortDescriptions.Add(new SortDescription()); diff --git a/Source/NETworkManager/ViewModels/WakeOnLANViewModel.cs b/Source/NETworkManager/ViewModels/WakeOnLANViewModel.cs index ddc0b01c4b..6c376f7fd0 100644 --- a/Source/NETworkManager/ViewModels/WakeOnLANViewModel.cs +++ b/Source/NETworkManager/ViewModels/WakeOnLANViewModel.cs @@ -296,7 +296,7 @@ private async void AddClientAction() { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_AddClient"] as string + Title = LocalizationManager.GetStringByKey("String_Header_AddClient") }; WakeOnLANClientViewModel wakeOnLANClientViewModel = new WakeOnLANClientViewModel(instance => @@ -335,7 +335,7 @@ private async void EditClientAction() { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_EditClient"] as string + Title = LocalizationManager.GetStringByKey("String_Header_EditClient") }; WakeOnLANClientViewModel wakeOnLANClientViewModel = new WakeOnLANClientViewModel(instance => @@ -376,7 +376,7 @@ private async void CopyAsProfileAction() { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_CopyClient"] as string + Title = LocalizationManager.GetStringByKey("String_Header_CopyClient") }; WakeOnLANClientViewModel wakeOnLANClientViewModel = new WakeOnLANClientViewModel(instance => @@ -415,7 +415,7 @@ private async void DeleteClientAction() { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_DeleteClient"] as string + Title = LocalizationManager.GetStringByKey("String_Header_DeleteClient") }; ConfirmRemoveViewModel confirmRemoveViewModel = new ConfirmRemoveViewModel(instance => @@ -426,7 +426,7 @@ private async void DeleteClientAction() }, instance => { dialogCoordinator.HideMetroDialogAsync(this, customDialog); - }, Application.Current.Resources["String_DeleteClientMessage"] as string); + }, LocalizationManager.GetStringByKey("String_DeleteClientMessage")); customDialog.Content = new ConfirmRemoveDialog { @@ -445,7 +445,7 @@ private async void EditGroupAction(object group) { CustomDialog customDialog = new CustomDialog() { - Title = Application.Current.Resources["String_Header_EditGroup"] as string + Title = LocalizationManager.GetStringByKey("String_Header_EditGroup") }; GroupViewModel editGroupViewModel = new GroupViewModel(instance => @@ -470,7 +470,7 @@ private async void EditGroupAction(object group) #endregion #region Methods - private async void WakeUp(WakeOnLANInfo info) + private void WakeUp(WakeOnLANInfo info) { DisplayStatusMessage = false; IsSending = true; @@ -482,7 +482,7 @@ private async void WakeUp(WakeOnLANInfo info) // DEBUG //await Task.Delay(5000); - StatusMessage = Application.Current.Resources["String_MagicPacketSuccessfulSended"] as string; + StatusMessage = LocalizationManager.GetStringByKey("String_MagicPacketSuccessfulSended"); DisplayStatusMessage = true; } catch (Exception ex) diff --git a/Source/NETworkManager/Views/SettingsImportExportView.xaml b/Source/NETworkManager/Views/SettingsImportExportView.xaml index 0d6daf2ff5..3544be979e 100644 --- a/Source/NETworkManager/Views/SettingsImportExportView.xaml +++ b/Source/NETworkManager/Views/SettingsImportExportView.xaml @@ -96,19 +96,9 @@ - - - - - - - - - - - - - + + + @@ -117,8 +107,8 @@ - - + + @@ -127,8 +117,8 @@ - - + + @@ -137,6 +127,16 @@ + + + + + + + + + +