Skip to content

Commit

Permalink
Feature: Domain in Remote Desktop connect dialog (#2165)
Browse files Browse the repository at this point in the history
* Feature: Domain in Remote Desktop connect dialog

* Docs: #2165 added
  • Loading branch information
BornToBeRoot committed Apr 14, 2023
1 parent ae42dfe commit 458a1bd
Show file tree
Hide file tree
Showing 5 changed files with 100 additions and 19 deletions.
58 changes: 51 additions & 7 deletions Source/NETworkManager/ViewModels/RemoteDesktopConnectViewModel.cs
Expand Up @@ -71,7 +71,7 @@ public bool UseCredentials
OnPropertyChanged();
}
}

private string _username;
public string Username
{
Expand All @@ -86,7 +86,21 @@ public string Username
}
}

private SecureString _password = new SecureString();
private string _domain;
public string Domain
{
get => _domain;
set
{
if (value == _domain)
return;

_domain = value;
OnPropertyChanged();
}
}

private SecureString _password = new();
public SecureString Password
{
get => _password;
Expand All @@ -96,19 +110,49 @@ public SecureString Password
return;

_password = value;

ValidatePassword();

OnPropertyChanged();
}
}

private bool _isPasswordEmpty = true;
public bool IsPasswordEmpty
{
get => _isPasswordEmpty;
set
{
if (value == _isPasswordEmpty)
return;

_isPasswordEmpty = value;
OnPropertyChanged();
}
}


public RemoteDesktopConnectViewModel(Action<RemoteDesktopConnectViewModel> connectCommand, Action<RemoteDesktopConnectViewModel> cancelHandler, bool connectAs = false)
public RemoteDesktopConnectViewModel(Action<RemoteDesktopConnectViewModel> connectCommand, Action<RemoteDesktopConnectViewModel> cancelHandler,(string Name, string Host)? connectAsOptions = null)
{
ConnectCommand = new RelayCommand(p => connectCommand(this));
CancelCommand = new RelayCommand(p => cancelHandler(this));

ConnectAs = connectAs;

if (!ConnectAs)
if (connectAsOptions == null)
{
HostHistoryView = CollectionViewSource.GetDefaultView(SettingsManager.Current.RemoteDesktop_HostHistory);
}
else
{
ConnectAs = true;

UseCredentials = true;

Name = connectAsOptions.Value.Name;
Host = connectAsOptions.Value.Host;
}
}

/// <summary>
/// Check if the passwords are valid.
/// </summary>
private void ValidatePassword() => IsPasswordEmpty = Password == null || Password.Length == 0;
}
13 changes: 4 additions & 9 deletions Source/NETworkManager/ViewModels/RemoteDesktopHostViewModel.cs
Expand Up @@ -382,6 +382,7 @@ private async Task Connect(string host = null)
sessionInfo.UseCredentials = true;
sessionInfo.Username = instance.Username;
sessionInfo.Domain = instance.Domain;
sessionInfo.Password = instance.Password;
}
Expand Down Expand Up @@ -439,7 +440,9 @@ private async Task ConnectProfileAs()
if (instance.UseCredentials)
{
sessionInfo.UseCredentials = true;
sessionInfo.Username = instance.Username;
sessionInfo.Domain = instance.Domain;
sessionInfo.Password = instance.Password;
}
Expand All @@ -448,15 +451,7 @@ private async Task ConnectProfileAs()
{
await _dialogCoordinator.HideMetroDialogAsync(this, customDialog);
ConfigurationManager.Current.IsDialogOpen = false;
}, true)
{
// Set name, hostname
Name = profileInfo.Name,
Host = profileInfo.RemoteDesktop_Host,

// Request credentials
UseCredentials = true
};
}, (profileInfo.Name, profileInfo.RemoteDesktop_Host));

customDialog.Content = new RemoteDesktopConnectDialog
{
Expand Down
10 changes: 10 additions & 0 deletions Source/NETworkManager/Views/ProfileDialog.xaml
Expand Up @@ -1911,6 +1911,16 @@
<Setter Property="IsEnabled" Value="False" />
</MultiDataTrigger.Setters>
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding RemoteDesktop_Enabled}" Value="True"/>
<Condition Binding="{Binding RemoteDesktop_UseCredentials}" Value="True" />
<Condition Binding="{Binding ElementName=TextBoxRemoteDesktopDomain, Path=(Validation.HasError)}" Value="True" />
</MultiDataTrigger.Conditions>
<MultiDataTrigger.Setters>
<Setter Property="IsEnabled" Value="False" />
</MultiDataTrigger.Setters>
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding RemoteDesktop_Enabled}" Value="True"/>
Expand Down
34 changes: 32 additions & 2 deletions Source/NETworkManager/Views/RemoteDesktopConnectDialog.xaml
Expand Up @@ -78,6 +78,8 @@
<RowDefinition Height="Auto" />
<RowDefinition Height="10" />
<RowDefinition Height="Auto" />
<RowDefinition Height="10" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock Grid.Column="0" Grid.Row="0" Text="{x:Static localization:Strings.Username}" />
<TextBox x:Name="TextBoxUsername" Grid.Column="2" Grid.Row="0" mah:TextBoxHelper.Watermark="{x:Static localization:StaticStrings.ExampleUsername}">
Expand All @@ -90,8 +92,18 @@
</Binding>
</TextBox.Text>
</TextBox>
<TextBlock Grid.Column="0" Grid.Row="2" Text="{x:Static localization:Strings.Password}" />
<PasswordBox x:Name="PasswordBoxPassword" Grid.Column="2" Grid.Row="2" Style="{StaticResource DefaultPasswordBox}" >
<TextBlock Grid.Column="0" Grid.Row="2" Text="{x:Static localization:Strings.Domain}" />
<TextBox x:Name="TextBoxDomain" Grid.Column="2" Grid.Row="2" mah:TextBoxHelper.Watermark="{x:Static localization:StaticStrings.ExampleDomain}">
<TextBox.Text>
<Binding Path="Domain" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<validators:EmptyOrWindowsDomainValidator ValidatesOnTargetUpdated="True" />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
<TextBlock Grid.Column="0" Grid.Row="4" Text="{x:Static localization:Strings.Password}" />
<PasswordBox x:Name="PasswordBoxPassword" Grid.Column="2" Grid.Row="4" Style="{StaticResource DefaultPasswordBox}" >
<interactivity:Interaction.Behaviors>
<wpfHelpers:PasswordBoxBindingBehavior Password="{Binding Password, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</interactivity:Interaction.Behaviors>
Expand All @@ -115,6 +127,24 @@
<Setter Property="IsEnabled" Value="False" />
</MultiDataTrigger.Setters>
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding UseCredentials}" Value="True" />
<Condition Binding="{Binding Path=(Validation.HasError), ElementName=TextBoxDomain}" Value="True" />
</MultiDataTrigger.Conditions>
<MultiDataTrigger.Setters>
<Setter Property="IsEnabled" Value="False" />
</MultiDataTrigger.Setters>
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding UseCredentials}" Value="True" />
<Condition Binding="{Binding IsPasswordEmpty}" Value="True" />
</MultiDataTrigger.Conditions>
<MultiDataTrigger.Setters>
<Setter Property="IsEnabled" Value="False" />
</MultiDataTrigger.Setters>
</MultiDataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
Expand Down
4 changes: 3 additions & 1 deletion docs/Changelog/next-release.md
Expand Up @@ -31,6 +31,7 @@ Release date: **xx.xx.2023**
- Show error message if scan fails (e.g. wifi adapter is unplugged while scanning) [#2133](https://github.com/BornToBeRoot/NETworkManager/pull/2133){:target="\_blank"}
- Automatically refresh is now enabled if it was enabled on the last exit [#2116](https://github.com/BornToBeRoot/NETworkManager/pull/2116){:target="\_blank"}
- Remote Desktop
- Domain added to connect dialog [#2165](https://github.com/BornToBeRoot/NETworkManager/pull/2165){:target="\_blank"}
- Domain added to credentials [#2108](https://github.com/BornToBeRoot/NETworkManager/pull/2108){:target="\_blank"}
- Connections
- Automatically refresh is now enabled if it was enabled on the last exit [#2116](https://github.com/BornToBeRoot/NETworkManager/pull/2116){:target="\_blank"}
Expand All @@ -42,7 +43,8 @@ Release date: **xx.xx.2023**

## Bugfixes
- Profiles
- OK button not disabled initially on unlock profile & decrypt profile file [#2133](https://github.com/BornToBeRoot/NETworkManager/pull/2133){:target="\_blank"}
- OK button not disabled initially if remote desktop domain is invalid [#2165](https://github.com/BornToBeRoot/NETworkManager/pull/2165){:target="\_blank"}
- OK button not disabled initially on unlock profile & decrypt profile file [#2133](https://github.com/BornToBeRoot/NETworkManager/pull/2133){:target="\_blank"}

## Other
- Code cleanup [#2100](https://github.com/BornToBeRoot/NETworkManager/pull/2100){:target="\_blank"}
Expand Down

0 comments on commit 458a1bd

Please sign in to comment.