Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c5597d5d authored by Isaac Katzenelson's avatar Isaac Katzenelson Committed by Android (Google) Code Review
Browse files

Merge "Fix name editor data loss on rotation"

parents afc09c76 b05466a9
Loading
Loading
Loading
Loading
+20 −4
Original line number Diff line number Diff line
@@ -77,18 +77,18 @@ public class StructuredNameEditorView extends TextFieldsEditorView {
        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 @@ public class StructuredNameEditorView extends TextFieldsEditorView {
        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);