private void LoginButton_Click(object sender, RoutedEventArgs e)
        {
            if (!ValidateFields())
            {
                return;
            }

            var username = UsernameEntry.Text;
            var password = PasswordEntry.Password;

            if (RememberMeCheckbox.IsChecked != null)
            {
                Settings.Default.RememberMe = (bool)RememberMeCheckbox.IsChecked;
            }

            // check for remember me
            if (Settings.Default.RememberMe)
            {
                Settings.Default.Username = username;
                Settings.Default.Password = password;
            }

            DisableLoginButtons();

            // Call in new thread to liberate UI
            var thread = new Thread(() =>
            {
                MainWindow.Instance.PanelLoading     = true;
                MainWindow.Instance.PanelMainMessage = "Identification en cours";
                // All entry are valid, we can proceed with login
                try
                {
                    var token         = _userAccess.Login(username, password);
                    _user.UserToken   = token;
                    _user.Name        = username;
                    _user.IsConnected = true;

                    var id = JwtHelper.DecodeToken(token).UserId;
                    NativeFunction.connexion(new StringBuilder(token), token.Length, new StringBuilder(id), id.Length); // Todo kf, add userId

                    Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (Action)(() =>
                    {
                        // Go to main menu if login is completed
                        _eventManager.Notice(new ChangeStateEvent()
                        {
                            NextState = Enums.States.MainMenu
                        });
                        MainWindow.Instance.PanelLoading = false;
                        Load.LoadOnLogin();
                    }));
                }
                catch (Exception exception)
                {
                    ShowError(exception.Message);
                }
            });

            thread.Start();
        }