diff --git a/Source/NETworkManager.Localization/Resources/StaticStrings.Designer.cs b/Source/NETworkManager.Localization/Resources/StaticStrings.Designer.cs index d324a9d6a5..1b56f8da1b 100644 --- a/Source/NETworkManager.Localization/Resources/StaticStrings.Designer.cs +++ b/Source/NETworkManager.Localization/Resources/StaticStrings.Designer.cs @@ -500,6 +500,15 @@ public static string ExamplePowerShellPath { } } + /// + /// Looks up a localized string similar to Webserver. + /// + public static string ExampleProfileName { + get { + return ResourceManager.GetString("ExampleProfileName", resourceCulture); + } + } + /// /// Looks up a localized string similar to https://api.ipify.org. /// @@ -536,15 +545,6 @@ public static string ExamplePuTTYProfile { } } - /// - /// Looks up a localized string similar to Webserver. - /// - public static string ExampleRemoteDesktopProfileName { - get { - return ResourceManager.GetString("ExampleRemoteDesktopProfileName", resourceCulture); - } - } - /// /// Looks up a localized string similar to COM5. /// diff --git a/Source/NETworkManager.Localization/Resources/StaticStrings.resx b/Source/NETworkManager.Localization/Resources/StaticStrings.resx index d68e3c6c73..27db44d31a 100644 --- a/Source/NETworkManager.Localization/Resources/StaticStrings.resx +++ b/Source/NETworkManager.Localization/Resources/StaticStrings.resx @@ -227,7 +227,7 @@ 22; 80; 443; 500 - 999; 8080 - + Webserver diff --git a/Source/NETworkManager.Localization/Resources/Strings.Designer.cs b/Source/NETworkManager.Localization/Resources/Strings.Designer.cs index fb8e687fb6..03fdce5b41 100644 --- a/Source/NETworkManager.Localization/Resources/Strings.Designer.cs +++ b/Source/NETworkManager.Localization/Resources/Strings.Designer.cs @@ -3653,6 +3653,24 @@ public static string Everything { } } + /// + /// Looks up a localized string similar to Linux servers running in AWS.... + /// + public static string ExampleGroupDescription { + get { + return ResourceManager.GetString("ExampleGroupDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ubuntu Server running Docker with Nextcloud and Traefik.... + /// + public static string ExampleProfileDescription { + get { + return ResourceManager.GetString("ExampleProfileDescription", resourceCulture); + } + } + /// /// Looks up a localized string similar to Customer 1. /// diff --git a/Source/NETworkManager.Localization/Resources/Strings.resx b/Source/NETworkManager.Localization/Resources/Strings.resx index eda46ad637..43c3115acb 100644 --- a/Source/NETworkManager.Localization/Resources/Strings.resx +++ b/Source/NETworkManager.Localization/Resources/Strings.resx @@ -3851,4 +3851,10 @@ Right-click for more options. Set default + + Ubuntu Server running Docker with Nextcloud and Traefik... + + + Linux servers running in AWS... + \ No newline at end of file diff --git a/Source/NETworkManager.Profiles/GroupInfo.cs b/Source/NETworkManager.Profiles/GroupInfo.cs index 9c7cfb4de7..1a5bafca31 100644 --- a/Source/NETworkManager.Profiles/GroupInfo.cs +++ b/Source/NETworkManager.Profiles/GroupInfo.cs @@ -19,7 +19,7 @@ public class GroupInfo /// public GroupInfo() { - Profiles = new List(); + Profiles = []; } /// @@ -35,6 +35,10 @@ public GroupInfo(string name) : this() /// public GroupInfo(GroupInfo group) : this(group.Name) { + // General + Description = group.Description; + + // Profiles Profiles = group.Profiles; // Remote Desktop @@ -164,6 +168,11 @@ public GroupInfo(GroupInfo group) : this(group.Name) /// Name of the group. /// public string Name { get; set; } + + /// + /// Description of the group. + /// + public string Description { get; set; } [XmlIgnore] public bool IsDynamic { get; set; } diff --git a/Source/NETworkManager.Profiles/ProfileInfo.cs b/Source/NETworkManager.Profiles/ProfileInfo.cs index 79b46254ad..30d92c342e 100644 --- a/Source/NETworkManager.Profiles/ProfileInfo.cs +++ b/Source/NETworkManager.Profiles/ProfileInfo.cs @@ -31,6 +31,7 @@ public ProfileInfo(ProfileInfo profile) { Name = profile.Name; Host = profile.Host; + Description = profile.Description; Group = profile.Group; Tags = profile.Tags; @@ -248,11 +249,16 @@ public ProfileInfo(ProfileInfo profile) /// public string Host { get; set; } + /// + /// Description of the profile. + /// + public string Description { get; set; } + /// /// Name of the group. Profiles are grouped based on the name. /// public string Group { get; set; } - + /// /// Tags to classify the profiles and to filter by it. /// diff --git a/Source/NETworkManager/ProfileDialogManager.cs b/Source/NETworkManager/ProfileDialogManager.cs index cf3961742d..f7666e03c8 100644 --- a/Source/NETworkManager/ProfileDialogManager.cs +++ b/Source/NETworkManager/ProfileDialogManager.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Security; -using System.Threading.Tasks; -using System.Windows; -using MahApps.Metro.Controls.Dialogs; +using MahApps.Metro.Controls.Dialogs; using NETworkManager.Localization.Resources; using NETworkManager.Models; using NETworkManager.Models.Network; @@ -12,6 +7,11 @@ using NETworkManager.Profiles; using NETworkManager.ViewModels; using NETworkManager.Views; +using System; +using System.Collections.Generic; +using System.Security; +using System.Threading.Tasks; +using System.Windows; namespace NETworkManager; @@ -31,6 +31,7 @@ private static ProfileInfo ParseProfileInfo(ProfileViewModel instance) { Name = instance.Name.Trim(), Host = instance.Host.Trim(), + Description = instance.Description?.Trim(), Group = instance.Group.Trim(), Tags = instance.Tags?.Trim(), @@ -304,7 +305,8 @@ private static GroupInfo ParseGroupInfo(GroupViewModel instance) return new GroupInfo { Name = name, - + Description = instance.Description?.Trim(), + Profiles = profiles, // Remote Desktop diff --git a/Source/NETworkManager/ViewModels/GroupViewModel.cs b/Source/NETworkManager/ViewModels/GroupViewModel.cs index 6c7d289164..9b7abb62ee 100644 --- a/Source/NETworkManager/ViewModels/GroupViewModel.cs +++ b/Source/NETworkManager/ViewModels/GroupViewModel.cs @@ -18,159 +18,9 @@ namespace NETworkManager.ViewModels; public class GroupViewModel : ViewModelBase { - private readonly bool _isLoading = true; - - public GroupViewModel(Action saveCommand, Action cancelHandler, - IReadOnlyCollection groups, GroupEditMode editMode = GroupEditMode.Add, GroupInfo group = null) - { - // Load the view - GroupViews = new CollectionViewSource { Source = GroupViewManager.List }.View; - GroupViews.SortDescriptions.Add(new SortDescription(nameof(GroupViewInfo.Name), ListSortDirection.Ascending)); - - SaveCommand = new RelayCommand(_ => saveCommand(this)); - CancelCommand = new RelayCommand(_ => cancelHandler(this)); - - var groupInfo = group ?? new GroupInfo(); + #region Variables - Group = groupInfo; - _groups = groups; - - // General - Name = groupInfo.Name; - - // Remote Desktop - RemoteDesktop_UseCredentials = groupInfo.RemoteDesktop_UseCredentials; - RemoteDesktop_Username = groupInfo.RemoteDesktop_Username; - RemoteDesktop_Domain = groupInfo.RemoteDesktop_Domain; - RemoteDesktop_Password = groupInfo.RemoteDesktop_Password; - RemoteDesktop_OverrideDisplay = groupInfo.RemoteDesktop_OverrideDisplay; - RemoteDesktop_AdjustScreenAutomatically = groupInfo.RemoteDesktop_AdjustScreenAutomatically; - RemoteDesktop_UseCurrentViewSize = groupInfo.RemoteDesktop_UseCurrentViewSize; - RemoteDesktop_UseFixedScreenSize = groupInfo.RemoteDesktop_UseFixedScreenSize; - RemoteDesktop_SelectedScreenResolution = RemoteDesktop_ScreenResolutions.FirstOrDefault(x => - x == $"{groupInfo.RemoteDesktop_ScreenWidth}x{groupInfo.RemoteDesktop_ScreenHeight}"); - RemoteDesktop_UseCustomScreenSize = groupInfo.RemoteDesktop_UseCustomScreenSize; - RemoteDesktop_CustomScreenWidth = groupInfo.RemoteDesktop_CustomScreenWidth.ToString(); - RemoteDesktop_CustomScreenHeight = groupInfo.RemoteDesktop_CustomScreenHeight.ToString(); - RemoteDesktop_OverrideColorDepth = groupInfo.RemoteDesktop_OverrideColorDepth; - RemoteDesktop_SelectedColorDepth = - RemoteDesktop_ColorDepths.FirstOrDefault(x => x == groupInfo.RemoteDesktop_ColorDepth); - RemoteDesktop_OverridePort = groupInfo.RemoteDesktop_OverridePort; - RemoteDesktop_Port = groupInfo.RemoteDesktop_Port; - RemoteDesktop_OverrideCredSspSupport = groupInfo.RemoteDesktop_OverrideCredSspSupport; - RemoteDesktop_EnableCredSspSupport = groupInfo.RemoteDesktop_EnableCredSspSupport; - RemoteDesktop_OverrideAuthenticationLevel = groupInfo.RemoteDesktop_OverrideAuthenticationLevel; - RemoteDesktop_AuthenticationLevel = groupInfo.RemoteDesktop_AuthenticationLevel; - RemoteDesktop_OverrideGatewayServer = groupInfo.RemoteDesktop_OverrideGatewayServer; - RemoteDesktop_EnableGatewayServer = groupInfo.RemoteDesktop_EnableGatewayServer; - RemoteDesktop_GatewayServerHostname = groupInfo.RemoteDesktop_GatewayServerHostname; - RemoteDesktop_GatewayServerBypassLocalAddresses = groupInfo.RemoteDesktop_GatewayServerBypassLocalAddresses; - RemoteDesktop_GatewayServerLogonMethod = groupInfo.RemoteDesktop_GatewayServerLogonMethod; - RemoteDesktop_GatewayServerShareCredentialsWithRemoteComputer = - groupInfo.RemoteDesktop_GatewayServerShareCredentialsWithRemoteComputer; - RemoteDesktop_UseGatewayServerCredentials = groupInfo.RemoteDesktop_UseGatewayServerCredentials; - RemoteDesktop_GatewayServerUsername = groupInfo.RemoteDesktop_GatewayServerUsername; - RemoteDesktop_GatewayServerDomain = groupInfo.RemoteDesktop_GatewayServerDomain; - RemoteDesktop_GatewayServerPassword = groupInfo.RemoteDesktop_GatewayServerPassword; - RemoteDesktop_OverrideAudioRedirectionMode = groupInfo.RemoteDesktop_OverrideAudioRedirectionMode; - RemoteDesktop_AudioRedirectionMode = - RemoteDesktop_AudioRedirectionModes.FirstOrDefault(x => x == groupInfo.RemoteDesktop_AudioRedirectionMode); - RemoteDesktop_OverrideAudioCaptureRedirectionMode = groupInfo.RemoteDesktop_OverrideAudioCaptureRedirectionMode; - RemoteDesktop_AudioCaptureRedirectionMode = - RemoteDesktop_AudioCaptureRedirectionModes.FirstOrDefault(x => - x == groupInfo.RemoteDesktop_AudioCaptureRedirectionMode); - RemoteDesktop_OverrideApplyWindowsKeyCombinations = groupInfo.RemoteDesktop_OverrideApplyWindowsKeyCombinations; - RemoteDesktop_KeyboardHookMode = - RemoteDesktop_KeyboardHookModes.FirstOrDefault(x => x == groupInfo.RemoteDesktop_KeyboardHookMode); - RemoteDesktop_OverrideRedirectClipboard = groupInfo.RemoteDesktop_OverrideRedirectClipboard; - RemoteDesktop_RedirectClipboard = groupInfo.RemoteDesktop_RedirectClipboard; - RemoteDesktop_OverrideRedirectDevices = groupInfo.RemoteDesktop_OverrideRedirectDevices; - RemoteDesktop_RedirectDevices = groupInfo.RemoteDesktop_RedirectDevices; - RemoteDesktop_OverrideRedirectDrives = groupInfo.RemoteDesktop_OverrideRedirectDrives; - RemoteDesktop_RedirectDrives = groupInfo.RemoteDesktop_RedirectDrives; - RemoteDesktop_OverrideRedirectPorts = groupInfo.RemoteDesktop_OverrideRedirectPorts; - RemoteDesktop_RedirectPorts = groupInfo.RemoteDesktop_RedirectPorts; - RemoteDesktop_OverrideRedirectSmartcards = groupInfo.RemoteDesktop_OverrideRedirectSmartcards; - RemoteDesktop_RedirectSmartCards = groupInfo.RemoteDesktop_RedirectSmartCards; - RemoteDesktop_OverrideRedirectPrinters = groupInfo.RemoteDesktop_OverrideRedirectPrinters; - RemoteDesktop_RedirectPrinters = groupInfo.RemoteDesktop_RedirectPrinters; - RemoteDesktop_OverridePersistentBitmapCaching = groupInfo.RemoteDesktop_OverridePersistentBitmapCaching; - RemoteDesktop_PersistentBitmapCaching = groupInfo.RemoteDesktop_PersistentBitmapCaching; - RemoteDesktop_OverrideReconnectIfTheConnectionIsDropped = - groupInfo.RemoteDesktop_OverrideReconnectIfTheConnectionIsDropped; - RemoteDesktop_ReconnectIfTheConnectionIsDropped = groupInfo.RemoteDesktop_ReconnectIfTheConnectionIsDropped; - RemoteDesktop_NetworkConnectionType = - RemoteDesktop_NetworkConnectionTypes.FirstOrDefault(x => - x == groupInfo.RemoteDesktop_NetworkConnectionType); - RemoteDesktop_DesktopBackground = groupInfo.RemoteDesktop_DesktopBackground; - RemoteDesktop_FontSmoothing = groupInfo.RemoteDesktop_FontSmoothing; - RemoteDesktop_DesktopComposition = groupInfo.RemoteDesktop_DesktopComposition; - RemoteDesktop_ShowWindowContentsWhileDragging = groupInfo.RemoteDesktop_ShowWindowContentsWhileDragging; - RemoteDesktop_MenuAndWindowAnimation = groupInfo.RemoteDesktop_MenuAndWindowAnimation; - RemoteDesktop_VisualStyles = groupInfo.RemoteDesktop_VisualStyles; - - // PowerShell - PowerShell_OverrideCommand = groupInfo.PowerShell_OverrideCommand; - PowerShell_Command = groupInfo.PowerShell_Command; - PowerShell_OverrideAdditionalCommandLine = groupInfo.PowerShell_OverrideAdditionalCommandLine; - PowerShell_AdditionalCommandLine = groupInfo.PowerShell_AdditionalCommandLine; - PowerShell_OverrideExecutionPolicy = groupInfo.PowerShell_OverrideExecutionPolicy; - PowerShell_ExecutionPolicies = Enum.GetValues(typeof(ExecutionPolicy)).Cast().ToList(); - PowerShell_ExecutionPolicy = - PowerShell_ExecutionPolicies.FirstOrDefault(x => x == groupInfo.PowerShell_ExecutionPolicy); - - // PuTTY - PuTTY_OverrideUsername = groupInfo.PuTTY_OverrideUsername; - PuTTY_Username = groupInfo.PuTTY_Username; - PuTTY_OverridePrivateKeyFile = groupInfo.PuTTY_OverridePrivateKeyFile; - PuTTY_PrivateKeyFile = groupInfo.PuTTY_PrivateKeyFile; - PuTTY_OverrideProfile = groupInfo.PuTTY_OverrideProfile; - PuTTY_Profile = groupInfo.PuTTY_Profile; - PuTTY_OverrideEnableLog = groupInfo.PuTTY_OverrideEnableLog; - PuTTY_EnableLog = groupInfo.PuTTY_EnableLog; - PuTTY_OverrideLogMode = groupInfo.PuTTY_OverrideLogMode; - PuTTY_LogMode = PuTTY_LogModes.FirstOrDefault(x => x == groupInfo.PuTTY_LogMode); - PuTTY_OverrideLogPath = groupInfo.PuTTY_OverrideLogPath; - PuTTY_LogPath = groupInfo.PuTTY_LogPath; - PuTTY_OverrideLogFileName = groupInfo.PuTTY_OverrideLogFileName; - PuTTY_LogFileName = groupInfo.PuTTY_LogFileName; - PuTTY_OverrideAdditionalCommandLine = groupInfo.PuTTY_OverrideAdditionalCommandLine; - PuTTY_AdditionalCommandLine = groupInfo.PuTTY_AdditionalCommandLine; - - // AWS Session Manager - AWSSessionManager_OverrideProfile = groupInfo.AWSSessionManager_OverrideProfile; - AWSSessionManager_Profile = groupInfo.AWSSessionManager_Profile; - AWSSessionManager_OverrideRegion = groupInfo.AWSSessionManager_OverrideRegion; - AWSSessionManager_Region = groupInfo.AWSSessionManager_Region; - - // TigerVNC - TigerVNC_OverridePort = groupInfo.TigerVNC_OverridePort; - TigerVNC_Port = groupInfo.TigerVNC_Port; - - // SNMP - SNMP_OverrideOIDAndMode = groupInfo.SNMP_OverrideOIDAndMode; - SNMP_OID = groupInfo.SNMP_OID; - SNMP_Modes = new List { SNMPMode.Get, SNMPMode.Walk, SNMPMode.Set }; - SNMP_Mode = SNMP_Modes.FirstOrDefault(x => x == groupInfo.SNMP_Mode); - SNMP_OverrideVersionAndAuth = groupInfo.SNMP_OverrideVersionAndAuth; - SNMP_Versions = Enum.GetValues(typeof(SNMPVersion)).Cast().ToList(); - SNMP_Version = SNMP_Versions.FirstOrDefault(x => x == groupInfo.SNMP_Version); - SNMP_Community = groupInfo.SNMP_Community; - SNMP_Securities = new List - { SNMPV3Security.NoAuthNoPriv, SNMPV3Security.AuthNoPriv, SNMPV3Security.AuthPriv }; - SNMP_Security = SNMP_Securities.FirstOrDefault(x => x == groupInfo.SNMP_Security); - SNMP_Username = groupInfo.SNMP_Username; - SNMP_AuthenticationProviders = Enum.GetValues(typeof(SNMPV3AuthenticationProvider)) - .Cast().ToList(); - SNMP_AuthenticationProvider = - SNMP_AuthenticationProviders.FirstOrDefault(x => x == groupInfo.SNMP_AuthenticationProvider); - SNMP_Auth = groupInfo.SNMP_Auth; - SNMP_PrivacyProviders = Enum.GetValues(typeof(SNMPV3PrivacyProvider)).Cast().ToList(); - SNMP_PrivacyProvider = SNMP_PrivacyProviders.FirstOrDefault(x => x == groupInfo.SNMP_PrivacyProvider); - SNMP_Priv = groupInfo.SNMP_Priv; - - _isLoading = false; - } + private readonly bool _isLoading = true; public bool IsProfileFileEncrypted => ProfileManager.LoadedProfileFile.IsEncrypted; @@ -179,51 +29,6 @@ public GroupViewModel(Action saveCommand, Action private IReadOnlyCollection _groups { get; } - #region Methods - - private void ChangeNetworkConnectionTypeSettings(NetworkConnectionType connectionSpeed) - { - switch (connectionSpeed) - { - case NetworkConnectionType.Modem: - RemoteDesktop_DesktopBackground = false; - RemoteDesktop_FontSmoothing = false; - RemoteDesktop_DesktopComposition = false; - RemoteDesktop_ShowWindowContentsWhileDragging = false; - RemoteDesktop_MenuAndWindowAnimation = false; - RemoteDesktop_VisualStyles = false; - break; - case NetworkConnectionType.BroadbandLow: - RemoteDesktop_DesktopBackground = false; - RemoteDesktop_FontSmoothing = false; - RemoteDesktop_DesktopComposition = false; - RemoteDesktop_ShowWindowContentsWhileDragging = false; - RemoteDesktop_MenuAndWindowAnimation = false; - RemoteDesktop_VisualStyles = true; - break; - case NetworkConnectionType.Satellite: - case NetworkConnectionType.BroadbandHigh: - RemoteDesktop_DesktopBackground = false; - RemoteDesktop_FontSmoothing = false; - RemoteDesktop_DesktopComposition = true; - RemoteDesktop_ShowWindowContentsWhileDragging = false; - RemoteDesktop_MenuAndWindowAnimation = false; - RemoteDesktop_VisualStyles = true; - break; - case NetworkConnectionType.WAN: - case NetworkConnectionType.LAN: - RemoteDesktop_DesktopBackground = true; - RemoteDesktop_FontSmoothing = true; - RemoteDesktop_DesktopComposition = true; - RemoteDesktop_ShowWindowContentsWhileDragging = true; - RemoteDesktop_MenuAndWindowAnimation = true; - RemoteDesktop_VisualStyles = true; - break; - } - } - - #endregion - #region General private bool _nameIsValid = true; @@ -263,6 +68,21 @@ public string Name } } + private string _description; + + public string Description + { + get => _description; + set + { + if (value == _description) + return; + + _description = value; + OnPropertyChanged(); + } + } + #endregion #region Remote Desktop @@ -1945,6 +1765,210 @@ public SecureString SNMP_Priv #endregion + #endregion + + #region Constructor + + public GroupViewModel(Action saveCommand, Action cancelHandler, + IReadOnlyCollection groups, GroupEditMode editMode = GroupEditMode.Add, GroupInfo group = null) + { + // Load the view + GroupViews = new CollectionViewSource { Source = GroupViewManager.List }.View; + GroupViews.SortDescriptions.Add(new SortDescription(nameof(GroupViewInfo.Name), ListSortDirection.Ascending)); + + SaveCommand = new RelayCommand(_ => saveCommand(this)); + CancelCommand = new RelayCommand(_ => cancelHandler(this)); + + var groupInfo = group ?? new GroupInfo(); + + Group = groupInfo; + _groups = groups; + + // General + Name = groupInfo.Name; + Description = groupInfo.Description; + + // Remote Desktop + RemoteDesktop_UseCredentials = groupInfo.RemoteDesktop_UseCredentials; + RemoteDesktop_Username = groupInfo.RemoteDesktop_Username; + RemoteDesktop_Domain = groupInfo.RemoteDesktop_Domain; + RemoteDesktop_Password = groupInfo.RemoteDesktop_Password; + RemoteDesktop_OverrideDisplay = groupInfo.RemoteDesktop_OverrideDisplay; + RemoteDesktop_AdjustScreenAutomatically = groupInfo.RemoteDesktop_AdjustScreenAutomatically; + RemoteDesktop_UseCurrentViewSize = groupInfo.RemoteDesktop_UseCurrentViewSize; + RemoteDesktop_UseFixedScreenSize = groupInfo.RemoteDesktop_UseFixedScreenSize; + RemoteDesktop_SelectedScreenResolution = RemoteDesktop_ScreenResolutions.FirstOrDefault(x => + x == $"{groupInfo.RemoteDesktop_ScreenWidth}x{groupInfo.RemoteDesktop_ScreenHeight}"); + RemoteDesktop_UseCustomScreenSize = groupInfo.RemoteDesktop_UseCustomScreenSize; + RemoteDesktop_CustomScreenWidth = groupInfo.RemoteDesktop_CustomScreenWidth.ToString(); + RemoteDesktop_CustomScreenHeight = groupInfo.RemoteDesktop_CustomScreenHeight.ToString(); + RemoteDesktop_OverrideColorDepth = groupInfo.RemoteDesktop_OverrideColorDepth; + RemoteDesktop_SelectedColorDepth = + RemoteDesktop_ColorDepths.FirstOrDefault(x => x == groupInfo.RemoteDesktop_ColorDepth); + RemoteDesktop_OverridePort = groupInfo.RemoteDesktop_OverridePort; + RemoteDesktop_Port = groupInfo.RemoteDesktop_Port; + RemoteDesktop_OverrideCredSspSupport = groupInfo.RemoteDesktop_OverrideCredSspSupport; + RemoteDesktop_EnableCredSspSupport = groupInfo.RemoteDesktop_EnableCredSspSupport; + RemoteDesktop_OverrideAuthenticationLevel = groupInfo.RemoteDesktop_OverrideAuthenticationLevel; + RemoteDesktop_AuthenticationLevel = groupInfo.RemoteDesktop_AuthenticationLevel; + RemoteDesktop_OverrideGatewayServer = groupInfo.RemoteDesktop_OverrideGatewayServer; + RemoteDesktop_EnableGatewayServer = groupInfo.RemoteDesktop_EnableGatewayServer; + RemoteDesktop_GatewayServerHostname = groupInfo.RemoteDesktop_GatewayServerHostname; + RemoteDesktop_GatewayServerBypassLocalAddresses = groupInfo.RemoteDesktop_GatewayServerBypassLocalAddresses; + RemoteDesktop_GatewayServerLogonMethod = groupInfo.RemoteDesktop_GatewayServerLogonMethod; + RemoteDesktop_GatewayServerShareCredentialsWithRemoteComputer = + groupInfo.RemoteDesktop_GatewayServerShareCredentialsWithRemoteComputer; + RemoteDesktop_UseGatewayServerCredentials = groupInfo.RemoteDesktop_UseGatewayServerCredentials; + RemoteDesktop_GatewayServerUsername = groupInfo.RemoteDesktop_GatewayServerUsername; + RemoteDesktop_GatewayServerDomain = groupInfo.RemoteDesktop_GatewayServerDomain; + RemoteDesktop_GatewayServerPassword = groupInfo.RemoteDesktop_GatewayServerPassword; + RemoteDesktop_OverrideAudioRedirectionMode = groupInfo.RemoteDesktop_OverrideAudioRedirectionMode; + RemoteDesktop_AudioRedirectionMode = + RemoteDesktop_AudioRedirectionModes.FirstOrDefault(x => x == groupInfo.RemoteDesktop_AudioRedirectionMode); + RemoteDesktop_OverrideAudioCaptureRedirectionMode = groupInfo.RemoteDesktop_OverrideAudioCaptureRedirectionMode; + RemoteDesktop_AudioCaptureRedirectionMode = + RemoteDesktop_AudioCaptureRedirectionModes.FirstOrDefault(x => + x == groupInfo.RemoteDesktop_AudioCaptureRedirectionMode); + RemoteDesktop_OverrideApplyWindowsKeyCombinations = groupInfo.RemoteDesktop_OverrideApplyWindowsKeyCombinations; + RemoteDesktop_KeyboardHookMode = + RemoteDesktop_KeyboardHookModes.FirstOrDefault(x => x == groupInfo.RemoteDesktop_KeyboardHookMode); + RemoteDesktop_OverrideRedirectClipboard = groupInfo.RemoteDesktop_OverrideRedirectClipboard; + RemoteDesktop_RedirectClipboard = groupInfo.RemoteDesktop_RedirectClipboard; + RemoteDesktop_OverrideRedirectDevices = groupInfo.RemoteDesktop_OverrideRedirectDevices; + RemoteDesktop_RedirectDevices = groupInfo.RemoteDesktop_RedirectDevices; + RemoteDesktop_OverrideRedirectDrives = groupInfo.RemoteDesktop_OverrideRedirectDrives; + RemoteDesktop_RedirectDrives = groupInfo.RemoteDesktop_RedirectDrives; + RemoteDesktop_OverrideRedirectPorts = groupInfo.RemoteDesktop_OverrideRedirectPorts; + RemoteDesktop_RedirectPorts = groupInfo.RemoteDesktop_RedirectPorts; + RemoteDesktop_OverrideRedirectSmartcards = groupInfo.RemoteDesktop_OverrideRedirectSmartcards; + RemoteDesktop_RedirectSmartCards = groupInfo.RemoteDesktop_RedirectSmartCards; + RemoteDesktop_OverrideRedirectPrinters = groupInfo.RemoteDesktop_OverrideRedirectPrinters; + RemoteDesktop_RedirectPrinters = groupInfo.RemoteDesktop_RedirectPrinters; + RemoteDesktop_OverridePersistentBitmapCaching = groupInfo.RemoteDesktop_OverridePersistentBitmapCaching; + RemoteDesktop_PersistentBitmapCaching = groupInfo.RemoteDesktop_PersistentBitmapCaching; + RemoteDesktop_OverrideReconnectIfTheConnectionIsDropped = + groupInfo.RemoteDesktop_OverrideReconnectIfTheConnectionIsDropped; + RemoteDesktop_ReconnectIfTheConnectionIsDropped = groupInfo.RemoteDesktop_ReconnectIfTheConnectionIsDropped; + RemoteDesktop_NetworkConnectionType = + RemoteDesktop_NetworkConnectionTypes.FirstOrDefault(x => + x == groupInfo.RemoteDesktop_NetworkConnectionType); + RemoteDesktop_DesktopBackground = groupInfo.RemoteDesktop_DesktopBackground; + RemoteDesktop_FontSmoothing = groupInfo.RemoteDesktop_FontSmoothing; + RemoteDesktop_DesktopComposition = groupInfo.RemoteDesktop_DesktopComposition; + RemoteDesktop_ShowWindowContentsWhileDragging = groupInfo.RemoteDesktop_ShowWindowContentsWhileDragging; + RemoteDesktop_MenuAndWindowAnimation = groupInfo.RemoteDesktop_MenuAndWindowAnimation; + RemoteDesktop_VisualStyles = groupInfo.RemoteDesktop_VisualStyles; + + // PowerShell + PowerShell_OverrideCommand = groupInfo.PowerShell_OverrideCommand; + PowerShell_Command = groupInfo.PowerShell_Command; + PowerShell_OverrideAdditionalCommandLine = groupInfo.PowerShell_OverrideAdditionalCommandLine; + PowerShell_AdditionalCommandLine = groupInfo.PowerShell_AdditionalCommandLine; + PowerShell_OverrideExecutionPolicy = groupInfo.PowerShell_OverrideExecutionPolicy; + PowerShell_ExecutionPolicies = Enum.GetValues(typeof(ExecutionPolicy)).Cast().ToList(); + PowerShell_ExecutionPolicy = + PowerShell_ExecutionPolicies.FirstOrDefault(x => x == groupInfo.PowerShell_ExecutionPolicy); + + // PuTTY + PuTTY_OverrideUsername = groupInfo.PuTTY_OverrideUsername; + PuTTY_Username = groupInfo.PuTTY_Username; + PuTTY_OverridePrivateKeyFile = groupInfo.PuTTY_OverridePrivateKeyFile; + PuTTY_PrivateKeyFile = groupInfo.PuTTY_PrivateKeyFile; + PuTTY_OverrideProfile = groupInfo.PuTTY_OverrideProfile; + PuTTY_Profile = groupInfo.PuTTY_Profile; + PuTTY_OverrideEnableLog = groupInfo.PuTTY_OverrideEnableLog; + PuTTY_EnableLog = groupInfo.PuTTY_EnableLog; + PuTTY_OverrideLogMode = groupInfo.PuTTY_OverrideLogMode; + PuTTY_LogMode = PuTTY_LogModes.FirstOrDefault(x => x == groupInfo.PuTTY_LogMode); + PuTTY_OverrideLogPath = groupInfo.PuTTY_OverrideLogPath; + PuTTY_LogPath = groupInfo.PuTTY_LogPath; + PuTTY_OverrideLogFileName = groupInfo.PuTTY_OverrideLogFileName; + PuTTY_LogFileName = groupInfo.PuTTY_LogFileName; + PuTTY_OverrideAdditionalCommandLine = groupInfo.PuTTY_OverrideAdditionalCommandLine; + PuTTY_AdditionalCommandLine = groupInfo.PuTTY_AdditionalCommandLine; + + // AWS Session Manager + AWSSessionManager_OverrideProfile = groupInfo.AWSSessionManager_OverrideProfile; + AWSSessionManager_Profile = groupInfo.AWSSessionManager_Profile; + AWSSessionManager_OverrideRegion = groupInfo.AWSSessionManager_OverrideRegion; + AWSSessionManager_Region = groupInfo.AWSSessionManager_Region; + + // TigerVNC + TigerVNC_OverridePort = groupInfo.TigerVNC_OverridePort; + TigerVNC_Port = groupInfo.TigerVNC_Port; + + // SNMP + SNMP_OverrideOIDAndMode = groupInfo.SNMP_OverrideOIDAndMode; + SNMP_OID = groupInfo.SNMP_OID; + SNMP_Modes = new List { SNMPMode.Get, SNMPMode.Walk, SNMPMode.Set }; + SNMP_Mode = SNMP_Modes.FirstOrDefault(x => x == groupInfo.SNMP_Mode); + SNMP_OverrideVersionAndAuth = groupInfo.SNMP_OverrideVersionAndAuth; + SNMP_Versions = Enum.GetValues(typeof(SNMPVersion)).Cast().ToList(); + SNMP_Version = SNMP_Versions.FirstOrDefault(x => x == groupInfo.SNMP_Version); + SNMP_Community = groupInfo.SNMP_Community; + SNMP_Securities = new List + { SNMPV3Security.NoAuthNoPriv, SNMPV3Security.AuthNoPriv, SNMPV3Security.AuthPriv }; + SNMP_Security = SNMP_Securities.FirstOrDefault(x => x == groupInfo.SNMP_Security); + SNMP_Username = groupInfo.SNMP_Username; + SNMP_AuthenticationProviders = Enum.GetValues(typeof(SNMPV3AuthenticationProvider)) + .Cast().ToList(); + SNMP_AuthenticationProvider = + SNMP_AuthenticationProviders.FirstOrDefault(x => x == groupInfo.SNMP_AuthenticationProvider); + SNMP_Auth = groupInfo.SNMP_Auth; + SNMP_PrivacyProviders = Enum.GetValues(typeof(SNMPV3PrivacyProvider)).Cast().ToList(); + SNMP_PrivacyProvider = SNMP_PrivacyProviders.FirstOrDefault(x => x == groupInfo.SNMP_PrivacyProvider); + SNMP_Priv = groupInfo.SNMP_Priv; + + _isLoading = false; + } + + #endregion + + #region Methods + + private void ChangeNetworkConnectionTypeSettings(NetworkConnectionType connectionSpeed) + { + switch (connectionSpeed) + { + case NetworkConnectionType.Modem: + RemoteDesktop_DesktopBackground = false; + RemoteDesktop_FontSmoothing = false; + RemoteDesktop_DesktopComposition = false; + RemoteDesktop_ShowWindowContentsWhileDragging = false; + RemoteDesktop_MenuAndWindowAnimation = false; + RemoteDesktop_VisualStyles = false; + break; + case NetworkConnectionType.BroadbandLow: + RemoteDesktop_DesktopBackground = false; + RemoteDesktop_FontSmoothing = false; + RemoteDesktop_DesktopComposition = false; + RemoteDesktop_ShowWindowContentsWhileDragging = false; + RemoteDesktop_MenuAndWindowAnimation = false; + RemoteDesktop_VisualStyles = true; + break; + case NetworkConnectionType.Satellite: + case NetworkConnectionType.BroadbandHigh: + RemoteDesktop_DesktopBackground = false; + RemoteDesktop_FontSmoothing = false; + RemoteDesktop_DesktopComposition = true; + RemoteDesktop_ShowWindowContentsWhileDragging = false; + RemoteDesktop_MenuAndWindowAnimation = false; + RemoteDesktop_VisualStyles = true; + break; + case NetworkConnectionType.WAN: + case NetworkConnectionType.LAN: + RemoteDesktop_DesktopBackground = true; + RemoteDesktop_FontSmoothing = true; + RemoteDesktop_DesktopComposition = true; + RemoteDesktop_ShowWindowContentsWhileDragging = true; + RemoteDesktop_MenuAndWindowAnimation = true; + RemoteDesktop_VisualStyles = true; + break; + } + } + + #endregion + #region ICommand & Actions public ICommand SaveCommand { get; } diff --git a/Source/NETworkManager/ViewModels/ProfileViewModel.cs b/Source/NETworkManager/ViewModels/ProfileViewModel.cs index fabe509da4..8e4aae5344 100644 --- a/Source/NETworkManager/ViewModels/ProfileViewModel.cs +++ b/Source/NETworkManager/ViewModels/ProfileViewModel.cs @@ -22,6 +22,7 @@ namespace NETworkManager.ViewModels; public class ProfileViewModel : ViewModelBase { + #region Constructor public ProfileViewModel(Action saveCommand, Action cancelHandler, IReadOnlyCollection groups, string group = null, ProfileEditMode editMode = ProfileEditMode.Add, ProfileInfo profile = null, ApplicationName applicationName = ApplicationName.None) @@ -43,16 +44,18 @@ public ProfileViewModel(Action saveCommand, Action 0 ? groups.OrderBy(x => x).First() : Strings.Default : profileInfo.Group); - - Tags = profileInfo.Tags; - + Groups = CollectionViewSource.GetDefaultView(groups); Groups.SortDescriptions.Add(new SortDescription()); + Tags = profileInfo.Tags; + // Network Interface NetworkInterface_Enabled = editMode == ProfileEditMode.Add ? applicationName == ApplicationName.NetworkInterface @@ -331,6 +334,8 @@ public ProfileViewModel(Action saveCommand, Action _description; + set + { + if (value == _description) + return; + + _description = value; + OnPropertyChanged(); + } + } private string _group; diff --git a/Source/NETworkManager/Views/AWSSessionManagerHostView.xaml b/Source/NETworkManager/Views/AWSSessionManagerHostView.xaml index 294c9b34f7..40f9b19ada 100644 --- a/Source/NETworkManager/Views/AWSSessionManagerHostView.xaml +++ b/Source/NETworkManager/Views/AWSSessionManagerHostView.xaml @@ -15,6 +15,7 @@ xmlns:interactivity="http://schemas.microsoft.com/xaml/behaviors" xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls" xmlns:controls="clr-namespace:NETworkManager.Controls" + xmlns:profiles="clr-namespace:NETworkManager.Profiles;assembly=NETworkManager.Profiles" dialogs:DialogParticipation.Register="{Binding}" Loaded="UserControl_Loaded" mc:Ignorable="d" d:DataContext="{d:DesignInstance viewModels:AWSSessionManagerHostViewModel}"> @@ -387,7 +388,7 @@ + + + + + + + + + + + + + + + + + + diff --git a/Source/NETworkManager/Views/DNSLookupHostView.xaml b/Source/NETworkManager/Views/DNSLookupHostView.xaml index a7e45fba9a..01ae728e6c 100644 --- a/Source/NETworkManager/Views/DNSLookupHostView.xaml +++ b/Source/NETworkManager/Views/DNSLookupHostView.xaml @@ -12,6 +12,7 @@ xmlns:dialogs="clr-namespace:MahApps.Metro.Controls.Dialogs;assembly=MahApps.Metro" xmlns:settings="clr-namespace:NETworkManager.Settings;assembly=NETworkManager.Settings" xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls" + xmlns:profiles="clr-namespace:NETworkManager.Profiles;assembly=NETworkManager.Profiles" dialogs:DialogParticipation.Register="{Binding}" mc:Ignorable="d" d:DataContext="{d:DesignInstance viewModels:DNSLookupHostViewModel}"> @@ -213,7 +214,7 @@ + + + + + + + + + + + + + + + + + + diff --git a/Source/NETworkManager/Views/GroupDialog.xaml b/Source/NETworkManager/Views/GroupDialog.xaml index 30a20af1ab..517021c395 100644 --- a/Source/NETworkManager/Views/GroupDialog.xaml +++ b/Source/NETworkManager/Views/GroupDialog.xaml @@ -616,6 +616,8 @@ + + @@ -645,6 +647,18 @@ + + + + + + + + + + + + + + + + diff --git a/Source/NETworkManager/Views/IPScannerHostView.xaml b/Source/NETworkManager/Views/IPScannerHostView.xaml index 963bfd717a..a58d214bd2 100644 --- a/Source/NETworkManager/Views/IPScannerHostView.xaml +++ b/Source/NETworkManager/Views/IPScannerHostView.xaml @@ -12,6 +12,7 @@ xmlns:dialogs="clr-namespace:MahApps.Metro.Controls.Dialogs;assembly=MahApps.Metro" xmlns:settings="clr-namespace:NETworkManager.Settings;assembly=NETworkManager.Settings" xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls" + xmlns:profiles="clr-namespace:NETworkManager.Profiles;assembly=NETworkManager.Profiles" dialogs:DialogParticipation.Register="{Binding}" mc:Ignorable="d" d:DataContext="{d:DesignInstance viewModels:IPScannerHostViewModel}"> @@ -215,7 +216,6 @@ + + + + + + + + + + + + + + + + + + diff --git a/Source/NETworkManager/Views/NetworkInterfaceView.xaml b/Source/NETworkManager/Views/NetworkInterfaceView.xaml index 79dee8fcc2..51feecc174 100644 --- a/Source/NETworkManager/Views/NetworkInterfaceView.xaml +++ b/Source/NETworkManager/Views/NetworkInterfaceView.xaml @@ -15,6 +15,7 @@ xmlns:settings="clr-namespace:NETworkManager.Settings;assembly=NETworkManager.Settings" xmlns:controls="clr-namespace:NETworkManager.Controls" xmlns:liveChart="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf" + xmlns:profiles="clr-namespace:NETworkManager.Profiles;assembly=NETworkManager.Profiles" dialog:DialogParticipation.Register="{Binding}" mc:Ignorable="d" d:DataContext="{d:DesignInstance viewModels:NetworkInterfaceViewModel}"> @@ -1252,7 +1253,7 @@ + + + + + + + + + + + + + + + + + + diff --git a/Source/NETworkManager/Views/PingMonitorHostView.xaml b/Source/NETworkManager/Views/PingMonitorHostView.xaml index 32c6070176..da72b8ec1d 100644 --- a/Source/NETworkManager/Views/PingMonitorHostView.xaml +++ b/Source/NETworkManager/Views/PingMonitorHostView.xaml @@ -12,6 +12,7 @@ xmlns:localization="clr-namespace:NETworkManager.Localization.Resources;assembly=NETworkManager.Localization" xmlns:settings="clr-namespace:NETworkManager.Settings;assembly=NETworkManager.Settings" xmlns:dialogs="clr-namespace:MahApps.Metro.Controls.Dialogs;assembly=MahApps.Metro" + xmlns:profiles="clr-namespace:NETworkManager.Profiles;assembly=NETworkManager.Profiles" dialogs:DialogParticipation.Register="{Binding}" mc:Ignorable="d" d:DataContext="{d:DesignInstance viewModels:PingMonitorHostViewModel}"> @@ -370,7 +371,7 @@ + + + + + + + + + + + + + + + + + + diff --git a/Source/NETworkManager/Views/PortScannerHostView.xaml b/Source/NETworkManager/Views/PortScannerHostView.xaml index 02aa9f4ef2..202e01f6ba 100644 --- a/Source/NETworkManager/Views/PortScannerHostView.xaml +++ b/Source/NETworkManager/Views/PortScannerHostView.xaml @@ -12,6 +12,7 @@ xmlns:localization="clr-namespace:NETworkManager.Localization.Resources;assembly=NETworkManager.Localization" xmlns:settings="clr-namespace:NETworkManager.Settings;assembly=NETworkManager.Settings" xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls" + xmlns:profiles="clr-namespace:NETworkManager.Profiles;assembly=NETworkManager.Profiles" dialogs:DialogParticipation.Register="{Binding}" mc:Ignorable="d" d:DataContext="{d:DesignInstance viewModels:PortScannerHostViewModel}"> @@ -215,7 +216,7 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Source/NETworkManager/Views/PowerShellHostView.xaml b/Source/NETworkManager/Views/PowerShellHostView.xaml index 3339a0606f..6efb2518a5 100644 --- a/Source/NETworkManager/Views/PowerShellHostView.xaml +++ b/Source/NETworkManager/Views/PowerShellHostView.xaml @@ -15,6 +15,7 @@ xmlns:interactivity="http://schemas.microsoft.com/xaml/behaviors" xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls" xmlns:controls="clr-namespace:NETworkManager.Controls" + xmlns:profiles="clr-namespace:NETworkManager.Profiles;assembly=NETworkManager.Profiles" dialogs:DialogParticipation.Register="{Binding}" Loaded="UserControl_Loaded" mc:Ignorable="d" d:DataContext="{d:DesignInstance viewModels:PowerShellHostViewModel}"> @@ -344,7 +345,7 @@ + + + + + + + + + + + + + + + + + + diff --git a/Source/NETworkManager/Views/ProfileDialog.xaml b/Source/NETworkManager/Views/ProfileDialog.xaml index ae62f3507c..575d49cb28 100644 --- a/Source/NETworkManager/Views/ProfileDialog.xaml +++ b/Source/NETworkManager/Views/ProfileDialog.xaml @@ -1286,6 +1286,8 @@ + + @@ -1296,7 +1298,7 @@ + mah:TextBoxHelper.Watermark="{x:Static localization:StaticStrings.ExampleProfileName}"> @@ -1364,8 +1366,20 @@ + + + + + + + + + + + + + + + + diff --git a/Source/NETworkManager/Views/RemoteDesktopConnectDialog.xaml b/Source/NETworkManager/Views/RemoteDesktopConnectDialog.xaml index 83909bbc34..18bdb0454a 100644 --- a/Source/NETworkManager/Views/RemoteDesktopConnectDialog.xaml +++ b/Source/NETworkManager/Views/RemoteDesktopConnectDialog.xaml @@ -43,7 +43,7 @@ Visibility="{Binding ConnectAs, Converter={StaticResource BooleanToVisibilityCollapsedConverter}}" Margin="0,0,0,10" /> diff --git a/Source/NETworkManager/Views/RemoteDesktopHostView.xaml b/Source/NETworkManager/Views/RemoteDesktopHostView.xaml index 354f3f88a4..c0c251a39e 100644 --- a/Source/NETworkManager/Views/RemoteDesktopHostView.xaml +++ b/Source/NETworkManager/Views/RemoteDesktopHostView.xaml @@ -14,6 +14,7 @@ xmlns:wpfHelpers="clr-namespace:NETworkManager.Utilities.WPF;assembly=NETworkManager.Utilities.WPF" xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls" xmlns:controls="clr-namespace:NETworkManager.Controls" + xmlns:profiles="clr-namespace:NETworkManager.Profiles;assembly=NETworkManager.Profiles" dialogs:DialogParticipation.Register="{Binding}" Loaded="UserControl_Loaded" mc:Ignorable="d" d:DataContext="{d:DesignInstance viewModels:RemoteDesktopHostViewModel}"> @@ -359,7 +360,7 @@ + + + + + + + + + + + + + + + + + + diff --git a/Source/NETworkManager/Views/SNMPHostView.xaml b/Source/NETworkManager/Views/SNMPHostView.xaml index 5250f39f6c..a0570a5886 100644 --- a/Source/NETworkManager/Views/SNMPHostView.xaml +++ b/Source/NETworkManager/Views/SNMPHostView.xaml @@ -12,6 +12,7 @@ xmlns:settings="clr-namespace:NETworkManager.Settings;assembly=NETworkManager.Settings" xmlns:localization="clr-namespace:NETworkManager.Localization.Resources;assembly=NETworkManager.Localization" xmlns:dialogs="clr-namespace:MahApps.Metro.Controls.Dialogs;assembly=MahApps.Metro" + xmlns:profiles="clr-namespace:NETworkManager.Profiles;assembly=NETworkManager.Profiles" dialogs:DialogParticipation.Register="{Binding}" mc:Ignorable="d" d:DataContext="{d:DesignInstance viewModels:SNMPHostViewModel}"> @@ -214,7 +215,7 @@ + + + + + + + + + + + + + + + + + + diff --git a/Source/NETworkManager/Views/TigerVNCHostView.xaml b/Source/NETworkManager/Views/TigerVNCHostView.xaml index 0636c65f67..7534efe5f5 100644 --- a/Source/NETworkManager/Views/TigerVNCHostView.xaml +++ b/Source/NETworkManager/Views/TigerVNCHostView.xaml @@ -14,6 +14,7 @@ xmlns:settings="clr-namespace:NETworkManager.Settings;assembly=NETworkManager.Settings" xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls" xmlns:controls="clr-namespace:NETworkManager.Controls" + xmlns:profiles="clr-namespace:NETworkManager.Profiles;assembly=NETworkManager.Profiles" dialogs:DialogParticipation.Register="{Binding}" Loaded="UserControl_Loaded" mc:Ignorable="d" d:DataContext="{d:DesignInstance viewModels:TigerVNCHostViewModel}"> @@ -318,7 +319,7 @@ + + + + + + + + + + + + + + + + + + diff --git a/Source/NETworkManager/Views/TracerouteHostView.xaml b/Source/NETworkManager/Views/TracerouteHostView.xaml index 6a56c52d41..9253699360 100644 --- a/Source/NETworkManager/Views/TracerouteHostView.xaml +++ b/Source/NETworkManager/Views/TracerouteHostView.xaml @@ -12,6 +12,7 @@ xmlns:settings="clr-namespace:NETworkManager.Settings;assembly=NETworkManager.Settings" xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls" xmlns:dialogs="clr-namespace:MahApps.Metro.Controls.Dialogs;assembly=MahApps.Metro" + xmlns:profiles="clr-namespace:NETworkManager.Profiles;assembly=NETworkManager.Profiles" dialogs:DialogParticipation.Register="{Binding}" mc:Ignorable="d" d:DataContext="{d:DesignInstance viewModels:TracerouteHostViewModel}"> @@ -214,7 +215,7 @@ + + + + + + + + + + + + + + + + + + diff --git a/Source/NETworkManager/Views/WakeOnLANView.xaml b/Source/NETworkManager/Views/WakeOnLANView.xaml index 21057ac441..dfa7d10d46 100644 --- a/Source/NETworkManager/Views/WakeOnLANView.xaml +++ b/Source/NETworkManager/Views/WakeOnLANView.xaml @@ -12,6 +12,7 @@ xmlns:viewModels="clr-namespace:NETworkManager.ViewModels" xmlns:localization="clr-namespace:NETworkManager.Localization.Resources;assembly=NETworkManager.Localization" xmlns:settings="clr-namespace:NETworkManager.Settings;assembly=NETworkManager.Settings" + xmlns:profiles="clr-namespace:NETworkManager.Profiles;assembly=NETworkManager.Profiles" dialogs:DialogParticipation.Register="{Binding}" mc:Ignorable="d" d:DataContext="{d:DesignInstance viewModels:WakeOnLANViewModel}"> @@ -229,10 +230,10 @@ - + @@ -279,10 +280,6 @@ - @@ -304,7 +301,7 @@ - + + + + + + + + + + + + + + + + + + + diff --git a/Source/NETworkManager/Views/WebConsoleHostView.xaml b/Source/NETworkManager/Views/WebConsoleHostView.xaml index a71f7a2351..6e8550a1b8 100644 --- a/Source/NETworkManager/Views/WebConsoleHostView.xaml +++ b/Source/NETworkManager/Views/WebConsoleHostView.xaml @@ -15,6 +15,7 @@ xmlns:resources="clr-namespace:NETworkManager.Properties" xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls" xmlns:controls="clr-namespace:NETworkManager.Controls" + xmlns:profiles="clr-namespace:NETworkManager.Profiles;assembly=NETworkManager.Profiles" dialogs:DialogParticipation.Register="{Binding}" mc:Ignorable="d" d:DataContext="{d:DesignInstance viewModels:WebConsoleHostViewModel}"> @@ -318,7 +319,7 @@ + + + + + + + + + + + + + + + + + + diff --git a/Source/NETworkManager/Views/WhoisHostView.xaml b/Source/NETworkManager/Views/WhoisHostView.xaml index 747027c83b..c05e8e80a7 100644 --- a/Source/NETworkManager/Views/WhoisHostView.xaml +++ b/Source/NETworkManager/Views/WhoisHostView.xaml @@ -12,6 +12,7 @@ xmlns:dialogs="clr-namespace:MahApps.Metro.Controls.Dialogs;assembly=MahApps.Metro" xmlns:settings="clr-namespace:NETworkManager.Settings;assembly=NETworkManager.Settings" xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls" + xmlns:profiles="clr-namespace:NETworkManager.Profiles;assembly=NETworkManager.Profiles" dialogs:DialogParticipation.Register="{Binding}" mc:Ignorable="d" d:DataContext="{d:DesignInstance viewModels:WhoisHostViewModel}"> @@ -215,7 +216,7 @@ @@ -336,8 +337,26 @@ BasedOn="{StaticResource MahApps.Styles.ListBoxItem}"> + + + + + + + + + + + + + + + + + + diff --git a/Website/docs/changelog/next-release.md b/Website/docs/changelog/next-release.md index a0e0a23dc4..307d0dc7c2 100644 --- a/Website/docs/changelog/next-release.md +++ b/Website/docs/changelog/next-release.md @@ -20,6 +20,7 @@ Release date: **xx.xx.2024** ## What's new? - Applications can now be sorted via drag & drop in the application sidebar or in the settings under `Settings > General > Applications`. [#2781](https://github.com/BornToBeRoot/NETworkManager/pull/2781) +- Profiles now have a field for a description, which is displayed together with the host name/IP address in a tooltip in the profile sidebar. [#2877](https://github.com/BornToBeRoot/NETworkManager/pull/2877) ## Improvements @@ -27,10 +28,12 @@ Release date: **xx.xx.2024** - `Set default` added (Set the startup application - available if not set) - `Show` added (Shows the application in the main window - available if hidden) - `Hide` added (Hides the application from the main window - available if shown) +- Groups now have a field for a description [#2877](https://github.com/BornToBeRoot/NETworkManager/pull/2877) ## Bugfixes - **Ping Monitor** + - A problem has been fixed where the ping does not start if the DNS server is not configured. This can occur if the network interface via which the Windows DNS server was configured is deactivated/disconnected. [#2876](https://github.com/BornToBeRoot/NETworkManager/pull/2876) - TextBox content not centered because of ScrollViewer issue. [#2763](https://github.com/BornToBeRoot/NETworkManager/pull/2763)