From f123ef7d2da01b739f455ed4dbaf2509336ae28c Mon Sep 17 00:00:00 2001 From: Sumit Pundir Date: Tue, 31 Mar 2020 14:10:47 +0530 Subject: [PATCH] Contacts: Add Event and Relationship datakinds to DeviceLocalAccountTypes Only upstream account types have had this option to add birthdays/anniversaries/relationships to their contacts. Issue raised here https://gitlab.e.foundation/e/management/issues/198 --- .../model/account/FallbackAccountType.java | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/src/com/android/contacts/model/account/FallbackAccountType.java b/src/com/android/contacts/model/account/FallbackAccountType.java index 288a917175..f9f7c6484b 100644 --- a/src/com/android/contacts/model/account/FallbackAccountType.java +++ b/src/com/android/contacts/model/account/FallbackAccountType.java @@ -17,16 +17,22 @@ package com.android.contacts.model.account; import android.accounts.AuthenticatorDescription; +import android.content.ContentValues; import android.content.Context; import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; +import android.provider.ContactsContract.CommonDataKinds.Event; +import android.provider.ContactsContract.CommonDataKinds.Relation; import android.support.v4.content.ContextCompat; import android.support.v4.content.res.ResourcesCompat; import com.android.contacts.R; import com.android.contacts.model.dataitem.DataKind; +import com.android.contacts.util.CommonDateUtils; import com.android.contactsbind.FeedbackHelper; +import com.google.common.collect.Lists; + public class FallbackAccountType extends BaseAccountType { private static final String TAG = "FallbackAccountType"; @@ -54,6 +60,8 @@ public class FallbackAccountType extends BaseAccountType { addDataKindNote(context); addDataKindWebsite(context); addDataKindSipAddress(context); + addDataKindRelation(context); + addDataKindEvent(context); addDataKindGroupMembership(context); mIsInitialized = true; @@ -89,6 +97,66 @@ public class FallbackAccountType extends BaseAccountType { // and icons. } + private DataKind addDataKindRelation(Context context) throws DefinitionException { + DataKind kind = addKind(new DataKind(Relation.CONTENT_ITEM_TYPE, + R.string.relationLabelsGroup, Weight.RELATIONSHIP, true)); + kind.actionHeader = new RelationActionInflater(); + kind.actionBody = new SimpleInflater(Relation.NAME); + + kind.typeColumn = Relation.TYPE; + kind.typeList = Lists.newArrayList(); + kind.typeList.add(buildRelationType(Relation.TYPE_ASSISTANT)); + kind.typeList.add(buildRelationType(Relation.TYPE_BROTHER)); + kind.typeList.add(buildRelationType(Relation.TYPE_CHILD)); + kind.typeList.add(buildRelationType(Relation.TYPE_DOMESTIC_PARTNER)); + kind.typeList.add(buildRelationType(Relation.TYPE_FATHER)); + kind.typeList.add(buildRelationType(Relation.TYPE_FRIEND)); + kind.typeList.add(buildRelationType(Relation.TYPE_MANAGER)); + kind.typeList.add(buildRelationType(Relation.TYPE_MOTHER)); + kind.typeList.add(buildRelationType(Relation.TYPE_PARENT)); + kind.typeList.add(buildRelationType(Relation.TYPE_PARTNER)); + kind.typeList.add(buildRelationType(Relation.TYPE_REFERRED_BY)); + kind.typeList.add(buildRelationType(Relation.TYPE_RELATIVE)); + kind.typeList.add(buildRelationType(Relation.TYPE_SISTER)); + kind.typeList.add(buildRelationType(Relation.TYPE_SPOUSE)); + kind.typeList.add(buildRelationType(Relation.TYPE_CUSTOM).setSecondary(true) + .setCustomColumn(Relation.LABEL)); + + kind.defaultValues = new ContentValues(); + kind.defaultValues.put(Relation.TYPE, Relation.TYPE_SPOUSE); + + kind.fieldList = Lists.newArrayList(); + kind.fieldList.add(new EditField(Relation.DATA, R.string.relationLabelsGroup, + FLAGS_RELATION)); + + return kind; + } + + private DataKind addDataKindEvent(Context context) throws DefinitionException { + DataKind kind = addKind(new DataKind(Event.CONTENT_ITEM_TYPE, + R.string.eventLabelsGroup, Weight.EVENT, true)); + kind.actionHeader = new EventActionInflater(); + kind.actionBody = new SimpleInflater(Event.START_DATE); + + kind.typeColumn = Event.TYPE; + kind.typeList = Lists.newArrayList(); + kind.dateFormatWithoutYear = CommonDateUtils.NO_YEAR_DATE_FORMAT; + kind.dateFormatWithYear = CommonDateUtils.FULL_DATE_FORMAT; + kind.typeList.add(buildEventType(Event.TYPE_BIRTHDAY, true).setSpecificMax(1)); + kind.typeList.add(buildEventType(Event.TYPE_ANNIVERSARY, false)); + kind.typeList.add(buildEventType(Event.TYPE_OTHER, false)); + kind.typeList.add(buildEventType(Event.TYPE_CUSTOM, false).setSecondary(true) + .setCustomColumn(Event.LABEL)); + + kind.defaultValues = new ContentValues(); + kind.defaultValues.put(Event.TYPE, Event.TYPE_BIRTHDAY); + + kind.fieldList = Lists.newArrayList(); + kind.fieldList.add(new EditField(Event.DATA, R.string.eventLabelsGroup, FLAGS_EVENT)); + + return kind; + } + @Override public boolean areContactsWritable() { return true; -- GitLab