Screen Add FDN: Disable Save button if fields Name or Number are empty
Disable the Save-button in the screen "Add fixed dialing number" if the
fields Name or Number fields are empty.
Bug: 70374738
Test: manual - checked that the save button is enabled and disabled
correctly.
Change-Id: Id99e8a42529e617e75298a07f16bd9666a19ad3b
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 87bb081..67c5747 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -921,7 +921,7 @@
<!-- FDN settings: error message displayed in a popup (toast) -->
<string name="pin2_invalid">FDN wasn\'t updated because you typed an incorrect PIN.</string>
<!-- FDN settings: error message displayed in a popup (toast) -->
- <string name="fdn_invalid_number">FDN wasn\'t updated because the number is empty or exceeds 20 digits.</string>
+ <string name="fdn_invalid_number">FDN wasn\'t updated because the number exceeds 20 digits.</string>
<!-- FDN settings: error message displayed in a popup (toast), when the entered
FDN number was inappropriate, OR, PIN2 the user entered was incorrect.
Because of API restriction, there's no way to determine which is the exact
diff --git a/src/com/android/phone/settings/fdn/EditFdnContactScreen.java b/src/com/android/phone/settings/fdn/EditFdnContactScreen.java
index b8a761c..921e947 100644
--- a/src/com/android/phone/settings/fdn/EditFdnContactScreen.java
+++ b/src/com/android/phone/settings/fdn/EditFdnContactScreen.java
@@ -33,9 +33,11 @@
import android.provider.Contacts.PhonesColumns;
import android.provider.ContactsContract.CommonDataKinds;
import android.telephony.PhoneNumberUtils;
+import android.text.Editable;
import android.text.Selection;
import android.text.Spannable;
import android.text.TextUtils;
+import android.text.TextWatcher;
import android.text.method.DialerKeyListener;
import android.util.Log;
import android.view.Menu;
@@ -239,6 +241,7 @@
if (mNameField != null) {
mNameField.setOnFocusChangeListener(mOnFocusChangeHandler);
mNameField.setOnClickListener(mClicked);
+ mNameField.addTextChangedListener(mTextWatcher);
}
mNumberField = (EditText) findViewById(R.id.fdn_number);
@@ -247,6 +250,7 @@
mNumberField.setKeyListener(DialerKeyListener.getInstance());
mNumberField.setOnFocusChangeListener(mOnFocusChangeHandler);
mNumberField.setOnClickListener(mClicked);
+ mNumberField.addTextChangedListener(mTextWatcher);
}
if (!mAddContact) {
@@ -261,6 +265,7 @@
mButton = (Button) findViewById(R.id.button);
if (mButton != null) {
mButton.setOnClickListener(mClicked);
+ setButtonEnabled();
}
mPinFieldContainer = (LinearLayout) findViewById(R.id.pinc);
@@ -276,6 +281,15 @@
}
/**
+ * Enable Save button if text has been added to both name and number
+ */
+ private void setButtonEnabled() {
+ if (mButton != null && mNameField != null && mNumberField != null) {
+ mButton.setEnabled(mNameField.length() > 0 && mNumberField.length() > 0);
+ }
+ }
+
+ /**
* @param number is voice mail number
* @return true if number length is less than 20-digit limit
*
@@ -446,6 +460,19 @@
}
};
+ private final TextWatcher mTextWatcher = new TextWatcher() {
+ @Override
+ public void afterTextChanged(Editable arg0) {}
+
+ @Override
+ public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {}
+
+ @Override
+ public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
+ setButtonEnabled();
+ }
+ };
+
private class QueryHandler extends AsyncQueryHandler {
public QueryHandler(ContentResolver cr) {
super(cr);