SipEditor: handle default display name.

Change-Id: Iaca0cc129d97503f4d21c7326a14609a95b56fab
diff --git a/src/com/android/phone/sip/SipEditor.java b/src/com/android/phone/sip/SipEditor.java
index 55cdcc6..8453a46 100644
--- a/src/com/android/phone/sip/SipEditor.java
+++ b/src/com/android/phone/sip/SipEditor.java
@@ -66,6 +66,7 @@
     private PrimaryAccountSelector mPrimaryAccountSelector;
     private AdvancedSettings mAdvancedSettings;
     private SipSharedPreferences mSharedPreferences;
+    private boolean mDisplayNameSet;
 
     enum PreferenceKey {
         ProfileName(R.string.profile_name, EMPTY),
@@ -249,6 +250,16 @@
         } else {
             pref.setSummary(value);
         }
+
+        if (pref instanceof EditTextPreference) {
+            ((EditTextPreference) pref).setText(value);
+        }
+
+        if (pref == PreferenceKey.DisplayName.preference) {
+            checkIfDisplayNameSet();
+        } else if (!mDisplayNameSet) {
+            setDisplayName();
+        }
         return true;
     }
 
@@ -294,6 +305,7 @@
                         : key.defaultValue);
             }
         }
+        checkIfDisplayNameSet();
     }
 
     private boolean isChecked(PreferenceKey key) {
@@ -345,6 +357,22 @@
         }
     }
 
+    private void checkIfDisplayNameSet() {
+        String displayName = getValue(PreferenceKey.DisplayName);
+        mDisplayNameSet = !TextUtils.isEmpty(displayName)
+                && !displayName.equals(getDefaultDisplayName());
+    }
+
+    private void setDisplayName() {
+        setValue(PreferenceKey.DisplayName, getDefaultDisplayName());
+    }
+
+    private String getDefaultDisplayName() {
+        String username = getValue(PreferenceKey.Username);
+        String domain = getValue(PreferenceKey.DomainAddress);
+        return username + "@" + domain;
+    }
+
     private class PrimaryAccountSelector {
         private CheckBoxPreference mCheckbox;