diff --git a/.idea/misc.xml b/.idea/misc.xml index 37a7509..703e5d4 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,11 @@ - + + + + + + diff --git a/app/src/main/java/com/training/simpleloginform/MainActivity.java b/app/src/main/java/com/training/simpleloginform/MainActivity.java index 5203a8a..f8d6baf 100644 --- a/app/src/main/java/com/training/simpleloginform/MainActivity.java +++ b/app/src/main/java/com/training/simpleloginform/MainActivity.java @@ -1,24 +1,47 @@ package com.training.simpleloginform; +import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; +import android.text.Editable; +import android.text.TextWatcher; import android.view.View; +import android.widget.ArrayAdapter; +import android.widget.AutoCompleteTextView; import android.widget.Button; import android.widget.EditText; +import android.widget.Toast; + +import java.util.ArrayList; +import java.util.List; /** * Assignment add validation to edit text fields *

* if an edit text is empty, show a toast that says "edit text cannot be empty", where edit text can be username or password */ -public class MainActivity extends AppCompatActivity implements View.OnClickListener { +public class MainActivity extends AppCompatActivity implements View.OnClickListener, TextWatcher { + + public static final String APP_SHARED_PREF = "APP_PREF"; + public static final String PREF_KEY_USERNAME = "USER_NAME"; + public static final String PREF_KEY_PWD = "PASSWORD"; + public static final String PREF_KEY_USER_LOGGED_IN = "LOGGED_IN"; - private EditText usernameEditText; + + private AutoCompleteTextView usernameEditText; private EditText passwordEditText; private Button submitButton; private Button resetButton; + private String prefUserName; + private String prefPwd; + private boolean prefIsAlreadyLoggedIn; + + Names names = new Names(); + List namesList = new ArrayList<>(); + private SharedPreferences sharedPreferences; @Override protected void onCreate(Bundle savedInstanceState) { @@ -29,26 +52,66 @@ protected void onCreate(Bundle savedInstanceState) { submitButton = findViewById(R.id.submit_button); resetButton = findViewById(R.id.reset_button); + namesList.addAll(names.getNames()); + + usernameEditText.addTextChangedListener(this); + usernameEditText.setAdapter(new ArrayAdapter(this, android.R.layout.simple_dropdown_item_1line, namesList)); + submitButton.setOnClickListener(this); resetButton.setOnClickListener(this); } + @Override + protected void onResume() { + super.onResume(); + sharedPreferences = getSharedPreferences(APP_SHARED_PREF, Context.MODE_PRIVATE); + prefUserName = sharedPreferences.getString(PREF_KEY_USERNAME, ""); + prefPwd = sharedPreferences.getString(PREF_KEY_PWD, ""); + prefIsAlreadyLoggedIn = sharedPreferences.getBoolean(PREF_KEY_USER_LOGGED_IN, false); + } + @Override public void onClick(View view) { switch (view.getId()) { case R.id.submit_button: - Intent i = new Intent(this, SecondActivity.class); - i.putExtra("username", usernameEditText.getText().toString()); - i.putExtra("password", passwordEditText.getText().toString()); - startActivity(i); - - + String userName = usernameEditText.getText().toString(); + String password = passwordEditText.getText().toString(); + if (!userName.isEmpty() && !password.isEmpty()) { + if (prefIsAlreadyLoggedIn) { + if (userName.equals(prefUserName) && password.equals(prefPwd)) { + startSecondActivity(userName, password); + } else { + Toast.makeText(this, "incorrect username or password", Toast.LENGTH_SHORT).show(); + } + } else { + if (!namesList.contains(userName)) { + namesList.add(userName); + } + saveUserName(userName, password); + startSecondActivity(userName, password); + } + } break; case R.id.reset_button: setResetButton(); - break; } + + } + + private void saveUserName(String userName, String password) { + SharedPreferences.Editor editor = sharedPreferences.edit(); + editor.putString(PREF_KEY_USERNAME, userName); + editor.putString(PREF_KEY_PWD, password); + editor.putBoolean(PREF_KEY_USER_LOGGED_IN, true); + editor.apply(); + } + + private void startSecondActivity(String userName, String password) { + Intent intent = new Intent(this, SecondActivity.class); + intent.putExtra("username", userName); + intent.putExtra("password", password); + startActivity(intent); } public void setResetButton() { @@ -57,4 +120,21 @@ public void setResetButton() { } + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + + usernameEditText.setAdapter(new ArrayAdapter(this, android.R.layout.simple_dropdown_item_1line, namesList)); + + } + + @Override + public void afterTextChanged(Editable s) { + + + } } diff --git a/app/src/main/java/com/training/simpleloginform/Names.java b/app/src/main/java/com/training/simpleloginform/Names.java new file mode 100644 index 0000000..ab2b58c --- /dev/null +++ b/app/src/main/java/com/training/simpleloginform/Names.java @@ -0,0 +1,22 @@ +package com.training.simpleloginform; + +import java.util.ArrayList; +import java.util.List; + +public class Names { + + List names = new ArrayList<>(); + + public List getNames() { + + names.add("Desmond"); + names.add("Dean"); + names.add("Sidd"); + names.add("Nahi"); + names.add("Iliana"); + names.add("Sulekha"); + names.add("Damian"); + + return names; + } +} diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index aa72deb..324573f 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -20,12 +20,13 @@ android:textColor="@android:color/holo_green_dark" android:textStyle="bold" /> - + android:hint="@string/username_edit_text_hint" + android:completionThreshold="1"/> diff --git a/app/src/main/res/layout/activity_second.xml b/app/src/main/res/layout/activity_second.xml index 40f35b4..e939848 100644 --- a/app/src/main/res/layout/activity_second.xml +++ b/app/src/main/res/layout/activity_second.xml @@ -3,7 +3,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_margin="20dp" + android:layout_margin="@dimen/margin" android:orientation="vertical" tools:context=".SecondActivity"> @@ -17,9 +17,9 @@ android:id="@+id/username_label_textview" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_margin="20dp" - android:hint="Username : " - android:textSize="20dp" + android:layout_margin="@dimen/margin" + android:hint="@string/username" + android:textSize="@dimen/txt_size" android:textStyle="bold" /> @@ -27,8 +27,8 @@ android:id="@+id/username_details_textview" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_margin="20dp" - android:textSize="20dp" + android:layout_margin="@dimen/margin" + android:textSize="@dimen/txt_size" android:textStyle="bold" /> @@ -41,9 +41,9 @@ android:id="@+id/password_label_textview" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_margin="20dp" - android:hint="Password : " - android:textSize="20dp" + android:layout_margin="@dimen/margin" + android:hint="@string/password" + android:textSize="@dimen/txt_size" android:textStyle="bold" /> @@ -51,8 +51,8 @@ android:id="@+id/password_details_textview" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_margin="20dp" - android:textSize="20dp" + android:layout_margin="@dimen/margin" + android:textSize="@dimen/txt_size" android:textStyle="bold" /> diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 460ffe4..17f9448 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -1,4 +1,6 @@ 20dp + 20dp + 20sp \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f8500ac..1b6ee8c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -6,4 +6,6 @@ Password Submit reset + Username : + Password :