inital
This commit is contained in:
588
FasdDesktopUi/Pages/SettingsPage/M42SettingsPageView.xaml.cs
Normal file
588
FasdDesktopUi/Pages/SettingsPage/M42SettingsPageView.xaml.cs
Normal file
@@ -0,0 +1,588 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
using C4IT.Logging;
|
||||
using static C4IT.Logging.cLogManager;
|
||||
using C4IT.MultiLanguage;
|
||||
using C4IT.FASD.Base;
|
||||
|
||||
using FasdDesktopUi.Basics.Models;
|
||||
using C4IT.FASD.Cockpit.Communication;
|
||||
using FasdDesktopUi.Basics;
|
||||
using FasdDesktopUi.Pages.M42AuthenticationPage;
|
||||
using FasdDesktopUi.Pages.DetailsPage;
|
||||
using System.ComponentModel;
|
||||
using System.Globalization;
|
||||
using System.Diagnostics.Eventing.Reader;
|
||||
|
||||
namespace FasdDesktopUi.Pages.SettingsPage
|
||||
{
|
||||
public partial class M42SettingsPageView : SettingsPageBase
|
||||
{
|
||||
private static M42SettingsPageView _Instance = null;
|
||||
|
||||
public static M42SettingsPageView Instance
|
||||
{
|
||||
get
|
||||
{
|
||||
return _Instance ?? (_Instance = new M42SettingsPageView());
|
||||
}
|
||||
}
|
||||
|
||||
private double borderWidth = double.MaxValue;
|
||||
|
||||
private enumM42AuthenticationMethod authenticationMethod;
|
||||
|
||||
private enumM42AuthenticationControl authenticationControl;
|
||||
|
||||
private bool formsAuthenticated = false;
|
||||
|
||||
private bool IsTemporaryDisabled = false;
|
||||
|
||||
private bool _isMethodBlurred = false;
|
||||
public bool IsNotMethodBlurred
|
||||
{
|
||||
get { return !_isMethodBlurred; }
|
||||
}
|
||||
public bool IsMethodBlurred
|
||||
{
|
||||
get { return _isMethodBlurred; }
|
||||
set
|
||||
{
|
||||
if (value != _isMethodBlurred)
|
||||
{
|
||||
_isMethodBlurred = value;
|
||||
OnPropertyChanged(nameof(IsMethodBlurred));
|
||||
OnPropertyChanged(nameof(IsNotMethodBlurred));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private bool _isMethodAuto = false;
|
||||
public bool IsNotMethodAuto { get { return !_isMethodAuto; } }
|
||||
public bool IsMethodAuto
|
||||
{
|
||||
get { return _isMethodAuto; }
|
||||
set
|
||||
{
|
||||
if (value != _isMethodAuto)
|
||||
{
|
||||
_isMethodAuto = value;
|
||||
OnPropertyChanged(nameof(IsMethodAuto));
|
||||
OnPropertyChanged(nameof(IsNotMethodAuto));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private M42SettingsPageView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void M42SettingsWindows_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (e.NewValue is bool isVisible)
|
||||
{
|
||||
if (isVisible && !IsTemporaryDisabled)
|
||||
{
|
||||
App.HideAllSettingViews();
|
||||
|
||||
if (this.IsLoaded)
|
||||
InitializeControlValues();
|
||||
}
|
||||
}
|
||||
|
||||
BlurInvoker_IsActiveChanged(sender, e);
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
}
|
||||
|
||||
#region DialogButton_Click
|
||||
|
||||
public void DialogButton_Click(object sender)
|
||||
{
|
||||
if (!(sender is FrameworkElement senderElement))
|
||||
return;
|
||||
|
||||
if (!(senderElement.Tag is bool tagValue))
|
||||
return;
|
||||
|
||||
if (tagValue)
|
||||
{
|
||||
}
|
||||
|
||||
Close();
|
||||
|
||||
if (tagValue)
|
||||
{
|
||||
var _h = Dispatcher.Invoke(async () =>
|
||||
{
|
||||
await Task.Delay(300);
|
||||
|
||||
var dialogResult = CustomMessageBox.CustomMessageBox.Show(cMultiLanguageSupport.GetItem("M42Settings.ChangedInfoDialog.Text"), cMultiLanguageSupport.GetItem("M42Settings.RestartDialog.Caption"), enumHealthCardStateLevel.Info, null, true);
|
||||
|
||||
if (dialogResult == true)
|
||||
{
|
||||
System.Windows.Forms.Application.Restart();
|
||||
Application.Current.Shutdown();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region CloseButton_Click
|
||||
|
||||
private void CloseButton_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
Close();
|
||||
}
|
||||
|
||||
private void CloseButton_TouchDown(object sender, TouchEventArgs e)
|
||||
{
|
||||
Close();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private async void M42SettingsWindows_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
var CM = MethodBase.GetCurrentMethod();
|
||||
LogMethodBegin(CM);
|
||||
try
|
||||
{
|
||||
// initialize the window title
|
||||
var _ServerDisplayName = cCockpitConfiguration.Instance?.m42ServerConfiguration?.DisplayName;
|
||||
if (!string.IsNullOrEmpty(_ServerDisplayName))
|
||||
{
|
||||
var _strTitle = cMultiLanguageSupport.GetItem("M42Settings.Header");
|
||||
_strTitle = string.Format(_strTitle, _ServerDisplayName);
|
||||
txtHeader.Text = _strTitle;
|
||||
}
|
||||
|
||||
// get the current logon user info
|
||||
var _currUserInfo = await cFasdCockpitCommunicationBase.Instance.GetAdditionalUserInfo(enumAdditionalAuthentication.M42WinLogon);
|
||||
if (_currUserInfo != null)
|
||||
{
|
||||
var _txt = cMultiLanguageSupport.GetItem("M42Settings.LogonMethod.CurrentUserValid");
|
||||
var _ci = new CultureInfo(cMultiLanguageSupport.CurrentLanguage);
|
||||
var _dt = _currUserInfo.ValidUntil.ToLocalTime().ToString(_ci);
|
||||
_txt = string.Format(_txt, _currUserInfo.Name, _dt);
|
||||
txtCurrentUser.Text = _txt;
|
||||
}
|
||||
else
|
||||
{
|
||||
txtCurrentUser.Text = cMultiLanguageSupport.GetItem("M42Settings.LogonMethod.CurrentUserInvalid");
|
||||
}
|
||||
|
||||
// get user name for passthrough label
|
||||
string userName;
|
||||
string userAccount;
|
||||
lock (cFasdCockpitCommunicationBase.CockpitUserInfoLock)
|
||||
{
|
||||
userName = cFasdCockpitCommunicationBase.CockpitUserInfo?.Name;
|
||||
userAccount = cFasdCockpitCommunicationBase.CockpitUserInfo?.AdAccount;
|
||||
}
|
||||
string str = null;
|
||||
if (string.IsNullOrEmpty(userName))
|
||||
{
|
||||
if (!string.IsNullOrEmpty(userAccount))
|
||||
str = userAccount;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (string.IsNullOrEmpty(userAccount))
|
||||
str = userName;
|
||||
else
|
||||
str = $"{userName}({userAccount})";
|
||||
}
|
||||
|
||||
|
||||
if (str != null)
|
||||
{
|
||||
var s = cMultiLanguageSupport.GetItem("M42Settings.LogonMethod.PassthoughUser");
|
||||
str = string.Format(s, str);
|
||||
labelPassthough.Text = str;
|
||||
}
|
||||
|
||||
txtAuthenticationError.Visibility = Visibility.Hidden;
|
||||
|
||||
InitializeControlValues();
|
||||
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
LogMethodEnd(CM);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void InitializeControlValues()
|
||||
{
|
||||
// set the initial input control values
|
||||
BasicUserName.Text = cFasdCockpitConfig.Instance?.M42Config?.BasicUser ?? "";
|
||||
|
||||
var _pw = PrivateSecurePassword.Instance.Decode(cFasdCockpitConfig.Instance?.M42Config.BasicPassword) ?? "";
|
||||
pwBoxPasswordBasicShow.Password = _pw;
|
||||
|
||||
_pw = PrivateSecurePassword.Instance.Decode(cFasdCockpitConfig.Instance?.M42Config.ApiToken) ?? "";
|
||||
pwBoxPasswordTokenShow.Password = _pw;
|
||||
|
||||
txtBoxPasswordBasicShow.Text = pwBoxPasswordBasicShow?.Password;
|
||||
txtBoxPasswordTokenShow.Text = pwBoxPasswordTokenShow?.Password;
|
||||
|
||||
// set the initial radio button values
|
||||
switch (cFasdCockpitConfig.Instance?.M42Config?.Control)
|
||||
{
|
||||
case enumM42AuthenticationControl.always:
|
||||
radioButtonLogonActiveYes.IsChecked = true;
|
||||
break;
|
||||
case enumM42AuthenticationControl.never:
|
||||
radioButtonLogonActiveNo.IsChecked = true;
|
||||
break;
|
||||
default:
|
||||
radioButtonLogonActiveAuto.IsChecked = true;
|
||||
break;
|
||||
}
|
||||
|
||||
authenticationMethod = cFasdCockpitConfig.Instance?.M42Config?.Method ?? enumM42AuthenticationMethod.passthrough;
|
||||
switch (cFasdCockpitConfig.Instance?.M42Config?.Method)
|
||||
{
|
||||
case enumM42AuthenticationMethod.basic:
|
||||
radioButtonLogonMethodBasic.IsChecked = true;
|
||||
break;
|
||||
case enumM42AuthenticationMethod.token:
|
||||
radioButtonLogonMethodToken.IsChecked = true;
|
||||
break;
|
||||
case enumM42AuthenticationMethod.forms:
|
||||
radioButtonLogonMethodForms.IsChecked = true;
|
||||
break;
|
||||
default:
|
||||
radioButtonLogonMethodPassthrough.IsChecked = true;
|
||||
break;
|
||||
}
|
||||
LogonActiveChanged();
|
||||
}
|
||||
|
||||
private void logonMethodChanged()
|
||||
{
|
||||
if (radioButtonLogonMethodBasic.IsChecked == true)
|
||||
{
|
||||
authenticationMethod = enumM42AuthenticationMethod.basic;
|
||||
additionalBlockLogonMethodBasic.Visibility = Visibility.Visible;
|
||||
additionalBlockLogonMethodToken.Visibility = Visibility.Collapsed;
|
||||
additionalBlockLogonMethodForms.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
else if (radioButtonLogonMethodToken.IsChecked == true)
|
||||
{
|
||||
authenticationMethod = enumM42AuthenticationMethod.token;
|
||||
additionalBlockLogonMethodBasic.Visibility = Visibility.Collapsed;
|
||||
additionalBlockLogonMethodToken.Visibility = Visibility.Visible;
|
||||
additionalBlockLogonMethodForms.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
else if (radioButtonLogonMethodForms.IsChecked == true)
|
||||
{
|
||||
authenticationMethod = enumM42AuthenticationMethod.forms;
|
||||
additionalBlockLogonMethodBasic.Visibility = Visibility.Collapsed;
|
||||
additionalBlockLogonMethodToken.Visibility = Visibility.Collapsed;
|
||||
additionalBlockLogonMethodForms.Visibility = Visibility.Visible;
|
||||
}
|
||||
else
|
||||
{
|
||||
authenticationMethod = enumM42AuthenticationMethod.passthrough;
|
||||
additionalBlockLogonMethodBasic.Visibility = Visibility.Collapsed;
|
||||
additionalBlockLogonMethodToken.Visibility = Visibility.Collapsed;
|
||||
additionalBlockLogonMethodForms.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
}
|
||||
|
||||
private void radioButtonLogonMethod_Checked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
logonMethodChanged();
|
||||
}
|
||||
|
||||
private void LogonActiveChanged()
|
||||
{
|
||||
if (radioButtonLogonActiveNo.IsChecked == true)
|
||||
{
|
||||
authenticationControl = enumM42AuthenticationControl.never;
|
||||
IsMethodBlurred = true;
|
||||
IsMethodAuto = false;
|
||||
}
|
||||
else if (radioButtonLogonActiveYes.IsChecked == true)
|
||||
{
|
||||
authenticationControl = enumM42AuthenticationControl.always;
|
||||
IsMethodBlurred = false;
|
||||
IsMethodAuto = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
authenticationControl = enumM42AuthenticationControl.auto;
|
||||
IsMethodBlurred = false;
|
||||
IsMethodAuto = true;
|
||||
radioButtonLogonMethodPassthrough.IsChecked = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void radioButtonLogonActive_Checked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
LogonActiveChanged();
|
||||
}
|
||||
|
||||
private void borderLogon_SizeChanged(object sender, SizeChangedEventArgs e)
|
||||
{
|
||||
var _w = e.NewSize.Width;
|
||||
if (_w < borderWidth)
|
||||
{
|
||||
borderWidth = _w;
|
||||
additionalBlockLogonMethodBasic.MaxWidth = _w;
|
||||
additionalBlockLogonMethodForms.MaxWidth = _w;
|
||||
additionalBlockLogonMethodToken.MaxWidth = _w;
|
||||
}
|
||||
}
|
||||
|
||||
private void pwBoxPasswordBasicShow_PasswordChanged(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (txtBoxPasswordBasicShow != null && txtBoxPasswordBasicShow.Visibility != Visibility.Visible)
|
||||
txtBoxPasswordBasicShow.Text = pwBoxPasswordBasicShow?.Password;
|
||||
}
|
||||
|
||||
private void txtBoxPasswordBasicShow_TextChanged(object sender, TextChangedEventArgs e)
|
||||
{
|
||||
if (pwBoxPasswordBasicShow != null && pwBoxPasswordBasicShow.Visibility != Visibility.Visible)
|
||||
pwBoxPasswordBasicShow.Password = txtBoxPasswordBasicShow?.Text;
|
||||
}
|
||||
|
||||
private void pwBoxPasswordTokenShow_PasswordChanged(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (txtBoxPasswordTokenShow != null && txtBoxPasswordTokenShow.Visibility != Visibility.Visible)
|
||||
txtBoxPasswordTokenShow.Text = pwBoxPasswordTokenShow?.Password;
|
||||
}
|
||||
|
||||
private void pwBoxPasswordTokenHide_TextChanged(object sender, TextChangedEventArgs e)
|
||||
{
|
||||
if (pwBoxPasswordTokenShow != null && pwBoxPasswordTokenShow.Visibility != Visibility.Visible)
|
||||
pwBoxPasswordTokenShow.Password = txtBoxPasswordBasicShow?.Text;
|
||||
}
|
||||
|
||||
private void iconPasswordShow_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
if (!(sender is FrameworkElement _fr))
|
||||
return;
|
||||
|
||||
switch (_fr.Tag.ToString())
|
||||
{
|
||||
case "PwBasicOn":
|
||||
iconPasswordBasicHide.Visibility = Visibility.Visible;
|
||||
iconPasswordBasicShow.Visibility = Visibility.Collapsed;
|
||||
txtBoxPasswordBasicShow.Visibility = Visibility.Visible;
|
||||
pwBoxPasswordBasicShow.Visibility = Visibility.Collapsed;
|
||||
return;
|
||||
case "PwBasicOff":
|
||||
iconPasswordBasicShow.Visibility = Visibility.Visible;
|
||||
iconPasswordBasicHide.Visibility = Visibility.Collapsed;
|
||||
pwBoxPasswordBasicShow.Visibility = Visibility.Visible;
|
||||
txtBoxPasswordBasicShow.Visibility = Visibility.Collapsed;
|
||||
return;
|
||||
case "TokenOn":
|
||||
iconTokenHide.Visibility = Visibility.Visible;
|
||||
iconTokenShow.Visibility = Visibility.Collapsed;
|
||||
txtBoxPasswordTokenShow.Visibility = Visibility.Visible;
|
||||
pwBoxPasswordTokenShow.Visibility = Visibility.Collapsed;
|
||||
return;
|
||||
case "TokenOff":
|
||||
iconTokenShow.Visibility = Visibility.Visible;
|
||||
iconTokenHide.Visibility = Visibility.Collapsed;
|
||||
pwBoxPasswordTokenShow.Visibility = Visibility.Visible;
|
||||
txtBoxPasswordTokenShow.Visibility = Visibility.Collapsed;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
private void ConfirmButton_MouseDown(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
ConfirmButton_Click(sender);
|
||||
}
|
||||
|
||||
private void ConfirmButton_TouchDown(object sender, TouchEventArgs e)
|
||||
{
|
||||
ConfirmButton_Click(sender);
|
||||
}
|
||||
|
||||
private async void ConfirmButton_Click(object sender)
|
||||
{
|
||||
var CM = MethodBase.GetCurrentMethod();
|
||||
LogMethodBegin(CM);
|
||||
try
|
||||
{
|
||||
this.IsEnabled = false;
|
||||
Mouse.OverrideCursor = Cursors.Wait;
|
||||
|
||||
cFasdCockpitConfig.Instance.M42Config.Control = authenticationControl;
|
||||
cFasdCockpitConfig.Instance.Save("M42Config\\Control");
|
||||
|
||||
if (authenticationControl == enumM42AuthenticationControl.never)
|
||||
{
|
||||
Close();
|
||||
return;
|
||||
}
|
||||
|
||||
bool isAuthenticated = false;
|
||||
cF4sdCockpitM42BearerTokenInfo TokenInfo = null;
|
||||
bool HasChanged = false;
|
||||
HasChanged |= authenticationMethod != cFasdCockpitConfig.Instance.M42Config.Method;
|
||||
switch (authenticationMethod)
|
||||
{
|
||||
case enumM42AuthenticationMethod.passthrough:
|
||||
TokenInfo = await cFasdCockpitCommunicationBase.Instance.M42.ValidateLogonPassthrough();
|
||||
if (TokenInfo?.Token != null)
|
||||
isAuthenticated = true;
|
||||
break;
|
||||
case enumM42AuthenticationMethod.basic:
|
||||
var _user = BasicUserName.Text;
|
||||
var _pw = pwBoxPasswordBasicShow.Password;
|
||||
HasChanged |= _user != cFasdCockpitConfig.Instance.M42Config.BasicUser;
|
||||
HasChanged |= PrivateSecurePassword.Instance.Decode(cFasdCockpitConfig.Instance.M42Config.BasicPassword) != _pw;
|
||||
TokenInfo = await cFasdCockpitCommunicationBase.Instance.M42.ValidateLogonBasic(_user, _pw);
|
||||
if (TokenInfo?.Token != null)
|
||||
{
|
||||
isAuthenticated = true;
|
||||
if (HasChanged)
|
||||
{
|
||||
cFasdCockpitConfig.Instance.M42Config.BasicUser = _user;
|
||||
cFasdCockpitConfig.Instance.M42Config.BasicPassword = PrivateSecurePassword.Instance.Encode(_pw);
|
||||
cFasdCockpitConfig.Instance.Save("M42Config\\BasicUser");
|
||||
cFasdCockpitConfig.Instance.Save("M42Config\\BasicPassword");
|
||||
}
|
||||
}
|
||||
break;
|
||||
case enumM42AuthenticationMethod.token:
|
||||
var _token = pwBoxPasswordTokenShow.Password;
|
||||
HasChanged |= PrivateSecurePassword.Instance.Decode(cFasdCockpitConfig.Instance.M42Config.ApiToken) != _token;
|
||||
TokenInfo = await cFasdCockpitCommunicationBase.Instance.M42.ValidateLogonToken(_token);
|
||||
if (TokenInfo?.Token != null)
|
||||
{
|
||||
isAuthenticated = true;
|
||||
if (HasChanged)
|
||||
{
|
||||
cFasdCockpitConfig.Instance.M42Config.ApiToken = PrivateSecurePassword.Instance.Encode(_token);
|
||||
cFasdCockpitConfig.Instance.Save("M42Config\\ApiToken");
|
||||
}
|
||||
}
|
||||
break;
|
||||
case enumM42AuthenticationMethod.forms:
|
||||
if (formsAuthenticated)
|
||||
isAuthenticated = true;
|
||||
break;
|
||||
}
|
||||
|
||||
if (isAuthenticated)
|
||||
{
|
||||
cFasdCockpitConfig.Instance.M42Config.Method = authenticationMethod;
|
||||
cFasdCockpitConfig.Instance.Save("M42Config\\Method");
|
||||
|
||||
txtAuthenticationError.Visibility = Visibility.Hidden;
|
||||
if (HasChanged)
|
||||
{
|
||||
var _tsk = Dispatcher.Invoke(async () =>
|
||||
{
|
||||
await Task.Delay(100);
|
||||
|
||||
var dialogResult = CustomMessageBox.CustomMessageBox.Show(cMultiLanguageSupport.GetItem("M42Settings.ChangedInfoDialog.Text"), cMultiLanguageSupport.GetItem("M42Settings.RestartDialog.Caption"), enumHealthCardStateLevel.Info, null, true);
|
||||
|
||||
if (dialogResult == true)
|
||||
{
|
||||
System.Windows.Forms.Application.Restart();
|
||||
Application.Current.Shutdown();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
txtAuthenticationError.Visibility = Visibility.Visible;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
Mouse.OverrideCursor = null; ;
|
||||
this.IsEnabled = true;
|
||||
LogMethodEnd(CM);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void DoFormsAuthentication_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
var CM = MethodBase.GetCurrentMethod();
|
||||
LogMethodBegin(CM);
|
||||
try
|
||||
{
|
||||
if (cFasdCockpitCommunicationBase.CockpitUserInfo == null)
|
||||
return;
|
||||
|
||||
IsTemporaryDisabled = true;
|
||||
this.IsEnabled = false;
|
||||
|
||||
var logonPage = new F4sdM42FormsAuthentication(Reauthenticate: false);
|
||||
var _ret = logonPage.ShowDialog();
|
||||
logonPage = null;
|
||||
|
||||
if (_ret == true)
|
||||
{
|
||||
formsAuthenticated = true;
|
||||
txtAuthenticationError.Visibility = Visibility.Hidden;
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
this.IsEnabled = true;
|
||||
IsTemporaryDisabled = false;
|
||||
LogMethodEnd(CM);
|
||||
}
|
||||
}
|
||||
|
||||
private void M42SettingsWindows_Closed(object sender, EventArgs e)
|
||||
{
|
||||
_Instance = null;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user