Merge "Fix name editor data loss on rotation"
diff --git a/src/com/android/contacts/editor/StructuredNameEditorView.java b/src/com/android/contacts/editor/StructuredNameEditorView.java
index 5a2ffd3..6911628 100644
--- a/src/com/android/contacts/editor/StructuredNameEditorView.java
+++ b/src/com/android/contacts/editor/StructuredNameEditorView.java
@@ -77,18 +77,18 @@
if (!isFieldChanged(column, value)) {
return;
}
+ super.onFieldChanged(column, value);
mChanged = true;
+ // Make sure the display name and the structured name are synced
if (hasShortAndLongForms()) {
if (areOptionalFieldsVisible()) {
- eraseFullName(getValues());
+ rebuildFullName(getValues());
} else {
- eraseStructuredName(getValues());
+ rebuildStructuredName(getValues());
}
}
-
- super.onFieldChanged(column, value);
}
@Override
@@ -165,12 +165,28 @@
values.putNull(StructuredName.DISPLAY_NAME);
}
+ private void rebuildFullName(ValuesDelta values) {
+ Map<String, String> structuredNameMap = valuesToStructuredNameMap(values);
+ String displayName = NameConverter.structuredNameToDisplayName(getContext(),
+ structuredNameMap);
+ values.put(StructuredName.DISPLAY_NAME, displayName);
+ }
+
private void eraseStructuredName(ValuesDelta values) {
for (String field : NameConverter.STRUCTURED_NAME_FIELDS) {
values.putNull(field);
}
}
+ private void rebuildStructuredName(ValuesDelta values) {
+ String displayName = values.getAsString(StructuredName.DISPLAY_NAME);
+ Map<String, String> structuredNameMap = NameConverter.displayNameToStructuredName(
+ getContext(), displayName);
+ for (String field : structuredNameMap.keySet()) {
+ values.put(field, structuredNameMap.get(field));
+ }
+ }
+
private static void appendQueryParameter(Uri.Builder builder, String field, String value) {
if (!TextUtils.isEmpty(value)) {
builder.appendQueryParameter(field, value);