From c47eeecab1684342ad6e08e10c02a6fe2f206acb Mon Sep 17 00:00:00 2001 From: Devanshi shah Date: Mon, 11 Nov 2019 23:24:06 +0530 Subject: [PATCH 1/6] worked on issue #233 and made changes in showPasswordDialog() --- .../views/ui/settings/SettingsActivity.java | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/skunkworks_crow/src/main/java/org/odk/share/views/ui/settings/SettingsActivity.java b/skunkworks_crow/src/main/java/org/odk/share/views/ui/settings/SettingsActivity.java index dd9d517b..cb34de08 100644 --- a/skunkworks_crow/src/main/java/org/odk/share/views/ui/settings/SettingsActivity.java +++ b/skunkworks_crow/src/main/java/org/odk/share/views/ui/settings/SettingsActivity.java @@ -1,6 +1,7 @@ package org.odk.share.views.ui.settings; import android.bluetooth.BluetoothAdapter; +import android.content.DialogInterface; import android.content.SharedPreferences; import android.os.Build; import android.os.Bundle; @@ -10,7 +11,9 @@ import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceManager; +import android.text.Editable; import android.text.TextUtils; +import android.text.TextWatcher; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; @@ -53,6 +56,8 @@ protected void onCreate(Bundle savedInstanceState) { addPreferences(); } + + @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { @@ -183,13 +188,22 @@ private void showPasswordDialog() { View dialogView = factory.inflate(R.layout.dialog_password_til, null); TextInputLayout tlPassword = dialogView.findViewById(R.id.et_password_layout); tlPassword.getEditText().setText(prefs.getString(PreferenceKeys.KEY_HOTSPOT_PASSWORD, getString(R.string.default_hotspot_password))); - builder.setTitle(getString(R.string.title_hotspot_password)); builder.setView(dialogView); + builder.setPositiveButton(getString(R.string.ok), (dialog, which) -> { String password = tlPassword.getEditText().getText().toString(); - prefs.edit().putString(PreferenceKeys.KEY_HOTSPOT_PASSWORD, password).apply(); + + if(password.length()<8) + { + Toast.makeText(this, "Password length must be atleast 8 characters long", Toast.LENGTH_SHORT).show(); + } + else { + prefs.edit().putString(PreferenceKeys.KEY_HOTSPOT_PASSWORD, password).apply(); + } }); + + builder.setNegativeButton(getString(R.string.cancel), (dialog, which) -> dialog.dismiss()); builder.setCancelable(false); From 6b24a8ebcb5fcac4b97705e07f435e1cdaf9b1db Mon Sep 17 00:00:00 2001 From: Devanshi Shah Date: Tue, 26 Nov 2019 11:20:01 +0530 Subject: [PATCH 2/6] Update dialog_password_til.xml --- skunkworks_crow/src/main/res/layout/dialog_password_til.xml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/skunkworks_crow/src/main/res/layout/dialog_password_til.xml b/skunkworks_crow/src/main/res/layout/dialog_password_til.xml index 17f0b1f8..6613c52b 100644 --- a/skunkworks_crow/src/main/res/layout/dialog_password_til.xml +++ b/skunkworks_crow/src/main/res/layout/dialog_password_til.xml @@ -8,5 +8,7 @@ - \ No newline at end of file + android:inputType="textPassword" + android:id="@+id/edtpass" + /> + From 01bae353de2a2dec80ed53396f8a9418abc98ee1 Mon Sep 17 00:00:00 2001 From: Devanshi Shah Date: Tue, 26 Nov 2019 11:22:09 +0530 Subject: [PATCH 3/6] Update SettingsActivity.java --- .../views/ui/settings/SettingsActivity.java | 67 +++++++++++++++---- 1 file changed, 55 insertions(+), 12 deletions(-) diff --git a/skunkworks_crow/src/main/java/org/odk/share/views/ui/settings/SettingsActivity.java b/skunkworks_crow/src/main/java/org/odk/share/views/ui/settings/SettingsActivity.java index cb34de08..c732073b 100644 --- a/skunkworks_crow/src/main/java/org/odk/share/views/ui/settings/SettingsActivity.java +++ b/skunkworks_crow/src/main/java/org/odk/share/views/ui/settings/SettingsActivity.java @@ -43,6 +43,9 @@ public class SettingsActivity extends PreferenceActivity { EditTextPreference odkDestinationDirPreference; ListPreference defaultMethodPreference; private SharedPreferences prefs; + String n; + String m; + TextInputEditText edtpass; @Override protected void onCreate(Bundle savedInstanceState) { @@ -180,36 +183,76 @@ private ViewGroup getRootView() { return (ViewGroup) findViewById(android.R.id.list).getParent(); } } - - private void showPasswordDialog() { + + private void showPasswordDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); + + LayoutInflater factory = LayoutInflater.from(this); View dialogView = factory.inflate(R.layout.dialog_password_til, null); TextInputLayout tlPassword = dialogView.findViewById(R.id.et_password_layout); tlPassword.getEditText().setText(prefs.getString(PreferenceKeys.KEY_HOTSPOT_PASSWORD, getString(R.string.default_hotspot_password))); + + edtpass = (TextInputEditText)dialogView.findViewById(R.id.edtpass); + + n=prefs.getString(PreferenceKeys.KEY_HOTSPOT_PASSWORD, getString(R.string.default_hotspot_password)); + builder.setTitle(getString(R.string.title_hotspot_password)); builder.setView(dialogView); - builder.setPositiveButton(getString(R.string.ok), (dialog, which) -> { - String password = tlPassword.getEditText().getText().toString(); - if(password.length()<8) - { - Toast.makeText(this, "Password length must be atleast 8 characters long", Toast.LENGTH_SHORT).show(); - } - else { - prefs.edit().putString(PreferenceKeys.KEY_HOTSPOT_PASSWORD, password).apply(); - } - }); + ((AlertDialog)dialog).getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false); + String password = tlPassword.getEditText().getText().toString(); + prefs.edit().putString(PreferenceKeys.KEY_HOTSPOT_PASSWORD, password).apply(); + }); builder.setNegativeButton(getString(R.string.cancel), (dialog, which) -> dialog.dismiss()); builder.setCancelable(false); AlertDialog alertDialog = builder.create(); + + alertDialog.setOnShowListener(new DialogInterface.OnShowListener() { + + @Override + public void onShow(DialogInterface dialog) { + //set positive OK button to be disabled by default + //((AlertDialog) dialog).getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(true); + + + edtpass.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + ((AlertDialog)dialog).getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false); + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + if(edtpass.getText().toString().length()>=8) + { + ((AlertDialog)dialog).getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(true); + } + if(edtpass.getText().toString().length()<8) + { + ((AlertDialog)dialog).getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false); + } + } + + @Override + public void afterTextChanged(Editable s) { + + } + }); + + } + }); + + alertDialog.show(); + alertDialog.setCancelable(true); alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); } + } From 76fe6a1fdb9286805142a63f0aa45feb19aa2dfe Mon Sep 17 00:00:00 2001 From: Devanshi Shah Date: Tue, 26 Nov 2019 11:24:57 +0530 Subject: [PATCH 4/6] Update dialog_password_til.xml --- skunkworks_crow/src/main/res/layout/dialog_password_til.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/skunkworks_crow/src/main/res/layout/dialog_password_til.xml b/skunkworks_crow/src/main/res/layout/dialog_password_til.xml index 6613c52b..f7441d9b 100644 --- a/skunkworks_crow/src/main/res/layout/dialog_password_til.xml +++ b/skunkworks_crow/src/main/res/layout/dialog_password_til.xml @@ -5,10 +5,10 @@ android:paddingLeft="16dp" android:paddingRight="16dp" app:passwordToggleEnabled="true"> - - From d772c59312329a56228f0556aafe8a3024110d78 Mon Sep 17 00:00:00 2001 From: Devanshi Shah Date: Wed, 27 Nov 2019 15:01:58 +0530 Subject: [PATCH 5/6] Update SettingsActivity.java --- .../java/org/odk/share/views/ui/settings/SettingsActivity.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/skunkworks_crow/src/main/java/org/odk/share/views/ui/settings/SettingsActivity.java b/skunkworks_crow/src/main/java/org/odk/share/views/ui/settings/SettingsActivity.java index c732073b..574dbacb 100644 --- a/skunkworks_crow/src/main/java/org/odk/share/views/ui/settings/SettingsActivity.java +++ b/skunkworks_crow/src/main/java/org/odk/share/views/ui/settings/SettingsActivity.java @@ -12,6 +12,7 @@ import android.preference.PreferenceActivity; import android.preference.PreferenceManager; import android.text.Editable; +import android.text.InputType; import android.text.TextUtils; import android.text.TextWatcher; import android.view.LayoutInflater; @@ -19,12 +20,14 @@ import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; +import android.widget.EditText; import android.widget.Toast; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.Toolbar; import com.google.android.material.textfield.TextInputLayout; +import com.google.android.material.textfield.TextInputEditText; import org.odk.share.R; From 17953c53eadf19cc1283290be2a287d69d722386 Mon Sep 17 00:00:00 2001 From: devanshi7799 Date: Thu, 28 Nov 2019 22:18:32 +0530 Subject: [PATCH 6/6] added textwatcher --- .../views/ui/settings/SettingsActivity.java | 60 +++++++++++++++---- .../main/res/layout/dialog_password_til.xml | 5 +- 2 files changed, 53 insertions(+), 12 deletions(-) diff --git a/skunkworks_crow/src/main/java/org/odk/share/views/ui/settings/SettingsActivity.java b/skunkworks_crow/src/main/java/org/odk/share/views/ui/settings/SettingsActivity.java index cb34de08..8e7413e8 100644 --- a/skunkworks_crow/src/main/java/org/odk/share/views/ui/settings/SettingsActivity.java +++ b/skunkworks_crow/src/main/java/org/odk/share/views/ui/settings/SettingsActivity.java @@ -24,6 +24,7 @@ import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.Toolbar; +import com.google.android.material.textfield.TextInputEditText; import com.google.android.material.textfield.TextInputLayout; import org.odk.share.R; @@ -43,6 +44,8 @@ public class SettingsActivity extends PreferenceActivity { EditTextPreference odkDestinationDirPreference; ListPreference defaultMethodPreference; private SharedPreferences prefs; + String npass; + TextInputEditText edtpass; @Override protected void onCreate(Bundle savedInstanceState) { @@ -182,34 +185,69 @@ private ViewGroup getRootView() { } private void showPasswordDialog() { - AlertDialog.Builder builder = new AlertDialog.Builder(this); LayoutInflater factory = LayoutInflater.from(this); View dialogView = factory.inflate(R.layout.dialog_password_til, null); + TextInputLayout tlPassword = dialogView.findViewById(R.id.et_password_layout); tlPassword.getEditText().setText(prefs.getString(PreferenceKeys.KEY_HOTSPOT_PASSWORD, getString(R.string.default_hotspot_password))); + + edtpass = (TextInputEditText) dialogView.findViewById(R.id.edtpass); + + AlertDialog.Builder builder = new AlertDialog.Builder(this); + npass = prefs.getString(PreferenceKeys.KEY_HOTSPOT_PASSWORD, getString(R.string.default_hotspot_password)); + builder.setTitle(getString(R.string.title_hotspot_password)); builder.setView(dialogView); - builder.setPositiveButton(getString(R.string.ok), (dialog, which) -> { - String password = tlPassword.getEditText().getText().toString(); - if(password.length()<8) - { - Toast.makeText(this, "Password length must be atleast 8 characters long", Toast.LENGTH_SHORT).show(); - } - else { - prefs.edit().putString(PreferenceKeys.KEY_HOTSPOT_PASSWORD, password).apply(); - } - }); + ((AlertDialog) dialog).getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false); + String password = tlPassword.getEditText().getText().toString(); + prefs.edit().putString(PreferenceKeys.KEY_HOTSPOT_PASSWORD, password).apply(); + }); builder.setNegativeButton(getString(R.string.cancel), (dialog, which) -> dialog.dismiss()); builder.setCancelable(false); AlertDialog alertDialog = builder.create(); + + alertDialog.setOnShowListener(new DialogInterface.OnShowListener() { + + @Override + public void onShow(DialogInterface dialog) { + + edtpass.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + ((AlertDialog) dialog).getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false); + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + + if (edtpass.getText().toString().length() >= 8) { + ((AlertDialog) dialog) .getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(true); + } + + if (edtpass.getText().toString().length() < 8) { + ((AlertDialog) dialog) .getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false); + } + } + + @Override + public void afterTextChanged(Editable s) { + + } + }); + } + }); + + alertDialog.show(); + alertDialog.setCancelable(true); alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); } + } diff --git a/skunkworks_crow/src/main/res/layout/dialog_password_til.xml b/skunkworks_crow/src/main/res/layout/dialog_password_til.xml index 17f0b1f8..ec9e8483 100644 --- a/skunkworks_crow/src/main/res/layout/dialog_password_til.xml +++ b/skunkworks_crow/src/main/res/layout/dialog_password_til.xml @@ -8,5 +8,8 @@ + android:inputType="textPassword" + android:id="@+id/edtpass" + /> + \ No newline at end of file