From 674ca83ba9243a9e95a7568c797668dab6aee26a Mon Sep 17 00:00:00 2001 From: Lucas Faria Mendes Date: Mon, 30 Mar 2026 10:35:25 -0300 Subject: feat: upload files --- .../Componentes/CustomPasswordBox.cs | 203 +++++++++++++++++++++ 1 file changed, 203 insertions(+) create mode 100644 Gestor.Application/Componentes/CustomPasswordBox.cs (limited to 'Gestor.Application/Componentes/CustomPasswordBox.cs') diff --git a/Gestor.Application/Componentes/CustomPasswordBox.cs b/Gestor.Application/Componentes/CustomPasswordBox.cs new file mode 100644 index 0000000..9b1c76d --- /dev/null +++ b/Gestor.Application/Componentes/CustomPasswordBox.cs @@ -0,0 +1,203 @@ +using System; +using System.CodeDom.Compiler; +using System.ComponentModel; +using System.Diagnostics; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Markup; + +namespace Gestor.Application.Componentes +{ + public class CustomPasswordBox : UserControl, IComponentConnector + { + public readonly static DependencyProperty IsReadOnlyProperty; + + public readonly static DependencyProperty TextProperty; + + public readonly static DependencyProperty PasswordViewProperty; + + private bool _typing; + + internal Grid LayoutRoot; + + internal TextBox TextRead; + + internal TextBox TextMask; + + internal System.Windows.Controls.PasswordBox PasswordBox; + + private bool _contentLoaded; + + public bool IsReadOnly + { + get + { + return (bool)base.GetValue(CustomPasswordBox.IsReadOnlyProperty); + } + set + { + base.SetValue(CustomPasswordBox.IsReadOnlyProperty, value); + } + } + + public bool PasswordView + { + get + { + return (bool)base.GetValue(CustomPasswordBox.PasswordViewProperty); + } + set + { + base.SetValue(CustomPasswordBox.PasswordViewProperty, value); + } + } + + public string Text + { + get + { + return (string)base.GetValue(CustomPasswordBox.TextProperty); + } + set + { + base.SetValue(CustomPasswordBox.TextProperty, value); + } + } + + static CustomPasswordBox() + { + CustomPasswordBox.IsReadOnlyProperty = DependencyProperty.Register("IsReadOnly", typeof(bool), typeof(CustomPasswordBox), new PropertyMetadata(false, new PropertyChangedCallback(CustomPasswordBox.OnBoundIsReadOnlyChanged))); + CustomPasswordBox.TextProperty = DependencyProperty.Register("Text", typeof(string), typeof(CustomPasswordBox), new PropertyMetadata(string.Empty, new PropertyChangedCallback(CustomPasswordBox.OnBoundPasswordChanged))); + CustomPasswordBox.PasswordViewProperty = DependencyProperty.Register("PasswordViewProperty", typeof(bool), typeof(CustomPasswordBox), new PropertyMetadata(false, new PropertyChangedCallback(CustomPasswordBox.OnBoundPasswordViewChanged))); + } + + public CustomPasswordBox() + { + this.InitializeComponent(); + this.LayoutRoot.DataContext = this; + this.PasswordView = false; + } + + private void Eye_Click(object sender, RoutedEventArgs e) + { + if (this.IsReadOnly) + { + return; + } + this.PasswordView = !this.PasswordView; + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "4.0.0.0")] + public void InitializeComponent() + { + if (this._contentLoaded) + { + return; + } + this._contentLoaded = true; + System.Windows.Application.LoadComponent(this, new Uri("/Gestor.Application;component/componentes/custompasswordbox.xaml", UriKind.Relative)); + } + + private static void OnBoundIsReadOnlyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + CustomPasswordBox customPasswordBox = d as CustomPasswordBox; + if (d == null || customPasswordBox == null) + { + return; + } + bool newValue = (bool)e.NewValue; + customPasswordBox.PasswordBox.Visibility = (newValue ? System.Windows.Visibility.Collapsed : System.Windows.Visibility.Visible); + customPasswordBox.TextRead.Visibility = (newValue ? System.Windows.Visibility.Visible : System.Windows.Visibility.Collapsed); + customPasswordBox.TextMask.Visibility = (newValue ? System.Windows.Visibility.Visible : System.Windows.Visibility.Collapsed); + } + + private static void OnBoundPasswordChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + CustomPasswordBox customPasswordBox = d as CustomPasswordBox; + if (d == null || customPasswordBox == null) + { + return; + } + string newValue = (string)e.NewValue ?? ""; + if (customPasswordBox._typing) + { + return; + } + customPasswordBox.TextMask.Text = "".PadLeft(newValue.Length, '•'); + customPasswordBox.PasswordBox.Password = newValue; + } + + private static void OnBoundPasswordViewChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + CustomPasswordBox text = d as CustomPasswordBox; + if (d == null || text == null) + { + return; + } + bool newValue = (bool)e.NewValue; + if (!newValue) + { + text.PasswordBox.Password = text.TextRead.Text; + } + else + { + text.TextRead.Text = text.PasswordBox.Password; + } + text.PasswordBox.Visibility = (newValue ? System.Windows.Visibility.Collapsed : System.Windows.Visibility.Visible); + text.TextRead.Visibility = (newValue ? System.Windows.Visibility.Visible : System.Windows.Visibility.Collapsed); + text.TextMask.Visibility = text.PasswordBox.Visibility; + } + + private void PasswordBox_PasswordChanged(object sender, RoutedEventArgs e) + { + this._typing = true; + this.Text = this.PasswordBox.Password; + this._typing = false; + this.TextMask.Text = "".PadLeft(this.PasswordBox.Password.Length, '•'); + } + + [DebuggerNonUserCode] + [EditorBrowsable(EditorBrowsableState.Never)] + [GeneratedCode("PresentationBuildTasks", "4.0.0.0")] + void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) + { + switch (connectionId) + { + case 1: + { + this.LayoutRoot = (Grid)target; + return; + } + case 2: + { + this.TextRead = (TextBox)target; + this.TextRead.TextChanged += new TextChangedEventHandler(this.TextRead_PasswordChanged); + return; + } + case 3: + { + this.TextMask = (TextBox)target; + return; + } + case 4: + { + this.PasswordBox = (System.Windows.Controls.PasswordBox)target; + this.PasswordBox.PasswordChanged += new RoutedEventHandler(this.PasswordBox_PasswordChanged); + return; + } + case 5: + { + ((Button)target).Click += new RoutedEventHandler(this.Eye_Click); + return; + } + } + this._contentLoaded = true; + } + + private void TextRead_PasswordChanged(object sender, TextChangedEventArgs e) + { + this.Text = this.TextRead.Text; + } + } +} \ No newline at end of file -- cgit v1.2.3