From fccefadd3205204cd766af66a391e2b18f52bd67 Mon Sep 17 00:00:00 2001 From: Matthew Wong Date: Fri, 10 Jul 2015 19:45:32 -0400 Subject: Create password generation dialog --- .../com/zeapo/pwdstore/pwgenDialogFragment.java | 123 +++++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 app/src/main/java/com/zeapo/pwdstore/pwgenDialogFragment.java (limited to 'app/src/main/java/com/zeapo/pwdstore/pwgenDialogFragment.java') diff --git a/app/src/main/java/com/zeapo/pwdstore/pwgenDialogFragment.java b/app/src/main/java/com/zeapo/pwdstore/pwgenDialogFragment.java new file mode 100644 index 00000000..fced4c1c --- /dev/null +++ b/app/src/main/java/com/zeapo/pwdstore/pwgenDialogFragment.java @@ -0,0 +1,123 @@ +package com.zeapo.pwdstore; + +import android.app.Dialog; +import android.app.DialogFragment; +import android.content.Context; +import android.content.DialogInterface; +import android.content.SharedPreferences; +import android.os.Bundle; +import android.support.v7.app.AlertDialog; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.Button; +import android.widget.CheckBox; +import android.widget.TextView; + +import com.zeapo.pwdstore.pwgen.pwgen; + +import java.util.ArrayList; + + +/** + * A placeholder fragment containing a simple view. + */ +public class pwgenDialogFragment extends DialogFragment { + + public pwgenDialogFragment() { + } + + + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + LayoutInflater inflater = getActivity().getLayoutInflater(); + final View view = inflater.inflate(R.layout.fragment_pwgen, null); + builder.setView(view); + + SharedPreferences prefs + = getActivity().getApplicationContext().getSharedPreferences("pwgen", Context.MODE_PRIVATE); + + CheckBox checkBox = (CheckBox) view.findViewById(R.id.numerals); + checkBox.setChecked(!prefs.getBoolean("0", false)); + + checkBox = (CheckBox) view.findViewById(R.id.symbols); + checkBox.setChecked(prefs.getBoolean("y", false)); + + checkBox = (CheckBox) view.findViewById(R.id.uppercase); + checkBox.setChecked(!prefs.getBoolean("A", false)); + + checkBox = (CheckBox) view.findViewById(R.id.ambiguous); + checkBox.setChecked(!prefs.getBoolean("B", false)); + + checkBox = (CheckBox) view.findViewById(R.id.pronounceable); + checkBox.setChecked(!prefs.getBoolean("s", false)); + + TextView textView = (TextView) view.findViewById(R.id.lengthNumber); + textView.setText(Integer.toString(prefs.getInt("length", 8))); + + textView = (TextView) view.findViewById(R.id.passwordText); + textView.setText(pwgen.generate(getActivity().getApplicationContext()).get(0)); + + builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + setPreferences(); + TextView textView = (TextView) getActivity().findViewById(R.id.crypto_password_edit); + textView.append(pwgen.generate(getActivity().getApplicationContext()).get(0)); + } + }); + + builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + + } + }); + + builder.setNeutralButton("Generate", null); + + final AlertDialog ad = builder.setTitle("Generate Password").create(); + ad.setOnShowListener(new DialogInterface.OnShowListener() { + @Override + public void onShow(DialogInterface dialog) { + Button b = ad.getButton(AlertDialog.BUTTON_NEUTRAL); + b.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + setPreferences(); + TextView textView = (TextView) getDialog().findViewById(R.id.passwordText); + textView.setText(pwgen.generate(getActivity().getApplicationContext()).get(0)); + } + }); + } + }); + return ad; + } + + private boolean setPreferences () { + ArrayList preferences = new ArrayList<>(); + if (!((CheckBox)getDialog().findViewById(R.id.numerals)).isChecked()) { + preferences.add("0"); + } + if (((CheckBox) getDialog().findViewById(R.id.symbols)).isChecked()) { + preferences.add("y"); + } + if (!((CheckBox) getDialog().findViewById(R.id.uppercase)).isChecked()) { + preferences.add("A"); + } + if (!((CheckBox) getDialog().findViewById(R.id.ambiguous)).isChecked()) { + preferences.add("B"); + } + if (!((CheckBox) getDialog().findViewById(R.id.pronounceable)).isChecked()) { + preferences.add("s"); + } + TextView textView = (TextView) getDialog().findViewById(R.id.lengthNumber); + try { + int length = Integer.valueOf(textView.getText().toString()); + return pwgen.setPrefs(getActivity().getApplicationContext(), preferences, length); + } catch(NumberFormatException e) { + return pwgen.setPrefs(getActivity().getApplicationContext(), preferences); + } + } +} + -- cgit v1.2.3 From 9b61c6991347e10606051b6d790b8d9e52dc3ba7 Mon Sep 17 00:00:00 2001 From: Matthew Wong Date: Fri, 10 Jul 2015 20:13:54 -0400 Subject: Append password from dialog, not a newly generated one --- app/src/main/java/com/zeapo/pwdstore/pwgenDialogFragment.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'app/src/main/java/com/zeapo/pwdstore/pwgenDialogFragment.java') diff --git a/app/src/main/java/com/zeapo/pwdstore/pwgenDialogFragment.java b/app/src/main/java/com/zeapo/pwdstore/pwgenDialogFragment.java index fced4c1c..12822b3f 100644 --- a/app/src/main/java/com/zeapo/pwdstore/pwgenDialogFragment.java +++ b/app/src/main/java/com/zeapo/pwdstore/pwgenDialogFragment.java @@ -61,9 +61,9 @@ public class pwgenDialogFragment extends DialogFragment { builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - setPreferences(); - TextView textView = (TextView) getActivity().findViewById(R.id.crypto_password_edit); - textView.append(pwgen.generate(getActivity().getApplicationContext()).get(0)); + TextView edit = (TextView) getActivity().findViewById(R.id.crypto_password_edit); + TextView generate = (TextView) getDialog().findViewById(R.id.passwordText); + edit.append(generate.getText()); } }); -- cgit v1.2.3 From 5c46fea58d36b28e7ac4a1b744f3973c0e12ad50 Mon Sep 17 00:00:00 2001 From: Matthew Wong Date: Sat, 11 Jul 2015 12:22:56 -0400 Subject: Use string resources --- .../com/zeapo/pwdstore/pwgenDialogFragment.java | 43 ++++++++-------------- app/src/main/res/layout/fragment_pwgen.xml | 10 ++--- app/src/main/res/values/strings.xml | 8 ++++ 3 files changed, 29 insertions(+), 32 deletions(-) (limited to 'app/src/main/java/com/zeapo/pwdstore/pwgenDialogFragment.java') diff --git a/app/src/main/java/com/zeapo/pwdstore/pwgenDialogFragment.java b/app/src/main/java/com/zeapo/pwdstore/pwgenDialogFragment.java index 12822b3f..38e7a7b9 100644 --- a/app/src/main/java/com/zeapo/pwdstore/pwgenDialogFragment.java +++ b/app/src/main/java/com/zeapo/pwdstore/pwgenDialogFragment.java @@ -50,46 +50,35 @@ public class pwgenDialogFragment extends DialogFragment { checkBox.setChecked(!prefs.getBoolean("B", false)); checkBox = (CheckBox) view.findViewById(R.id.pronounceable); - checkBox.setChecked(!prefs.getBoolean("s", false)); + checkBox.setChecked(!prefs.getBoolean("s", true)); TextView textView = (TextView) view.findViewById(R.id.lengthNumber); - textView.setText(Integer.toString(prefs.getInt("length", 8))); + textView.setText(Integer.toString(prefs.getInt("length", 20))); textView = (TextView) view.findViewById(R.id.passwordText); textView.setText(pwgen.generate(getActivity().getApplicationContext()).get(0)); - builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - TextView edit = (TextView) getActivity().findViewById(R.id.crypto_password_edit); - TextView generate = (TextView) getDialog().findViewById(R.id.passwordText); - edit.append(generate.getText()); - } + builder.setPositiveButton(getResources().getString(R.string.dialog_ok), (dialog, which) -> { + setPreferences(); + TextView edit = (TextView) getActivity().findViewById(R.id.crypto_password_edit); + TextView generate = (TextView) getDialog().findViewById(R.id.passwordText); + edit.append(generate.getText()); }); - builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { + builder.setNegativeButton(getResources().getString(R.string.dialog_cancel), (dialog, which) -> { - } }); - builder.setNeutralButton("Generate", null); + builder.setNeutralButton(getResources().getString(R.string.pwgen_generate), null); final AlertDialog ad = builder.setTitle("Generate Password").create(); - ad.setOnShowListener(new DialogInterface.OnShowListener() { - @Override - public void onShow(DialogInterface dialog) { - Button b = ad.getButton(AlertDialog.BUTTON_NEUTRAL); - b.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - setPreferences(); - TextView textView = (TextView) getDialog().findViewById(R.id.passwordText); - textView.setText(pwgen.generate(getActivity().getApplicationContext()).get(0)); - } - }); - } + ad.setOnShowListener(dialog -> { + Button b = ad.getButton(AlertDialog.BUTTON_NEUTRAL); + b.setOnClickListener(v -> { + setPreferences(); + TextView textView1 = (TextView) getDialog().findViewById(R.id.passwordText); + textView1.setText(pwgen.generate(getActivity().getApplicationContext()).get(0)); + }); }); return ad; } diff --git a/app/src/main/res/layout/fragment_pwgen.xml b/app/src/main/res/layout/fragment_pwgen.xml index 3fd8bd51..072a78a9 100644 --- a/app/src/main/res/layout/fragment_pwgen.xml +++ b/app/src/main/res/layout/fragment_pwgen.xml @@ -39,7 +39,7 @@ android:id="@+id/include" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="Include" + android:text="@string/pwgen_include" android:textAppearance="?android:attr/textAppearanceSmall" android:layout_marginBottom="8dp"/> @@ -47,26 +47,26 @@ android:id="@+id/numerals" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="Numerals"/> + android:text="@string/pwgen_numerals"/> + android:text="@string/pwgen_symbols"/> + android:text="@string/pwgen_uppercase"/> + android:text="@string/pwgen_ambiguous"/> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a8db99ff..a9b03151 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -114,6 +114,14 @@ Recursive filtering Recursively find passwords of the current directory. + + Generate + Include + Numerals + Symbols + Uppercase + Ambiguous + OK Yes -- cgit v1.2.3 From 20da17c2d835233e7a6f30d5c2f8b23364d95ade Mon Sep 17 00:00:00 2001 From: Matthew Wong Date: Sat, 11 Jul 2015 12:31:09 -0400 Subject: Undo lambda-ing --- .../com/zeapo/pwdstore/pwgenDialogFragment.java | 38 ++++++++++++++-------- 1 file changed, 25 insertions(+), 13 deletions(-) (limited to 'app/src/main/java/com/zeapo/pwdstore/pwgenDialogFragment.java') diff --git a/app/src/main/java/com/zeapo/pwdstore/pwgenDialogFragment.java b/app/src/main/java/com/zeapo/pwdstore/pwgenDialogFragment.java index 38e7a7b9..6ebf6f91 100644 --- a/app/src/main/java/com/zeapo/pwdstore/pwgenDialogFragment.java +++ b/app/src/main/java/com/zeapo/pwdstore/pwgenDialogFragment.java @@ -58,27 +58,39 @@ public class pwgenDialogFragment extends DialogFragment { textView = (TextView) view.findViewById(R.id.passwordText); textView.setText(pwgen.generate(getActivity().getApplicationContext()).get(0)); - builder.setPositiveButton(getResources().getString(R.string.dialog_ok), (dialog, which) -> { - setPreferences(); - TextView edit = (TextView) getActivity().findViewById(R.id.crypto_password_edit); - TextView generate = (TextView) getDialog().findViewById(R.id.passwordText); - edit.append(generate.getText()); + builder.setPositiveButton(getResources().getString(R.string.dialog_ok), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + pwgenDialogFragment.this.setPreferences(); + TextView edit = (TextView) pwgenDialogFragment.this.getActivity().findViewById(R.id.crypto_password_edit); + TextView generate = (TextView) pwgenDialogFragment.this.getDialog().findViewById(R.id.passwordText); + edit.append(generate.getText()); + } }); - builder.setNegativeButton(getResources().getString(R.string.dialog_cancel), (dialog, which) -> { + builder.setNegativeButton(getResources().getString(R.string.dialog_cancel), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + } }); builder.setNeutralButton(getResources().getString(R.string.pwgen_generate), null); final AlertDialog ad = builder.setTitle("Generate Password").create(); - ad.setOnShowListener(dialog -> { - Button b = ad.getButton(AlertDialog.BUTTON_NEUTRAL); - b.setOnClickListener(v -> { - setPreferences(); - TextView textView1 = (TextView) getDialog().findViewById(R.id.passwordText); - textView1.setText(pwgen.generate(getActivity().getApplicationContext()).get(0)); - }); + ad.setOnShowListener(new DialogInterface.OnShowListener() { + @Override + public void onShow(DialogInterface dialog) { + Button b = ad.getButton(AlertDialog.BUTTON_NEUTRAL); + b.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + pwgenDialogFragment.this.setPreferences(); + TextView textView1 = (TextView) pwgenDialogFragment.this.getDialog().findViewById(R.id.passwordText); + textView1.setText(pwgen.generate(pwgenDialogFragment.this.getActivity().getApplicationContext()).get(0)); + } + }); + } }); return ad; } -- cgit v1.2.3 From 32cf7f7813c89f7eff43712705b1d1453637a180 Mon Sep 17 00:00:00 2001 From: Matthew Wong Date: Sat, 11 Jul 2015 12:51:00 -0400 Subject: Set default preferences (length 20, .etc) on first use of generator, only save preferences when they've been used to generate i.e. Generate pressed --- .../java/com/zeapo/pwdstore/pwgenDialogFragment.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'app/src/main/java/com/zeapo/pwdstore/pwgenDialogFragment.java') diff --git a/app/src/main/java/com/zeapo/pwdstore/pwgenDialogFragment.java b/app/src/main/java/com/zeapo/pwdstore/pwgenDialogFragment.java index 6ebf6f91..af905b5d 100644 --- a/app/src/main/java/com/zeapo/pwdstore/pwgenDialogFragment.java +++ b/app/src/main/java/com/zeapo/pwdstore/pwgenDialogFragment.java @@ -55,13 +55,9 @@ public class pwgenDialogFragment extends DialogFragment { TextView textView = (TextView) view.findViewById(R.id.lengthNumber); textView.setText(Integer.toString(prefs.getInt("length", 20))); - textView = (TextView) view.findViewById(R.id.passwordText); - textView.setText(pwgen.generate(getActivity().getApplicationContext()).get(0)); - builder.setPositiveButton(getResources().getString(R.string.dialog_ok), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - pwgenDialogFragment.this.setPreferences(); TextView edit = (TextView) pwgenDialogFragment.this.getActivity().findViewById(R.id.crypto_password_edit); TextView generate = (TextView) pwgenDialogFragment.this.getDialog().findViewById(R.id.passwordText); edit.append(generate.getText()); @@ -81,13 +77,17 @@ public class pwgenDialogFragment extends DialogFragment { ad.setOnShowListener(new DialogInterface.OnShowListener() { @Override public void onShow(DialogInterface dialog) { + setPreferences(); + TextView textView = (TextView) view.findViewById(R.id.passwordText); + textView.setText(pwgen.generate(getActivity().getApplicationContext()).get(0)); + Button b = ad.getButton(AlertDialog.BUTTON_NEUTRAL); b.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - pwgenDialogFragment.this.setPreferences(); - TextView textView1 = (TextView) pwgenDialogFragment.this.getDialog().findViewById(R.id.passwordText); - textView1.setText(pwgen.generate(pwgenDialogFragment.this.getActivity().getApplicationContext()).get(0)); + setPreferences(); + TextView textView = (TextView) getDialog().findViewById(R.id.passwordText); + textView.setText(pwgen.generate(getActivity().getApplicationContext()).get(0)); } }); } @@ -97,7 +97,7 @@ public class pwgenDialogFragment extends DialogFragment { private boolean setPreferences () { ArrayList preferences = new ArrayList<>(); - if (!((CheckBox)getDialog().findViewById(R.id.numerals)).isChecked()) { + if (!((CheckBox) getDialog().findViewById(R.id.numerals)).isChecked()) { preferences.add("0"); } if (((CheckBox) getDialog().findViewById(R.id.symbols)).isChecked()) { -- cgit v1.2.3