summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorblong <blong@codeaurora.org>2013-12-19 16:21:42 +0800
committerRoman Birg <roman@cyngn.com>2014-09-02 14:06:11 -0700
commit39fd6aa82682ec88d0d6a1d52a4d247dbffbb560 (patch)
tree35c5cb499da387144f373f07122d5fb182152fb1
parent711a794ad7bb867d18ac78a4455512375ceb46f0 (diff)
downloadandroid_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
-rw-r--r--res/values/cm_strings.xml2
-rw-r--r--res/values/donottranslate_config.xml2
-rw-r--r--src/com/android/contacts/common/model/RawContactDeltaList.java7
-rw-r--r--src/com/android/contacts/common/model/RawContactModifier.java4
-rw-r--r--src/com/android/contacts/common/model/account/BaseAccountType.java17
-rw-r--r--src/com/android/contacts/common/model/account/FallbackAccountType.java1
-rw-r--r--src/com/android/contacts/common/model/account/PhoneAccountType.java5
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);