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

Commit 2da5d2ff authored by Wenyi Wang's avatar Wenyi Wang
Browse files

Restore birthday label after deleting an existing birthday

Once user removes a birthday editor, we update the editor at the bottom
to be "birthday".

Bug: 23959614
Change-Id: I650ac70f67e190a8e544d9010eda942694bec0fe
parent f6ccd509
Loading
Loading
Loading
Loading
+33 −4
Original line number Diff line number Diff line
@@ -101,7 +101,7 @@ public class CompactKindSectionView extends LinearLayout {
     * Whether a new empty editor is added is controlled by {@link #setShowOneEmptyEditor} and
     * {@link #setHideWhenEmpty}.
     */
    private final class NonNameEditorListener implements Editor.EditorListener {
    private class NonNameEditorListener implements Editor.EditorListener {

        @Override
        public void onRequest(int request) {
@@ -124,6 +124,27 @@ public class CompactKindSectionView extends LinearLayout {
        }
    }

    private class EventEditorListener extends NonNameEditorListener {

        @Override
        public void onRequest(int request) {
            super.onRequest(request);
        }

        @Override
        public void onDeleteRequested(Editor editor) {
            if (editor instanceof EventFieldEditorView){
                final EventFieldEditorView delView = (EventFieldEditorView) editor;
                if (delView.isBirthdayType() && mEditors.getChildCount() > 1) {
                    final EventFieldEditorView bottomView = (EventFieldEditorView) mEditors
                            .getChildAt(mEditors.getChildCount() - 1);
                    bottomView.restoreBirthday();
                }
            }
            super.onDeleteRequested(editor);
        }
    }

    private List<KindSectionData> mKindSectionDataList;
    private ViewIdGenerator mViewIdGenerator;
    private CompactRawContactsEditorView.Listener mListener;
@@ -241,8 +262,14 @@ public class CompactKindSectionView extends LinearLayout {
                addGroupEditorView(kindSectionData.getRawContactDelta(),
                        kindSectionData.getDataKind());
            } else {
                final Editor.EditorListener editorListener = kindSectionData.isNicknameDataKind()
                        ? new OtherNameKindEditorListener() : new NonNameEditorListener();
                final Editor.EditorListener editorListener;
                if (kindSectionData.isNicknameDataKind()) {
                    editorListener = new OtherNameKindEditorListener();
                } else if (kindSectionData.isEventDataKind()) {
                    editorListener = new EventEditorListener();
                } else {
                    editorListener = new NonNameEditorListener();
                }
                for (ValuesDelta valuesDelta : kindSectionData.getValuesDeltas()) {
                    addNonNameEditorView(kindSectionData.getRawContactDelta(),
                            kindSectionData.getDataKind(), valuesDelta, editorListener);
@@ -461,8 +488,10 @@ public class CompactKindSectionView extends LinearLayout {
            final RawContactDelta rawContactDelta =
                    mKindSectionDataList.get(0).getRawContactDelta();
            final ValuesDelta values = RawContactModifier.insertChild(rawContactDelta, dataKind);
            final Editor.EditorListener editorListener = mKindSectionDataList.get(0)
                    .isEventDataKind() ? new EventEditorListener() : new NonNameEditorListener();
            final View view = addNonNameEditorView(rawContactDelta, dataKind, values,
                    new NonNameEditorListener());
                    editorListener);
            showView(view, shouldAnimate);
        }
    }
+22 −0
Original line number Diff line number Diff line
@@ -20,6 +20,8 @@ import android.app.Dialog;
import android.content.Context;
import android.content.res.Resources;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Event;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.View;
@@ -268,4 +270,24 @@ public class EventFieldEditorView extends LabeledEditorView {
        final String column = getKind().fieldList.get(0).column;
        onFieldChanged(column, "");
    }

    /**
     * Sets the typeColumn of entry as TYPE_BIRTHDAY and calls rebuildValues() to refresh the view.
     */
    public void restoreBirthday() {
        saveValue(getKind().typeColumn, Integer.toString(Event.TYPE_BIRTHDAY));
        rebuildValues();
    }

    /**
     * EventEditType Birthday:
     * rawValue=3 labelRes=17039911 secondary=false specificMax=1 customColumn=null
     * mYearOptional=true
     */
    public boolean isBirthdayType(){
        final EventEditType eventType = getType();
        return eventType.rawValue == Event.TYPE_BIRTHDAY && !eventType.secondary
                && eventType.specificMax == 1 && eventType.customColumn == null
                && eventType.isYearOptional();
    }
}
+5 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import com.android.contacts.common.model.dataitem.DataKind;

import android.provider.ContactsContract.CommonDataKinds.Nickname;
import android.provider.ContactsContract.CommonDataKinds.StructuredName;
import android.provider.ContactsContract.CommonDataKinds.Event;
import android.text.TextUtils;

import java.util.Collections;
@@ -105,6 +106,10 @@ public final class KindSectionData {
        return Nickname.CONTENT_ITEM_TYPE.equals(mDataKind.mimeType);
    }

    public boolean isEventDataKind() {
        return Event.CONTENT_ITEM_TYPE.equals(mDataKind.mimeType);
    }

    public RawContactDelta getRawContactDelta() {
        return mRawContactDelta;
    }