diff options
author | blong <blong@codeaurora.org> | 2013-12-19 16:21:42 +0800 |
---|---|---|
committer | Roman Birg <roman@cyngn.com> | 2014-09-02 14:06:11 -0700 |
commit | 39fd6aa82682ec88d0d6a1d52a4d247dbffbb560 (patch) | |
tree | 35c5cb499da387144f373f07122d5fb182152fb1 | |
parent | 711a794ad7bb867d18ac78a4455512375ceb46f0 (diff) | |
download | android_packages_apps_ContactsCommon-39fd6aa82682ec88d0d6a1d52a4d247dbffbb560.tar.gz android_packages_apps_ContactsCommon-39fd6aa82682ec88d0d6a1d52a4d247dbffbb560.tar.bz2 android_packages_apps_ContactsCommon-39fd6aa82682ec88d0d6a1d52a4d247dbffbb560.zip |
add group field for local contacts
- add group field for Phone account,and users could select groups
from this field for contacts.
Change-Id: I0cf3e740e24752c7e38f838b8896b70ff353b1da
7 files changed, 32 insertions, 6 deletions
diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml index 11c7340b..e79cadc5 100644 --- a/res/values/cm_strings.xml +++ b/res/values/cm_strings.xml @@ -35,4 +35,6 @@ <!--The failed reason shown when importting some a vCard file --> <string name="fail_reason_import_vcard">I/O error,couldn\'t import vCard <xliff:g id="name">%s</xliff:g></string> + + <string name="label_groups">Group</string> </resources> diff --git a/res/values/donottranslate_config.xml b/res/values/donottranslate_config.xml index fe690ada..30367e7e 100644 --- a/res/values/donottranslate_config.xml +++ b/res/values/donottranslate_config.xml @@ -84,4 +84,6 @@ <!-- Flag indicating whether Contacts app is allowed to share contacts with devices outside --> <bool name="config_allow_share_visible_contacts">true</bool> + <!-- Flag indicating whether or not display Internet call when edit contacts--> + <bool name="hide_voip">false</bool> </resources> diff --git a/src/com/android/contacts/common/model/RawContactDeltaList.java b/src/com/android/contacts/common/model/RawContactDeltaList.java index f3070c41..b1dbda68 100644 --- a/src/com/android/contacts/common/model/RawContactDeltaList.java +++ b/src/com/android/contacts/common/model/RawContactDeltaList.java @@ -157,8 +157,11 @@ public class RawContactDeltaList extends ArrayList<RawContactDelta> implements P for (Long joinedRawContactId : mJoinWithRawContactIds) { final Builder builder = beginKeepTogether(); builder.withValue(AggregationExceptions.RAW_CONTACT_ID1, joinedRawContactId); - if (rawContactId != -1) { - builder.withValue(AggregationExceptions.RAW_CONTACT_ID2, rawContactId); + // we should use each delta's raw contact id, so we can update all the + // aggregation exceptions for each pair of raw contacts. + if (delta.getRawContactId() != -1) { + builder.withValue(AggregationExceptions.RAW_CONTACT_ID2, + delta.getRawContactId()); } else { builder.withValueBackReference( AggregationExceptions.RAW_CONTACT_ID2, firstBatch); diff --git a/src/com/android/contacts/common/model/RawContactModifier.java b/src/com/android/contacts/common/model/RawContactModifier.java index 954123ba..bbfff9f7 100644 --- a/src/com/android/contacts/common/model/RawContactModifier.java +++ b/src/com/android/contacts/common/model/RawContactModifier.java @@ -27,6 +27,7 @@ import android.provider.ContactsContract.CommonDataKinds.Email; import android.provider.ContactsContract.CommonDataKinds.Event; import android.provider.ContactsContract.CommonDataKinds.GroupMembership; import android.provider.ContactsContract.CommonDataKinds.Im; +import android.provider.ContactsContract.CommonDataKinds.LocalGroup; import android.provider.ContactsContract.CommonDataKinds.Nickname; import android.provider.ContactsContract.CommonDataKinds.Note; import android.provider.ContactsContract.CommonDataKinds.Organization; @@ -996,7 +997,8 @@ public class RawContactModifier { if (!kind.editable) continue; final String mimeType = kind.mimeType; if (DataKind.PSEUDO_MIME_TYPE_DISPLAY_NAME.equals(mimeType) - || DataKind.PSEUDO_MIME_TYPE_PHONETIC_NAME.equals(mimeType)) { + || DataKind.PSEUDO_MIME_TYPE_PHONETIC_NAME.equals(mimeType) + || LocalGroup.CONTENT_ITEM_TYPE.equals(mimeType)) { // Ignore pseudo data. continue; } else if (StructuredName.CONTENT_ITEM_TYPE.equals(mimeType)) { diff --git a/src/com/android/contacts/common/model/account/BaseAccountType.java b/src/com/android/contacts/common/model/account/BaseAccountType.java index 7a4339a6..30791e52 100644 --- a/src/com/android/contacts/common/model/account/BaseAccountType.java +++ b/src/com/android/contacts/common/model/account/BaseAccountType.java @@ -24,6 +24,7 @@ import android.provider.ContactsContract.CommonDataKinds.Email; import android.provider.ContactsContract.CommonDataKinds.Event; import android.provider.ContactsContract.CommonDataKinds.GroupMembership; import android.provider.ContactsContract.CommonDataKinds.Im; +import android.provider.ContactsContract.CommonDataKinds.LocalGroup; import android.provider.ContactsContract.CommonDataKinds.Nickname; import android.provider.ContactsContract.CommonDataKinds.Note; import android.provider.ContactsContract.CommonDataKinds.Organization; @@ -79,12 +80,15 @@ public abstract class BaseAccountType extends AccountType { // basic format as email addresses protected static final int FLAGS_RELATION = EditorInfo.TYPE_CLASS_TEXT | EditorInfo.TYPE_TEXT_FLAG_CAP_WORDS | EditorInfo.TYPE_TEXT_VARIATION_PERSON_NAME; + protected static final int FLAGS_LOCAL_GROUPS = EditorInfo.TYPE_CLASS_TEXT + | EditorInfo.TYPE_TEXT_FLAG_CAP_WORDS; // Specify the maximum number of lines that can be used to display various field types. If no // value is specified for a particular type, we use the default value from {@link DataKind}. protected static final int MAX_LINES_FOR_POSTAL_ADDRESS = 10; protected static final int MAX_LINES_FOR_GROUP = 10; protected static final int MAX_LINES_FOR_NOTE = 100; + protected static final int LOCAL_GROUP_HEIGHT = 110; private interface Tag { static final String DATA_KIND = "DataKind"; @@ -445,6 +449,19 @@ public abstract class BaseAccountType extends AccountType { return kind; } + protected DataKind addDataKindLocalGroups(Context context) throws DefinitionException { + DataKind kind = addKind(new DataKind(LocalGroup.CONTENT_ITEM_TYPE, + R.string.label_groups, LOCAL_GROUP_HEIGHT, true)); + kind.typeOverallMax = 1; + kind.actionHeader = new SimpleInflater(R.string.label_groups); + kind.actionBody = new SimpleInflater(LocalGroup.GROUP); + kind.fieldList = Lists.newArrayList(); + kind.fieldList.add(new EditField(LocalGroup.GROUP, R.string.label_groups, + FLAGS_LOCAL_GROUPS)); + + return kind; + } + /** * Simple inflater that assumes a string resource has a "%s" that will be * filled from the given column. diff --git a/src/com/android/contacts/common/model/account/FallbackAccountType.java b/src/com/android/contacts/common/model/account/FallbackAccountType.java index 71c23c20..43795411 100644 --- a/src/com/android/contacts/common/model/account/FallbackAccountType.java +++ b/src/com/android/contacts/common/model/account/FallbackAccountType.java @@ -50,6 +50,7 @@ public class FallbackAccountType extends BaseAccountType { addDataKindNote(context); addDataKindWebsite(context); addDataKindSipAddress(context); + addDataKindLocalGroups(context); mIsInitialized = true; } catch (DefinitionException e) { diff --git a/src/com/android/contacts/common/model/account/PhoneAccountType.java b/src/com/android/contacts/common/model/account/PhoneAccountType.java index 19997437..0963e8f4 100644 --- a/src/com/android/contacts/common/model/account/PhoneAccountType.java +++ b/src/com/android/contacts/common/model/account/PhoneAccountType.java @@ -73,11 +73,10 @@ public class PhoneAccountType extends BaseAccountType{ addDataKindNote(context); addDataKindWebsite(context); //addDataKindGroupMembership(context); - //addDataKindLocalGroups(context); - if (!SystemProperties.getBoolean("persist.env.phone.hidevoip", false)) { + addDataKindLocalGroups(context); + if (!context.getResources().getBoolean(R.bool.hide_voip)) { addDataKindSipAddress(context); } - mIsInitialized = true; } catch (DefinitionException e) { Log.e(TAG, "Problem building account type", e); |