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