aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/com/zeapo/pwdstore/pwgenDialogFragment.java
diff options
context:
space:
mode:
authorMohamed Zenadi <zeapo@users.noreply.github.com>2015-07-11 19:41:33 +0200
committerMohamed Zenadi <zeapo@users.noreply.github.com>2015-07-11 19:41:33 +0200
commit62c20d323cee5c543fd17cdc6e817efd48d1e47b (patch)
tree02a6e433ec610b8a3f2af780e743ec149afd5bee /app/src/main/java/com/zeapo/pwdstore/pwgenDialogFragment.java
parent97c5c5da9572de48842dc3739c260af75c4915f8 (diff)
parent32cf7f7813c89f7eff43712705b1d1453637a180 (diff)
downloadHardenedPass-62c20d323cee5c543fd17cdc6e817efd48d1e47b.tar.gz
HardenedPass-62c20d323cee5c543fd17cdc6e817efd48d1e47b.zip
Merge pull request #101 from wongma7/master
Adding support for password generation
Diffstat (limited to 'app/src/main/java/com/zeapo/pwdstore/pwgenDialogFragment.java')
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/pwgenDialogFragment.java124
1 files changed, 124 insertions, 0 deletions
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..af905b5d
--- /dev/null
+++ b/app/src/main/java/com/zeapo/pwdstore/pwgenDialogFragment.java
@@ -0,0 +1,124 @@
+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", true));
+
+ TextView textView = (TextView) view.findViewById(R.id.lengthNumber);
+ textView.setText(Integer.toString(prefs.getInt("length", 20)));
+
+ builder.setPositiveButton(getResources().getString(R.string.dialog_ok), new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ 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), 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(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) {
+ setPreferences();
+ TextView textView = (TextView) getDialog().findViewById(R.id.passwordText);
+ textView.setText(pwgen.generate(getActivity().getApplicationContext()).get(0));
+ }
+ });
+ }
+ });
+ return ad;
+ }
+
+ private boolean setPreferences () {
+ ArrayList<String> 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);
+ }
+ }
+}
+