protected override void OnCreate (Bundle bundle) { base.OnCreate (bundle); // Set the main flag of the activity isRunning = true; // First initialize and then set the ServerIP DataAccessLayer.SQLiteUtilities.Initialize (); DataAccessLayer.Utilities.ServerIP = BusinessLayer.User.GetURL(); DataAccessLayer.Utilities.MainColor = BusinessLayer.User.GetColor(); //DataAccessLayer.Utilities.ServerIP = "92.79.164.242"; // Set the layout SetContentView(Resource.Layout.ActivityAuthentication); networkStatus = GetNetworkStatus (); // The SQLite Utility will be initialized // -> Open Connection -> Create Database -> Create Security and Object tables //DataAccessLayer.SQLiteUtilities.Initialize (); EdName = FindViewById<EditText> (Resource.Id.EdName); EdPassword = FindViewById<EditText> (Resource.Id.EdPassword); EdMandant = FindViewById<EditText> (Resource.Id.EdMandant); EdUrl = FindViewById<EditText>(Resource.Id.EdLoginUrl); TxtResult = FindViewById<TextView> (Resource.Id.txtResult); LyDummy = FindViewById<LinearLayout> (Resource.Id.LayoutDummy); CbOffline = FindViewById<CheckBox>(Resource.Id.cbOffline); // RELEASE CHANGE: delete these three lines // Get the LoginSaveOption to determine which of the controls should be filled string loginSaveOption = BusinessLayer.User.GetLoginSaveOption(); if (loginSaveOption == "0") { // Don't show anything EdName.Text = ""; EdPassword.Text = ""; EdMandant.Text = ""; } else if(loginSaveOption == "1") { // Just show the Name and Mandant // Get the last logged-in User BusinessLayer.User user = BusinessLayer.User.GetLastOnlineLoggedUser(); EdName.Text = user.Name; EdMandant.Text = user.Mandant; } else { // Show Name, Mandant and passord BusinessLayer.User user = BusinessLayer.User.GetLastOnlineLoggedUser(); EdName.Text = user.Name; EdMandant.Text = user.Mandant; EdPassword.Text = user.Password; } // EdName.Text = "MB7"; // EdPassword.Text = "100"; // EdMandant.Text = "100"; EdUrl.Text = DataAccessLayer.Utilities.ServerIP; EdUrl.Visibility = ViewStates.Gone; // Show the CheckboxOffline if you have network connectability // And check it if (networkStatus == DataAccessLayer.NetworkState.Disconnected) { CbOffline.Visibility = ViewStates.Visible; CbOffline.Checked = true; } else CbOffline.Visibility = ViewStates.Gone; // Handle dismiss button click BtnCancel = FindViewById<Button>(Resource.Id.BtnCancel); BtnCancel.Click += BtnCancel_Click; BtnOk = FindViewById<Button> (Resource.Id.BtnOk); BtnOk.Click += BtnOk_Click; BtnSetting = FindViewById<Button>(Resource.Id.BtnSetting); BtnSetting.Click += BtnSetting_Click; //Process.KillProcess (Process.MyPid ()); }
async public void Authenticate(bool Offline) { Console.WriteLine("Authenticate"); ProgressDialog progressDialog = null; try { progressDialog = ProgressDialog.Show(this, "Apollo", Resources.GetString(Resource.String.Authenticating), false); progressDialog.SetProgressStyle(ProgressDialogStyle.Spinner); InputMethodManager imm = (InputMethodManager)GetSystemService(Context.InputMethodService); imm.HideSoftInputFromWindow(EdMandant.WindowToken, 0); TxtResult.Text = ""; if (Validate () == false) return; networkStatus = GetNetworkStatus (); BusinessLayer.User tempUser =await BusinessLayer.User.CreateAsync (EdName.Text, EdPassword.Text, EdMandant.Text,networkStatus,Offline); Console.WriteLine("Disposed"); if (tempUser == null) { // There has been a connection failure // The app has to go offline new AlertDialog.Builder(this) .SetPositiveButton("OK", (sender, args) => { // User pressed yes }) .SetMessage(Resource.String.ConnectionFailed) .SetTitle(Resource.String.ConnectionFailedTitle) .Show() ; // Show and check the CheckboxOffline CbOffline.Visibility = ViewStates.Visible; CbOffline.Checked = true; return; } // Logged successfully if (String.IsNullOrEmpty (tempUser.Name) == false) { // now check if this device has a license to use the app if (await this.ValidateLicenseAsync(tempUser) == false) return ; // Set the global variable MainActivity.User = tempUser; // then get the permissions of this user Toast.MakeText (this, Resource.String.LoggedSuccessfully,ToastLength.Short); isRunning = false; Finish (); this.StartActivity (typeof(MainActivity)); // Save the user in the offline database MainActivity.User.SaveOnlineUserData(); return; } TxtResult.Visibility = ViewStates.Visible; TxtResult.Text = this.Resources.GetString(Resource.String.WrongNamePassword); // If the user entered wrong username or password // lock the screen for 10 seconds if (++counter > 2) { counter = 0; TxtResult.Text = this.Resources.GetString(Resource.String.SystemLocked); TxtResult.Visibility = ViewStates.Visible; TxtResult.RefreshDrawableState(); ThreadPool.QueueUserWorkItem (o => LockTenSecond(TxtResult)); // Lock the form for 10 Second and show that to the user; //Task.Run(() =>LockTenSecond(TxtResult)); // // //Thread.Sleep (10000); //TxtResult.Visibility = ViewStates.Gone; return; } } catch(Exception ex) { AlertDialog a = new AlertDialog.Builder (this) .SetTitle ("Error") .SetMessage (ex.Message) .SetPositiveButton (Android.Resource.String.Ok, delegate (object o, DialogClickEventArgs e) {}) .Create(); a.Show(); } finally { if (progressDialog != null) progressDialog.Dismiss (); } return ; }