From 70d56f0b0dbbbd5230905cebf9ee8988966d09b5 Mon Sep 17 00:00:00 2001 From: jocke <kanot_me@hotmail.com> Date: Wed, 18 Dec 2019 11:16:10 +0100 Subject: [PATCH] ALLT klart --- app/src/main/AndroidManifest.xml | 1 + .../main/java/com/example/project/Field.java | 28 +++++----- .../com/example/project/MainActivity.java | 27 +++++---- .../main/java/com/example/project/MyForm.java | 42 ++++++++------ .../main/java/com/example/project/MyGUI.java | 8 --- .../com/example/project/PWStrengthMeter.java | 7 +-- .../example/project/PasswordValidator.java | 56 +++++++++---------- app/src/main/res/values/strings.xml | 2 +- 8 files changed, 85 insertions(+), 86 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 21001c9..461be02 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,6 +2,7 @@ <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.project"> + <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" diff --git a/app/src/main/java/com/example/project/Field.java b/app/src/main/java/com/example/project/Field.java index 6a6b25b..93343fd 100644 --- a/app/src/main/java/com/example/project/Field.java +++ b/app/src/main/java/com/example/project/Field.java @@ -6,17 +6,13 @@ import android.util.AttributeSet; import android.view.View; import android.widget.LinearLayout; import android.widget.TextView; + import androidx.annotation.Nullable; -public class Field extends LinearLayout{ +public class Field extends LinearLayout { private View view; private String label; private TextView textView; - - public DataManip getDataManip() { - return dataManip; - } - private DataManip dataManip; public Field(Context context) { @@ -31,7 +27,6 @@ public class Field extends LinearLayout{ if (view != null) { init(); } - } public Field(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { @@ -50,7 +45,7 @@ public class Field extends LinearLayout{ /** * Creates a TextView with a given label next to the view and adds them both to the form. */ - public void init(){ + public void init() { this.setOrientation(LinearLayout.VERTICAL); textView = new TextView(getContext()); textView.setText(label); @@ -58,18 +53,25 @@ public class Field extends LinearLayout{ view.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); addView(view); addView(textView); + } + + public DataManip getDataManip() { + return dataManip; } public View getView() { return view; } - public void setView(View view) { - this.view = view; - } - public void notValid(){ - this.textView.setTextColor(Color.RED); + /** + * Sets color depending on if field is validated or not. + * + * @param color (e.g. Color.BLACK) + */ + public void setColor(int color) { + this.textView.setTextColor(color); } + } diff --git a/app/src/main/java/com/example/project/MainActivity.java b/app/src/main/java/com/example/project/MainActivity.java index 5b9fc27..7bfac26 100644 --- a/app/src/main/java/com/example/project/MainActivity.java +++ b/app/src/main/java/com/example/project/MainActivity.java @@ -10,9 +10,10 @@ import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; -public class MainActivity extends AppCompatActivity{ +public class MainActivity extends AppCompatActivity { + + private MyForm myForm; - private MyForm myForm; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -35,36 +36,35 @@ public class MainActivity extends AppCompatActivity{ * Test form * Creates fields for username, email, password and checkbox. */ - public void defaultForm(){ + public void defaultForm() { final View usernameV = new EditText(this); final Field name = new Field(this, "Username", usernameV, new DataManip() { @Override public boolean validate(View v) { - if (((EditText)v).getText().length() > 6) + if (((EditText) v).getText().length() > 6) return true; else { return false; } } + @Override public String getValue(View v) { - return ((EditText) usernameV).getText().toString(); } }); - - final PWStrengthMeter pwStrengthMeter = new PWStrengthMeter(this); pwStrengthMeter.setDataManip(new PasswordValidator()); final Field password = new Field(this, "Password", pwStrengthMeter, new DataManip() { @Override public boolean validate(View v) { - return ((PWStrengthMeter)v).isValid(); // FUNKAR EJ, FIXAAAAA + return pwStrengthMeter.isValid(); } + @Override public String getValue(View vv) { return pwStrengthMeter.getPassword(); @@ -72,17 +72,16 @@ public class MainActivity extends AppCompatActivity{ }); - - final EditText emailV = new EditText(this); emailV.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS); Field email = new Field(this, "Email", emailV, new DataManip() { @Override public boolean validate(View v) { - //insert validateEmail(); - return true; - + if (((EditText) v).getText().toString().contains("@") && ((EditText) v).getText().length() > 6) { + return true; + } else return false; } + @Override public String getValue(View v) { return ((EditText) emailV).getText().toString(); @@ -90,7 +89,6 @@ public class MainActivity extends AppCompatActivity{ }); - View checkBoxV = new CheckBox(this); Field checkBox = new Field(this, "Terms and Conditions", checkBoxV, new DataManip() { @Override @@ -98,6 +96,7 @@ public class MainActivity extends AppCompatActivity{ //insert isChecked(); return true; } + @Override public String getValue(View v) { return null; diff --git a/app/src/main/java/com/example/project/MyForm.java b/app/src/main/java/com/example/project/MyForm.java index 0144462..1bfaea6 100644 --- a/app/src/main/java/com/example/project/MyForm.java +++ b/app/src/main/java/com/example/project/MyForm.java @@ -1,9 +1,8 @@ package com.example.project; import android.content.Context; -import android.graphics.Canvas; +import android.graphics.Color; import android.util.AttributeSet; -import android.view.ViewGroup; import android.widget.LinearLayout; import androidx.annotation.Nullable; @@ -13,7 +12,7 @@ import java.util.List; public class MyForm extends LinearLayout { - private ArrayList<Field> list = new ArrayList<Field>(); + private ArrayList<Field> fieldList = new ArrayList<Field>(); private LinearLayout.LayoutParams layoutParams; private Field field; @@ -36,44 +35,51 @@ public class MyForm extends LinearLayout { /** * Setup layoutParams for fields. */ - public void init(){ - layoutParams = new LayoutParams(LayoutParams. MATCH_PARENT, LayoutParams. WRAP_CONTENT); + public void init() { + layoutParams = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); this.setOrientation(LinearLayout.VERTICAL); } /** * Adds field to application and adds the field to a Arraylist of all fields in the form. + * * @param field */ - public void addField(Field field){ + public void addField(Field field) { field.setLayoutParams(layoutParams); this.addView(field); - list.add(field); + fieldList.add(field); } /** + * Returns data from fields and lets user select which color to indicate valid / invalid inputs. + * * @return getValue() from all fields in the form. */ - public List<String> getData(){ - List<String> s = new ArrayList<String>(); - for(Field f : list){ - if (f.getDataManip().validate(f.getView())) - s.add(f.getDataManip().getValue(f.getView())); - else - f.notValid(); - s.add(null); + public List<String> getData() { + List<String> data = new ArrayList<String>(); + for (Field f : fieldList) { + if (f.getDataManip().validate(f.getView())) { + f.setColor(Color.BLACK); + data.add(f.getDataManip().getValue(f.getView())); + } else { + f.setColor(Color.RED); + data.add(null); + } } - System.out.println(s); - return s; + System.out.println(data); + return data; } + /** * Lets the user add logic to a certain field. + * * @param field Field that should be modified. */ - public void addLogic(Field field){ + public void addLogic(Field field) { } diff --git a/app/src/main/java/com/example/project/MyGUI.java b/app/src/main/java/com/example/project/MyGUI.java index 5812b55..7601a39 100644 --- a/app/src/main/java/com/example/project/MyGUI.java +++ b/app/src/main/java/com/example/project/MyGUI.java @@ -1,19 +1,13 @@ package com.example.project; import android.content.Context; -import android.content.res.ColorStateList; import android.graphics.Color; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; import android.widget.ProgressBar; import android.widget.TextView; public class MyGUI{ private TextView output; - String pwGrade; - Context context; int grade; private ProgressBar progressBar; @@ -23,7 +17,6 @@ public class MyGUI{ this.output = output; this.progressBar = progressBar; validate(grade); - } @@ -61,6 +54,5 @@ public class MyGUI{ progressBar.getProgressDrawable().setColorFilter( Color.parseColor(color), android.graphics.PorterDuff.Mode.SRC_IN); } - } diff --git a/app/src/main/java/com/example/project/PWStrengthMeter.java b/app/src/main/java/com/example/project/PWStrengthMeter.java index af0358d..1364817 100644 --- a/app/src/main/java/com/example/project/PWStrengthMeter.java +++ b/app/src/main/java/com/example/project/PWStrengthMeter.java @@ -16,14 +16,13 @@ import androidx.annotation.Nullable; public class PWStrengthMeter extends LinearLayout implements PasswordValidatorListener { + private int grade; private EditText input; private TextView output; - private int grade; private MyGUI myGUI; private PasswordValidator passwordValidator; - private String pw2; private ProgressBar progressBar; - private DataManip dataManip; + //private DataManip dataManip; public PWStrengthMeter(Context context) { @@ -60,7 +59,7 @@ public class PWStrengthMeter extends LinearLayout implements PasswordValidatorLi } @Override public void afterTextChanged(Editable editable) { - int grade = passwordValidator.validate(editable.toString()); + grade = passwordValidator.validate(editable.toString()); myGUI = new MyGUI(grade, output, progressBar); } }); diff --git a/app/src/main/java/com/example/project/PasswordValidator.java b/app/src/main/java/com/example/project/PasswordValidator.java index 4d31850..217dd87 100644 --- a/app/src/main/java/com/example/project/PasswordValidator.java +++ b/app/src/main/java/com/example/project/PasswordValidator.java @@ -7,41 +7,41 @@ public class PasswordValidator { /** * Determines strength of an entered password. Can be changed and/or modified. + * * @param pw User input. * @return int grade - used for displaying password strength. */ public int validate(String pw) { - boolean length = false; - boolean upperCase = false; - boolean lowerCase = false; - boolean number = false; + boolean length = false; + boolean upperCase = false; + boolean lowerCase = false; + boolean number = false; - if(pw.length() > MINIMUM_LENGTH_OF_PASSWORD) { - System.out.println(pw); - length = true; - for (int i = 0; i < pw.length(); i++) { - char a = pw.charAt(i); - if (Character.isUpperCase(a)) { - upperCase = true; - } - if (Character.isDigit(a)) { - number = true; - } - if (Character.isLowerCase(a)) { - lowerCase = true; - } + if (pw.length() > MINIMUM_LENGTH_OF_PASSWORD) { + length = true; + for (int i = 0; i < pw.length(); i++) { + char a = pw.charAt(i); + if (Character.isUpperCase(a)) { + upperCase = true; + } + if (Character.isDigit(a)) { + number = true; + } + if (Character.isLowerCase(a)) { + lowerCase = true; } } + } - if (length && upperCase && number && lowerCase){ - grade = 4; - } else if(length && upperCase && lowerCase || length && number && lowerCase || length && number && upperCase){ - grade = 3; - } else if(length && (upperCase || number || lowerCase)) { - grade = 2; - }else{ - grade = 1; - } - return grade; + if (length && upperCase && number && lowerCase) { + grade = 4; + } else if (length && upperCase && lowerCase || length && number && lowerCase || length && number && upperCase) { + grade = 3; + } else if (length && (upperCase || number || lowerCase)) { + grade = 2; + } else { + grade = 1; + } + return grade; } } \ 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 2cdfd73..45de52a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,3 +1,3 @@ <resources> - <string name="app_name">project</string> + <string name="app_name">RegistrationPage</string> </resources> -- GitLab