|
@@ -4,11 +4,15 @@ namespace NetTool.Client;
|
|
|
|
|
|
|
|
public partial class PasswordPromptWindow : Window
|
|
public partial class PasswordPromptWindow : Window
|
|
|
{
|
|
{
|
|
|
|
|
+ private bool _isPasswordVisible;
|
|
|
|
|
+ private bool _isSyncingPasswordText;
|
|
|
|
|
+
|
|
|
public PasswordPromptWindow(string deviceLabel, string savedPassword)
|
|
public PasswordPromptWindow(string deviceLabel, string savedPassword)
|
|
|
{
|
|
{
|
|
|
InitializeComponent();
|
|
InitializeComponent();
|
|
|
PromptTextBlock.Text = $"请输入设备 {deviceLabel} 的管理密码。";
|
|
PromptTextBlock.Text = $"请输入设备 {deviceLabel} 的管理密码。";
|
|
|
PasswordBox.Password = savedPassword;
|
|
PasswordBox.Password = savedPassword;
|
|
|
|
|
+ PasswordTextBox.Text = savedPassword;
|
|
|
ClearPasswordButton.Visibility = string.IsNullOrWhiteSpace(savedPassword) ? Visibility.Collapsed : Visibility.Visible;
|
|
ClearPasswordButton.Visibility = string.IsNullOrWhiteSpace(savedPassword) ? Visibility.Collapsed : Visibility.Visible;
|
|
|
Loaded += (_, _) => PasswordBox.Focus();
|
|
Loaded += (_, _) => PasswordBox.Focus();
|
|
|
}
|
|
}
|
|
@@ -38,7 +42,54 @@ public partial class PasswordPromptWindow : Window
|
|
|
{
|
|
{
|
|
|
ClearSavedPasswordRequested = true;
|
|
ClearSavedPasswordRequested = true;
|
|
|
PasswordBox.Clear();
|
|
PasswordBox.Clear();
|
|
|
|
|
+ PasswordTextBox.Clear();
|
|
|
ClearPasswordButton.Visibility = Visibility.Collapsed;
|
|
ClearPasswordButton.Visibility = Visibility.Collapsed;
|
|
|
|
|
+ FocusPasswordInput();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private void TogglePasswordVisibilityButton_OnClick(object sender, RoutedEventArgs e)
|
|
|
|
|
+ {
|
|
|
|
|
+ _isPasswordVisible = !_isPasswordVisible;
|
|
|
|
|
+ if (_isPasswordVisible)
|
|
|
|
|
+ {
|
|
|
|
|
+ PasswordTextBox.Text = PasswordBox.Password;
|
|
|
|
|
+ PasswordTextBox.Visibility = Visibility.Visible;
|
|
|
|
|
+ PasswordBox.Visibility = Visibility.Collapsed;
|
|
|
|
|
+ TogglePasswordVisibilityButton.Content = "\ue7b3";
|
|
|
|
|
+ TogglePasswordVisibilityButton.ToolTip = "隐藏密码";
|
|
|
|
|
+ PasswordTextBox.Focus();
|
|
|
|
|
+ PasswordTextBox.CaretIndex = PasswordTextBox.Text.Length;
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ PasswordBox.Password = PasswordTextBox.Text;
|
|
|
|
|
+ PasswordBox.Visibility = Visibility.Visible;
|
|
|
|
|
+ PasswordTextBox.Visibility = Visibility.Collapsed;
|
|
|
|
|
+ TogglePasswordVisibilityButton.Content = "\uED1A";
|
|
|
|
|
+ TogglePasswordVisibilityButton.ToolTip = "查看密码";
|
|
|
|
|
+ PasswordBox.Focus();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private void PasswordTextBox_OnTextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (_isSyncingPasswordText)
|
|
|
|
|
+ {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ _isSyncingPasswordText = true;
|
|
|
|
|
+ PasswordBox.Password = PasswordTextBox.Text;
|
|
|
|
|
+ _isSyncingPasswordText = false;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private void FocusPasswordInput()
|
|
|
|
|
+ {
|
|
|
|
|
+ if (_isPasswordVisible)
|
|
|
|
|
+ {
|
|
|
|
|
+ PasswordTextBox.Focus();
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
PasswordBox.Focus();
|
|
PasswordBox.Focus();
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|